ЦИКЛІЧНІ ПРОГРАМИ З РЕГУЛЯРНОЮ
ЗМІНОЮ АРГУМЕНТА
Цикл типова структура, яка характерна для багатьох програм. Цикл складається із заголовка і тіла циклу. Заголовок циклу мовою GW Basic описується оператором циклу FOR. В цьому операторі задається початкове значення параметра циклу, крок його зміни і перевірка досягнення параметром циклу кінцевого значення. Тіло циклу являє собою послідовність операторів, які виконуються в циклі. Закінчується цикл оператором NEXT. Цикл мовою Pascal може бути організований за допомогою оператора for...do, але параметром циклу в цьому операторі повинна бути тільки цілочисельна змінна. Ця змінна набуває значеня від 1 до N з кроком зміни на одиницю, де N - кінцева кількість циклів. Тіло мовою Pascal може складатись з одного або послідовності операторів, обмежених словами begin i end. Такі цикли називаються циклами за лічильником.
Цикли також можуть бути побудовані за допомогою операторів умовного і безумовного переходу, так звані цикли з передумовою і післяумовою.
Для завдань, які описані в таблиці 3, необхідно:
- скласти графічний алгоритм, використавши оператор циклу або умовний оператор;
- провести ідентифікацію змінних;
- скласти програми з використанням оператора циклу і умовного оператора;
- розв’язати задачу на ЕОМ в діалоговому режимі;
- провести аналіз результатів.
Якщо за умовою задачі не заданий один з параметрів циклу (початкове, кінцеве значення параметра або крок зміни), то його необхідно визначити, користуючись залежністю
(3.1)
де N - кількість циклів;хп,хк - початкове і кінцеве значення параметра циклу;
- крок зміни параметра циклу.
Таблиця 3.1- Варіанти завдань
№ ва- | Константи | Аргу- | Почат- кове знач. | Кінце- ве зна-чення | Крок зміни Пара- | Кіль- кість інтер- | ||
рі- ан-ту | Функція | a | b | мент | пара-метра циклу | пара- метра циклу | Метра Циклу | валів пара- метра |
21.4 | 1.95 | x | 4.6 | - | 1.5 | |||||
121.2 | 3.8 | q | 1.4 | 1.85 | - | |||||
8.3 | 1.43 | p | - | -4.74 | 0.15 | |||||
1.6 | 2.09 | m | - | 1.5 | ||||||
0.83 | - | x | 1.15 | - | 0.35 | |||||
3.85 | 1.8 | a | - | 150 | 70 | |||||
1.6 | 14.3 | t | 2.75 | 5.0 | - | |||||
- | 6.215 | b | 400 | 540 | - | |||||
2.43 | - | y | 1.62 | - | 0.15 | |||||
1.85 | 2.63 | a | -3.45 | - | -1.6 | |||||
- | 3.85 | d | -2.3 | 0.01 | - | |||||
2.65 | 1.48 | x | 0.75 | 0.012 | - | |||||
3.2 | - | y | -4.8 | 0.1 | - | |||||
- | 8.45 | z | - | 0.24 | 3.2 | |||||
-16.3 | - | x | -16.3 | - | -9.3 | |||||
-8.6 | 3.28 | d | 3.6 | - | 4.0 | |||||
1.42 | 0.85 | z | 1.6 | 0.35 | - | |||||
| 3.2 | - | f | -4.8 | 0.1 | - | ||||
8.9 | - | a | 350 | - | 500 | |||||
1.2 | - | z | 2.6 | - | 3.8 | |||||
- | 6.15 | x | - | 0.2 | 1.65 | |||||
3.26 | - | x | - | 0.18 | 3.41 | |||||
1.85 | 6.21 | g | 3.1 | - | ||||||
4.55 | 7.53 | x | 4.8 | 0.25 | - | |||||
6.92 | - | f | 0.6 | - | 1.4 |
Приклад. Скласти графічний алгоритм і прграми обчислень таблиці значень функції
y=bx2+ex-1, b=11.83.
Аргумент х змінюється від початкового значення х=2.6 з постійним кроком 0.15, кількість значень функції n=8.
Графічний алгоритм і програми скласти з використанням оператора циклу та умовного оператора.
Розв’язок задачі.
1. Визначимо кінцеве значення аргумента х:
, звідки
2. Графічний алгоритм з використанням оператора циклу показаний на рис. 3.1, з використанням умовного оператора на рис. 3.2.
3. Програми мовою GW Basic
3.1. З використанням оператора циклу
10 REM ЦИКЛІЧНА ПРОГРАМА
20 REM ВИКОРИСТАННЯ ОПЕРАТОРА ЦИКЛУ
30 B=11.83
40 FOR X=2.6 TO 3.65 STEP 1.5E-1
50 Y=B*X*X+EXP(X-1)
60 PRINT “Y=“;Y,”X=“;X
70 NEXT X
80 END
Y=84.9238 X=2.6
Y=95.2189 X=2.75
Y=106.176 X=2.9
Y=117.816 X=3.05
Y=130.164 X=3.2
Y=143.248 X=3.35
Y=157.1 X=3.5
Y=171.759 X=3.65
3.2. З використанням умовного оператора
10 REM ЦИКЛІЧНА ПРОГРАМА
20 REM ВИКОРИСТАННЯ УМОВНОГО ОПЕРАТОРА
30 B=11.83 : X=2.6
40 Y=B*X*X+EXP(X-1)
50 PRINT “Y=“;Y,”X=“;X
60 X=X+0.15
70 IF X<=3.65 THEN 40
80 END
Y=84.9238 X=2.6
Y=95.2189 X=2.75
Y=106.176 X=2.9
Y=117.816 X=3.05
Y=130.164 X=3.2
Y=143.248 X=3.35
Y=157.1 X=3.5
Y=171.759 X=3.65
4.Прогама мовою С
#include <stdio.h>
#include <math.h>
#define x1 2.6
#define x2 3.66
#define dx 1.5e-1
#define b 11.83
main( )
{
float x,y;
for(x=x1;x<x2;x+=dx)
{
y=b*x*x+exp(x-1);
printf(“\ny=%f x=%f,y,x);
}
}
Y=84.923828 X=2.600000
Y=95.218979 X=2.750000
Y=106.176201 X=2.900000
Y=117.816490 X=3.050000
Y=130.164230 X=3.200000
Y=143.247772 X=3.350000
Y=157.100037 X=3.500000
Y=171.759277 X=3.650001
5. Праграма мовою Pascal
program lab3(input,output);
const b=11.83;
var x,y : real;
i : integer;
begin
x:=2.6;
for i:=1 to 8 do
begin
y:=b*x*x+exp(x-1);
writeln(‘y=‘,y:11,’ x=‘,x:11);
x:=x+0.15;
end;
end.
Y=8.4924E+01 X=2.6000E+00
Y=9.5219E+01 X=2.7500E+00
Y=1.0618E+02 X=2.9000E+00
Y=1.1782E+02 X=3.0500E+00
Y=1.3016E+02 X=3.2000E+00
Y=1.4325E+02 X=3.3500E+00
Y=1.5710E+02 X=3.5000E+00
Y=1.7176E+02 X=3.6500E+00
Завдання:
Скласти програму для обчислення таблиці значень функції:
, b= 11.83
Аргумент х змінюється від початкового значення х = 2.6 з постійним кроком 0.15, кількість значень функції n = 8.
Опис форми.
Відкриваємо нову форму і на цій формі створюємо такі елементи (таблиця 3.3):
Таблиця 3.3 - Елементи керування і їх властивості
Елемент (Name) | Властивість | Значення |
CommandButton1 | Caption | Розрахунок |
CommandButton2 | Caption | Вихід |
Рисунок 3.3- Інтерфейс програми
Програма.
Private Sub Command1_Click()
Dim x, y, b as Single
b = 11.83
For x = 2.6 To 3.65 Step 0.15
y = b * x ^ 2 + Exp(x - 1)
Print "y="; Format(y, "###.####"), "x="; Format(x, "##.##")
Next x
End Sub
Private Sub Command2_Click()
End
End Sub
Рисунок 3.4 – Результат виконання програми
Програма мовою Delphi
Опис форми.
Відкриваємо нову форму і на цій формі створюємо такі елементи (таблиця 3.2) :
Таблиця 3.3 - Елементи керування і їх властивості
Елемент (Name) | Властивість | Значення |
Label1 | Caption | Результати |
Memo1 | Lines | Витерти Memo1 |
Button1 | Caption | Обчислити |
Button2 | Caption | Вихід |
Рисунок 3.5 – Інтерфейс програми.
Код програми матиме вигляд.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
Label1: TLabel;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
const b=11.83;
var
Form1: TForm1;
x,y : real;
i : integer;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
begin
x:=2.6;
for i:=1 to 8 do
begin
y:=b*x*x+exp(x-1);
Memo1.Lines.Add('y='+format('%2.7s',[FloatToStr(y)])+' x='+FloatToStr(x));
x:=x+0.15;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
close;
end;
end.
Рисунок 3.6– Вікно програми підчас виконання.
Пояснення до програм
В графічному алгоритмі (рис.3.1) в символі 3 формується заголовок циклу, де вказано початкове, кінцеве значення параметра циклу і крок його зміни, символи 4 і 5 являють собою тіло циклу. На рис.3.2 наведено алгоритм циклічної програми із застосуванням логічного символу 6, де значення параметра циклу зрівнюється з кінцевим. В символі 3 задається початкове значення параметра циклу, а в символі 5 нарощується параметр циклу на величину кроку.
В прикладі наведено дві програми мовою GW Basic, одна з них - із застосуванням оператора циклу FOR...NEXT, що відповідає алгоритму, зображеному на рис.3.1, друга - з використанням опе-ратора умовного переходу, що відповідає алгоритму, показаному на рис.3.2.
При побудові програми мовою Pascal за допомогою оператора циклу введена додаткова цілочисельна змінна і, яка змінюється від 1 до 8 з кроком 1. Перед складанням прграми необхідно визначити кінцеве значення цієї змінної, користуючись формулою (3.1).
Питання для самоперевірки
1. Що таке цикл? Складові частини циклу?
2. Чому в циклічних процесах з регулярною зміною аргумента мовою Pascal необхідно вводити додаткову керуючу змінну?
3. Які дані необхідні для організації циклу?
4. В яких межах змінюється параметр циклу в приведених програмах?
5. Яка різниця в алгоритмах циклів, побудованих за допомогою оператора циклу і за допомогою умовних операторів?
6. Який оператор в наведених програмах контролює умову виходу з циклу?
7. Дайте зрівняльну характеристику програм з використанням умовного оператора і оператора циклу?
8. Які відмінності в організації циклу з післяумовою і передумовою.