- •Передмова
- •Тема 1: Правила техніки безпеки при роботі з комп’ютером
- •Тема 2: Алфавіт. Ідентифікатори. Константи. Вирази
- •Тема 3: Загальна структура і розділи Pascal-програми
- •Тема 4: Введення і виведення у Pascal-і. Форматоване виведення
- •Тема 5: Прості (скалярні) типи данних
- •Тема 6: Завантаження середовища Турбо Паскаль. Функціональні клавіші
- •Тема 7: Меню опції
- •Тема 8: Вираження і пріоритет операцій. Стандартні математичні функції та процедури
- •Тема 9: Умовний оператор. Вкладений умовний оператор
- •Тема 10: Оператор вибору
- •Тема 11: Оператори циклу. Оператор циклу з параметром
- •Тема 12: Оператор циклу з перед- і з постумовою
- •Тема 13: Складні типи. Масиви
- •Тема 14: Багатомірні масиви
- •Тема 15: Пошук і сортування елементів масиву. Класи алгоритмів сортування
- •Тема 16: Динамічна пам'ять. Адреси і покажчики
- •Тема 17: Оголошення покажчиків, виділення та звільнення динамічної пам’яті
- •Тема 18: Процедури та функції для роботи з динамічною пам’яттю
- •Тема 19: Символьний тип даних. Упаковані масиви
- •Тема 20: Процедури та функції для обробки рядків
- •Тема 21: Структурований тип даних - безліч
- •Тема 22: Структурований тип даних – записи
- •Тема 23: Опис файлових змінних. Обробка типізованих файлів
- •Тема 24: Послідовний та прямий доступ до файлів
- •Тема 25: Обробка не типізованих файлів
- •Тема 26: Робота з текстовими файлами
- •Тема 27: Типізовані константи
- •Тема 28: Поняття та робота з процедурами та функціями
- •Тема 29: Використання модуля crt. Програмування клавіатури
- •Тема 30: Використання модуля crt. Текстове виведення на екран. Програмування звукового генератора
- •Тема 31: Графічні можливості tp 7.0. Використання бібліотеки Graph
- •Тема 32: Бібліотечні модулі користувача
- •Тема 33: Основні принципи ооп. Створення об’єктів. Використання об’єктів
- •Список літератури
- •Додаток а (довідковий) Основні алгоритми обробки масивів
- •Додаток б (довідковий) Питання перевірки знань з теорії
- •Додаток в (довідковий) Поширені коди клавіш
- •Додаток д (довідковий) Коди сканування клавіатури
Тема 12: Оператор циклу з перед- і з постумовою
Оператор циклу з передумовою має загальний вид:
while логічне вираження do
begin
оператори тіла циклу
end;
де While (доки) і Do (виконувати) службові слова.
Робота оператора. Спочатку обчислюється логічне вираження і, якщо воно приймає значення True, то виконуються оператори тіла циклу, а якщо False , то керування передається на оператор після End.
Значення логічного вираження перевіряється перед кожним виконанням операторів тіла циклу.
Оператори тіла циклу, укладені в операторные дужки, являють собою складений оператор.
При використанні в циклічній частині оператора переходу Goto, що передає керування за межі циклу, можна перервати виконання циклу до його природного завершення.
Якщо в циклічній частині знаходиться лише один оператор, то операторні дужки Begin ... End можна опускати. Оператор циклу прийме вигляд:
while логічне вираження do оператор;
Іноді виникає ситуація, коли логічне вираження правдиве чи неправдиве при будь-яких вхідних у нього параметрах. Таке явище називається тавтологією. При тавтології True оператор зациклиться, при тавтології False – ніколи не виконається. Щоб таке не трапилося, параметри логічного вираження повинні змінюватися в тілі циклу.
Приклад, у якому логічне вираження завжди щире, тобто маємо тавтологію True, при якій оператор зациклиться:
var x: real;
begin
x :=0;
while x<>2 do
begin
writeln (x:6:2);
x:=x+0.3
end
end.
Тавтологія тут виникла через помилку в логічному вираженні: замість x<>2 потрібно було написати x<=2.
Приклад. Обчислити y=x2 при x=2, 4, 6, 8, 10.
var x,y: integer;
begin
x:=2;
while x<=10 do
begin
y:=x*x;
writeln(x:3,y:5);
x:=x+2;
end;
end.
При введенні даних в операторі циклу можна використовувати стандартну функцію EoLn. Вона має значення False поки не натиснута кл.Enter.
Наприклад:
var a,n:integer;
begin
n:=0;
writeln(‘кл.Enter не натиснута і знач. Функції EoLn=’,eoln);
while not eoln do {поки немає кінця рядка, виконувати цикл)
begin
read(a);
n:=n+a;
end;
writeln(‘n=’,n);
writeln(‘кл.Enter натиснута і значення функції EoLn=’,eoln);
end.
У цьому прикладі тіло циклу буде виконуватися доти, поки не буде натиснута кл. Enter, тобто поки при читанні даних не зустрінеться символ кінця рядка. При цьому функція EoLn прийме значення True і цикл припиниться.
Приклад. Підрахувати у введеному рядку кількість символів. Ознакою кінця рядка вважати натискання кл.Enter.
var
simbol: char;{символ введеного рядка}
n: integer;
begin
writeln(‘Введіть довільний рядок:’);
while not eoln do {поки немає кінця рядка, виконувати цикл}
begin
read(simbol);
n:=n+1;
end;
writeln;
writeln(‘У введеному рядку усього’,n’,символів’);
end.
Оператор циклу з постумовою має вид:
repeat
оператори тіла циклу
until логічне вираження;
де Repeat(повторити) і Until(доти) службові слова.
Робота оператора. Спочатку виконуються оператори циклічної частини, а потім перевіряється умова виходу з циклу. Якщо значення логічного вираження False, то виконання циклу повториться. Вихід з циклу здійснюється при правдивому значенні логічного вираження. У зв'язку з тим, що умова перевіряється після виконання циклічної частини, оператори циклу з постумовою завжди виконуються хоча б один раз. Цим оператор циклу з постумовою відрізняється від оператора циклу з передумовою.
Нижня границя операторів тіла циклу чітко позначена словом Until, тому циклічну частину не укладають в операторні дужки Begin...End, але якщо їх і поставити – помилки не буде.
При використанні в циклічній частині оператора переходу Goto, що передає керування за межі циклу, можна перервати виконання циклу до його природного завершення.
Приклад 1.Обчислити y=x^2 при x=0,2,4,6,8,10.
var x,y:integer;
begin
repeat
y:=x*x;
writeln(‘x=’,x,’y=’:5,y);
x:=x+2
until x>10
end.
Приклад 2.Обчислити y=x^2 при x=2,2.5,3,3.5.
var x,y:real;
begin
x:=2;
repeat
y:=x*x;
writeln(‘x=’,x:1:1,’y=’:3,y:2:3);
x:=x+0.5
until x>3.5
end.
Після Repeat і перед Until “;” можна не ставити, тому що ці слова є й операторними дужками. Але, якщо “;” і поставити, те це не буде помилкою.
В прикладі 1 перше значення аргументу x=0 не задано, тому що нульове значення привласнюється автоматично.
Питання для контролю.
1. Які оператори циклу маються в Pascal-і?
2. Як відбувається вхід у цикл і вихід з циклу?
3. Оператор циклу з передумовою. Робота оператора.
4. Як можна перервати виконання циклу до його природного завершення?
5. Явище тавтології і її попередження.
6. Використання функції Eoln при введенні даних.
7. Оператор циклу з постумовою. Робота оператора.
8. Чому циклічну частину в операторі циклу з постумовою не потрібно укладати в операторні дужки?
9. У чому полягає відмінність оператора з постумовою від оператора циклу з передмовою?
10. Чи можна ставити “;” після Repeat і перед Until?