- •Глава 7. Программирование циклических вычислительных процессов
- •7.1. Оператор цикла с предусловием while
- •7.2. Оператор цикла с постусловием repeat
- •2) Вычисляется логическое выражение l, результат вычисления анализируется;
- •X, y, dx, a, b : real;
- •7.3. Оператор цикла с параметром for
- •7.4. Одномерные массивы и их описание
- •7.4.1. Обращение к элементу массива
- •7.4.2. Ввод и вывод одномерных массивов
- •7.4.3. Организация циклов с использованием массивов
- •Пример 7.13
- •7.5. Вопросы для самоконтроля
Глава 7. Программирование циклических вычислительных процессов
Циклическим называют вычислительный процесс, алгоритм которого представляет собой линейную структуру с вложенными в нее одной или несколькими циклическими структурами, каждая из которых имеет глубину вложения равную 1.
Для организации циклов используются специальные операторы языка, называемые операторами цикла.
В языке TurboPascal таких операторов три: оператор с предусловием While, оператор с постусловием Repeat и оператор с параметром For.
7.1. Оператор цикла с предусловием while
Общий вид оператора
while L do оператор,
где L - логическое выражение, оператор - простой или составной оператор, который является телом цикла (рис. 7.1).
Рис. 7.1. Синтаксическая диаграмма оператора while
Оператор while выполняется так:
1) вычисляется логическое выражение L, результат вычисления анализируется;
2) если результат вычислений true, то выполняется тело цикла, после чего осуществляется возврат к оператору while; если результат false, то тело цикла не выполняется, а управление передаётся оператору программы, расположенному непосредственно после тела цикла.
Если первая проверка условия окончания цикла дала результат false, то тело цикла не выполнится ни разу.
Логику действия оператора while можно сформулировать так: «выполнять тело цикла, пока условие истинно».
Пример 7.1
Вычислить значения функции y=sin(x2) на отрезке [1,2], если шаг изменения её аргумента x=0,1.
Схема алгоритма не приводится, т.к. она отличается от схемы, приведенной в примере 1.11, только тем, что проверка условия выхода из цикла выполняется перед телом цикла, а не после него.
program example71;
var
x, y, dx, a, b : real;
begin
write ('введите a,b,dx - ');
readln (a,b,dx);
x := a; { присваивание параметру цикла x его
начального значения }
while x <= b do {проверка условия работы цикла}
begin {операторы, составляющие}
y := sin(x * x); {тело цикла, заключены в}
writeln ('x=', x:10:3, ' y=' ,y:10:3);
x := x + dx {операторные скобки }
end { begin-end }
end.
7.2. Оператор цикла с постусловием repeat
Общий вид оператора
repeat
oператор1;
oператор2;
……………..
oператорN
until L
где L - логическое выражение; оператор1, оператор2,..., операторN - операторы, представляющие в совокупности тело цикла (рис. 7.2).
Рис. 7.2. Синтаксическая диаграмма оператора repeat
Последовательность выполнения оператора repeat:
1) исполняются операторы, составляющие тело цикла;
2) Вычисляется логическое выражение l, результат вычисления анализируется;
3) если результатом вычислений является false, тело цикла выполняется снова, в противном случае (результат вычислений - true) очередного повторения тела не происходит, а осуществляется выход из цикла на следующий по порядку оператор программы.
Таким образом, логику действия оператора repeat можно выразить инструкцией «выполнять тело цикла до тех пор, пока условие не станет истинным».
Пример 7.2
Выполнить задание примера 7.1, используя оператор repeat.
program example72;
var