Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
современный фортран , Бортеньев.pdf
Скачиваний:
242
Добавлен:
26.03.2015
Размер:
2.34 Mб
Скачать

О. В. Бартеньев. Современный ФОРТРАН

2.2.4. Прерывание цикла. Объединение условий

Выйти из цикла и передать управление на первый следующий за циклом выполняемый оператор можно, применив оператор EXIT. Если нужно пропустить часть операторов цикла и перейти к следующей итерации, то нужно использовать оператор CYCLE. При этом управление передается операторам DO или DO WHILE. Операторы EXIT и CYCLE отдельно не применяются, а встраиваются в конструкции IF.

Пример. Вычислить число положительных и отрицательных элементов одномерного массива a из n элементов, заканчивая вычисления, если число нулевых элементов массива превысит k.

program pn

integer, parameter :: n = 10

integer :: a(n) = (/ 1, -2, 0, 3, -4, 5, -6, 7, 0, 9 /) integer :: k = 3, pos = 0, ze = 0, i, va

do i = 1, n

! i - номер элемента массива a

va = a(i)

 

if(va == 0) then

! ze - число нулевых элементов массива

ze = ze + 1

if(ze > k) then exit

! Выход из цикла

else

 

cycle

! Переход на начало цикла

end if

! pos - число положительных элементов массива

end if

if(va > 0) pos = pos + 1

! Число отрицательных элементов: n - ze - pos

end do

if(ze > k) stop 'Число нулевых элементов больше нормы'

write(*, *) 'pos = ', pos, '

neg = ', n - ze - pos

end program pn

 

Замечание. Использование переменной va позволяет сократить число обращений к массиву a и тем самым повысить быстродействие программы.

В данной задаче для завершения цикла можно использовать широко применяемый в программировании метод объединения условий. Цикл должен продолжаться, пока истинны два условия: i n и ze k. При нарушении одного из них цикл должен быть прекращен. Используем объединение условий в цикле "пока".

Алгоритм:

1°. Начало.

 

2°. Задать значения n, a и k.

 

3°. Принять:

 

pos = 0

! pos - число положительных элементов массива a

ze = 0

! ze - число равных нулю элементов массива a

i = 1

! i - текущий номер элемента массива a

4°. Пока i n и ze k, выполнить:

36