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

2. Элементы программирования

Выполняемый таким образом вывод называется выводом без продвижения. Например:

print '(1x, a, $)', 'Левая граница: ' print '(1x, a, \)', 'Левая граница: '

write(*, '(1x, a)', advance = 'no') 'Левая граница: '

Рассмотренный пример позволяет сделать, по крайней мере, 3 вывода.

С одной стороны, разработанный алгоритм:

позволяет понять, какие данные являются входными, какие - результатом (т. е. выделить входные и выходные данные);

описывает, какие действия должны быть выполнены программой для достижения результата;

определяет порядок выполнения действий;

устанавливает момент завершения вычислений.

Основой для программной реализации алгоритма являются управляющие конструкции, одной из которых является только что использованная конструкция DO WHILE ... END DO.

С другой стороны, очевидно, что для перевода алгоритма в программу необходимо обладать дополнительными, не связанными с алгоритмом знаниями. Например: как объявить типы данных, как создать приемлемый интерфейс между пользователем и программой, что такое запись, как выполнить форматный вывод, и что такое дескрипторы преобразований,

ит. д.

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

2.2. Базовые структуры алгоритмов

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

Для записи алгоритмов могут быть использованы линейные схемы, блоксхемы и псевдокод. Мы будем использовать линейные схемы, первый пример использования которой приведен в разд. 2.1. При их написании будем пользоваться правилом рельефа; необязательные элементы схем будем указывать в квадратных скобках, а знак вертикальной черты будем употреблять для обозначения "или".

Любой алгоритм может быть записан при помощи трех базовых структур:

блока операторов и конструкций;

29

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

ветвления;

цикла.

2.2.1. Блок операторов и конструкций

Блок операторов и конструкций (БОК) - это выполнение одного или нескольких простых или сложных действий. БОК может содержать и ветвления и циклы, которые являются примерами сложных действий. Простым действием является, например, выполнение присваивания, В/В данных, вызов процедуры. Конструкции состоят из нескольких операторов и используются для выполнения управляющих действий, например циклов. Так, конструкция DO ... END DO состоит из двух операторов: DO

и END DO.

2.2.2. Ветвление

Ветвление - выбор одного из возможных направлений выполнения алгоритма в зависимости от значения некоторых условий.

Различают ветвления четырех видов:

если - то;

если - то - иначе;

если - то - иначе - если;

выбор по ключу.

Здесь мы рассмотрим только два первых ветвления.

Вветвлениях "если - то" и "если - то - иначе" для записи условий используется логическое выражение (ЛВ), результатом которого может быть истина (И) или ложь (Л). Ветвления можно проиллюстрировать графически (рис. 2.1).

Л

ЛВ

И

Л

 

 

ЛВ

 

И

БОК1

БОК2

 

БОК1

 

 

 

 

БОК2

 

БОК3

 

а

 

б

Рис. 2.1. Ветвления: а - ветвление "если - то"; б - ветвление "если - то - иначе"

Ветвление "если - то" работает так:

вычисляется значение ЛВ;

если оно истинно, то выполняется БОК1;

если оно ложно, то управление передается БОК2.

30

2. Элементы программирования

Запись ветвления "если - то" в линейной схеме алгоритма:

Х°. Если истинно ЛВ, то [выполнить:] БОК1 конец если [Х°].

или, если в БОК1 входит один оператор:

Х°. Если истинно ЛВ, то [выполнить:] оператор

На Фортране такое ветвление можно записать так:

IF(ЛВ) THEN

БОК1 END IF

или так:

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

Замечание. Оператор END IF можно записать и без пробела: ENDIF.

Ветвление "если - то - иначе" работает так:

вычисляется значение ЛВ;

если оно истинно, то выполняется БОК1;

если оно ложно, то выполняется БОК2;

далее управление передается БОК3.

Запись ветвления "если - то - иначе" в линейной схеме алгоритма:

Х°. Если истинно ЛВ, то [выполнить:] БОК1 иначе [выполнить:] БОК2

конец если [Х°].

Запись ветвления "если - то - иначе" на Фортране:

IF(ЛВ) THEN

БОК1 ELSE

БОК2 END IF

Для записи ЛВ используются логические операции и операции отношения. Также в ЛВ могут присутствовать арифметические и символьные операции. Приведем в табл. 2.1 некоторые логические операции и операции отношения в порядке убывания их приоритета. Обратите внимание, что операции отношения могут быть записаны в двух формах. В табл. 2.1 эти формы указаны одна под другой. Следует также подчеркнуть, что операция логического равенства записывается, если вы не используете форму .EQ., двумя знаками равенства (==). Пробелы в записи логических операций и операций отношения не допускаются, так, в случае операции "больше или равно" ошибочны записи .GE . и > =.

31