Логические выражения

Условие в ветвлении представляет собой логическое выражение. Оно может содержать арифметические (или другие, например, текстовые) выражения и операции сравнения между ними: < (меньше), > (больше), = (равно), < > (не равно), <= (меньше или равно), >= (больше или равно).

Результат логического выражения – истина (true) или ложь (false). Например, значение выражения 2 > 3 равно false, а выражения 2 <= 3 - true. Для хранения в памяти логических значений существуют логические (булевские) переменные. Их описывают в разделе VAR словом boolean. Например, a:=b>c;

 

Иногда требуется составить сложное логическое выражение, содержащее несколько сравнений. В этом случае каждое сравнение помещают в скобки, а между ними используют логические операции and, or или xor. Операция and (И) обозначает одновременность выполнения двух условий. Операция or (ИЛИ) обозначает достаточность выполнения одного из двух условий. Операция xor (Исключающее ИЛИ) обозначает неодновременность выполнения двух условий (только одно из двух условий верно). Кроме того, существует операция отрицания not. Если она стоит перед истинным выражением, в результате получается ложь, а применённая к ложному, даёт истину. Ниже приведены таблицы истинности логических операций.

 

 

Если в одном выражении используется несколько логических операций, последовательность их выполнения определяется приоритетом: 1) NOT; 2) AND; 3) OR; 4) XOR. Все арифметические операции – более приоритетны, а все операции сравнения – менее приоритетны, чем логические операции. Нужная последовательность операций может быть достигнута применением скобок.

Примеры:

(2=3) or (2< >3) – результат true

((5+5> =10) or (1=2)) and ((2< 3)=(2+2< >5)) – результат true

(2<3) and not (2*2=4) – результат false

 

Пример задачи с составным условием: Ввести температуру морской воды и определить, можно ли купаться. Благоприятная для купания температура – от 19 до 26 градусов.

 
 
program water; var t:real; begin write(’Введите температуру воды у пляжа ’); readln(t); if (t>=19) and (t<=26) then writeln(’Можно купаться’) else writeln(’Купаться нельзя’); end.

 

 


Ещё пример: Так как поворот Земли вокруг своей оси занимает несколько больше, чем 24 часа, то за 4 года накапливается опережение на одни сутки. Поэтому каждый год, кратный 4, является високосным (на 1 день больше). Но эти расчёты тоже неточны: за каждые 100 лет накапливается отставание почти на 1 сутки, поэтому годы, кратные 100 не являются високосными. Но отставание за 100 лет на четверть меньше одних суток, поэтому каждый четырехсотый год увеличивают на день, и годы, кратные 400 являются все же високосными. Программа должна ввести с клавиатуры год и определить, является ли он високосным. Напомню: «a делится на b без остатка» обозначает, что при делении a на b остаток равен 0.

 
 
program year; var y:integer; begin write(’Введите год ’); readln(y); if (y mod 4=0) and ((y mod 100<>0) or (y mod 400=0)) then writeln(’Високосный год’) else writeln(’Не високосный год’); end.

 









Дата добавления: 2014-12-18; просмотров: 1088;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.009 сек.