Умовний оператор case

Цей оператор є узагальненням оператора if і дозволяє зробити вибір із довільного числа наявних варіантів. Він складається з виразу, що називається селектором, і списку параметрів, кожному з яких передує список констант вибору (список може складатися і з однієї константи). Як і в операторі if тут може бути присутнім слово else, що має той же зміст.

Формат опису:

case < вираз-селектор > of

< список констант вибору1 >: < оператор 1 >;

< список констант вибору 2 >: < оператор 2 >;

....

< список констант вибору n >: < оператор n >

else < оператор >

end;

Оператор case працює наступним чином. Спочатку обчислюється значення виразу-селектора, потім забезпечується реалізація того оператора, константа вибору якого дорівнює поточному значенню селектора. Якщо жодна з констант не дорівнює поточному значенню селектора, виконується оператор, що знаходиться за словом else. Якщо слово else відсутнє, активізується оператор, що знаходиться за словом end, тобто перший оператор за межею дії case.

Селектор повинен відноситися до одного з перелічувальних типів (цілого, булівського або літерного). Дійсні та рядкові типи використовувати в якості селектора заборонено. Список констант вибору складається з довільної кількості значень або діапазонів, відділених один від одного комами. Межі діапазону записуються двома константами через складений символ діапазону «..». Тип констант у будь-якому випадку повинен збігатися з типом селектора.

Приклад № 1

Обчислити значення логічних виразів.

1) х<у

При х = - 2.5, у = 0.1 ця умова буде істинною.

2) a and not (b — с)

При а = false, b =false, c = true умова буде хибною (false), тому що при з'єднанні двох умов службовим словом and, якщо одна з умов хибна, то й вся умова хибна. Дійсно, якщо хоч одна з умов, поєднаних словом «та», не є істинною, то й весь логічний вираз буде хибним.

3) not (a and b) or b = a

При а = true, b = false ця умова буде істинною, тому що (a and b) — хибна (одна з умов хибна); not (a and b) — істинна (заперечність хибності); not (a and b) or b = a — істинна (бо якщо з двох поєднаних службовим словом or умов хоч одна істинна, то весь вираз істинний).

4) not (a and (x < у)) or (x < 0)

При а = true, x = -0.1, у = 0.7 умова буде істинною, тому що друга з умов (х < 0) буде істинною, а при з'єднанні двох умов службовим словом or достатньо одній з них бути істинною, щоб весь логічний вираз був істинним (тобто значення умови (not (a and (x < у))) можна не обчислювати).

Приклад № 2

Записати у вигляді логічних виразів висловлювання, наведені нижче:

а) значення х не належить інтервалу (0; 1)

(х <= 0) or (х >= 1);

б) точка М(х,у) лежить у другій чверті координатної площини

(х < 0) and (у > 0);

в) точка М(х, у) лежить усередині або на межі одиничного круга з центром у початку координат

(sqr(x) + sqr(у) <= 1);

г) координати дійсного вектора x(xr xr xj утворюють неспадну послідовність і всі вони невід'ємні

(х1 <= х2) and (х2 <= хЗ) and (x1 >= 0) and (x2 >= 0) and (хЗ >= 0);

ґ) 3 > В > С > 0,1

(З > В) and (В >= С) and (C > 0.1).

Приклад № 3

Записати за допомогою умовного оператора виконання дій:

а) дійсне значення х замінити абсолютною величиною

if х < 0

then x:= -х;

б)менше з двох дійсних значень х та у (або будь-яке з них, якщо вони рівні) замінити нулем

if х < у

then х:= 0

else у:= 0;

в) присвоїти змінній х значення 0, якщо її початкове значення належало інтервалу (0,2)

if (0 <= х) and (x <= 2)

then x:= 0;

Приклад № 4

Дано значення дійсних величин а, b, с. Знайти:

Min ((a + b + с) /2, 1/(а2 +l)+l/(b2 +l)+l/(c2 +1))

Використані у програмі змінні є очевидними і тому наводимо програму без пояснень.

Program Example_4;

Uses crt;

Var а, Ь, с: real;

Rezl, Rez2, Min: real; {а,Ь,с - вхідні дамі; Rezl, Rez2 - проміжні обчислення; Міn - результат виконання програми}

Begin

Clrscr; {Очищення екрану}

Write("Введіть числа а,b,с: ');

Readln(a,b,c);

Rezl:=(a + b + с) / 2;

Rez2:=sqrt(1/ (sqr (a) +1) + 1/ (sqr (b) +1) +1/ (sqr (c) +1));

If Rezl<Rez2 Then Min:=Rezl

Else Min:=Rez2;

Writeln('Min=',Min:8:2);

Readkey; {Затримка зображення на екрані}

End.

Приклад № 5

Дано значення дійсної величини х. Визначити:

х-5

хг+х-2

Нагадаємо відоме правило: ділити на нуль не можна.

Program Example_5;

Uses crt;

Var X, Rezultat:real;

Begin

Clrscr; {Очищення екрану}

Write('Введіть значення X: ');

Readln(X);

If X*X*X+X-2<>0 Then

Begin

Rezultat:=(X-5)/(X*X*X+X-2);

Writeln('Rezultat=',Rezultat:8:2);

End

Else

Writeln('Обчислення неможливі - ділення на нуль!');

Readkey;

End.

Приклад № 6

При даному значенні х обчислити:

Для розв'язання цієї задачі необхідно пам'ятати, що не можна знайти квадратний корінь з від'ємного числа.

Program Example_6;

Uses crt;

Var X, Rezultat:real;

Begin

Clrscr;

Wrіte('Введіть значення Х: ');

Readln(X);

If (X>=1) and (X*X*X-sqrt(X-l)>=0) Then

Begin

Rezultat:=sqrt(X*X*X-sqrt(X-l));

Writeln('Rezultat=',Rezultat:8:2);

End

Else

Writeln('Обчислення неможливі - від'ємний підкореневий вираз!');

Readkey;

End.

Приклад № 7

За рейтинговою системою оцінка визначається таким чином: якщо загальний бал учня становить не менше 92% від максимального, то виставляється оцінка 12, якщо не нижче 70%, то — оцінка 8, якщо ж не нижче 50%, то — оцінка 5, в інших випадках - оцінка 2. Визначте оцінку учня, якщо він набрав N балів, а максимальне значення загального балу становить S. У цій задачі можна використати повну або скорочену форму команди розгалуження.

Розв'яжемо задачу за скороченою формою.

Program Example_7;

Uses crt;

Var N, S, Grade: integer; {N - бали, що набрав учень; S - максимальне значення сумарного балу; Grade - оцінка учня}

Begin

Clrscr;

Wrіte('Введіть максимальне значення сумарного балу, що може набрати учень: ');

Readln(S);

Write ('Введіть кількість балів, що отримав учень:».);

Readln(N);

If (S<=0) or (N<=0) or (N>S)


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: