- •Лабораторна робота № 3. Оператори повторення.
- •Короткі теоретичні відомості.
- •1. Оператор циклу з параметром.
- •2. Циклічні програми. Складність циклічної програми.
- •3. Оператори повторення While і Repeat.
- •4. Обмежені типи.
- •5. Мітки. Оператор переходу. Застосування оператора переходу для дострокового виходу з циклу.
- •Хід роботи.
- •Контрольні питання.
Лабораторна робота № 3. Оператори повторення.
Мета: вивчення засобів мови Borland Pascal, за допомогою яких програмуються циклічні алгоритми. Поняття циклу, операторів повторення (циклу). Обмежений тип даних.
Короткі теоретичні відомості.
1. Оператор циклу з параметром.
Цикли - основний засіб у програмуванні, що дозволяє коротко записувати алгоритм, який здійснює велику кількість дій.
Для реалізації циклічних алгоритмів у мові Паскаль використовуються оператори повторення:
оператор циклу з параметром;
оператор циклу з передумовою;
оператор циклу з постумовою.
Оператор циклу з параметром передбачає повторне виконання деякого оператора з одночасною зміною значення, що присвоюється керуючою змінною (параметру цього циклу). Він має вид:
For < параметр > := <початкове значення > to <кінцеве значення > do <оператор >
або
For < параметр >:=< початкове значення > downto <кінцеве значення > do <оператор>
Синтаксична діаграма оператора циклу з параметром:
Оператор циклу
з параметром
Ім’я - це ім’я змінної - параметра циклу;
А - початкове значення параметра циклу;
В - кінцеве значення параметра циклу;
Оператор - тіло циклу.
Параметр циклу, початкове і кінцеве значення повинні бути одного й того ж скалярного типу ( крім дійсного). Початкове і кінцеве значення обчислюються лише один раз - при вході в цикл, і, отже, повинні бути визначені до входу в цикл і не можуть бути змінені в тілі циклу.
Якщо початкове і кінцеве значення розділяє службове слово to, то після виконання оператора (тіло циклу) параметр циклу (наприклад v) приймає значення Succ(v), якщо ж дільником початкового і кінцевого значень служить слово downto, то параметр циклу v після виконання тіла циклу приймає значення Pred(v). Зокрема, якщо параметр v має тип Integer, то одночасно з виконанням тіла циклу здійснюється або присвоювання v := v + 1 (to), або v := v - 1 (downto). Додатково (примусово) змінювати значення параметра в тілі циклу не рекомендується, оскільки контроль за правильністю виконання такого циклу дуже затруджений. Якщо в циклі з to початкове значення більше, ніж кінцеве, то цикл не виконується взагалі. Аналогічно, якщо в циклі з downto початкове значення менше, ніж кінцеве, цикл також не виконується.
Приклад 1.
Program NFactorial; var Factorial, Argument: Integer; i : Integer;
Begin
Write(‘ введіть аргумент факторіала ‘);
Readln(Argument) ;
Factorial := 1;
For i := 2 to Argument do Factorial := i*Factorial;
Writeln(Argument,’! = ‘, Factorial)
End.
У цьому прикладі
i - параметр циклу;
2 - початкове значення параметра циклу;
Argument - кінцеве значення параметра циклу;
Factorial := i*Factorial - тіло циклу.
Часто крок зміни змінної, яка управляє циклом, відрізняється від 1, -1. Наступний приклад демонструє використання циклу з параметром у таких обчисленнях.
Приклад 2. Табулювання функції дійсної змінної.
Рrogram Tabulation;
const Pi=3.14159262;
var MinBound, MaxBound, Step: Real;
x, y : Real; Coef : Real;
i, n : Integer;
Begin
Write(‘Введіть межі табулювання ‘); Readln(MinBound, MaxBound);
Write(‘Введіть крок табулювання ‘); Readln(Step);
n := Round((MinBound - MaxBound)/Step);
x := MinBound; Coef := 1/Sqrt(Pi);
for i := 0 to n do begin
y := Coef * exp(-Sqr(x)/2);
writeln(‘ x = ‘,x,’ y = ‘,y);
x := x + Step
end;
End.
Програма табулює функцію y=1/ e-x2/2 в інтервалі значень [MinBound, MaxBound] з кроком Step. Зверніть увагу на те, що перед входом у цикл обчислюється N - верхня межа параметра циклу, а в тілі циклу обчислюється наступне значення х.