Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

1227

.pdf
Скачиваний:
1
Добавлен:
15.11.2022
Размер:
12.5 Mб
Скачать

Соловьев П.В.

F O R T R A N

для

персонального

компьютера

(Справочное пособие)

M I5T

Москва 1991

^ Б Б К 32.973-01

УДК 681.3.06

Издательство "Арист", Соловьев П.В.,

Fortran для персонального компьютера.

(Справочное пособие)

Корректор М.В. Исаков Редактор П.В. Соловьев Художник К.П. Чугреев

Соловьев П.В.,Fortran для персонального компьютера.

— М.:Арист, 1991 г. — 223с.

Рассматриваются отличия реализации языка Microsoft Fortran 5.0 от стандарта Fortran-66. Приводится подробное описание новых операторов и стандартных функций языка, в том числе графических, с примерами их использования.

Для широкого круга программистов, использующих компьютеры серии IBM/PC.

Издательство "Арист"

8Чугреев К.П. Оформление, эскиз обложки

Поскольку по Фортрану-66 и Фортрану-77 на русском языке существует достаточно обширная литература, и'чтобы не увеличивать объем книги, в настоящем пособии не при­ водится полное описание языка.

Данное пособие рассчитано в первую очередь на пользо­ вателей, достаточно хорошо знакомых с Фортраном и исполь­ зующих в своей работе транслятор фирмы Microsoft версии 5.0. В дальнейшем в книге он будет называться MS Forlran-5.0.

Справочник можно условно разделоить на три части: —первая часть посвящена описанию новых элементов язы­

ка, отличных от Фортрана-66 ( хотя Фортран-77 уже описан достаточно полно, многие программисты до сих пор слабо пред­ ставляют его возможности).

—вторая часть посвящена описанию встроенных функций Фортрана. Особенное внимание при этом уделяется библиоте­ ке графических программ, впервые включенных в число встро­ енных функций Фортрана.

—в третьей части рассматриваются опции транслятора MS- Fortran-5.0, а также опции редактора связей link и программы поддержки библиотек объектных модулей lib.

ВВЕДЕНИЕ

Компилятор языка ФОРТРАН версии 5.0 фирмы Microsoft представляет собой улучшение уже ставшего попу­ лярным языка программирования ФОРТРАН, реализованное путем добавления некоторых новых важных свойств. Насто­ ящий вариант языка полностью совместим с графическими расширениями языка ФОРТРАН (в частности, с Systems Application Architecture - SAA) и практически полностью соот­ ветствует стандарту Fortran-90. Новые директивы компилято­ ра предоставляют возможность реализовать дополнительные свойства, такие как условная компиляция специфических фрагментов программного кода.

Кроме того, в команде FL компиляции и компоновки добавлены новые параметры (опции) и существенно улучше­ ны уже существующие.

Представляемая вашему вниманию новая версия ком­ пилятора языка ФОРТРАН реализует расширенную поддерж­ ку операционной системы OS/2, включая использование ди­ намически компонуемых библиотек и многократное исполнение. Для обеспечения максимальной гибкости, прог­ раммы могут разрабатываться с целью их исполнения в среде операционных систем DOS, OS/2 или в обоих системах.

Дополнительной, неотъемлемой частью любой при­ кладной программы на языке ФОРТРАН является расширен­ ная графическая библиотека, позволяющая использовать раз­ личные графические данные и изображения.

—вещественный (REAL, REAL*4, DOUBLE PRECISION, REAL*8)*

—комплексный (COMPLEX, COMPLEX*8, DOUBLE COMPLEX и COMPLEX*16);

—логический (LOGICAL, LOGICAL*l, LOGICAL*2, LOGICAL*4);

—символьный (CHARACTER [*n ], где 1<= n <= 32.767); —запись (переменные, описываемые типами

STRUCTURE и вводимые оператором описания RECORD ). Первые четыре типа остались такими же, как и в стан­

дарте Фортран-66, символьный тип появился уже в Фортране77. Составные типы, описываемые оператором STRUCTURE являются новыми для Фортрана.

Переменные целого типа могут занимать от 1 до 4 байт в памяти машины ( INTEGER *п, где п - число байт, от­ водимых под данную переменную). При этом переменные ти­ па INTEGER*1 могут иметь значения от -128 до 127, IN TEG ERS от -32768 до 32 767, a INTEGERS - от - 2147483648 до 2147483647. Оператор INTEGER соответствует типу INTEGER*2 или INTEGER*4, в зависимости от зна­ чения метакоманды $STORAGE ( см. Приложение С ).

По умолчанию целые константы интерпретируются как имеющие основание системы счисления, равное 10. Для спецификации константы с основанием, отличным от 10, сле­ дует использовать следующий синтаксис:

[<s ig n > [[b a se j# ][ c o n s ta n t]

где sign - знак числа (плюс или минус; необязателен); base - основание;

constant - константа.

Основание base может быть любым целым числом в ди­ апазоне от 2 до 36. Если поле base опущено, но указан символ #, то целое интерпретируется как имеющее основание 16. Если опущены и поле base и знак #, то целое интерпретируется как имеющее основание 10. В системах счисления с основаниями от 11 до 36 числа с основанием 10, значения которых равны или превышают 10, представляются буквами от А до Z. Для осно­ вания 36, например, буква А представляет 10, В представляет 11, С - 12 и.т.д. до буквы Z, представляющей число 35. Отметим, что регистр букв не является значащим.

1.2.1Символьный тип

Символьные переменные занимают один байт памяти для каждого символа и назначаются последовательности бай­ тов, независимо от границ слов. Однако, когда символьная и несимвольная переменные размещаются в одном общем блоке, компилятор помещает несимвольные переменные, которые следуют за символьными переменными, по границе слова.

Значение длины символьной переменной, элемента символьного массива, структурного элемента, символьной функции или символьной константы с символическим именем должно находиться в диапазоне от 1 до 32767. Длина может быть указана одним из следующих способов:

—как целочисленная константа без знака в диапазоне от 1 до 32767;

—как выражение, заключенное в круглые скобки, вычисляемое со значением целого в диапазоне от 1 до 32767; —как звездочка, заключенная в круглые скобки (*), ука­

зывающая на длину строки.

Звездочка ( (*)), указанная как спецификатор длины, указывает, что значение длины специфицируется в любом месте (программного модуля). Применение спецификатора длины в виде звездочки допустимо в следующих случаях:

—символьные константы, определяемые операторами PARAMETER. Фактическая длина определяется длиной сим­ вольной строки, присвоенной параметру;

—формальные символьные параметры. Фактическая длина определяется длиной фактического параметра;

—символьные функции, на которые есть ссылки в одной функции и которые специфицированы с определенным зна­ чением длины в том же программном модуле.

Символьное значение представляет собой последова­ тельность из одного или более печатаемых символов кода ASCII, заключенных в пару апострофов (’) или кавычки С). Апострофы или кавычки, в которые заключается строка, не сохраняются вместе со строкой. Для представления апострофа внутри строки необходимо указать последовательно два апост­ рофа (они не должны разделяться пробелами).

ПРИМЕЧАНИЕ Символы пробела и табуляции разрешены в символьных

константах и являются значащими. Значащим является также и регистр буквенных символов. Строка может содержать лю­ бые печатные символы из набора кодов ASCII. Для задания непечатаемых символов или для спецификации пустой строки (null-строки) пользователь может использовать Си-строки (см. подраздел 1.2.1.1). Длина символьной константы равна числу символов, заключенных в апострофы или кавычки. Пос­ ледовательная пара апострофов рассматривается как един­ ственный апостроф. Пара кавычек в строке, разделенная сим­ волом кавычки, рассматривается как единственный символ.

1.2.1.1Си-строки

Строковые значения в языке Си завершаются пустыми (фиктивными) символами (CHAR (0)) и могут содержать не­ печатаемые символы (например, символ новой строки или символ возврата). Они могут быть специфицированы при помощи символа обратного слэша, используемого как спец­ символ, за которым следует единственный символ, указыва­ ющий требуемый непечатаемый символ. В языке ФОРТРАН такой тип строки может быть специфицирован при помощи стандартной строковой константы, за которой следует символ С. Затем стандартная строковая константа интерпретируется как константа языка Си. Обратные слэши обрабатываются как спецсимволы; пустые (фиктивные) символы автоматически добавляются в конец строки (даже если строка уже оканчива­

1.2.1.2Символьные подстроки

Подстроки имеют символьный тип и используются для доступа к смежной (непрерывной) части в символьной пере­

менной.

СИНТАКСИС

v a r ia b le ( [ f ir s t ]: [ la s t ])

где variable - есть символьная переменная или элемент в

символьном массиве;

first - арифметическое выражение или целочисленное вы­ ражение, которое определяет первый (самый левый) символ в подстроке. Компилятор ’’округляет" значение first до целого. По умолчанию значение first равно 1, так что если first не специфицировано, то подстрока начинается с первого символа

в строке;

last - арифметическое выражение, которое определяет пос­ ледний (самый правый) символ в подстроке. Компилятор "округляет" значение last до целочисленного значения. По умолчанию значение last равно длине строки, так что если last не специфицировано, подстрока оканчивается последним сим­

волом в строке. Длина подстроки равна last-first* 1.

Следует отметить, что паше (:) эквивалентно паше. Если символьная переменная имеет длину length, то должно выполняться следующее отношение: 1 + last < length

Другими словами,first и last должны быть больше 0; last должно быть больше или равно 0; ни first, ни last не должны быть больше length.

Если действительна метакоманда $DEBUG, то в случае нарушения указанных отношений (т.е. когда они имеют зна­ чение "ложь ) будет генерироваться ошибка. Если метакоман­ да $DEBUG не задана, результат будет неопределен.

Использование нецелочисленного выражения для пара­ метров fist и last приводит к ошибке (это ограничение не при­ менимо к версии языка ФОРТРАН, если, однако, не указана метакоманда $STRICT).

1.3Записи

Запись является "структурной" переменной. Структура есть определяемый пользователем составной тип данных, состоящий из описаний типа переменных и групп отобра­ жений, рассмотренных ниже. Каждый элемент внутри струк­ туры называется "структурным элементом"

ПРИМЕР

Следующий пример есть описание структуры для типа переменной, содержащей данные о кадрах работников:

STRUCTURE /employee data/ CHARACTER*l5 fast name CHARACTER* 15 firsf name CHARACTER*20 street name INTEGER*2 street__number INTEGER*2 apt_number

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]