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

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

end if

...

Выполняющий те же действия фрагмент без GOTO выглядит так:

integer(1) in do

print *, 'Введите число от 1 до 10: ' read *, in

if(in >= 1 .and. in <= 10) then print *, 'Ваш ввод: ', in

exit end if

print *, 'Ошибка. Повторите ввод' end do

...

7.2. Оператор и конструкции IF

Дополнительно по сравнению с более ранними версиями Фортрана в управляющие конструкции введено необязательное имя конструкции. Применение именованных конструкций позволяет создавать хорошо читаемые программы даже при большой глубине вложенности управляющих конструкций.

В приводимых в настоящем разделе операторе и конструкциях IF ЛВ должно быть скаляром, т. е. операндами ЛВ не должны быть массивы или их сечения.

7.2.1. Условный логический оператор IF

IF(ЛВ) оператор

Если истинно ЛВ, то выполняется оператор, в противном случае управление передается на последующий оператор программы.

В Фортране существует еще один условный оператор - арифметический IF. Этот оператор относится к устаревшим свойствам Фортрана. Его описание дано в прил. 2.

7.2.2. Конструкция IF THEN END IF

[имя:] IF(ЛВ) THEN

БОК

END IF [имя]

БОК выполняется, если истинно ЛВ. Если присутствует имя конструкции, то оно должно быть и в первом и в последнем операторе конструкции, например:

swap: if(x < y) then

hold = x; x = y; y = hold end if swap

204

7. Управляющие операторы и конструкции

Замечание. Если БОК содержит один оператор, то лучше использовать оператор

IF(ЛВ) оператор

7.2.3. Конструкция IF THEN ELSE END IF

[имя:] IF(ЛВ) THEN

БОК1 ELSE [имя]

БОК2 END IF [имя]

В случае истинности ЛВ выполняется БОК1, и выполняется БОК2, если ЛВ ложно. Имя конструкции, если оно задано, должно обязательно присутствовать и перед IF и после END IF.

Пример:

if(x**2 + y**2 < r**2) then print *, 'Точка внутри круга' else

print *, 'Точка вне круга' end if

7.2.4. Конструкция IF THEN ELSE IF

[имя:] IF(ЛВ1) THEN

БОК1

ELSE IF(ЛВ2) THEN [имя]

БОК2

...

[ELSE [имя]

БОКn] END IF [имя]

В случае истинности ЛВ1 выполняется БОК1 и управление передается на следующий за END IF оператор. Если ЛВ1 ложно, то управление передается на следующий ELSE IF, т. е. вычисляется значение ЛВ2 и, если оно истинно, выполняется БОК2. Если оно ложно, то управление передается на следующий ELSE IF, и т. д. Если ложны все ЛВ, то выполняется следующий за завершающим ELSE БOКn. Если завершающий ELSE отсутствует, то управление передается на расположенный за END IF оператор. Число операторов ELSE IF в конструкции может быть произвольным. Имя в ELSE и в ELSE IF можно задавать, если его имеют операторы IF и END IF. Имя, если оно задано, во всех частях конструкции должно быть одинаковым.

205