Структурный оператор - оператор, в состав которого могут входить один или несколько операторов, порядок выполнения которых он определяет.
Структурные операторы подразделяются на:
· Составной оператор
· Условные операторы
· Операторы цикла
· Оператор над записями
Условные операторы позволяют выбрать для выполнения один из нескольких операторов (или не выбрать ни одного).
Этот выбор осуществляется в зависимости от некоторого условия.
По типу условия выбора и по числу доступных для выбора операторов условные операторы делятся на:
· Условный оператор if
· Оператор варианта case
Условный оператор(if) имеет следующий синтаксис (см. также синтаксическую диаграмму):
if E then s1 else s2
и может так же использоваться в сокращённом виде
if E then s1
здесь E - выражение, s1 – оператор, и s2 – оператор. Выражение E называют условием выбора, оно должно быть выражением стандартного типа Boolean (мы будем также называть этот тип логическим или булевским); if, then и else – зарезервированные слова.
Полная форма оператора if предполагает выбор одного из двух операторов: S1, S2 в зависимости от условия выбора: если E = True, то выполняется оператор S1, иначе если E =False, то выполняется оператор S2.
Сокращенная форма оператора if предполагает выбор одного из двух операторов: S1 и пустого оператора в зависимости от условия выбора: если E = True, то выполняется оператор S1, иначе если E = False, то выполняется пустой оператор.
Синтаксическая неоднозначность, возникающая в конструкции:
if E1 then if E2 then S1 else S2
разрешается путем следующей интерпретации этой конструкции:
if E1 then begin if E2 then S1 else S2 end;
В общем случае, ключевое слово else связывается с ближайшим ключевым словом if, с которым еще не ассоциировано else.
Управляющая структура оператора if в сокращённой форме - это структура типа «ifthen», в которой if-тест соответствует выражению E, а then - часть - оператору S1.
Управляющая структура оператора if в полной форме - это структура типа «ifthenelse», в которой if-тест соответствует выражению E, then - часть - оператору S1, else - часть - оператору S2.
Пример оператора if
var
X, Y, Z: Integer;
begin
Readln(X, Y);
if X > Y then Z:= X else Z:= Y;{ Z = max(X,Y). В результате выполнения оператора if Z получает наибольшее из значений X и Y }
if X < 0 then X:= -X ;{ X = Abs(X). В результате выполнения оператора if X получает значение равное абсолютному значению X }
end.
Здесь if-тест - логическое выражение (предикат), задающий условие ветвления процесса обработки данных по одному из указанных направлений.
Then-часть - описание процесса обработки данных, который будет выполнен, если if-тест примет значение «истина».
На Object Pascal она может быть реализована посредством применения условного оператора.
Как видно из приведённого ниже рисунка программа с управляющей структурой «ifthen» имеет два пути выполнения. При выполнении программы по первому пути (If-тест принимает значение «true») выполняются действия по обработке данных поименованные как «Then-часть». При выполнении программы по второму пути (If-тест принимает значение «false») никаких действий по обработке данных не выполняется.
Здесь if-тест - логическое выражение (предикат), задающий условие ветвления процесса обработки данных по одному из указанных направлений.
Then-часть - описание процесса обработки данных, который будет выполнен, если if-тест примет значение «истина».
Else-часть - описание процесса обработки данных, который будет выполнен, если if-тест примет значение «ложь».
На Object Pascal она может быть реализована посредством применения условного оператора.
Как видно из приведённой ниже на рисунке Е-схемы программа с управляющей структурой «ifthen» имеет два пути выполнения. При выполнении программы по первому пути (If-тест принимает значение «true») выполняются действия по обработке данных поименованные как «Then-часть». При выполнении программы по второму пути (If-тест принимает значение «false») выполняются действия по обработке данных поименованные как «Else-часть».
Разработанная нами программа сообщает пользователю об ошибке в исходных данных. Однако это сообщение не содержит информации о характере ошибки. Давайте изменим нашу программу так, чтобы она сообщала пользователю и о характере ошибки в исходных данных. Для этого возьмём узел 5 с блок-схемы (Рисунок 2. Управляющая структура программы.) и детализируем его т.е. спроектируем его более детально. если, теперь, вместо узла 5 мы подставим изображённую ниже блок-схему, то наша программа будет выводить сообщение о том, какие стороны отрицательны, или какая сторона больше двух других.
Текст программы с детальным сообщением об ошибке приведён ниже.
program PGeron;
{$APPTYPE CONSOLE}
// Программа для вычисления площади треугольника
// Пример программы с разветвляющимся вычислительным процессом
uses
SysUtils,
URussian;
//URussian модуль, содержащий функцию Rus, для //русификации строк при выводе на монитор
var
a,b,c: Real;//исходные данные
p: Real;//вспомогательная переменная
s: Real;//результат
poz: boolean;//вспомогательная переменная
//poz=true, если a,b,c - положительные числа, false в //противном случае
Issides: boolean;//вспомогательная переменная
//Issides =true, если a,b,c - стороны треугольника, //false в противном случае
mes: String = '';
//переменная содержащая строку сообщения об ошибке в исходных данных. Начальное
//значение - пустая строка
begin
write(Rus('Стороны треугольника: ')); readln(a,b,c);
poz:= (a > 0)and(b > 0)and(c > 0);
Issides:= poz and (c< (a + b)) and (a< (c + b)) and (b < (c + a));
if Issides
then//a,b,c - //стороны треугольника
begin
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.