Теория: условные операторы




Оператор выбора CASE

Оператор служит для выбора одного из помеченных вариантов действия (операторов), в зависимости от значения "параметра". Оператор имеет вид:

Case "параметр" Of "список помеченных операторов" Else "оператор"End;

Здесь "параметр" - выражение или переменная порядкового типа.

Из "списка помеченных операторов" выполняется оператор с меткой, включающей значение "параметра", иначе оператор после слова Else.

Конструкция Else "оператор" может отсутствовать. Напомним, что "оператор" может иметь вид: Begin "операторы" end;

Пример операторов для определения порядка целого числа N от 0 до 999:

case N of0..9: writeln('однозначное'); 10..99: writeln('двузначное'); 100..999: writeln('трехзначное')elsewriteln('Число "N" невходитвуказанныйдиапазон') end;

Приведем пример программы случайного предсказания одного из десяти вариантов ближайшего будущего с вероятностью 1/20, в остальных случаях - вы "неудачник".

PROGRAM FUTURE;varN:word;BEGINwriteln('ПРЕДСКАЗАНИЕ БУДУЩЕГО');Randomize;N:=Random(20)+1; { N - случайное число от 1 до 20 }writeln; write('Васожидает ');case N of1:writeln('счастье');2:writeln('пятерка');3:writeln('дорога');4:writeln('двойка');5:writeln('болезнь');6:writeln('здоровье');7:writeln('деньги');8:writeln('любовь');9:writeln('встреча');10:writeln('дети')elsewriteln('неудача')end;writeln('Нажми Enter');readln; END.

Здесь функция Random(x) генерирует случайное число, с равномерной плотностью распределения на заданном интервале. Для инициализации распределения в начале программы необходимо вызвать процедуру Randomize.

Условный оператор IF

Условный оператор включает в себя операторы, которые выполняются или не выполняются в зависимости от записанного в операторе условия. Оператор имеет вид:

IF "условие" Then "оператор1" Else "оператор2";

где "условие" - выражение логического типа;
"оператор1" выполняется, если условие верно (True),
"оператор2" выполняется, если условие не верно (False).

Например, вычисление квадратного корня из числа "a" проводится при условии a>=0, операторами:

IF a>=0 Then b:=Sqrt(a) ElsebeginWriteLn('a<0');Readln;Haltend;

Оператор Halt прекращает выполнение программы.

Схема выполнения условного оператора имеет вид:


В условном операторе может отсутствовать блок Else оператор2; т. е. условный оператор может иметь вид:

IF "условие" Then "оператор1";

например: IF a<0 Then a:= abs(a);

 

Приведем пример программы определения весовой категории в зависимости от веса спортсмена.

PROGRAM VES; { определение весовой категории спортсмена }CONST A1='легкая категория'; A2='средняя категория'; A3='тяжелая категория'; A4='сверхтяжелая категория';varV: integer; BEGINWrite('введитевесспортсменаV = '); ReadLn(v);ifV<62 thenWriteLn(A1) {вложенный условный оператор }else if V<75 then WriteLn(A2)else if V<88 then WriteLn(A3)elseWriteLn(A4)writeln('Нажмите Enter');readln;END.

Для разложения целого числа на цифры удобно применять операции: MOD и DIV. Например, если дано трехзначное число "N" ("N" соответствует "X1X2X3"), то цифры: X1X2X3, составляющие это число определяются блоком операторов:

X3:= N mod 10; N:= N div 10; X2:= N mod 10; N:=Ndiv 10;X1:= N;

Если требуется определить, делится ли вещественное число "A" нацело на число "B", то можно применять функции Frac(x); и Int(x); например:

x:= A/B; ifFrac(x) = 0 thenwriteln('Число "A" делится нацело на число "B"');ifInt(x) = x thenwriteln('Число "A" делится нацело на число "B"');

Условный оператор может применяться для идентификации (распознавания) объекта по определенным признакам составляющих его элементов. Например, если объектом является треугольник, то элементами объекта могут быть: 1) три его угла (a, b, c); 2) три его стороны (a1, b1, c1); и т. д.

Признаками являются значения элементов по которым производится идентификация, например, для углов: 1) один угол > 90 - (один признак); 2) три угла < 90 - (три признака); и т. д.

В результате идентификации объект получает имя. Например, треугольник - остроугольный, либо тупоугольный и т. д.

Если идентификация проводится по одному признаку для нескольких элементов, то несколько условий связываются служебным словом "or", например:

If (a > 90) or (b > 90) or (c > 90) then writeln('Треугольник - тупоугольный');

Если идентификация проводится по нескольким признакам, число которых равно числу элементов, то несколько условий связываются служебным словом "and", например:

If (a < 90) and (b < 90) and (c < 90) thenwriteln('Треугольник - остроугольный');

Если имя объекта составное, то добавляются признаки для идентификации второй части имени и применяются вложенные условные операторы, например, для равнобедренного треугольника:

If (a < 90)and (b < 90) and(c < 90) then If (a=b) or (b=c) or (a=c) thenwriteln('Треугольник - остроугольный и равнобедренный') elsewriteln('Треугольник - остроугольный');

Напомним, что условный оператор можно применять для контроля правильности вводимых данных, например:

If (a+b+c)<>180 then beginwriteln('Суммауглов<> 180'); Halt end;

Если для идентификации объекта достаточно меньшего числа признаков, чем число элементов, то условия, связанные "and" группируются, а группы соединяются служебным словом "or". Например, четырехугольник имеет элементами четыре стороны (a, b, c, d), а его имя устанавливается по двум признакам (равенство двух пар сторон), тогда можно использовать операторы:

If ((a=b) and (c=d)) or ((a=c) and (b=d)) or ((a=d) and (b=c)) thenwriteln('Параллелограмм');

 

 


 

Контрольноезадание№3



Поделиться:




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

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-03-02 Нарушение авторских прав и Нарушение персональных данных


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