
- •Лабораторна робота № 3. Оператори повторення.
- •Короткі теоретичні відомості.
- •1. Оператор циклу з параметром.
- •2. Циклічні програми. Складність циклічної програми.
- •3. Оператори повторення While і Repeat.
- •4. Обмежені типи.
- •5. Мітки. Оператор переходу. Застосування оператора переходу для дострокового виходу з циклу.
- •Хід роботи.
- •Контрольні питання.
4. Обмежені типи.
Обмежений тип у мові Паскаль можна визначити, накладаючи обмеження на вже визначений скалярний тип - його називають базовим скалярним типом. Обмеження визначаються діапазоном - мінімальним і максимальним значеннями констант базового скалярного типу. Обмеження стандартного типу Real не допускається.
Синтаксична діаграма обмеження має вид:
Обмежений
тип
Наприклад:
а) Type Day = 1..30; - обмеження на тип integer;
б) Digit = ‘0’..’9’; - обмеження на тип char;
Базовий скалярний тип визначає допустимість всіх операцій і відношень над значеннями обмеженого типу. Обмежені типи дають можливість описувати алгоритм у більш наочній формі. Крім цього, у процесі трансляції і виконання програми з’являється можливість економити пам’ять і здійснювати контроль присвоювань.
Приклад 5.
Program Time_Table;
Type Weekday = (Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday);
Workday = Monday .. Friday;
Var i : Workday;
Begin
For i := Monday to Friday do
Case i of
Monday: Writeln(‘фізика‘, ’інформатика‘, ’історія’);
Tuesday, Friday: Writeln(‘мат. аналіз‘,’педагогіка‘, ‘англійська’);
Wednesday, Thursday: Writeln(‘фізика ‘,’алгебра‘,’інформатика’)
end
End.
5. Мітки. Оператор переходу. Застосування оператора переходу для дострокового виходу з циклу.
Оператор переходу вказує, що подальша робота (виконання програми) повинна продовжуватись з іншої точки програми, а саме, з оператора, відміченого міткою.
Оператор має вид:
Goto < мітка >
Мітка представляє собою ціле число без знака, що складається не більш ніж з 4 цифр. У розділі операторів кожна мітка може зустрічатися тільки перед одним оператором. Кожна мітка, що зустрічається в розділі операторів, повинна бути описана в розділі міток.
Розділ міток визначений наступною діаграмою:
Розділ
міток
Після мітки, що відмічає оператор, треба ставити двокрапку. Наприклад:
1995 : х := х +I;
1 : read(Y);
Увага! Дія оператора переходу усередину складного оператора ззовні не визначено.
Оператор переходу слід використати у незвичайних, виняткових ситуаціях, коли доводиться порушувати природну структуру алгоритму. Треба пам’ятати, що будь-який алгоритм може бути реалізований без застосування Goto без втрати ефективності. Цей факт має принциповий характер. Саме тому структурний стиль програмування іноді називають “Програмування без Goto”.
У якості єдиного приклада програми з Goto розглянемо задачу пошуку елемента в одномірному масиві.
Приклад 8.
Program Search_in_Array;
Label 1;
Const n = 100;
Var A : Array[1..n] of Real;
b : Real;
Flag : Boolean;
i : Integer;
Begin
{Блок читання масиву A і елемента b}
Flag := true;
For i := 1 to n do
If A[i] = b then begin
Flag := false; goto1
end; { переривання циклу }
1:If Flag
then Writeln(‘ Елемент ‘,b,’ у масиві відсутній ’)
else Writeln(‘ елемент ‘,b,’ стоїть на ’,i,’-тому місці ’);
End.
Вишуканий (елегантний) розв’язок цієї задачі без застосування Goto буде розглянуто нижче.