3.3. Сложные условия
Давайте решим простую задачку:
Составить программу, которая определит возраст человека.
Решение.
Program YEARS;
Uses Crt;
Const year_1=1995; {Текущий год}
var Old,year:integer;
Begin
ClrScr; {Очистка экрана}
Write('В каком году Вы родились:');
ReadLn(year);
Old:=year_1-year; {Вычислили возраст}
If (Old<0) or (Old>150) then
WriteLn('Не врите, столько не живут')
else
WriteLn('Вам полных ',Old,' лет');
RealLn
end.
Обратите внимание на СЛОЖНОЕ условие в операторе If. Слово OR
(читается как О-О-Р) переводится как ИЛИ и называется ЛОГИЧЕСКОЙ
ОПЕРАЦИЕЙ "ИЛИ". Кроме этой логической операции имеется еще ряд операций, которые приведены в таблице 1. В данной таблице в качестве F1 и F2 выступают логические выражения.
Таблица 1
Логические операции
|Логическая Название Запись Результат операции
|операция операции
--------------------------------------------------------------------------------------------| Not Логическое |NOT F1 Логическое значение, про-
| "НЕ" тивоположное F1.
------------------------------------------------------------------------------------------------| And Логическое F1 and F2 Логическое значение True,
"И" если F1 и F2 равны True, и False во всех остальных случаях.
-------------------------------------------------------------------------------------------------| Or |Логическое F1 or F2 Логическое значение True,
"ИЛИ" если хотя бы одно из значений F1 или F2 равно True
и False если F1 и F2 равны
False.
------------------------------------------------------------------------------------------------| Xor Логическое F1 xor F2 Логическое значение True,
| исключающее если значения F1 и F2 раз| "ИЛИ" личны, и False если они равны.
-----------------------------------------------------------------------------------------------Например:
If (a>3)and(a<5) then ... - условие истинно тогда и только тогда, когда a>3 И a<5. Во всех других ситуациях - False.
If (b+1>=4) or (c='ку-ку') then ... - условие True тогда и только тогда, когда True одно из логических выражений, соединенных OR.
Пр.
y=x^2,если 1<x<=3.
if (x>1) and (x<=3) then y:=sqr(x) else writeln('функция не определена на данном промежутке');
Обратите внимание, что
+=============================================================+
| при записи СЛОЖНОГО логического выражения ПРОСТЫЕ выражения
| ЗАКЛЮЧАЮТСЯ В СКОБКИ!!!
+=============================================================+
4. Оператор множественного выбора CASE
С помощью этого оператора можно выбрать вариант из любого количества вариантов. Структура этого оператора в языке Pascal:
case <переменная> of
значение1:<оператор1>;
значение2:<оператор2>;
...
значениеN:<операторN>
else
<оператор>
end;
В этой структуре
Тип <переменной> д.б. целый, символьный, перечисляемый;
Из <операторов 1,2 ..., N>, выполняется тот, с константой которого (<значением 1,2,...N>) совпадает значение <переменной>;
Просто <оператор>,стоящий после else выполняется, если значение
<переменной> не совпадает ни с одним из <значений 1,2,...N>.
Ветвь оператора else является необязательной.
Рассмотрим пример простенькой программы, определяющей название месяца по его номеру:
Program Month;
Uses Crt;
Var num_month:byte;
begin
ClrScr;
WriteLn('Программа определяет название месяца по номеру':60);
Writeln;
WriteLn('Задайте номер месяца:'); ReadLn(num_month);
TextColor(LightMagenta);
Case num_month of
1: WriteLn('Январь');
2: WriteLn('Февраль');
3: WriteLn('Март');
4: WriteLn('Апрель');
5: WriteLn('Май');
6: WriteLn('Июнь');
7: WriteLn('Июль');
8: WriteLn('Август');
9: WriteLn('Сентябрь');
10: WriteLn('Октябрь');
11: WriteLn('Ноябрь');
12: WriteLn('Декабрь')
else WriteLn('Увы, месяца с таким номером не существует')
end; {Конец Case}
ReadLn;
End.
Пояснение.
При запуске программы выводится титул, а затем запрос на ввод номер месяца. Если введено число 1, то на экране появиться слово Январь, если 2 - Февраль и т.д. Если будет введено число 0 или больше 12 (и меньше 256), то на экране появится сообщение Увы, месяца с таким номером не существует. Если введете число меньше 0 или больше 255, то программа закончится аварийно.
Если для нескольких констант нужно выполнить один и тот же оператор, их можно перечислить через запятую или, если это возможно, указать диапазон и сопроводить их одним оператором.
Пример:
case I of
0,2,4,6,8: writeln('четная цифра');
1,3,5,7,9: writeln('нечетная цифра');
10..100: writeln('число от 10 до 100');
else
writeln('Отрицательное число или большее 100')
end;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.