Алгоритмические конструкции. Составной оператор. Оператор выбора IF. Сложные условия, страница 2

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;