РефератыИнформатикаУсУсловный оператор. Блок. Оператор выбора

Условный оператор. Блок. Оператор выбора




Условный оператор. Блок. Оператор выбора


С.А. Григорьев


Условный оператор в Паскале записывается в виде:


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;


END.

Сохранить в соц. сетях:
Обсуждение:
comments powered by Disqus

Название реферата: Условный оператор. Блок. Оператор выбора

Слов:816
Символов:6867
Размер:13.41 Кб.