5.4 ОПЕРАТОРЫ ЦИКЛА.pptx
- Количество слайдов: 16
ОПЕРАТОРЫ ЦИКЛА
Назначение и типы • Операторы цикла предназначены для многократного выполнения некоторых операторов. Эти операторы называются телом цикла. • Различаются операторы цикла с предусловием и с постусловием.
Циклы с предусловием и с постусловием. • Переменные, значения которых меняются в теле цикла, называются переменными цикла или параметрами цикла. • Для того чтобы правильно реализовать циклический алгоритм, до входа в цикл переменным цикла необходимо задать соответствующие значения, называемые начальными значениями. • В зависимости от того, при каком именно значении логического выражения U (ложь или истина) выполнение цикла завершается, возможны два вида оператора цикла с предусловием и два – с постусловием
Операторы DO и DO WHILE. • Оператор цикла DO предназначен для многократного выполнения операторов, находящихся между заголовком оператора DO и оператором CONTINUE с меткой или оператором END DO. • Оператор CONTINUE не порождает какихлибо команд и используется для завершения оператора цикла или для ссылок в программе. Этот оператор часто называют пустым оператором.
Оператор DO • Оператор цикла DO имеет вид: • DO N[, ] I=M 1, M 2, M 3 • Здесь N – метка последнего оператора тела цикла (оператора CONTINUE); После метки N может стоять необязательная запятая. • I – переменная целого, вещественного или вещественного двойной точности типа, которая называется параметром цикла, • M 1, M 2, M 3 – константы, переменные или арифметические выражения целого, вещественного или вещественного двойной точности типов. • Величина M 1 определяет начальное значение параметра цикла, M 2 определяет конечное значение параметра цикла, а MЗ определяет шаг изменения параметра цикла.
Правило выполнения • Если значение M 2 больше или равно M 1, то оператор DO автоматически исполняет все операторы до оператора CONTINUE с меткой N для значений I от M 1 до M 2 с шагом MЗ. • Таким образом, вначале, если значение M 1 меньше либо равно M 2, параметр I устанавливается равным M 1 и с этим значением выполняются все операторы тела цикла, затем I изменяется до величины M 1+MЗ, получившееся значение сравнивается с M 2 и если I меньше или равно M 2, то с этим значением I выполняются все операторы тела цикла. Этот процесс продолжается до тех пор, пока параметр цикла не перейдет границу значения MЗ, т. е. при положительном шаге M 3 цикл повторяется при всех значениях I меньших M 2, а при отрицательном шаге MЗ цикл повторяется при всех значениях I больших M 2. • Если в записи цикла значение шага MЗ отсутствует, то оно принимается равным единице. • После окончания цикла выполняется оператор, следующий за оператором CONTINUE.
Примеры заголовка цикла • DO 10 I=1, N-1 • DO 5, A=K, X*Y+ 5, H • При записи заголовка цикла необходимо следить за тем, чтобы шаг не оказался равным нулю.
Пример использования оператора цикла. • Для заданного целого положительного значения n вычислить и напечатать значение суммы
В качестве оператора, завершающего тело цикла, можно использовать оператор END DO. • • • • PROGRAM SUM_R PRINT *, 'VVEDI N' READ *, N PRINT *, 'VVEDI X' READ *, X S=0. 0 A=X DO 5 K=1, N PRINT *, ' K=', K S=S+A A=A*X/(K+1) 5 CONTINUE PRINT *, ' N= ', N , ' A=', A, ' S= ', S END PROGRAM SUM_R PRINT *, 'VVEDI N' READ *, N PRINT *, 'VVEDI X' READ *, X S=0. 0 A=X DO K=1, N PRINT *, ' K= ', K S=S+A A=A*X/(K+1) END DO PRINT *, ' N= ', N , ' A= ', A, ' S= ', S END В этом случае в заголовке цикла не указывается метка, а вместо оператора CONTINUE записывается END DO.
ЦИКЛ С ФИКСИРОВАННЫМ ЧИСЛОМ ПОВТОРЕНИЙ program CUMULAT parameter(N=5) integer FCTR dimension ARR(N) data ARR /-1. 2, 3. 4, -5. 6, 7. 8, -9. / c Произведение всех целых чисел от 1 до N (факториал) FCTR = 1 do 10 i = 1, N FCTR = FCTR*i 10 continue • В Фортране циклы с фиксированным числом повторений реализуются конструкцией DO. Наиболее часто циклы с фиксированным числом повторений используются для накопления сумм или произведений, либо для вычисления значений или перестановки элементов массивов. Конструкция DO обеспечивает изменение значения целой переменной, называемой параметром цикла, в заданных пределах и с заданным шагом. Для каждого значения переменной цикла выполняется блок операторов, называемый телом цикла. В ФОРТРАНЕ-77 Цикл начинается DO-строкой, в которой, после ключевого слова DO, сначала указывается метка последнего оператора тела цикла, а затем переменная цикла. Переменной цикла присваивается начальное значение, а за тем, через запятую указываются конечное значение и шаг изменения. Далее следует тело цикла, завершающееся оператором, помеченным меткой, указанной в DO-строке. Как правило меткой помечается "пустой" (не вызывающий какого-либо действия) оператор CONTINUE
Оператор DO WHILE • Оператор цикла DO WHILE • имеет вид: • • • DO m WHILE(L) <оператор1> <оператор2> … m CONTINUE • Или • • • DO WHILE(L) <оператор1> <оператор2> … END DO Здесь m – метка последнего оператора тела цикла или оператора CONTINUE; L – логическое выражение, которое обязательно заключается в круглые скобки. После метки m может стоять необязательная запятая.
Правило выполнения • Вычисляется значение логического выражения L. Если оно принимает значение «истина» (. TRUE. ), то выполняются все операторы тела цикла до оператора CONTINUE с меткой m или до END DO. • Этот процесс продолжается до тех пор, пока логическое выражение не примет значение «ложь» (. FALSE. ). Тогда операторы тела цикла не исполняются, и управление передается оператору, следующему за CONTINUE или за END DO.
Примеры заголовка цикла • DO 25 WHILE(A**2+B**2. GT. R 0**2) • DO WHILE (Z. LE. X 1. OR. Z. GE. X 2) • DO 777 WHILE(A. GT. B. OR. A= =B)
Вычислить первый член ряда Фибоначчи, превосходящий модуль заданного числа M ≠ 0 PROGRAM FIB CHARACTER(20) : : S='VVEDI M' INTEGER*4 : : F 1=1, F 2=1 INTEGER (4) F PRINT *, S READ *, M F=-1 DO WHILE(F<=ABS(M)) F=F 1+F 2 F 1=F 2 F 2=F END DO PRINT *, ' M= ', M , ' F= ', F END Пример использования оператора DO WHILE Здесь F 2– текущее значение, F 1– предыдущее, а F– вычисляемые значения. В этой программе начальное значение переменной F задается равным – 1, для того чтобы оператор цикла исполнился хотя бы один раз. Для того чтобы при следующем выполнении тела цикла алгоритм был правильным, значение F 2 передается переменной F 1, а F- в F 2.