Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
іНФОРМАТИКА 1.doc
Скачиваний:
15
Добавлен:
15.08.2019
Размер:
13.85 Mб
Скачать

7.2. Основи структурного програмування Оператори циклу: цикл з параметром, цикл з передумовою та післяумовою. Ітераційні цикли. Вкладені циклічні структури.

П л а н

  1. Структура повторення.

  2. Оператори циклу.

  • Оператор циклу з параметром

  • Оператор циклу з передумовою

  • Оператор циклу з після умовою

  1. Ітераційні цикли.

  2. Вкладені цикли.

1. Структура повторення.

В розглянутих раніш програмах кожен оператор виконувався один або кілька разів. Для розв'язування таких задач недоцільно використовувати персональний комп'ютер, оскільки на складання та відлагоджування програми затрачується достатньо багато часу. Але для розв’язування деяких задач використання комп'ютера просто необхідне. В таких задачах доводиться виконувати обчислення за одними і тими ж залежностями, однак для різних значень величин, що є в цих залежностях. Такий процес називається циклічним. Групи операторів програми, виконання котрих повторюється неодноразово, називаються циклами.

Циклічна структура програми позволяє проводити багатократні повторення групи операторів при зміні одного чи кілька параметрів одночасно. Алгоритм циклічної структури повинен містити такі етапи:

  • задання початкових значень змінних циклу;

  • дії, що виконуються в ньому;

  • модифікацію значень змінних циклу перед кожним новим його повторенням;

  • перевірку умови продовження циклу і перехід на початок циклу чи вихід з циклу залежно від виконання умови.

Простим циклічним процесом може бути табулювання функції y=f(x) для xє [x0,xn] з кроком h. Цю задачу можна реалізувати за допомогою операторів присвоєння, умовного та безумовного переходів.

х:=x0;

2:y=…;

x:=x+xh;

if x<xn then goto 2;

В мові Паскаль є три можливості організувати циклічний процес – це оператори циклу з передумовою, з післяумовою та з параметром.

2.Оператори циклу.

Оператори циклу використовуються для реалізації обчислень, що багаторазово повторюються.

Цикл – це ділянка програми, в якій одні і ті ж операції обчислюються багаторазово з різними значеннями одних і тих же змінних. Один прохід циклу називається ітерацією. Перевірка умови виконується на кожній ітерації до тіла циклу. Змінна, що змінюється в тілі циклу і використовується при перевірці умови продовження, називається параметром циклу. До входу в цикл необхідно задати початкові значення змінних, що в ньому використовуються. Цикл завершується коли умова його продовження не виконується.

В мові програмування Pascal розрізняють три оператори циклу.

  • Оператор циклу з лічильником – FOR.

  • Оператор циклу з передумовоюWHILE.

  • Оператор циклу з післяумовою – REPEAT.

Оператор циклу з лічильником – FOR використовується у випадках, коли заздалегідь відома кількість повторень (ітерацій).

Є два види оператора циклу FOR: при збільшенні значення параметра, при зменшенні значення параметра.

  • при збільшенні значення параметра:

FOR <змінна>:=<початкове значення> TO <кінцеве значення> DO <оператор>;

<змінна>змінна, якій спочатку присвоюється початкове значення, виконує роль лічильника і при кожному повторенні збільшується на одиницю;

<початкове значення> та <кінцеве значення>вирази, що визначають відповідно початкове та кінцеве значення параметра циклу;

<оператор> - простий або складений оператор, що є тілом циклу.

Виконання оператора for здійснюється за таким алгоритмом.

Спочатку обчислюються та порівнюються значення виразів <початкове значення> та <кінцеве значення>. Якщо початкове значення більше за кінцеве, то виконання циклу завер­шується, інакше лічильнику циклу присвоюється початкове значення і викону­ється тіло циклу. Після виконання тіла циклу порівнюється поточне значення лічильника з його кінцевим значенням, і, якщо ці значення не рівні, то поточне значення лічильника збільшується на одиницю і виконання циклу триває далі. Цикл завершує свою роботу тоді, коли поточне значення лічильника циклу стає рівним його кінцевому значенню.

Збільшення лічильника здійснюється автоматично, тобто на кожній ітерації циклу, неявно виконується оператор <лічильник>:=<лічильник>+1, а отже, цей оператор не потрібно записувати до тіла циклу в явному вигляді. Цикл з лічильником не завершить своєї роботи, якщо поточне значення лічильника буде більшим за кінцеве значення.

  • при зменшенні значення параметра:

FOR<лічильник>:=<початкове значення> DOWNTO <кінцеве значення> DO <оператор>;

Якщо початкове значення лічильника циклу буде меншим за кінцеве, то цикл for…downtо не виконується жодного разу. Якщо ці значення рівні, то цикл виконується лише один раз.

Для дострокового виходу з тіла циклу у вигляді складеного оператора використовується оператор безумовного переходу GOTO.

Значення параметра в середині циклу змінювати не можна.

Вважається, що параметр циклу після його завершення дорівнює кінцевому значенню. Якщо кінцеве значення дорівнює початковому, то цикл виконується один раз.

Використовуючи оператор циклу з параметром, треба врховувати такі правила:

  1. заборонено змінювати всередині циклу параметр циклу, вираз1, вираз2;

  2. заборонено входоти в цикл, оминувши оператор for , оскільки значення параметру циклу, вираз1 і вираз2 будуть невизначеними;

  3. цикл не виконується взагалі, якщо початкове значення більше(меньше) від кінцевого;

  4. після закінчення виконання циклу значення параметру циклу не визначене і не може бути використане для подальших обчислень;

  5. після службового слова do може стояти лише один оператор; якщо в циклі треба виконати групу операторів, то їх беруть в операторні дужки begin-end ;

  6. із складеного оператора можна вийти за допомогою оператора безумовного переходу. У цьому випадку останнє значення параметра циклу зберігається.

П р и к л а д:

Як відомо, в Паскалі операція піднесення до степені не належить до стандартних. Складемо програму, котра буде підносити до цілого степеня довільне дійсне число.

PROGRAM stepin;

USES Crt;

VAR x,y:REAL;

a,i:INTEGER;

BEGIN

CLRSCR;

WRITE('Введiть основу ');

READLN(x);

WRITE('Введiть показник степеня ');

READLN(a);

y:=1;

FOR i:=1 TO a DO

y:=y*x;

WRITELN('Число ',x:12:6,' в ',a,' степені становить',y:12:6);

END.

П р и к л а д: Розробити програму табулювання значення функції.

Початкове значення аргументу хпоч=1; кінцеве значення хкінц=10; крок зміни аргументу h= 1;

В даному прикладі використовується оператор циклу FOR, тому що заздалегідь відома кількість ітерацій циклу і збільшення параметру циклу (аргументу х) відбувається на одиницю.

Лістинг програми.

Program tabul;

Var x:byte;

Y:real;

Begin

For x:=1 to 10 do

Begin

If x<5 then

Y:=cos(sqr(x+1)

else y:=Sqrt(Sqr(x)+1);

Writeln (“x=”, x:3, “ ”, “y=”, y:5:2);

End;

End.

Оператор циклу з передумовою WHILE

Цикл з передумовою використовується у випадках, коли невідома кількість повторень циклу і тіло циклу може ні разу не використовуватися.

Дія оператора полягає в тому, що тіло циклу виконується до тих пір, поки значення логічного виразу є істиним (true). Як тільки значення умови стане хибне , відбувається вихід з циклу і виконуватиметься наступний оператор.

Синтаксис оператора циклу з передумовою:

w hile <умова продовження циклу> do <оператор>;

Тут whilе <умова продовження циклу>

do є заголовком циклу,

<оператор>його тілом, тілом циклу може бути операторним блоком і містити в собі будь-які оператори: циклу, вибору, присвоєння тощо.

Оператор циклу з передумовою виконується за таким алгоритмом.

Спочатку обчислюється умова продовження циклу, що записана в його заголовку. Якщо вона істинна, то виконується тіло циклу, інакше виконання циклу припиняється. Після виконання тіла циклу буде знову перевірена умова його продовження. Чер­гування виконання тіла циклу та перевірки умови продовження триває доти, до­ки умова не стане хибною.

Згідно з синтаксисом оператора while тіло циклу є одним оператором. Для того щоб в циклі виконувалося декілька операторів, їх треба оточити операторними дужками begin...end.