Смекни!
smekni.com

Програмування Структури перехід та вибір варіанту типи символів та перелічувані (стр. 2 из 2)

5.. Оператор вибору варіантів

Розробимо програму "найпростіший калькулятор" . Будемо використовувати змінну signop іззначеннями 1, 2, 3 або 4, що познає знаки операцій відповідно "+", "-", "*", "/". Її значення, отримане врезультаті читання, порівнюємо з 1, 2, 3, 4 та виконуємо відповідні їм дії:

if signop=1 then first:=first+second else

if signop=2 then first:=first-second else

if signop=3 then first:=first*second else

{signop=4}

first:=first/second;

Цейоператорзадаєвибірпотрібногооператоразтих, якізаписанопісляслів then, залежновідзначеннязмінноїsignop. Такий вибір у мові Паскаль можна задати інакше, використавши оператор вибору варіантів, абоcase-оператор (case – англійське "випадок"). У даній програмі він має вигляд:

case signop of

1: first:=first+second;

2: first:=first-second;

3: first:=first*second;

4: first:=first/second

end;

Виразпісляслова case (тутцеім'я signop) називаєтьсяселекторомваріантів. Його значення послідовнопорівнюється з числами, що "відмічають" оператори-варіанти. Як тільки значення селектора співпаде з числом, будевиконано відповідний оператор, і все закінчиться. Якщо ж значення селектора відрізняється від усіх чисел-відміток

варіантів, то жодний із варіантів не виконується.

Селектором може бути довільний вираз будь-якого перелічуваного типу. Варіант може бути відмічений списком ізкількох сталих відповідного типу; вони записуються через кому. Наприклад, нехай робочий час у робочі дні 8годин, а у вихідні – 0. За дії означення типу Weekd ми можемо запам'ятати в змінній wt робочий час:

var dd : Weekd; wt : integer;

case dd of

Mon, Tue, Wed,Thu, Fri : wt:=8;

Sat, Sun : wt := 0

end.

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

У мові Бор ланд-Паскаль у списках, що відзначають варіанти, можна записувати не тільки сталі, але й діапазони.

Наприклад, останній оператор можна переписати так:

case dd of

Mon .. Thu, Fri: wt:=8;

Sat, Sun: wt:=0

end.

За останнім варіантом можна після слова else указати необов'язковий альтернативний варіант. Цей варіантвиконується, якщо значення селектора немає в жодному зі списків. Наприклад, останній оператор можна переписати втакому вигляді:

case dd ofMon .. Fri: wt:=8;

Sun: wt:=0

else wt:=0

end.

Задачі

1)Переписати "найпростіший калькулятор із використанням case-оператора і читанням знаків операцій увигляді символів.

2)У давньояпонському календарі був прийнятий 60-річний цикл із п'яти 12-річних підциклів, послідовно позначенихкольорами – зеленим, червоним, жовтим, білим та чорним. У кожному підциклi послідовні роки мали назви тварин: пацюка,

корови, тигра, зайця, дракона, змії, коня, вівці, мавпи, курки, собаки та свині. 4-й рік нової ери – рік зеленого пацюка – бувпочатком чергового циклу.

Написати програму читання року нової ери та друкування його назви за давньояпонським календарем.