Управляющая структура if ... then может показаться негибкой, так как после служебного слова then должен стоять только один оператор. Если вы напишете два оператора подряд (например, if х<>0 then у:=1/х; х:=0;), то второй оператор выполнится в любом случае, независимо от проверяемого условия.
Если требуется выполнить последовательность действий (несколько операторов подряд), то ее заключают в блок, образуемый операторами begin и end.
Пример:
if X > 3 then begin S1; S2; S3; S4 end;
Здесь S1-S4 символически обозначают операторы. Эта группа (begin S1; S2; S3; S4 end) называется составным оператором, или операторной скобкой. Она как бы говорит компилятору, что данный блок операторов нужно рассматривать как единое целое.
Пример 5.2. Вычисление корней квадратного уравнения
Program Quad; var А.В.С: real;{ Переменные для хранения коэффициентов } D:rеаl; { Переменная для дискриминанта } X1,Х2: real;{ Переменные для получения корней } begin writeln('Введите коэффициенты А, В, С:'); readln(A.B.C); D:=Sqr(B) - 4*А*С; if D < 0 then writeln('Уравнение не имеет вещественных корней') else if D=0 then writeln('У уравнения один корень', -В/(2*А):б:2) else {Ниже идет составной оператор } begin Х1:=(-В + Sqrt(D))/(2*А); Х2:=(-В -Sqrt(D))/(2*A); Writeln('У уравнения два корня:', X1:6:2, Х2:6:2) end: readln end.
Задание 5.3. Нарисовать блок-схемe алгоритма и написать программу, в которой с клавиатуры вводится код режима работы Kd и цвет CL. На экран выводится сообщение. При этом, если Kd = 0, то сообщение выводится символами цвета Сl, а если Kd = 1, то сообщение выводится символами цвета Сl+16.
На экране во втором случае вы получите мигающие символы, так как код их цвета больше 15. В этом случае в качестве номера мигающего цвета Паскаль использует остаток от деления кода цвета нацело на 16.
ЗАМЕЧАНИЕ
В качестве проверяемых условий можно использовать логические операции.
Рассмотрим задачу: ввести три числа А, В, С и определить, равны ли введенные числа. Блок-схема алгоритма показана на рис. 5.5.
Рис. 5.5. Блок-схема алгоритма, определяющего, равны ли друг другу три введенные с клавиатуры числа
Пример 5.3. Проверка равенства трех чисел, введенных с клавиатуры .
Program Мх; var А,В,С: integer; begin writeln(' Введите 3 числа:'); readln(A.B.C); if (А = В) and (А = С) then writeln('Числа равные') else writeln('Числа не равны'); readln end.
Задание 5.4. Ввести три числа А, В, С и определить максимальное из них. Нарисуйте блок-схему алгоритма и напишите программу.
Задание 5.5. Ввести четырехзначное целое число и определить, является ли оно палиндромом, или «перевертышем» (такими, например, являются числа 6666 и 3223). Нарисуйте блок-схему алгоритма.
Подсказка: для выделения отдельных разрядов числа используются операции div и mod.
Задание 5.6. Ввести три числа А, В, С. Если ни одно из чисел не равно нулю, то в переменную К записать среднее арифметическое трех чисел.
Задание 5.7. Введите значение X и, используя график функции (рис. 5.6), определите значение Y. Заполните блок-схему алгоритма (рис. 5.7).
Задание 5.8. Положение фигуры на шахматной доске (8 х 8) описывается двумя числами — номером горизонтали и номером вертикали. Ввести с клавиатуры координаты ферзя (X, Y) и координаты любой фигуры (М, N). Проверить, находится ли фигура под ударом. Ферзь бьет по вертикали, горизонтали и диагонали.
Задание 5.9. Введите число с клавиатуры. Если это число четное и кратно 7, то выведите свое имя на экран красным (red) цветам, иначе — выведите его зеленым (green) цветом. Предварительно заполните блок-схему алгоритма (рис. 5.8).
Рис. 5.8. «Слепая» блок-схема алгоритма, выводящего слово «Вася» красным цветом на экран, если введенное число кратно 7, и зеленым цветом в противном случае
Задание 5.10. Ввести три числа А, В, С и определить среднее из них (то, которое больше одного, но меньше другого). Нарисуйте блок-схему алгоритма и напишите программу.