Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Л.р._3.DOC
Скачиваний:
5
Добавлен:
04.03.2016
Размер:
147.46 Кб
Скачать

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 буде розглянуто нижче.