- •Кафедра прикладной математики лекция № 15. Тема: «управляющие операторы языка»
- •1. Операторы ветвления.
- •С труктурная схема условного оператора
- •Пример 2.
- •Структурная схема оператора выбора
- •2. Операторы повтора.
- •С труктурные схемы операторов цикла
- •2.1. Оператор цикла с предварительным условием (while).
- •Вопросы
- •2.2. Оператор цикла с последующим условием (repeat).
- •Вопросы
- •2.3. Оператор цикла с параметром (for).
- •Пример 8.
- •Вопросы
- •3. Вложенные операторы цикла.
- •4. Процедуры передачи управления.
- •5. Правила пунктуации.
- •Контрольные вопросы
- •Задания для самостоятельной работы
- •Лекция № 15 по курсу «информатика»
Структурная схема оператора выбора
Селектор должен относиться к одному из целочисленных типов (находящихся в диапазоне – 32768 .. 32767): булевскому, литерному или пользовательскому. Список констант выбора состоит из произвольного количества значений, или диапазонов, отделенных друг от друга запятыми. Границы диапазона записываются двумя константами через разграничитель «..». Тип констант в любом случае должен совпадать с типом селектора.
Пример 4.
Составить программу вычисления площадей различных геометрических фигур:
Решение:
program pr5;
const pi=3.14;
var a,b,h,r: real;
n: integer;
begin
readln(n);
case n of
1: S:=a*b;
2: S:=(a*b)/2;
3: S:=(a+b)*h/2;
4: S:=pi*sqr®
end;
writeln(‘S=’,S)
end.
Пример 5.
Используя оператор варианта, составить программу вычисления значение функции:
Решение:
program pr5;
var a,b,c,x,y:real;
begin
writeln(‘Ввести a,b,c,x’);
readln(a,b,c,x);
case trunc(x) of
1..2: y:=a+b+c*sqr(x);
3..4: y:=exp(c*ln(a*sin(b*x)));
5..6: y:=sqrt(abs(a+b*x*sqr(x)))+c;
7..8: y:=a*ln(abs(b+c/(2*x)));
9..10: y:=exp(a*sin(x))+c*c*c
end;
writeln(‘y=’,y:8:2)
end.
Оператор case предпочтительнее оператора if в тех случаях, если в программе требуется разветвить вычисления на количество направлений, больше двух, и выражение, по значению которого производится переход на ту или иную ветвь, относится к одному из порядковых типов. Часто это справедливо даже для двух ветвей, поскольку улучшает наглядность программы.
При использовании операторов выбора case должны выполняться следующие правила:
Значения выражения «переключателя», записанного после служебного слова case, должны принадлежать дискретному типу; для целого типа они должны лежать в диапазоне integer.
Все константы, предшествующие операторам альтернатив, должны иметь тип, совместимый с типом выражения.
Все константы в альтернативах должны быть уникальны в пределах оператора варианта (т.е. повторения констант в альтернативах не допускается); диапазоны не должны пересекаться и не должны содержать констант, указанных в данной или других альтернативах.
2. Операторы повтора.
Если вычислительный процесс содержит многократные вычисления по одним и тем же математическим зависимостям, но для различных значений входящих в них величин (переменных), то его называют циклическим. Многократно повторяющиеся участки вычислений называются циклами, а переменные, изменяющиеся в цикле, - переменными цикла. Блок, ради выполнения которого и организуется цикл, называется телом цикла. Остальные операторы служат для управления процессом повторения вычислений: это начальные установки, проверка условия продолжения цикла и модификация параметра цикла. Один проход цикла называется итерацией. Начальные установки служат для того, чтобы до входа в цикл задать значения переменных, которые в нем используются. Проверка условия продолжения цикла выполняется на каждой итерации либо до тела цикла (тогда говорят о цикле с предусловием), либо после тела цикла (цикл с постусловием). Разница между ними состоит в том, что тело цикла с постусловием всегда выполняется хотя бы один раз, после чего проверяется, надо ли его выполнять еще раз. Проверка необходимости выполнения цикла с предусловием делается до тела цикла, поэтому возможно, что он не выполнится ни разу. Параметром цикла называется переменная, которая используется при проверке условия цикла и принудительно изменяется на каждой итерации, причем, как правило, на одну и ту же величину. Если параметр цикла целочисленный, он называется счетчиком цикла. Количество повторений такого цикла можно определить заранее. Параметр есть не у всякого цикла. В так называемом итерационном цикле условие продолжения содержит переменные, значения которых изменяются в цикле по рекуррентным формулам (рекуррентной называется формула, в которой новое значение переменной вычисляется с использованием ее предыдущего значения). Цикл завершается, если условие его продолжения не выполняется. Возможно принудительное завершение как текущей итерации, так и цикла в целом. Для этого служат операторы break, continue и goto. Передавать управление извне внутрь цикла не рекомендуется, потому что при этом могут не выполниться начальные установки.
Алгоритм циклической структуры в наиболее общем виде должен содержать:
подготовку цикла: задание начальных значений переменным цикла перед первым его выполнением;
тело цикла: действия, повторяемые в цикле для различных значений переменных цикла;
модификацию (изменение) значений переменных цикла перед каждым новым его повторением;
управление циклом: проверку условия продолжения (или окончания) цикла и переход на начало тело цикла, если выполняется условие продолжения цикла (или выход из цикла по его окончании).
Программно цикл может быть реализован с помощью операторов присваивания, IF, GOTO. Однако в языке Pascal для этой цели существуют специальные операторы цикла, которые исключают необходимость использовать оператор GOTO, обеспечивают более компактную, наглядную, проще контролируемую запись алгоритма, позволяют создавать более эффективные программы.