Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курс лекцый для 1 курса-1 семестр.doc
Скачиваний:
3
Добавлен:
09.11.2019
Размер:
2.95 Mб
Скачать

Аператар варыянта

Аператар варыянта з’яўляецца абагульненнем аператара IF і даз­ва­ляе зрабіць выбар з адвольнага ліку наяўных варыянтаў (галін).

Разгледзім, як выкарыстоўваецца аператар варыянта спачатку на схе­ме. Дапусцім, трэба рэалізаваць працэс, які мае такі выгляд: ідзе раз­га­лі­наванне па адным з n шляхоў у залежнасці ад нейкага значэння вы­ра­зу «варыянт парадкавага тыпу».

Схема аператара CASE:

Фармат аператара CASE :

CASE выраз-селектар OF

Спіс_1: аператар_1;

Спіс_2: аператар_2;

...

Спіс_n: аператар_n;

ELSE аператары

END;

дзе Спіс_і (1  і  n) – спіс канстант выбару.

Галіна ELSE можа адсутнічаць. Спачатку падлічваецца значэнне вы­ра­зу-селектара, потым забяспечваецца рэалізацыя таго аператара, кан­с­тан­та выбару якога роўна бягучаму значэнню селектара. Калі ніводная з кан­с­тант не роўна бягучаму значэнню селектара, тады:

пры наяўнасці варыянта ELSE выконваецца аператар, запісаны за ім;

 адсутнасці ELSE выконваецца першы аператар за мяжой CASE.

Сінтаксічная дыяграма аператара CASE (без варыянта ELSE):

Селектар павінен адносіцца да аднаго з простых пералічальных ты­паў: цэ­ла­лі­ка­вых (у дыяпазоне –32 768 .. 65 535), булеўскіх, сімвальных ці ка­рыс­та­ль­ніц­кіх (Longint, Real, String – не дазваляюцца).

Спіс канстант выбару складаецца з адвольнай колькасці значэнняў ці ды­я­па­зо­наў, якія аддзяляюцца адзін ад аднаго коскамі.

Прыклады.

1. Спіс канстант выбару інтэрвальнага тыпу, i – цэлалікавае:

CASE i OF

1..10: Writeln('лік', i:4, ' у дыяпазоне 1-10');

11..20: Writeln('лік', i:4, ' у дыяпазоне 11-20');

21..30: Writeln('лік', i:4, ' у дыяпазоне 21-30');

ELSE Writeln('лік', i:4, ' па-за межамі кантролю');

END;

2. Спіс канстант выбару цэлалікавага тыпу, i – цэлае:

CASE i OF

0, 1: x:=0;

2: x:=sin(x);

3: x:=cos(x);

4: x:=exp(x);

5: x:=ln(x)

END;

3. Спіс пералічальнага карыстальніцкага тыпу:

VAR

season: (Winter, Summer, Spring, Autumn);

BEGIN

CASE season OF

Winter : Write ('Зіма');

Summer : Write ('Лета');

Spring : Write ('Вясна');

Autumn : Write ('Восень')

ELSE

BEGIN

Writeln('Перыяд не вызначаны'); Halt

END

END;

З гэтага прыкладу робім вывад: аналагічным чынам можна ар­га­ні­за­ваць увод і вывад даных пералічальнага тыпу і абысці адпаведныя аб­ме­жа­ван­ні мовы.

4. Спіс канстант выбару літарнага тыпу:

VAR ch: Char; x, y, z: Integer;

CASE ch OF

'+' : z:=x+y;

'-' : z:=x-y;

'*' : BEGIN z:=x*y; …; END;

'/' : BEGIN z:=x div y; Writeln(x,y,z); END;

'^' : ;

END

5. Аператар IF у інтэрпрэтацыі аператара CASE:

VAR L: boolean;

CASE L OF

false : BEGIN … Write('няпраўда'); … END;

true : BEGIN … Write('праўда'); … END

END

6. Складаны выбар у інтэрпрэтацыі аператара CASE:

CASE i OF

1, 3, 5, 7, 9 : Write('няцотная лічба');

0, 2, 4, 6, 8 : Write('цотная лічба');

10..100 : Write('ад 10 да 100')

ELSE Write('<0 або >100');

END

Заўвага. Спіс канстант выбару нагадвае метку (у наступнай ін­тэр­п­рэ­та­цыі), але гэта не метка, на яе нельга спасылацца ў аператары пераходу. Яе не трэба аб’яўляць у LABEL.