ОПЕРАТОРЫ ЦИКЛА Назначение и типы Операторы цикла предназначены
5.4_OPERATORY_CIKLA.pptx
- Количество слайдов: 16
ОПЕРАТОРЫ ЦИКЛА
Назначение и типы Операторы цикла предназначены для многократного выполнения некоторых операторов. Эти операторы называются телом цикла. Различаются операторы цикла с предусловием и с постусловием.
Циклы с предусловием и с постусловием. Переменные, значения которых меняются в теле цикла, называются переменными цикла или параметрами цикла. Для того чтобы правильно реализовать циклический алгоритм, до входа в цикл переменным цикла необходимо задать соответствующие значения, называемые начальными значениями. В зависимости от того, при каком именно значении логического выражения U (ложь или истина) выполнение цикла завершается, возможны два вида оператора цикла с предусловием и два – с постусловием
Операторы DO и DO WHILE. Оператор цикла DO предназначен для многократного выполнения операторов, находящихся между заголовком оператора DO и оператором CONTINUE с меткой или оператором END DO. Оператор CONTINUE не порождает каких-либо команд и используется для завершения оператора цикла или для ссылок в программе. Этот оператор часто называют пустым оператором.
Оператор DO Оператор цикла DO имеет вид: DO N[,] I=M1, M2, M3 Здесь N – метка последнего оператора тела цикла (оператора CONTINUE); После метки N может стоять необязательная запятая. I – переменная целого, вещественного или вещественного двойной точности типа, которая называется параметром цикла, M1, M2, M3 – константы, переменные или арифметические выражения целого, вещественного или вещественного двойной точности типов. Величина M1 определяет начальное значение параметра цикла, M2 определяет конечное значение параметра цикла, а MЗ определяет шаг изменения параметра цикла.
Правило выполнения Если значение M2 больше или равно M1, то оператор DO автоматически исполняет все операторы до оператора CONTINUE с меткой N для значений I от M1 до M2 с шагом MЗ. Таким образом, вначале, если значение M1 меньше либо равно M2, параметр I устанавливается равным M1 и с этим значением выполняются все операторы тела цикла, затем I изменяется до величины M1+MЗ, получившееся значение сравнивается с M2 и если I меньше или равно M2, то с этим значением I выполняются все операторы тела цикла. Этот процесс продолжается до тех пор, пока параметр цикла не перейдет границу значения MЗ, т.е. при положительном шаге M3 цикл повторяется при всех значениях I меньших M2, а при отрицательном шаге MЗ цикл повторяется при всех значениях I больших M2. Если в записи цикла значение шага MЗ отсутствует, то оно принимается равным единице. После окончания цикла выполняется оператор, следующий за оператором CONTINUE.
Примеры заголовка цикла DO10 I=1,N-1 DO 5, A=K,X*Y+ 5,H При записи заголовка цикла необходимо следить за тем, чтобы шаг не оказался равным нулю.
Пример использования оператора цикла. Для заданного целого положительного значения n вычислить и напечатать значение суммы
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 В качестве оператора, завершающего тело цикла, можно использовать оператор END DO. В этом случае в заголовке цикла не указывается метка, а вместо оператора CONTINUE записывается END DO.
ЦИКЛ С ФИКСИРОВАННЫМ ЧИСЛОМ ПОВТОРЕНИЙ В Фортране циклы с фиксированным числом повторений реализуются конструкцией DO. Наиболее часто циклы с фиксированным числом повторений используются для накопления сумм или произведений, либо для вычисления значений или перестановки элементов массивов. Конструкция DO обеспечивает изменение значения целой переменной, называемой параметром цикла, в заданных пределах и с заданным шагом. Для каждого значения переменной цикла выполняется блок операторов, называемый телом цикла. В ФОРТРАНЕ-77 Цикл начинается DO-строкой, в которой, после ключевого слова DO, сначала указывается метка последнего оператора тела цикла, а затем переменная цикла. Переменной цикла присваивается начальное значение, а за тем, через запятую указываются конечное значение и шаг изменения. Далее следует тело цикла, завершающееся оператором, помеченным меткой, указанной в DO-строке. Как правило меткой помечается "пустой" (не вызывающий какого-либо действия) оператор CONTINUE 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 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.