ОПИСАНИЕ ЯЗЫКА ПРОГРАММИРОВАНИЯ ФОРТРАН 90

М.Меткалф, Дж. Рид
Перевод с английского П.А. Горбунова Москва «Мир» 1995.

ОГЛАВЛЕНИЕ

Предисловие переводчика 5 Предисловие к русскому изданию 7 Предисловие 8 1. Фортран вчера, сегодня и завтра 11 1.1. История Фортрана 11 1.2. Новый стандарт 14 1.3. Стандартизация 15 1.4. Эволюция языка 18 1.5. Соответствие стандарту 19 2. Элементы языка 22 2.1. Введение 22 2.2. Набор символов Фортрана * 22 2.3. Лексемы 23 2.4. Формат программного текста 24 2.5. Понятие типа 26 2.6. Буквальные константы встроенного типа 27 2.6.1. Буквальные константы целого типа 27 2.6.2. Буквальные константы вещественного типа 29 2.6.3. Буквальные константы комплексного типа 30 2.6.4. Буквальные константы текстового типа 31 2.6.5. Буквальные константы логического типа 33 2.7. Имена 34 2.8. Скалярные переменные встроенного типа 34 2.9. Производные типы данных 35 2.10. Массивы встроенного типа 37 2.11. Текстовые подстроки 39 2.12. Объекты и подобъекты 41 2.13. Ссылки 41 2.14. Обзор 43 Упражнения 43 3. Выражения и операторы присваивания 46 З.1. Введение 46 3.2. Скалярные числовые выражения , 47 3.3. Определенные и неопределенные переменные 49 3.4. Скалярное числовое присваивание 50 3.5. Скалярные операции отношения 51 3.6. Скалярные логические выражения и присваивания 52 3.7. Скалярные текстовые выражения и присваивания 53 3.8. Конструкторы структур и задаваемые скалярные операции 54 3.9. Задаваемые скалярные присваивания ' 57 3.10. Выражения с массивами 58 3.11. Присваивание массивов 60 3.12. Ссылки в выражениях и присваиваниях 61 3.13. Обзор 62 Упражнения 63 4. Операторы управления 65 4.1. Введение 65 4.2. Оператор GO ТО 65 4.3. Оператор и конструкция IF 66 4.3.1. Оператор IF 66 4.3.2. Конструкция IF 67 4.4. Конструкция CASE 69 4.5. Конструкция DO 71 4.6. Обзор 75 Упражнения 77 5. Программные компоненты и процедуры 78 5.1. Введение 78 5.2. Главная программа 79 5.3. Оператор STOP 80 5.4. Внешние субпрограммы 81 5.5. Модули 82 5.6. Внутренние субпрограммы 84 5.7. Параметры процедур 84 5.7.1. Параметры-ссылки 86 5.7.2. Ограничения на фактические параметры 86 5.7.3. Параметры с атрибутом TARGET 87 5.8. Оператор RETURN 87 5.9. Вид связи параметра 88 5.10. Функции 89 5.10.1. Запрещенные побочные эффекты 90 5.11. Явные и неявные интерфейсы 91 5.12. Процедуры как параметры 93 5.13. Ключевые и необязательные параметры , 94 5.14. Область видимости меток 96 5.15. Область видимости имен 96 5.16. Рекурсивные процедуры 99 5.17. Предложение RESULT 100 5.18. Перегрузка и родовые интерфейсы 101 5.19. Подразумеваемая длина текстового параметра 103 5.20. Операторы SUBROUTINE и FUNCTION 104 5.21. Порядок операторов 104 5.22. Обзор 105 Упражнения 106 6. Массивы 108 6.1. Введение 108 6.2. Массивы нулевой длины 108 6.3. Массивы с подразумеваемой формой 109 6.4. Автоматические объекты 110 6.5. Элементные операции и присваивания 110 6.6. Массивоподобные функции 112 6.7. Динамическая память 112 6.7.1. Выделяемые массивы 112 6.7.2. Оператор ALLOCATE 114 6.7.3. Оператор DEALLOCATE 115 6.7.4. Оператор NULLIFY 116 6.8. Оператор и конструкция WHERE 116 6.9. Элементы массивов 118 6.10. Подобъекты массивов 119 6.11. Массивы ссылок 122 6.12. Ссылки как псевдонимы 123 6.13. Конструкторы массивов 123 6.14. Массивы-маски 125 6.15. Обзор 125 Упражнения 125 7. Операторы описания 127 7.1. Введение 127 7.2. Неявное определение типа 127 7.3. Одновременное описание объектов разных форм 130 7.4. Именованные константы и константные выражения 131 7.5. Исходные значения переменных 134 7.6. Атрибуты PUBLIC и PRIVATE 137 7.7. Операторы POINTER, TARGET и ALLOCATABLE 138 7.8. Операторы INTENT и OPTIONAL 138 7.9. Атрибут SAVE 139 7.10. Оператор USE 140 7.11. Определения производных типов 143 7.12. Оператор описания типа 145 7.13. Задание типа и параметров типа 146 7.14. Описательные выражения 147 7.15. Оператор NAMELIST 148 7.16. Обзор 149 Упражнения 150 8. Встроенные процедуры 152 8.1. Введение 152 8.1.1. Обращения с ключевыми параметрами , 152 8.1.2. Виды встроенных процедур 153 8.1.3. Оператор INTRINSIC 153 8.2. Справочные функции для любых типов - 154 8.3. Числовые элементные функции 154 8.3.1. Элементные функции, которые могут преобразовывать тип 155 8.3.2. Элементные функции, не преобразующие тип 156 8.4. Математические элементные функции 157 8.5. Текстовые и логические элементные функции 158 8.5.1. Преобразования текст-цифра 158 8.5.2. Функции лексического сравнения 159 8.5.3. Элементные функции для обработки строк 159 8.5.4. Преобразования логического типа 160 8.6. Неэлементные функции для обработки строк 160 8.6.1. Справочная функция для строк 160 8.6.2. Преобразующие функции для строк 161 8.7. Числовые справочные и преобразующие функции 161 8.7.1. Модели для данных целого и вещественного типов 161 8.7.2. Числовые справочные функции 162 8.7.3. Элементные функции для действий над вещественными числами 163 8.7.4. Преобразующие функции для эначений параметра разновидности 164 8.8. Процедуры для работы с битами 165 8.8.1. Справочная функция 165 8.8.2. Элементные функции 165 8.8.3 Элементная подпрограмма 167 8.9. Функция переноса 167 8.10. Функции для умножения векторов и матриц 168 8.11. Преобразующие функции для редукции массивов 168 8.11.1. Случай одного параметра 168 8.11.2. Необязательный аргумент DIM 169 8.11.3. Необязательный аргумент MASK 169 8.12. Справочные функции для массивов 170 8.12.1. Состояние выделенности массива 170 8.12.2. Границы, форма и размер массива 170 8.13. Функции для создания массивов и операций над ними 171 8.13.1. Элементная функция слияния 171 8.13.2. Упаковка и распаковка массивов 171 8.13.3. Переформирование массива 172 8.13.4 Преобразующая функция для репродуцирования 173 8.13.5. Функции сдвига массива 173 8.13.6. Транспонирование матрицы 174 8.14. Преобразующие функции для поиска в массиве 174 8.15. Встроенные неэлементные подпрограммы 174 8.15.1. Часы реального времени 175 8.15.2. Случайные числа 176 8.16. Обзор 176 Упражнения 177 9. Передача данных 178 9.1. Введение 178 9.2. Конверсия чисел 179 9.3. Списки ввода-вывода 180 9.4. Задание формата 182 9.5. Номер устройства 184 9.6. Внутренние файлы 185 9.7. Форматный ввод 186 9.8. Форматный вывод 188 9.9. Ввод под управлением списка 189 9.10. NAMELIST 191 9.11. Управление кареткой 193 9.12. Непродвигающий ввод-вывод 194 9.13. Дескрипторы формата 195 9.13.1. Коэффициент повторения 196 9.13.2. Дескрипторы формата данных 197 9.13.3. Дескрипторы текстовых строк 201 9.13.4. Управляющие дескрипторы 201 9.14. Бесформатный ввод-вывод 205 9.15. Файлы прямого доступа 206 9.16. Выполнение оператора передачи данных 207 9.17. Обзор 208 Упражнения 209 10. Операции над внешними файлами 211 10.1. Введение 211 10.2. Операторы позиционирования файлов 212 10.2.1. Оператор BACKSPACE 212 10.2.2, Оператор REWIND 213 10.2.3, Оператор ENDFILE 213 10.2.4. Операторы передачи данных 214 10.3. Оператор OPEN 214 10.4. Оператор CLOSE 219 10.5. Оператор INQUIRE 219 10.6. Обзор 224 Упражнения 224 11. Нерекомендуемые свойства Фортрана 225 11.1. Введение 225 11.2. Ассоциирование памяти , 225 11.2.1. Оператор EQUIVALENCE 227 11.2.2. Общие блоки 228 11.2.3. BLOCK DATA 231 11.2.4. Несоответствие формы и текстовой длины 232 11.2.5. Оператор ENTRY 234 11.3. Новые избыточные свойства 236 11.3.1. Строка INCLUDE 236 11.3.2. Управление циклом при помощи DO WHILE 237 11.4. Старые избыточные свойства 237 11.4.1. Фиксированный формат текста 237 11.4.2. Вещественная двойная точность 238 11.4.3. Вычисляемый GO ТО 239 11.4.4. Описание текстовой длины в виде *1еп 240 11.4.5. Положение оператора DATA 240 11.4.6. Оператор-функция 240 11.4.7. Специфические имена встроенных функций 241 11.4.8. Подразумеваемая текстовая длина 242 A Приложение А. Встроенные процедуры 245 B Приложение В. Операторы Фортрана 90 250 C Приложение С. Устаревшие свойства Фортрана 254 С.1. Арифметический IF Г 254 С.2. Варианты конструкции DO 254 С.З. Назначаемый GO TO и назначаемый формат 255 С.4. Переход на оператор END IF 257 С.5. Альтернативный возврат 257 С.6. Оператор PAUSE ' 258 С.7. Дескриптор формата Н 259 D Приложение D. Термины Фортрана 90 260 E Приложение Е. Ответы к упражнениям 272 F Приложение F. Пример со ссылками и рекурсией 283 // @ Предметный указатель 290