С.А. Григорьев
Условный оператор в Паскале записывается в виде:
IF логическое выражение THEN оператор/блок [ELSE оператор/блок] логическое выражение - это любое выражение, значение которого имеет тип Boolean, блок - это последовательность операторов, заключенная в логические скобки : BEGIN операторы END; . Перед ELSE никогда не ставится ";" ! Перед END в большинстве случаев можно не ставить ";". Если значение логического выражения TRUE, то выполняется оператор или блок, стоящий после THEN, в противном случае - оператор или блок, стоящий после ELSE. Конструкция ELSE необязательна, условный оператор можно использовать и в усеченном виде, тогда при значении логического выражения FALSE не выполняется никаких действий. Операторы, входящие в условный оператор, сами могут быть условными, т.е. допускается любая вложенность условных операторов. Запишем теперь предыдущую задачу о четырех числах, используя оператор IF :
VAR a,b,c,d : Integer;
BEGIN WRITELN('Введите 4 целых числа, a,b,c и d, среди ',
'которых должно быть 2 и только 2 одинаковых!');
WRITE('a='); READ(a); WRITELN; WRITE('b='); READ(a); WRITELN;
WRITE('c='); READ(a); WRITELN; WRITE('d='); READ(a); WRITELN;
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
(a=d)AND(a<>b)AND(a<>c)AND(b<>c)OR(b=c)AND(b<>a)AND(b<>d)AND(a<>d)OR
(b=d)AND(b<>a)AND(b<>c)AND(a<>c)OR(c=d)AND(c<>a)AND(c<>b)AND(a<>b)
THEN WRITELN('Вы довольно понятливы')
ELSE WRITELN('Вы ошиблись !!!');
READLN;
END.
Можно решить эту задачу и другим способом :
VAR a,b,c,d : Integer;
CONST num : Byte = 0;
BEGIN WRITELN('Введите 4 целых числа, a,b,c и d, среди ',
'которых должно быть 2 и только 2 одинаковых!');
WRITE('a='); READ(a); WRITELN; WRITE('b='); READ(a); WRITELN;
WRITE('c='); READ(a); WRITELN; WRITE('d='); READ(a); WRITELN;
IF a=b THEN Inc(num); IF a=c THEN Inc(num); IF a=d THEN Inc(num);
IF b=c THEN Inc(num); IF b=d THEN Inc(num); IF c=d THEN Inc(num);
IF num=1 THEN WRITELN('Вы довольно понятливы')
ELSE WRITELN('Вы ошиблись !!!');
READLN;
END.
Теперь попробуем записать условный оператор, реализующий более сложную логическую структуру. Пусть даны три числа d, m и y, содержащие число, месяц и год для некоторой даты; необходимо выяснить, правильна ли эта дата.
VAR d,m : Byte; y : Word; Valid : Boolean;
BEGIN WRITE('Введите дату '); READ(d,m,y);
IF (m=1)OR(m=3)OR(m=5)OR(m=7)
OR(m=8)OR(m=10)OR(m=12) THEN
IF (d>=1)AND(d<=31) THEN Valid:=TRUE
ELSE Valid:=FALSE
ELSE
IF (m=4)OR(m=6)OR(m=9)OR(m=11) THEN
IF (d>=1)AND(d<=30) THEN Valid:=TRUE
ELSE Valid:=FALSE
ELSE
IF m=2 THEN
IF (d>=1)AND(d<=28) THEN Valid:=TRUE
ELSE
IF d=29 THEN
IF (y MOD 4=0)AND(y MOD 100>0)
OR(y MOD 400=0) THEN Valid:=TRUE
ELSE Valid:=FALSE
ELSE Valid:=FALSE
ELSE Valid:=FALSE;
IF Valid THEN WRITELN('Дата верна')
ELSE WRITELN('Дата не верна');
END.
Оператор выбора во многих случаях удобнее, чем условный оператор,
он записывается в виде :
CASE выражение OF
список значений : оператор/блок
..................................
список значений : оператор/блок
[ELSE оператор/блок]
END;
Здесь выражение - это любое выражение порядкового типа, список значений - это список разделенных запятыми константных выражений или диапазонов, диапазон - это конструкция вида константное выражение .. константное выражение. Константным будем называть любое выражение, в которое входят только неименованные и нетипизированные константы (т.е. в константное выражение не могут входить имена переменных, функции и типизированные константы). На самом деле константные выражения - это выражения, которые могут быть вычислены до выполнения программы, а отсюда уже и вытекают ограничения на их вид. Выражение, стоящее после CASE, и все константные выражения должны быть одного типа либо все иметь целочисленные типы.
Оператор выбора выполняется следующим образом: вычисляется выражение, стоящее после CASE, затем просматриваются все списки значений, и если значение выражения попало в список значений, выполняется соответствующий оператор или блок, и выполнение оператора CASE заканчивается; если значение выражения не содержится ни в одном из списков, то выполняется оператор или блок, стоящий после ELSE. Конструкция ELSE может отсутствовать, в этом случае оператор CASE может не выполнить никаких действий. В качестве примера использования оператора выбора решим предыдущую задачу о правильной дате.
VAR d,m : Byte; y : Word; Valid : Boolean;
BEGIN WRITE('Введите дату '); READ(d,m,y);
CASE m OF
1,3,5,7,8,10,12 :
CASE d OF 1..31 : Valid:=TRUE
ELSE Valid:=FALSE
END;
4,6,9,11 :
CASE d OF 1..30 : Valid:=TRUE
ELSE Valid:=FALSE
END;
2 : CASE d OF 1..28 : Valid:=TRUE;
29 : Valid:=(y MOD 4=0)AND(y MOD 100>0);
ELSE Valid:=FALSE
END;
ELSE Valid:=FALSE;
END;
IF Valid THEN WRITELN('Дата верна')
ELSE WRITELN('Дата не верна');
END.
Вы можете видеть, что задачи такого типа решаются оператором CASE гораздо проще, чем оператором IF. Решим еще одну задачу: определить, какого рода символ введен - цифра, латинская буква, русская буква или ни то, ни другое и ни третье.
VAR c : Char;
BEGIN WRITE('Введите символ '); READ(c);
CASE c OF
'0'..'9' : WRITELN('Вы ввели цифру');
' a'..'z','A'..'Z' : WRITELN('Вы ввели латинскую букву');
'а'..'п','р'..'я','А'..'Я' : WRITELN('Вы ввели русскую букву');
ELSE WRITELN('Вы ввели неизвестно что !');
END;
E
Похожие работы
... , определяющее, как будет меняться параметр цикла. В операторе for сначала проверяется условие и если значение условия "истинно", то идёт выполнение тела цикла (блока операторов или простого оператора). Задание №3. «Массивы и подпрограммы» Результатом выполнения третьего задания должна быть программа, написанная с использованием подпрограмм – не менее 2 процедур и 1 функции. Задание ...
... программе. В данном разделе они перечислены в алфавитном порядке и приводятся с объяснениями. Эти ошибки могут являться следствием случайного затирание памяти программой. Abnormal program termination Аварийное завершение программы Данное сообщение может появляться, если для выполнения программы не может быть выделено достаточного количества памяти. Более подробно оно рассматривается в конце ...
... 2 >= Y And д + В > С — False, далее д*Х + B*Y = D And ( // <= Y And Y <= Q) - False, последней операция Or. которая лает результат — False. 3.3.3. Символьное выражение В Visual Basic определена одна операция с символьными данными - конкатенация (сцепление), позволяющая объединять несколько строк в одну. Знак операции — “+” или “&”. Операндами символьного выражения могут быть: ...
... : ¾ температура, °С +25±10; ¾ относительная влажность воздуха, % 45...80; ¾ атмосферное давление, мм рт. ст. 630...800. Так как блок интерфейсных адаптеров предназначен для работы в нормальных условиях, в качестве номинальных значений климатических факторов указанные выше принимают нормальные значения ...
0 комментариев