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

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

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

Метакоманда

Инструкции

Значение

 

КОМПИЛЯТОРУ

по умолчанию

$D066

Для операторов DO

Не установлена

 

используется семантика

 

 

языка ФОРТРАН66.

 

$ELSE

Маркировка начала бло­

Нет

 

ка условной

 

 

компиляции, который

 

 

компилируется, если

 

 

логическое условие в со­

 

 

ответствующей метако­

 

 

манде $IF имеет

 

 

значение FALSE.

 

$ELSE1F

Маркировка начала ново­

Нет

<expr>

го блока условной

 

 

компиляции, который

 

 

компилируется если ус­

 

 

ловие в соответствующей

 

 

метакоманде $IF имеет

 

 

значение FALSE, а

 

 

<ехрг> есть TRUE.

 

$END1F

Прерывание блоков ус­

Нет

 

ловной компиляции $IF,

 

 

$IF...$ELSE или

 

 

$IF...$ELSEIF.

 

$FLOATCALLS Генерирует обращения к $NOFLOATCALLS подпрограммам из

библиотеки эмулятора. Метакоманда $NOFLOATCALLS ука­ зывает компилятору /ia генерацию встроенных команд прерывания.

$FREEFORM Использование для

$NOFREEFORM

исходного кода свободно­

 

го формата. В случае

 

метакоманды

 

$NOFREEFORM исполь­

 

зуется фиксированный

 

формат.

 

Метакоманда

Инструкции

Значение

j

 

КОМПИЛЯТОРУ

по умолчанию

!

$IF <expr>

Маркировка начала бло­

Нет

 

 

ка условной

 

 

 

компиляции. Операторы

 

 

 

компилируются, если

 

 

 

условное выражение

 

 

 

возвращает значение

 

 

 

TRUE.

 

 

$INCLUDE:

Указывает компилятору

Нет

|

’<filc>’

на включение в данной

 

 

 

точке исходной програм­

 

 

 

мы предложений из

 

 

 

файла с указанным

 

 

 

именем.

 

 

$LARGE

Указывает компилятору

действие метако-

j

|:<name>

имена массивов,,которые манды распростра- j

|,,<name>]]...

будут расположены вне

няется на все

|

 

области DGROUP. Мета­

массивы.

 

 

команда $NOTLARGE от

 

 

 

меняет выше описанное

 

 

 

действие для массивов с

 

 

 

указанными именами.

 

 

 

Если имя <name>

 

 

 

отсутствует

 

 

$LINESIZE:n

Указывает компилятору

$L1NESIZE:80

 

 

на размер строки, выда­

 

 

 

ваемой в файл с распе­

 

 

 

чаткой исходного текста

 

 

 

(минимальный размер 40

 

 

 

позиций; максимальный

 

 

 

размер 132 позиции).

 

 

$L1ST

Указывает компилятору

$L1ST

 

 

на вывод информации в

 

 

файл листинга с распе­ чаткой исходного текста. Метакоманда $NOLIST прекращает вывод информации в файл листинга.

Метакоманда

г

Инструкции

Значение

 

КОМПИЛЯТОРУ

по умолчанию

$LOOPOPT

Выполняется операция

$ШОРОРТ

 

оптимизации циклов в

 

 

текущем программном

 

 

 

коде. Метакоманда

 

 

$NOLOOPOPT запреща­

 

 

ет оптимизацию циклов.

 

' $MESSAGE:

Компилятор пересылает

Нет

J <string>

строку символов, задан­

 

 

ную в кавычках, на стан­

 

 

 

дартное устройство

 

 

 

вывода.

 

$PACK:n

 

Устанавливает число

2 или 4.

 

 

байтов для упаковки.

 

 

 

Переменная п должна

 

 

 

иметь значения 1

 

$PAGE

 

Указывает на новую

Нет

 

 

страницу в листинге

 

 

 

исходного текста.

 

$PAGESIZE:n Указывает на количество

$PAGES1ZE:63

 

 

строк в странице

 

 

листинга исходного тек­

 

 

ста (минимальное число

 

 

 

строк 15).

 

$STORAGE:n

Указывает компилятору,

$STORAGE:4

 

что все переменные типа

 

 

LOGICAL или INTEGER

 

должны занимать п байт памяти, (п имеет зна­ чение 2 или 4). Метако­ манда не влияет на распределение памяти для тех пременных, кото­ рые объявлены с явным

указанием их длины.

'

Метакоманда

Инструкции

Значение

 

 

КОМПИЛЯТОРУ

по умолчанию

 

$STR1CT

Делает недоступными не­

$NOSTRICT

 

 

которые особенности

 

 

 

языка, не включенные в

 

 

 

стандартное подмножест­

 

 

 

во полного языка ФОРТ-

 

 

 

РАН77.

 

 

$SUBT1TLE:

Устанавливает подзаго­

$SUBT1TLE:"C

 

<subtitle>

ловок (subtitle) для каж­

 

 

 

дой последующей

 

 

 

страницы распечатки.

 

 

$TITLE:<title> Устанавливает заголовок

$TITLE:"C

I

 

(title) для каждой после­

 

 

 

дующей страницы

 

 

 

распечатки.

 

 

$TRUNCATE

Усекает имена перемен­

$NOTRUNCATE 1

 

ных до шести символов.

 

 

Метакоманда $NOTRUNCATE отменя­ ет действие, выполняе­ мое по команде

$TRUNCATE.

.

ОГЛАВЛЕНИЕ

 

ПРЕДИСЛОВИЕ

3

ВВЕДЕНИЕ

5

Глава 1. ДАННЫЕ

6

Имена

6

Типы данных .

6

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

7

Си-строки

8

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

10

Записи

10

Новые возможности'работы с массивами.

12

Атрибуты .........................

14

АтрибутALLOCATABLE

14

Атрибут ALIAS

15

Атрибуте . . . .

15

Атрибут EXTERN

16

Атрибут FAR .

16

Атрибут HUGE

17

Атрибут LOADDS

17

Атрибут N EAR .

17

Атрибут PASCAL . .

18

Атрибут REFERENCE

18

Атрибут VALUE .

18

Атрибут VARYING

19

Преобразование типов арифметических операндов

19

Символьные выражения

20

Глава 2. СТРУКТУРА ПРОГРАММЫ

22

Строки .

22

Комментарии

22

Начальные строки .

22

Строки продолжения

23

Метакоманды

23

Отладочные строки

23

Представление исходного кода в "свободном формате" 23

Последовательность операторов и метакоманд

24

Параметры

24

Программные модули

27

Глава 3. СИСТЕМА ВВОДА/ВЫВОДА

28

Общие сведения о системе ввода/вывода

28

Операторы ввода/вывода . . . .

28

Имена файлов (параметр FILE=)

28

Устройства (параметр UNIT=)

30

Метод доступа к файлу (параметр ACCESS=)

31

Последовательный метод доступа

 

 

31

Метод прямого доступа

 

 

 

32

Размер буфера ввода/вывода

 

 

32

(параметр BLOCKSIZE=) . . .

 

 

Список дескрипторов преобразования

 

 

33

Управление ошибками и концом файла

..

33

(параметры IOSTAT=, ERR=, ENL)=)

 

Спецификатор формата (параметр FMT=)

34

Метка оператора FORMAT

 

 

34

Имя целочисленной переменной

 

 

35

Символьные выражения

 

 

 

35

Символьная переменная

 

 

 

35

Звездочка (*)

 

 

 

36

Имя символьного или несимвольного

 

 

массива

 

 

 

36

Элемент символьного массива

 

 

36

Спецификатор списка именования

 

 

36

(параметр NML=)

 

 

 

Структура файла (параметр FORM=)

 

 

37

Список ввода/вывода

. . .

 

 

37

Совместное использование файлов

 

 

38

(параметры MODE=,SHARE=)

 

 

Номер записи (параметр RЕС=)

 

 

38

Выбор типов файлов

 

 

 

39

Позиционирование файла

 

 

 

41

Внутренние файлы

 

 

 

41

Управление кареткой

 

 

 

42

Форматированный ввод/вывод

.

.

43

Неповторяющиеся дескрипторы преобразования

43

Преобразование апострофа

 

 

43

Дескрипторы преобразования: Tab,

 

 

 

Tab Left, Tab Right ( T, TL, TR )

 

 

43

Дескрипторы преобразования SP, SS, S

 

(управление выводом .знака)

 

 

45

Обратный слэш (\)

 

 

 

45

Прерывание процедуры управления форматом (:) 45

Преобразование коэффициента

 

 

масштабирования (Р)

.

46

Дескрипторы преобразования BN,BZ

 

(управление вводом пробелов)

 

46

Повторяющиеся дескрипторы преобразования

47

Дескриптор преобразования Z

 

 

(преобразование шестнадцатеричных данных)

47

Дескриптор преобразования А

 

 

 

(преобразование символьных данных)

 

48

Взаимодействие спецификации формата

 

49

и списка ввода/вывода

 

 

Ввод/вывод, управляемый списком

 

 

49

Ввод, управляемый списком

 

 

50

Вывод, управляемый списком

 

 

51

Ввод/вывод, управляемый именованным списком

52

Глава 4. ОПЕРАТОРЫ

 

 

54

Операторы начала программного модуля.

 

54

Объявление головной программы.

 

 

54

Оператор PROGRAM .

 

 

Заголовок подпрограммы.

 

 

55

Оператор SUBROUTINE . . . .

 

 

Заголовок подпрограммы-функции. .

 

55

Блок данных. Оператор BLOCK DATА

 

56

Описание связей с другими модулями.

 

 

56

Оператор INTERFACE ТО

 

 

Операторы описания

 

 

57

Описание массивов. Оператор DIMENSION.

 

57

Операторы описания типа: INTEGER, REAL.

58

COMPLEX, DOUBLE PRECISION, LOGICAL

Комплексные переменные двойной точности.

58

Операторы DOUBLE COMPLEX, COMPLEX*16

Описание символьных переменных.

 

 

59

Оператор CHARACTER.

.

. . .

Составные переменные

60

Описание типов, определяемых пользователем.

 

Оператор STRUCTURE

 

 

60

Описание переменных типа произвольных

 

 

записей. Оператор R ECORD.

 

 

61

Управление размещением в памяти. . .

 

62

Задание последовательного размещения

 

 

переменных. Оператор MAP...END МАР.

 

62

Отображение нескольких переменных в одной

 

области памяти. Оператор UNION..END UNION

63

Изменение правил умолчания. Оператор IMPLICIT

63

Передача имени встроенной функции в качестве

64

параметра. Оператор INTRINSIC.

 

 

Описание именованных констант.

 

 

65

Оператор PARAMETER.

 

 

Описание автоматических переменных.

 

65

Оператор AUTOMATIC.............

 

 

Описание сохраняемых переменных.

 

 

67

Оператор SAVE.

 

 

Вставка содержимого заданного файла.

 

 

67

Оператор INCLUDE.

 

 

Глава 6. ГРАФИЧЕСКОЕ ПРОГРАММИРОВАНИЕ

108

Библиотека графических функций . . .

108

Подключение графичекои библиотеки .

111

Установка режима и среды изображения

111

Установка палитры ....................

113

Установка графических координат

113

Установка атрибутов ф и г у р ..............

115

Формирование графического изображения

116

Отображение символов шрифтов

117

Отображение текста

117

Передача образов

119

Изображение графических элементов

119

Работа с графическими режимами

120

Проверка текущего видеорежима

121

Установка видео-режима

121

Разработка графических программ

122

Установка видео-режима

123

Рисование линий н:* экране

124

Рисование синусоиды

126

Добавление образа

126

Выход из графического режима работы

127

Использование ц в ета ..........................

128

Цветные графические режимы CGA

128

Смешение цветов

129

Цветные графические режимы EGA

131

Цветные графические режимы VGA

132

Пример программы цветной графики

133

Использование цветного текста

134

Координатные системы . .

134

Физические координаты

135

Координаты ’'порта просмотра”

136

"Оконные координаты"

136

Использование шрифтов

137

Допустимые шрифты

137

Использование шрифтов . .

138

Выбор (регистрация) шрифта . . . .

139

Установка шрифта и отображение текста . . . .

139

Программа отображения текста с использованием

141

шрифтов

Глава 7. ГРАФИЧЕСКИЕ ФУНКЦИИ

143

Рисование эллиптических дуг. ARC,ARC__W

143

Очистка экрана. CLEARSCREEN.............................

143

Включение/выключение курсора. DISPLAYCURSOR

144

Рисование эллипса. ELLIPSE, ELLIPSE_W

144

Закрашивание замкнутой области. FLOODFILL FLOODFILL_W

Получение номера активной страницы.

145

GETACTIVEPAGE

....................................

Получение индекса цвета фона. GETBKCOLOR

146

Получение индекса текущего цвета. GETCOLOR

146

Получение текущей позиции вывода.

 

GETCURRENTPOSITION,

147

GETCURRENTPQSITION_W

Получение текущей маски заполнения.

147

GETFILLMASK

....................................

Получение информации о шрифте. GETFONTINFO

148

Получение ширины заданного текста.

148

GETGTEXTEXTENT .................................

Чтение области экрана в буфер. GETIMAGE,

148

GETIMAGE_W

...........................

Получение маски линии. GETLINESTYLE

149

Преобразование координат текущей точки.

149

GETPHYSCOORD

 

Получение значения заданной точки.

150

GETPIXEL GETPIXEL_W

 

Получение индекса текущего цвета текста.

150

GETTEXTCOLOR

 

Получение атрибута текстового курсора.

150

GETT EXTCURSOR

 

Получение текущей позиции вывода текста.

151

GETTEXTPOSITION

 

Получение конфигурации графической среды.

151

GETVIDEOCONFIG

 

Преобразование текущих координат.

152

GETVIEWCOORD GETVIEWCOORD_W

Получение номера видимой страницы.

152

GETVISUALPAGE

 

Преобразование координат текущей точки.

152

GETWINDOWCOORD

 

Вычисление размера области экрана.

153

Ш AGESIZE IMAGESIZE_W . .

Рисование линии. LINETO, LINETO_W

153

Изменение текущей позиции.

154

MOVETO, MOVETO_W

 

Вывод текста с использованием шрифта.

154

OUTGTEXT

. . .

Вывод текста на экран. OUTTEXT

154

Рисование сектора эллипса. PIE PIE_W

155

Вывод области памяти на экран.

 

PUTIMAGE , PUTIMAGE_W