Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

DO-цикл с параметром (цикл с шагом)

Простейшая конструкция DO.

Понятие о цикле.

Циклы

 

Циклом называется повторное выполнение БОК, завершаемое при выполнении некоторых условий. Однократное выполнение БОК цикла называется итерацией. Операторы и конструкции БОК цикла также называются телом цикла.

Простейшая конструкция DO имеет вид:

[имя:] DO

БОК

END DO [имя]

Данная конструкция задает бесконечный цикл (здесь БОК – тело цикла). Поэтому такой цикл должен содержать, по крайней мере, один оператор, например GOTO или EXIT, обеспечивающие выход из цикла.

Имя конструкции, если оно присутствует, должно появляться в операторах DO и END DO.

 

Рекомендуемая форма DO-цикла с параметром имеет вид:

[имя:] DO I=IN,IK[,IH]

БОК

END DO [имя]

БОК – тело цикла;

I – целая, вещественная, одинарной или двойной точности переменная, называемая переменной цикла или параметром (счетчиком) цикла.

IN,IK – целые вещественные, одинарные или двойной точности скалярные выражения (например, константы или арифметические выражения), задающие диапазон изменения I. Иными словами, IN – начальное значение параметра цикла, а IK – конечное значение параметра цикла.

IH – целое, вещественное, одинарной или двойной точности скалярное выражение (шаг изменения параметра цикла, называемый в литературе шаг цикла). Значение IH не может быть равным нулю. Если параметр IH отсутствует, то «по умолчанию» он принимается равным единице.

DO-цикла с параметром работает так (случай IH>0):

1°. Присвоить I=IN.

2°. Если I<=IK, то перейти к пункту 3°, иначе завершить цикл.

3°. Выполнить БОК.

4°. Присвоить I=I+IH и перейти к пункту 2° (на повтор).

Для случая IH<0 следует модифицировать пункт 2°, переписав его в виде:

2°. Если I>=IK, то перейти к пункту 3°, иначе завершить цикл.

 

Оператор END DO можно также писать без пробела ENDDO.

Число итераций цикла определяется по формуле

NI=MAX(INT((IK-IN+IH)/IH),0)

где MAX – функция выбора наибольшего значения из перечисленных в скобках через запятую; функция INT возвращает значение, равное целой части числа.

Если DO-цикл с параметром не содержит операторов выхода из цикла, например GOTO или EXIT, то БОК выполняется NI раз.

После завершения цикла значение переменной цикла I равно (при IH>0):

· IP+IH, если IK>=IN и цикл не содержит операторов выхода из цикла, где IP – значение переменной цикла на последней итерации;

· IP, если IK>=IN и цикл досрочно прерван, например оператором EXIT или GOTO, где IP – значение переменной цикла I в момент прерывания цикла;

· IN, если IK<IN.

Аналогично определяется значение I и для случая IH<0.

Нельзя изменять значение переменной цикла в теле цикла.

При первом выполнении оператора DO I=IN,IK,IH вычисляются и запоминаются значения выражений IN,IK,IH. Все дальнейшие итерации выполняются с этими значениями. Поэтому, если IN,IK или IH являются переменными и их значения изменяются в теле цикла, то на работе цикла это не отразится.

Пример программы вычисления факториала :

read *,n f=1 do k=1,n f=f*k end do print *,’f=’,f end

 

Решение этой задачи с помощью оператора безусловного перехода

GOTO:

read *,n f=1; k=1 1 f=f*k k=k+1 if(k<=n) goto 1 print *,’f=’,f end

Сопоставляя оба варианта программы друг с другом, заметим, что оператор DO заменил три оператора: первоначальное присвоение (k = 1), увеличение счетчика (k=k+1), проверку условия (if).

При записи DO-циклов могут быть использованы метки. Метками помечаются последние операторы циклов, а в остальном структура остается прежней. Проиллюстрируем эту форму записи в двух вариантах на рассматриваемом примере вычисления факториала:

read *,n f=1 do 1 k=1,n 1 f=f*k print *,’f=’,f end read *,n f=1 do 1 k=1,n f=f*k 1 end do print *,’f=’,f end
<== предыдущая лекция | следующая лекция ==>
Операторные функции | Некоторые правила работы с DO и DO WHILE циклами
Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 341; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.013 сек.