кета MinGW (Minimalist GNU for Windows) – с официального сайта MinGW: http://www.mingw.org. Эта информация может оказаться актуальной, для внеаудиторного выполнения заданий.
Принципиальным моментом при изучении основ программирования является понимание важности следования стандарту языка при написании текста программы и его переносимости. Конкретный программный продукт, например Fortran Power Station (FPS), поддерживает стандарт [ISO/IEC 1539-1:1997(E)], так же как и Gfortran. Однако тексты программ, написанные и отлаженные на FPS, далеко не всегда будут правильно компилироваться другими компиляторами Фортрана, ориентированными на тот же стандарт. Это весьма возможно, если в тексте программы будет использован тип данных или языковая конструкция, не стандартная в рамках
[ISO/IEC 1539-1:1997(E)], но присутствующая в FPS как опция, до-
полняющая возможности стандарта. Это вовсе не означает, что нестандартными возможностями какого-либо транслятора или среды разработки не следует пользоваться. Нужно всего лишь уметь четко оценивать текст написанной программы на предмет соответствия стандарту языка программирования и делать правильные выводы относительно переносимости данной программы.
При этом представляется весьма важным формирование правильного представления о взаимосвязи стандарта языка программирования и программном продукте, реализующем этот стандарт через транслятор и дополняющий его графический интерфейс пользователя или среду разработки. Зачастую, изучая программирование в различных средах, студенты либо вообще остаются в неведении относительно того, что такое транслятор, либо имеют о трансляторе довольно смутные представления, поскольку взаимодействуют с ним опосредованно, через систему многоуровневого меню.
В целом ряде случаев – при описании свободного и фиксированного формата записи программы (пп. 3.1.3, 3.1.4), а также представления буквальных текстовых констант, весьма важно обозначить символы «пробел» в текстах примеров и пояснений. Для их обозначения в данном учебном пособии используется символ «^» («крышечка»), как, например, в буквальной текстовой константе «HELLO^WORLD». Символ – «^» – в данном практикуме не используется больше не для чего, чтобы не вызывать разночтений.
121
3.1. ПРАВИЛА ЗАПИСИ ПРОГРАММЫ
3.1.1. Набор символов Фортрана
При написании программ на Фортране используется строго определенный набор символов или алфавит. Он состоит из 26 букв латинского алфавита (от «A» до «Z»), 10 арабских цифр (от 0 до 9) и набора специальных символов, представленных в табл. 3.1.
Буквы латинского алфавита могут быть как прописными, так и строчными (т.е. «большими» и «маленькими»). По существу, это означает две группы символов: от «A» до «Z» или от «a» до «z».
В Фортране нет различия между строчными и прописными буквами, за исключением работы с текстовыми данными. Так два текстовых сообщения “HELLO, WORLD” и “hello, world” различа-
ются с точки зрения их символьного представления.
Таблица 3.1. Специальные символы Фортрана
Символ |
Название |
= |
Знак равенства |
+ |
Знак плюс |
– |
Знак минус |
* |
Звездочка |
/ |
Слеш |
( |
Левая скобка |
) |
Правая скобка |
, |
Запятая |
. |
Десятичная точка |
$ |
Денежный знак |
′Апостроф
Символ Название
:Двоеточие
Пробел
!Восклицательный знак
″Кавычки
%Процент
&Амперсанд
;Точка с запятой
<Меньше
>Больше
? Вопросительный знак _ Символ
подчеркивания
Символ «пробел» в табл. 3.1 не обозначен ни каким видимым символом. Его необходимо каким-то образом визуализировать, поскольку в ряде случаев бывает важно показать количество пробелов. Во многих руководствах и учебниках по Фортрану для этого используется символ «^» («крышечка»). Этот символ не входит в алфавит Фортрана, поэтому не вызывает путаницы. Например, можно наглядно показать различие количества пробелов в двух текстах: «HELLO^WORLD» и «HELLO^^WORLD».
122
3.1.2. Форматы записи программы
Способ записи программ на Фортране изначально был ориентирован на ввод данных с перфокарт (рис. 3.1), содержащих в каждой строке 80 позиций для перфорирования. При этом 72 позиции использовалось собственно для записи программы и комментариев, а позиции с 73 по 80 как служебные, например для управления обработкой перфокарт.
Рис. 3.1. Перфокарта с разметкой колонок для Фортрана
Формат записи текстов программ на Фортране сохранился и при переходе на текстовые и графические терминалы (пример 3.1). Современные терминалы и текстовые редакторы продолжают поддерживать текстовый режим отображения 80-ти символьных строк, обеспечивая программно-аппаратную совместимость вычислительной техники различных стандартов.
Пример 3.1. Простейшая программа в фиксированном формате
^^^^^^program HELLO
^^^^^^print*, "Hello, World"
^^^^^^end
Запись программ в виде строк ограниченной длины связана именно с режимами отображения символьной информации текстовыми терминалами. Такой подход гарантирует, что программа на Фортране может быть написана с использованием самого прими-
123
тивного текстового редактора или без него – важно лишь наличие двух символов: «конец строки» (или «перевод каретки»), а также «конец файла», которые генерируются клавиатурами любых модификаций. Так, символ «конец строки» генерируется нажатием клавиши ввода, например «Enter». В текстовых редакторах этот символ, как правило, не виден, но его ввод переводит текстовый курсор на следующую строчку. Символ конца файла, как правило, генерируется сочетанием клавиш Ctrl+Z (например, в UNIX).
Формат записи программ, ориентированный на 72-х символьное отображение текста, был единственным вплоть до стандарта Фортран 90 и поэтому не имел никакого названия. В стандарте Фортран 90 и последующих он получил название «фиксированный формат», поскольку появился новый «свободный формат», ориентированный на 132-х символьные текстовые строки (см. пример 3.2), что связано с появлением соответствующих стандартов отображения символьной информации текстовыми терминалами (режим отображения текстовых терминалов «132 символа в строке»).
Пример 3.2. Простейшая программа в свободном формате program HELLO
print*, "Hello, World" end
Фиксированный формат записи программ поддерживается всеми современными компиляторами для обеспечения совместимости со стандартом FORTRAN 77 (Стандарты Fortran 90/95 декларируют FORTRAN 77 как свое неотъемлемое подмножество).
Используемый в данном практикуме компилятор Gfortran по умолчанию обрабатывает исходные файлы, имеющие расширение
.f95, как тексты программ в свободном формате, а файлы с расширением .for как программы в фиксированном формате.
При написании программы в фиксированном формате нужно обращать внимание, каким образом используемый текстовый редактор нумерует символьные позиции строки. Например, редактор mcedit (утилита файлового менеджера UNIX MidNight Cjmmander)
нумерует символьные позиции строки начиная с нуля, вследствие чего шестая символьная позиция строки (по нумерации редактора) на самом деле оказывается седьмой.
124
3.1.3. Фиксированный формат
Фиксированный формат записи программы на Фортране определяется следующими правилами.
1. Каждая строка программы рассматривается как последовательность символьных позиций с 1-й по 72-ю. Символы после 72 позиции строки имеют служебные функции по отношению к операционной системе и не обрабатываются компилятором. При этом операторы программы записываются в позициях с 7-й по 72-ю (пример 3.3) по одному оператору в строке.
Пример 3.3. Нумерация текстовых полей в фиксированном формате
1^^^^^7^^^^^^^^^^^^^^НУМЕРАЦИЯ ПОЗИЦИЙ СТРОКИ^^72^^^^^^^^^^^^^^^80
^^^^^^PROGRAM HELLO
^^^^^^PRINT*, ′HELLO, WORLD′
^^^^^^END
Для новичков важно отметить, что фраза ′HELLO, WORLD′ заключена в одиночные апострофы. На стандартной клавиатуре одиночный апостроф расположен на одной клавише с кавычками (на стандартной русифицированной клавиатуре там же обычно находится буква «Э»). Не стоит искать одиночный апостроф на одной клавише с «волной» (символ «~») и буквой «Ё» в левом верхнем углу клавиатуры.
2. Пробелы не значимы, за исключением работы с текстовыми данными (например, текст “HELLO^WORLD” – пример 3.4).
Пример 3.4. Запись программы без пробелов
1^^^^^7^^^^^^^^^^^^^^НУМЕРАЦИЯ ПОЗИЦИЙ СТРОКИ^^72^^^^^^^^^^^^^^^80
^^^^^^PROGRAMHELLO
^^^^^^PRINT*,′HELLO,^WORLD′
^^^^^^END
Пробелы служат только для улучшения читаемости текста человеком и полностью игнорируются при компиляции про-
граммы. С точки зрения логики компилятора Фортрана программы нижеследующих примеров (пример 3.5, 3.6) полностью эквива-
125