Команда циклу з передумовою (while)
В більшості задач цикли доводиться виконувати невідому кількість разів. Ця ситуація виникає, якщо обчислення значення функції закінчується у випадках, коли досягнуто заданої точності, або коли виконання оператора залежить від інформації, що вводиться користувачем, або коли у масиві необхідно знайти елемент з конкретним значенням тощо. У цих випадках певну послідовність дій необхідно виконувати декілька разів, причому необхідне число повторень під час розробки програми невідоме і може бути визначеним тільки під час роботи програми, тобто в процесі обчислення задач.
Оператор циклу з передумовою –while (поки)призначений для організації багатократного виконання групи вказівок (тіло циклу) до тих пір, доки залишається істинною умова виконання циклу.
Оператор циклу з передумовою має вигляд:
while<логічний вираз> do
Begin
<вказівка 1>;
<вказівка 2>;
……….;
<вказівка N>
end;
Тут while(поки), do(виконати) - зарезервовані слова; логічний вираз -умова, яка визначає виконання циклу.
Дія команди. Обчислюється значення логічного виразу (умови). Якщо умова істинна (приймає значення true), то виконується група вказівок (тіло циклу). Виконання програми знову повертається до перевірки умови циклу. Якщо умова хибна (приймає значення false), то виконується вказівка, яка знаходиться після оператору повторення з передумовою.
Блок-схема оператора циклу з передумовою має вигляд:
Примітка.
1. Якщо умова у вказівці повторення хибна при першій же перевірці, то тіло циклу не виконується жодного разу. Умова оператора є умовою входження в цикл.
2. Умову оператора повторення з передумовою необхідно підбирати таким чином, щоб в деякий момент вона змінила своє значення з true на false, інакше виникне ситуація “зациклювання” програми.
3. Програмісту необхідно самому потурбуватись про необхідність збільшення (зменшення) лічильника циклу на 1. Це можна зробити таким чином I:=I+1.
4. Входження в тіло оператора повторення можливе тільки через заголовок цього оператора.
Приклад. Нехай змінні x, s мають значення x= 4, s= 0. Після виконання команди
whilex<=8 do
Begin
s:=s+x; x:=x+1
End;
вони набудуть значень s=4+5+6+7+8=30, x=9.
Приклад. Вивести таблицю чисел від 20 до 30, їхні квадрати та куби за допомогою команди whileможна так: i:= 20;
whilei <= 30 do
Begin
writeln(i:4, sqr(i):6, exp(3*ln(i)):8); i:= i + 1
End.
Задача 1. Знайти суму всіх натуральних чисел від 1 до N.
programSUMA1;
varI,N,S: integer; begin
writeln(‘Введіть кількість натуральних чисел:’);
write(‘N=’);
readln(N);
I:=1;
S:=0;
whileI<=N do
Begin
S:=S+i; i:=i+1 end; writeln(‘S=’,S)
end.
4. Оператор циклу з післяумовою (repeat-until)
Оператор циклу з післяумовою призначений для організації багатократного виконання групи вказівок (тіло циклу) до тих пір, поки умова виконання циклу не стане істинною (логічний вираз дорівнює ш false, a trye).
Оператор циклу з післяумовою має вигляд: repeat
<вказівка 1>;
<вказівка 2>;
……….;
<вказівка N> until<логічний вираз>;
Тут repeat(повторювати), until(до тих пір поки) - зарезервовані слова; логічний вираз - умова, яка визначає завершення циклу.
Перевірка умови здійснюється не на початку циклу, а в кінці (що гарантує, як мінімум, одноразове виконання тіла циклу).
Дія команди. Спочатку виконуються вказівки, які входять до тіла циклу. Потім обчислюється значення умови-виразу. Якщо умова хибна (тобто має значення false), то знову виконуються вказівки тіла циклу. Якщо умова стає істинною (true), то виконання циклу припиняється і виконується наступна вказівка програми.
Примітка.
1. Тіло циклу, яке складається з групи вказівок, не потрібно брати в дужки (begin - end), оскільки службові слова repeat - untilвідіграють роль дужок.
2. Тіло циклу в операторі циклу з післяумовою виконується щонайменше один раз.
3. Умова оператору є умовою виходу з циклу.
4. Входження в тіло оператору циклу можливо тільки через заголовок цього оператору.
Блок-схема оператора циклу з післяумовою має вигляд:
Приклад. Нехай змінні x, у мають значення x=5, y=0. У результаті виконання команди repeat
у:=у+x;
z:=2*x;
x:=x–2 untilx<=1; змінні y, z, x набудуть значень y=0+5+3=8, z=6, x=1.
Задача 2. Знайти суму всіх натуральних чисел від 1 до N.
programSUMA2;
vari,N,S: integer;
Begin
writeln(‘Введіть кількість натуральних чисел:’);
write(‘N=’);
readln(N);
i:=1;
S:=0;
Repeat
S:=S+i;
i:=i+1;
untili>N;
writeln(‘S=’,S);
end.
Для організації паузи в процесі виконання програми можна використовувати конструкцію Repeat Until KeyPressed(використовується до натискання будь-якої клавіші). В мові програмування Turbo Pascal логічна функція KeyPressedконтролює натискання клавіш. Якщо жодна з клавіш не натиснута, ця функція приймає значення False, інакше – True.
Зміст роботи
1. Вивчити теоретичний матеріал.
2. Виконати індивідуальне завдання.
3. Скласти звіт, в якому відповісти на теоретичні питання, описати алгоритм, описати програму, привести контрольний приклад виконання програми.
Індивідуальні завдання:
1. Обчислити значення виразу .
2. Обчислити значення виразу .
3. Задано натуральне число n, дійсне число x. Обчислити .
4. Задано натуральне число n, дійсне число x. Обчислити .
5. Задано натуральне число n, дійсне число x. Обчислити .
6. Задано натуральне число n, дійсне число x. Обчислити .
7. Задано натуральне число n, дійсне число x. Обчислити .
8. Обчислити значення виразу
9. Обчислити значення виразу для дійсного х, яке змінюється з 0,5 до 1,4 із кроком 0,1.
10. Обчислити наближене значення функції Y = sinx, використовуючи вираз при х = 0,5.
11. Обчислити таблицю значень функції на відрізку з кроком для а з кроком 0,1.
12. Обчислити таблицю значень функції на відрізку з кроком 0,2 для х з кроком 0,5. Точку х=а виключити.
Методичні РЕКОМЕНДАЦІЇ
1. Для виконання лабораторної роботи потрібно перш за все опрацювати теоретичний матеріал.
2. Виконати індивідуальне завдання.
3. Показати результат роботи викладачеві.
4. Скласти звіт, в якому відповісти на теоретичні питання, описати алгоритм, тобто створити блок-схему, описати програму (лістинг програми з коментарями), привести контрольний приклад виконання програми (результат роботи програми).
5. Здати робоче місце, а оформлений звіт – викладачеві на підпис.
6. Під час виконання лабораторної роботи дотримуватися правил безпеки.
Приклад циклічної програми
Обчислити значення виразу, що містить суму і добуток
Лістинг програми:
programSumaDobutok; usesCrt; vari: integer;
suma, dob, y: real;
fact: longint;
Begin
clrscr;
suma:=0; {Спочатку сума дорівнює нулю, а добуток одиниці}
dob:=1;
fact:=1;
fori:= 1 to25 do begin
fact:= fact*i; {Обчислюємо факторіал (fact=1*2*3*…*f}
suma: = suma+5*sqr(i)/fact; {Обчислюємо суму та}
dob:=dob*sqr(i); {добуток}
End;
y:=suma+dob;
writeln(‘y=’, y:7:2);
readln
End.
Блок - схема програми:
Викладач ____________ М. О. Пашко