Составной оператор
Особенностью условного оператора или цикла в паскале является то, что по умолчанию в них может выполнятся только одна команда. Но если нам потребуется выполнить несколько команд в условном операторе либо в цикле, тогда их нужно как-то объединить.
Составной оператор — это объединение нескольких произвольных команд в один оператор.
Для записи составного оператора используют операторные скобки – это зарезервированные слова begin … end. Внутри команды (операторы) разделяются символом «точка с запятой» . Символом «;» перед заключительным end можно пренебречь.
Составной оператор часто называют блоком.
Фактически, весь раздел операторов, обрамленный словами begin… end, представляет собой один составной оператор. Поскольку зарезервированное слово end является закрывающей операторной скобкой, оно одновременно указывает и конец предыдущего оператора. Поэтому ставить перед ним символ «;» необязательно, и далее во всех примерах мы не будем этого делать.
Пустой оператор
Пустому оператору соответствует отсутствие записи на том месте, где по правилам должен быть какой-нибудь оператор.
Пустой оператор – это оператор, который не выполняет никаких операций и ничего не изменяет в данных и в программе.
Пустой оператор не включает никаких символов, не выполняет никаких действий и используется в двух случаях:
1. Для использования символа «;» после последней команды (оператора) в блоке:
begin c := 8; g := c; end
Поскольку в языке Паскаль символ «;» разделяет операторы, то в приведенном выше коде считается, что после последней «;» находится пустой оператор. Таким образом, «;» перед end в блоке можно либо ставить, либо нет.
2. Можно использовать для отметки места, следующего за последней командой (оператором) в блоке:
label m; begin goto m; y := 10; m: end
Наличие символа «точки с запятой» перед end в предыдущих примерах означало, что между последним оператором и операторной скобкой end располагается пустой оператор. Пустой оператор не содержит никаких действий, просто в программу добавляется лишняя точка с запятой. В основном пустой оператор используется для передачи управления в конец составного оператора.
Примеры решения задач
Рассмотрим несколько задач на составление программы с использованием составного оператора.
Задача 1. Составьте программу решения квадратного уравнения. Коэффициенты a, b и c вводятся с клавиатуры. На экране выводится информация о значении корней квадратного уравнения.
Решение:
Введем обозначения переменных для квадратного уравнения ax2+bx+c=0:
- a, b, c — коэффициенты уравнения;
- d — дискриминант;
- x, x1, x2 — корни уравнения.
Все величины могут быть как целыми так и дробными. Поэтому для них определяем общий тип — действительные числа (real).
program kvur; var a, b, c, d, x, x1, x2,: real;{описание переменных} begin writeln ('Решение квадратного уравнения'); write ('Введите коэффициенты a, b, c через пробел'); readln (a, b, c);{ввод значений коэффициентов} d:=b*b-4*a*c; {вычисление дискриминанта} if d<0 then writeln ('Корней нет'); {вывод результата} if d=0 then begin x:=-b/2*a; {вычисление единственного корня} writeln ('Корень уравнения x=', x:9:3) {вывод результата} end; if d>0 then begin x1:=(-b+sqrt(d))/(2*a);{вычисление первого корня} x2:=(-b-sqrt(d))/(2*a);{вычисление второго корня} writeln ('Корни уравнения:'); writeln ('x1=', x1:9:3);{вывод результата} writeln ('x2=', x2:9:3) {вывод результата} end end.
Задача 2. Составьте программу решения линейного уравнения. Коэффициенты a, b вводятся с клавиатуры. На экране выводится информация о значении корня линейного уравнения.
Решение:
Введем обозначения переменных для квадратного уравнения ax+b=0:
- a, b — коэффициенты уравнения;
- x — корень уравнения.
Так же как и в первой задаче величины могут быть как целыми так и дробными. Записываем для них тип — действительные числа (real).
program lin_uravnenie; var a,b,x:real; {описание переменных} begin writeln('Решение линейного уравнения'); write('Введите коэффициенты a и b через пробел'); readln(a,b); {ввод значений коэффициентов} if a<>0 then begin x:=-b/a; {вычисление корня} writeln('Корень уравнения x=',x:9:3);{вывод результата} end else if b<>0 then writeln ('Корней нет') {вывод результата} else writeln(' x - любое число'); {вывод результата} end.