Алгоритмический язык Pascal |
Условные операторыОператор выбора CASEОператор служит для выбора одного из помеченных вариантов действия (операторов), в зависимости от значения "параметра". Оператор имеет вид: Case "параметр" Of "список помеченных операторов" Else "оператор" End; Здесь "параметр" - выражение или переменная порядкового типа. Из "списка помеченных операторов" выполняется оператор с меткой, включающей значение "параметра", иначе оператор после слова Else. Конструкция Else "оператор" может отсутствовать. Напомним, что "оператор" может иметь вид: Begin "операторы" end; Пример операторов для определения порядка целого числа N от 0 до 999: case N of 0..9 : writeln('однозначное'); 10..99 : writeln('двузначное'); 100..999 : writeln('трехзначное') else writeln('Число "N" не входит в указанный диапазон') end; Приведем пример программы случайного предсказания одного из десяти вариантов ближайшего будущего с вероятностью 1/20, в остальных случаях - вы "неудачник". PROGRAM FUTURE; var N : word; BEGIN writeln('ПРЕДСКАЗАНИЕ БУДУЩЕГО'); Randomize; N:=Random(20)+1; { N - случайное число от 1 до 20 } writeln; write('Вас ожидает '); case N of 1 : writeln('счастье'); 2 : writeln('пятерка'); 3 : writeln('дорога'); 4 : writeln('двойка'); 5 : writeln('болезнь'); 6 : writeln('здоровье'); 7 : writeln('деньги'); 8 : writeln('любовь'); 9 : writeln('встреча'); 10 : writeln('дети') else writeln('неудача') 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) Else begin WriteLn('a<0'); Readln; Halt end; Оператор Halt прекращает выполнение программы. Схема выполнения условного оператора имеет вид:
Приведем пример программы определения весовой категории в зависимости от веса спортсмена. PROGRAM VES; { определение весовой категории спортсмена } Условная схема программы CONST A1='легкая категория'; A2='средняя категория'; A3='тяжелая категория'; A4='сверхтяжелая категория'; var V : integer; BEGIN Write('введите вес спортсмена V = '); ReadLn(v); if V<62 then WriteLn(A1) {вложенный условный оператор } else if V<75 then WriteLn(A2) else if V<88 then WriteLn(A3) else WriteLn(A4) writeln('Нажмите Enter'); readln; END. Для разложения целого числа на цифры удобно применять операции: MOD и DIV. Например, если дано трехзначное число "N" ( "N" соответствует "X1X2X3" ), то цифры: X1X2X3, составляющие это число определяются блоком операторов: X3:= N mod 10; N:= N div 10; X2:= N mod 10; N:= N div 10; X1:= N; Если требуется определить, делится ли вещественное число "A" нацело на число "B", то можно применять функции Frac(x); и Int(x); например: x := A/B; if Frac(x) = 0 then writeln('Число "A" делится нацело на число "B"'); if Int(x) = x then writeln('Число "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) then writeln('Треугольник - остроугольный'); Если имя объекта составное, то добавляются признаки для идентификации второй части имени и применяются вложенные условные операторы, например, для равнобедренного треугольника: If (a < 90)and (b < 90) and(c < 90) then If (a=b) or (b=c) or (a=c) then writeln('Треугольник - остроугольный и равнобедренный') else writeln('Треугольник - остроугольный'); Напомним, что условный оператор можно применять для контроля правильности вводимых данных, например: If (a+b+c)<>180 then begin writeln('Суммауглов <> 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)) then writeln('Параллелограмм'); —одержание”чебник по ¤зыку Pascal Ћабораторные работы по программированию —правочник |
Нет комментариев. Оставить комментарий: |