ЦИКЛІЧНІ ПРОГРАМИ З РЕГУЛЯРНОЮ

ЗМІНОЮ АРГУМЕНТА

 

Цикл типова структура, яка характерна для багатьох програм. Цикл складається із заголовка і тіла циклу. Заголовок циклу мовою 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.1
18

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. Які відмінності в організації циклу з післяумовою і передумовою.