Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
методичка_1_05_ВНУ.doc
Скачиваний:
2
Добавлен:
08.09.2019
Размер:
1.71 Mб
Скачать

Оператор варіанта

Оператор варіанта є узагальненням умовного оператора: він дає змогу виконати один з декількох операторів (в умовному - з двох) залежно від значення деякого виразу, який називається селектором. Загальний вигляд оператора варіанта такий:

case <селектор> of

<список міток 1>: <оператор 1>;

<список міток 2>: <оператор 2>;

. . . . . . . . . . .

<список міток N>: <оператор N>;

end;

У цьому випадку селектор - вираз або змінна будь-якого простого типу, крім дійсного. Список позначок (міток) - це список розділених комою можливих значень селектора або одне його значення. В Турбо Паскалі позначки можна задавати і як діапазон. Ці сталі повинні мати той же тип, що й селектор, їх називають позначками (мітками) варіанта. Позначка варіанта - це не обов'язково ціле число, її не описують у розділі label. Кожна така позначка зіставляється тільки з одним оператором. Оператор варіанта вибирає для виконання той оператор, одна з позначок якого дорівнює поточному значенню виразу селек­тора. Після виконання вибраного оператора керування пере­дається на кінець оператора case.

Приклад оператора варіанта такий:

case j of

1: х:=0;

2: x:=sin(x);

3: х:=ехр(х);

4: x:=ln(x)

end;

У Турбо Паскалі можлива конструкція з else:

case color of

red: x:=y-2;

blue: x:=y;

white: x:=y/2

else

writeln('помилка');

writeln('y=', у)

end;

Для альтернативи else допускають довільну кількість опе­раторів, на відміну від позначених, де може бути тільки один оператор.

Другий приклад, коли для селектора використовують змін­ну перелічуваного типу, - це фрагмент програми, в якому ви­значають тривалість місяця.

type

misjac=(sc,It,br,kvt,tr,crv,Ip,srp,vrs,zt,Id,gr);

rik=1900..2000;

tryv_misjacja=28..31;

var

mm: misjac;

pp: rik;

tryv: tryvjmisjacja;

………………………….

case mm of

sc, br, tr, Ip, srp, zt, gr: tryv:=31;

kvt, crv, vrs, Id: tryv:=30;

It: if (pp mod 4=0) and (ppmod100<>0) or (ppmod400=0)

then tryv:=29

else tryv:=28

end.

Зауваження. Звичайно реалізації мови Паскаль до­пускають тільки латинські символи для ідентифікаторів. Однак ми часом використовуватимемо літери українського алфавіту, щоб програми були зрозумілішими, маючи на увазі, що під час введення в комп'ютер їх потрібно замінити на латинські.

Оператор безумовного переходу

Розглянутий умовний оператор if-then-else вибирає один з двох можливих напрямів виконання програми залежно від виконання умови. Інакше його називають оператором умовного переходу. В програмі може виникнути потреба перейти до виконання деякого відрізка програми незалежно від жодної умо­ви. Такий перехід реалізують у мові Паскаль за допомогою оператора безумовного переходу

goto <позначка>.

Тут позначка (мітка) - це число без знака, описане в розділі lable (в Турбо Паскалі може бути ідентифікатор). Оператор goto передає керування до оператора, виділеного відповідною по­значкою.

Оператор goto в мові Паскаль використовувати небажано, оскільки це порушує структурну цілісність і наочність про­грами. Застосовують його в крайніх випадках - наприклад, для виходу із деякого складеного оператора, якщо виникає особлива ситуація в програмі.