Учебная работа. Статья: Условный оператор. Блок. Оператор выбора

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (5 оценок, среднее: 4,80 из 5)
Загрузка...
Контрольные рефераты

Учебная работа. Статья: Условный оператор. Блок. Оператор выбора

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

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

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

IF логическое выражение THEN оператор/блок [ELSE оператор/блок] логическое выражение — это хоть какое выражение, случае — оператор либо блок, стоящий опосля ELSE. Система ELSE необязательна, условный оператор можно употреблять и в усеченном виде, тогда при значении логического выражения FALSE не производится никаких действий. Операторы, входящие в условный оператор, сами могут быть условными, т.е. допускается неважно какая вложенность условных операторов. Запишем сейчас предшествующую задачку о 4 числах, используя оператор 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, и все постоянные выражения должны быть 1-го типа или все иметь целочисленные типы.

Оператор выбора производится последующим образом: рассчитывается выражение, стоящее опосля CASE, потом просматриваются все списки значений, и если случае оператор 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.

]]>