Модуль 4. Програмування лінійних, розгалужених та циклічних обчислювальних
Модуль 4. Програмування лінійних, розгалужених та циклічних обчислювальних процесів Заняття 5. Основи програмування циклічних обчислювальних процесів
Навчальні питання: 1. Оператор циклу з післяумовою 2. Оператор циклу з передумовою 3. Оператор циклу з лічильником
Циклом називають багаторазове повторення визначеної послідовності кроків алгоритму.
При кожному черговому виконанні циклу обов’язково перевіряється умова на продовження роботи, і, якщо умова набуває результату ІСТИНА, цикл виконується, а якщо ж умова набуває результату НЕПРАВДА — цикл не виконується.
Перевірка умови може бути організована на початку циклу, і такий цикл називається циклом з передумовою, або у кінці циклу — тоді такий цикл називається циклом з післяумовою.
Різниця між такими циклами полягає в тому, що цикл з післяумовою виконується хоча б один раз, а цикл з передумовою може не виконуватися жодного разу.
Цикл по лічильнику характерний тим, що заздалегідь відома кількість повторень циклу, і цикл буде виконуватися, доки значення лічильника циклу на перевищить зазначену кількість повторень.
Синтаксис оператора циклу з післяумовою : repeat <оператори> until <умова>.
Тут repeat, until - ключові слова, що визначають початок та кінець циклу (повторювати та доти); <оператори> - будь-які оператори, що складають тіло циклу); <умова> - логічний вираз типу порівняння, що використовується для виходу з циклу.
Оператор функціонує наступним чином: спочатку виконуються оператори, розташовані у тілі циклу, потім обчислюється умова, і якщо отриманий результат ІСТИНА, то здійснюється вихід з циклу.
Якщо значення виразу НЕПРАВДА, то виконання операторів тіла циклу повторюється, а потім знов перевіряється умова.
Таким чином, оператори тіла циклу виконуються хоча би один раз, а потів все залежить від результатів перевірки умови виходу з циклу. Очевидно, що один з операторів тіла циклу обов’язково має впливати на значення умовного виразу, у протилежному випадку цикл буде нескінченним.
Приклад: необхідно вивести непарні числа, менше за 10.
program pr10; var i:integer; begin i:=1; repeat writeln(i); i:=i+2; until i>10; end.
При виконанні програми будуть виведені стовпчиком всі непарні числа від 1 до 9.
На відміну від оператора циклу з післяумовою оператор циклу з передумовою обчислює та перевіряє умову до виконання операторів, що складають тіло циклу.
Синтаксис оператора циклу з передумовою : while <умова > do <оператор >.
Тут while, do - ключове слово (доти, виконувати);
<оператор> - будь-який оператор, в тому числі и складений (тіло циклу); <умова> - логічний вираз типу порівняння, що використовується для виходу з циклу.
Оператор функціонує наступним чином: спочатку обчислюється умова і якщо отриманий результат ІСТИНА, то виконуються оператори, розташовані у тілі циклу, потім знов перевіряється умова.
Якщо значення виразу НЕПРАВДА, то здійснюється вихід з циклу.
Таким чином, якщо умова була хибною при першому входженні у цикл, то оператори тіла циклу не будуть виконані жодного разу.
Очевидно, що один з операторів тіла циклу обов’язково має впливати на значення умовного виразу, у протилежному випадку цикл буде нескінченним.
Приклад: необхідно обчислити суму ряду s=1+1/2+1/3+1/4+ ... з визначеною точністю е.
Для обчислення суми ряду з точністю е необхідно завершити додавання членів ряду тоді, коли черговий член ряду виявиться менше е за абсолютною величиною.
program pr12; var i:integer; sum,{сума ряду} e,{точність} k:real;{черговий член pяду} begin sum:=0; i:=1; writeln(‘Введіть точність:'); read(e); k:=1/i; while k>e do begin sum:=sum+k; i:=i+1; k:=1/i; end; writeln (' Сума ряду дорівнює ', sum); end.
В циклах з лічильником виконання тіла циклу повторюється заздалегідь визначену кількість разів.
Цикл можна організувати за допомогою оператора циклу з післяумовою або з передумовою (вони є універсальними)
Синтаксис оператора циклу з лічильником наступний: for <з.ц.>:=<п.з> to <к.з.> do < оператор >.
Тут for, to, do - ключові слова (від, до, виконувати)
<з.ц.> - змінна циклу, яка може бути тільки порядкового типу; <п.з.> та <к.з.> - початкове та кінцеве значення відповідно - вирази, того же типу, що і змінна циклу; < оператор > - будь-який оператор, в тому числі и складений
Оператор функціонує наступним чином: спочатку обчислюється вираз, що відповідає початковому значенню, і результат присвоюється змінній циклу, потім перевіряється умова умова <п.з> <= <к.з.> і якщо отриманий результат ІСТИНА, то виконуються оператори, розташовані у тілі циклу, потім змінна циклу збільшується на 1 та знов перевіряється умова.
Приклад: оператор for i:=1 to 10 do writeln(i); виводить цілі числа від 1 до 10.
Якщо початкове значення змінної циклу більше кінцевого значення, оператори тіла циклу не виконуються, тобто оператор циклу з лічильником фактично є оператором циклу з передумовою.
Таким чином, оператор for i:=1 to 0 do writeln(i); не виконує ніяких дій.
Якщо необхідно виконати декілька операторів у тілі циклу, використовують складений оператор:
for i:=5 to 10 do begin k:=i*i; writeln('k=',k); end;
Оператор циклу з лічильником має другу форму подання, яка дозволяє зменшувати змінну циклу з кроком -1.
В цьому випадку синтаксис оператора наступний: for <з.ц.>:=<п.з.> downto <к.з.> do <оператор>;
Приклад: оператор for i:= 10 downto -10 do writeln(i); виводить цілі числа від -10 до 10.
Приклад: необхідно обчислити суму n перших членів ряду:
program pr12; var i,n:integer; sum,{ сума ряду } k:real;{черговий член ряду } begin sum:=0; writeln(' Введіть число членів pяду:'); read(n); k:=1; for i:=1 to n do begin k:=k*10/i; sum:=sum+k; end; writeln (' Сума ряду дорівнює ',sum); end.
Оператори break, continue и exit
Оператори break и continue можна використовувати виключно усередині циклів
Оператор break призначений для дострокового завершення циклу. Його виконання викликає негайний вихід з циклу та перехід до виконання оператора, наступного за циклом
Оператор continue завершує поточну ітерацію циклу, та здійснює перехід до завершення тіла циклу
flag:=False; for i:=1 to 10 do begin read(x); if x<0 then continue; // пропуск поточної ітерації циклу if x=5 then begin flag:=True; break; // вихід із циклу end; end;
Використання операторів break та continue поза тілом циклу помилково
4.5.ppt
- Количество слайдов: 56