Умовний оператор. Блок. Оператор вибору b>
p>
С.А. Григор'єв p>
Умовний оператор в Паскалі записується у вигляді: p>
IF логічне вираження THEN оператор/блок [ELSE
оператор/блок] логічне вираження - це будь-який вираз, значення якого
має тип Boolean, блок - це послідовність операторів, укладена в
логічні дужки: BEGIN оператори END;. Перед ELSE ніколи не ставиться
";"! Перед END в більшості випадків можна не ставити ";".
Якщо значення логічного виразу TRUE, то виконується оператор або блок,
стоїть після THEN, інакше - оператор або блок, що стоїть після ELSE.
Конструкція ELSE необов'язкова, умовний оператор можна використовувати і в
усіченому вигляді, тоді при значенні логічного виразу FALSE не виконується
ніяких дій. Оператори, що входять в умовний оператор, самі можуть бути
умовними, тобто допускається будь-яка вкладеність умовних операторів. Запишемо
тепер попередню задачу про чотирьох числах, використовуючи оператор IF: p>
VAR a, b, c, d:
Integer; p>
BEGIN WRITELN ( 'Введіть 4 цілих числа, a, b, c і d, серед
', p>
'яких має бути 2 і тільки 2
однакових !'); p>
WRITE ( 'a ='); READ (a); WRITELN; WRITE ( 'b ='); READ (a);
WRITELN; p>
WRITE ( 'c ='); READ (a); WRITELN;
WRITE ( 'd ='); READ (a); WRITELN; p>
IF (a = b) AND (a <> c) AND (a <> d) AND (c <> d)
OR (a = c) AND (a <> b) AND (a <> d) AND (b <> d) OR p>
(a = d) AND (a <> b) AND (a <> c) AND (b <> c) OR (b = c) AND (b <> a) AND (b <> d) AND (a < > d) OR p>
(b = d) AND (b <> a) AND (b <> c) AND (a <> c) OR (c = d) AND (c <> a) AND (c <> b) AND (a <> b)
p>
THEN WRITELN ( 'Ви досить тямущий') p>
ELSE WRITELN ( 'Ви помилилися !!!'); p>
READLN; p>
END. p>
Можна вирішити це завдання і в інший спосіб: p>
VAR a, b, c, d:
Integer; p>
CONST
num: Byte = 0; p>
BEGIN WRITELN ( 'Введіть 4 цілих числа, a, b, c і
d, серед ', p>
'яких має бути 2 і тільки 2 однакових !'); p>
WRITE ( 'a =');
READ (a); WRITELN; WRITE ( 'b ='); READ (a); WRITELN; p>
WRITE ( 'c ='); READ (a); WRITELN;
WRITE ( 'd ='); READ (a); WRITELN; p>
IF a = b THEN Inc (num); IF a = c THEN
Inc (num); IF a = d THEN Inc (num); p>
IF b = c THEN Inc (num); IF b = d THEN
Inc (num); IF c = d THEN Inc (num); p>
IF num = 1 THEN WRITELN ( 'Ви досить тямущий') p>
ELSE
WRITELN ( 'Ви помилилися !!!'); p>
READLN; p>
END. p>
Тепер спробуємо записати умовний оператор,
реалізовує більш складну логічну структуру. Нехай дано три числа d, m і y,
містять число, місяць і рік для певної дати; необхідно з'ясувати,
чи правильна ця дата. p>
VAR d, m: Byte; y:
Word; Valid: Boolean; p>
BEGIN WRITE ( 'Введіть дату'); READ (d, m, y); p>
IF (m = 1) OR (m = 3) OR (m = 5) OR (m = 7) p>
OR (m = 8) OR (m = 10) OR (m = 12) THEN p>
IF (d> = 1) AND (d <= 31) THEN
Valid: = TRUE p>
ELSE
Valid: = FALSE p>
ELSE p>
IF (m = 4) OR (m = 6) OR (m = 9) OR (m = 11) THEN p>
IF (d> = 1) AND (d <= 30) THEN
Valid: = TRUE p>
ELSE
Valid: = FALSE p>
ELSE p>
IF m = 2 THEN p>
IF (d> = 1) AND (d <= 28) THEN
Valid: = TRUE p>
ELSE p>
IF d = 29 THEN p>
IF (y MOD 4 = 0) AND (y MOD 100> 0) p>
OR (y MOD 400 = 0) THEN Valid: = TRUE p>
ELSE
Valid: = FALSE p>
ELSE Valid: = FALSE p>
ELSE Valid: = FALSE; p>
IF Valid THEN WRITELN ( 'Дата вірна') p>
ELSE WRITELN ( 'Дата не вірна'); p>
END. p>
Оператор вибору в багатьох випадках зручніше, ніж
умовний оператор, p>
він записується у вигляді: p>
CASE вираз OF p>
список
значень: оператор/блок p>
.................................. p>
список
значень: оператор/блок p>
[ELSE оператор/блок] p>
END; p>
Тут вираз - це будь-який вираз порядкового
типу, список значень - це список розділених комами константних виразів
або діапазонів, діапазон - це конструкція виду вирази зі сталими ..
вирази зі сталими. Константним будемо називати будь-який вираз, до якого
входять тільки неіменованние і нетипізовані константи (тобто в константні
вираз не можуть входити імена змінних, функції і типізовані
константи). Насправді константні вирази - це вирази, які можуть
бути обчислені до виконання програми, а звідси вже і випливають обмеження на
їх вигляд. Вираз, що стоїть після CASE, і всі вирази зі сталими повинні бути
одного типу або всі мати цілочисельні типи. p>
Оператор вибору виконується таким чином:
обчислюється вираз, що стоїть після CASE, потім проглядаються всі списки
значень, і якщо значення виразу потрапило в список значень, виконується
відповідний оператор або блок, і виконання оператора CASE закінчується;
якщо значення виразу не міститься в жодному зі списків, то виконується
оператор або блок, що стоїть після ELSE. Конструкція ELSE може бути відсутнім, в
цьому випадку оператор CASE може не виконати жодних дій. В якості
приклад використання оператора вибору вирішимо попередню задачу про правильну
даті. p>
VAR d, m:
Byte; y: Word; Valid: Boolean; p>
BEGIN WRITE ( 'Введіть дату'); READ (d, m, y); p>
CASE m OF p>
1,3,5,7,8,10,12: p>
CASE d OF 1 .. 31: Valid: = TRUE p>
ELSE Valid: = FALSE p>
END; p>
4,6,9,11: p>
CASE d OF 1 .. 30: Valid: = TRUE p>
ELSE Valid: = FALSE p>
END; p>
2: CASE d OF 1 .. 28:
Valid: = TRUE; p>
29: Valid: = (y MOD
4 = 0) AND (y MOD 100> 0); p>
ELSE Valid: = FALSE p>
END; p>
ELSE Valid: = FALSE; p>
END; p>
IF Valid THEN WRITELN ( 'Дата вірна') p>
ELSE WRITELN ( 'Дата не вірна'); p>
END. p>
Ви можете бачити, що завдання такого типу вирішуються
оператором CASE набагато простіше, ніж оператором IF. Вирішимо ще одне завдання:
визначити, якого роду символ введений - цифра, латинська буква, російська буква
чи ні те, ні друге і ні третє. p>
VAR c: Char; p>
BEGIN WRITE ( 'Введіть символ'); READ (c); p>
CASE c OF p>
'0 '.. '9': WRITELN ( 'Ви ввели цифру'); p>
'a' .. 'z', 'A' .. 'Z': WRITELN ( 'Ви ввели латинську букву'); p>
'а' .. 'п', 'р' .. 'я', 'А' .. 'Я': WRITELN ( 'Ви ввели російську літеру'); p>
ELSE WRITELN ( 'Ви ввели невідомо що
!'); p>
END; p>
END. p>
Список літератури h2>
Для підготовки даної роботи були використані
матеріали з сайту http://elib.albertina.ru/
p>