Составной оператор — это последовательность произвольных операторов программы, заключенная в операторные скобки — зарезервированные слова BEGIN ... END [17]. Характер входящих операторов в данный момент может быть различным. Также ТР допускает любую глубину вложенности составных операторов.
Условный оператор.
Условный оператор имеет следующий вид:
IF <условие> THEN <оператор1> ELSE <оператор2>, где IF, THEN, ELSE — зарезервированные слова;
<условие> — выражение логического типа;
<оператор1>, <оператор2> — операторы языка ТР.
Выполнение этого оператора начинается с проверки условия. Если оно истинно (=TRUE), то выполняется <оператор1>, иначе (значение выражения = FALSE) выполняется <оператор2>. Часть ELSE может быть опущена, тогда оператор выполняется только при значении выражения =TRUE, иначе он пропускается. Операторы повторений.
Операторы повторений.
Счетный оператор цикла (вариант 1):
FOR <пар_цикла>:= <нач_значение> TO <кон_значение> DO <операторы>, где FOR, TO, DO — зарезервированные слова;
<пар_цикла> — параметр цикла (переменная типа integer);
<нач_значение> — начальное значение <пар_цик>;
<кон_значение> — конечное значение <пар_цик>;
<операторы> — произвольные операторы языка ТР.
Выполнение оператора начинается с вычисления начального значения. Выполняется присваивание <параметр цикла>:=<начальное значение>.
Затем циклически выполняется:
1. Если параметр цикла меньше или равен конечному значению, то переход к п.2, иначе оператор заканчивает работу.
2. Выполнение операторов после слова DO.
3. <пар_цик> увеличивается на 1.
Счетный оператор цикла (вариант 2):
FOR <пар_цикла>:= <нач_значение> DOWNTO <кон_значение> DO <операторы>, где FOR, TO, DO — зарезервированные слова;
<пар_цикла> — параметр цикла (переменная типа integer);
<нач_значение> — начальное значение <пар_цик>;
<кон_значение> — конечное значение <пар_цик>;
<операторы> — произвольные операторы языка ТР.
Выполнение оператора начинается с вычисления начального значения. Выполняется присваивание <параметр цикла>:=<начальное значение>.
Затем циклически выполняется:
4. Если параметр цикла меньше или равен конечному значению, то переход к п.2, иначе оператор заканчивает работу.
5. Выполнение операторов после слова DO.
6. <пар_цик> уменьшается на 1.
Оператор цикла с предусловием:
WHILE <условие> DO <операторы>, где WHILE, DO — зарезервированные слова ( пока выполняется условие, делать);
<условие> — выражение логического типа;
<операторы> — операторы языка ТР.
Пока значение выражения <условие> равно TRUE, выполняются <операторы>. Если условие FALSE, то выполнение оператора заканчивается.
Здесь оператор выполняется до тех пор, пока логическое выражение TRUE. Для того чтобы цикл завершился, оператор в теле цикла должен в некоторый момент изменить значение логического условия. Оператор может быть любым оператором Паскаля, в том числе оператором цикла. В последнем случае цикл называется вложенным. Если тело цикла содержит более одного оператора, то он оформляется как составной оператор.
Оператор цикла с постусловием:
REPEAT <тело цикла> UNTIL <условие>, где REPEAT, UNTIL — зарезервированные слова ( повторять до тех пор, пока не будет выполнено условие);
<тело цикла> — операторы языка ТР;
<условие> — выражение логического типа.
Оператор выполняется хотя бы один раз. Затем проверяется условие. Если его значение FALSE, то <тело цикла> повторяется, иначе оператор заканчивает работу.
Здесь оператор выполняется до тех пор, пока логическое выражение FALSE. В теле цикла можно указывать несколько любых операторов Паскаля без дополнительных операторных скобок. Для выхода из цикл необходимо, чтобы операторы тела цикла изменили значение логического условия на TRUE. Тело цикла этого оператора выполняется хотя бы один раз.
Оператор выбора
CASE <кл_выб> OF <сп_выб> ELSE <оператор> END, где CASE, OF, ELSE, END — зарезервированные слова (случай, из, иначе, конец);
<кл_выб> — ключ выбора (выражение любого порядкового типа);
<оператор> — оператор языка ТР;
<сп_выб> — список выбора: одна или несколько конструкций вида:
<константа_выбора>: <оператор>;
<константа_ выбора> — константа того же типа, что
и <кл_выб>;
<оператор> — произвольный оператор языка ТР.
Часть ELSE может отсутствовать. Оператор начинается с вычисления значения <кл_выб>. Затем в списке выбора отыскивается значение константы, равное вычисленному значению. Если поиск удачен, то выполняются соответствующие операторы, после чего оператор завершает работу. Если в результате поиска нужное значение не было найдено, то выполняется оператор после слова ELSE. В случае отсутствия части ELSE, оператор ничего не выполняет и заканчивает работу.
2.5.Практические задания.
Лабораторная работа № 2
Решение уравнений и неравенств с использованием условного оператора.
Цель задания:
1. Получение навыков в использовании условного оператора в программе.
2. Знакомство с задачами, для решения которых используются условные операторы.
Постановка задачи:
1. Составить программу решения уравнения (системы уравнений, неравенства, системы неравенств).
2. Напечатать исходные данные и результаты.
Содержание отчета:
1. Постановка задачи.
2. Текст программы.
3. Распечатка исходных данных и результатов выполнения программы.
4. Для результатов должен быть напечатан соответствующий текст.
Образец выполнения задания.
Лабораторная работа № 2, вариант № 8.
Решение уравнений и неравенств с использованием условного оператора.
Постановка задачи.
Составить программу решения системы неравенств:
Напечатать исходные данные и результаты.
Текст программы.
program lab2{ вариант № 8};
var n,a1,a2,b1,b2:integer;
r1,r2:real;
begin
writeln('Решим систему неравенств:');
writeln(' -');
writeln('| A1X+B1<0');
writeln('| A2X+B2<0');
writeln(' -');
write('Введите a1=');
readln(a1);
write(' Введите a2=');
readln(a2);
write(' Введите b1=');
readln(b1);
write(' Введите b2=');
readln(b2);
writeln(' -');
writeln('| ',a1,'X+(',b1,')<0');
writeln('| ',a2,'X+(',b2,')<0');
writeln(' -');
r1:=((-b1)/a1);
r2:=((-b2)/a2);
if (r1<0) and (r2<0)
then case r1<r2 of
false:writeln('Ответ: X<',r1:3:2);
true:writeln('Ответ: X<',r2:3:2);
end
else case r1>r2 of
false:writeln('Ответ: X<',r1:3:2);
true:writeln('Ответ: X<',r2:3:2);
end;
end.