- •Предисловие
- •1. Элементы языка
- •1.1. Свободная форма записи программы
- •1.2. Консоль-проект
- •1.2.1. Создание проекта в CVF
- •1.2.2. Создание проекта в FPS
- •1.2.3. Операции с проектом
- •1.2.4. Файлы с исходным текстом
- •1.3. Операторы
- •1.4. Объекты данных
- •1.5. Имена
- •1.6. Выражения и операции
- •1.7. Присваивание
- •1.8. Простой ввод/вывод
- •1.8.1. Некоторые правила ввода
- •1.8.2. Ввод из текстового файла
- •1.8.3. Вывод на принтер
- •1.9. Рекомендации по изучению Фортрана
- •1.10. Обработка программы
- •2. Элементы программирования
- •2.1. Алгоритм и программа
- •2.2. Базовые структуры алгоритмов
- •2.2.1. Блок операторов и конструкций
- •2.2.2. Ветвление
- •2.2.3. Цикл
- •2.2.3.1. Цикл "с параметром"
- •2.2.3.2. Циклы "пока" и "до"
- •2.2.4. Прерывание цикла. Объединение условий
- •2.3. Программирование "сверху вниз"
- •2.3.1. Использование функций
- •2.3.2. Использование подпрограмм
- •2.3.3. Использование модулей
- •2.4. Этапы проектирования программ
- •2.5. Правила записи исходного кода
- •3. Организация данных
- •3.1. Типы данных
- •3.2. Операторы объявления типов данных
- •3.2.1. Объявление данных целого типа
- •3.2.2. Объявление данных вещественного типа
- •3.2.3. Объявление данных комплексного типа
- •3.2.4. Объявление данных логического типа
- •3.3. Правила умолчания о типах данных
- •3.4. Изменение правил умолчания
- •3.5. Буквальные константы
- •3.5.1. Целые константы
- •3.5.2. Вещественные константы
- •3.5.3. Комплексные константы
- •3.5.4. Логические константы
- •3.5.5. Символьные константы
- •3.6. Задание именованных констант
- •3.7. Задание начальных значений переменных. Оператор DATA
- •3.8. Символьные данные
- •3.8.1. Объявление символьных данных
- •3.8.2. Применение звездочки для задания длины строки
- •3.8.3. Автоматические строки
- •3.8.4. Выделение подстроки
- •3.8.5. Символьные выражения. Операция конкатенации
- •3.8.6. Присваивание символьных данных
- •3.8.7. Символьные переменные как внутренние файлы
- •3.8.8. Встроенные функции обработки символьных данных
- •3.8.9. Выделение слов из строки текста
- •3.9. Производные типы данных
- •3.9.1. Объявление данных производного типа
- •3.9.2. Инициализация и присваивание записей
- •3.9.2.1. Конструктор производного типа
- •3.9.2.2. Присваивание значений компонентам записи
- •3.9.2.3. Задаваемые присваивания записей
- •3.9.3. Выражения производного типа
- •3.9.4. Запись как параметр процедуры
- •3.9.5. Запись как результат функции
- •3.9.6. Пример работы с данными производного типа
- •3.9.7. Структуры и записи
- •3.9.7.1. Объявление и присваивание значений
- •3.9.7.2. Создание объединений
- •3.9.8. Итоговые замечания
- •3.10. Целочисленные указатели
- •3.11. Ссылки и адресаты
- •3.11.1. Объявление ссылок и адресатов
- •3.11.2. Прикрепление ссылки к адресатам
- •3.11.3. Инициализация ссылки. Функция NULL
- •3.11.4. Явное открепление ссылки от адресата
- •3.11.5. Структуры со ссылками на себя
- •3.11.6. Ссылки как параметры процедур
- •3.11.7. Параметры с атрибутом TARGET
- •3.11.8. Ссылки как результат функции
- •4. Массивы
- •4.1. Объявление массива
- •4.2. Массивы нулевого размера
- •4.3. Одновременное объявление объектов разной формы
- •4.4. Элементы массива
- •4.5. Сечение массива
- •4.6. Присваивание массивов
- •4.7. Маскирование присваивания
- •4.7.1. Оператор и конструкция WHERE
- •4.7.2. Оператор и конструкция FORALL
- •4.8. Динамические массивы
- •4.8.1. Атрибуты POINTER и ALLOCATABLE
- •4.8.2. Операторы ALLOCATE и DEALLOCATE
- •4.8.3. Автоматические массивы
- •4.9. Массивы - формальные параметры процедур
- •4.9.1. Массивы заданной формы
- •4.9.2. Массивы, перенимающие форму
- •4.9.3. Массивы, перенимающие размер
- •4.10. Использование массивов
- •4.11. Массив как результат функции
- •4.12. Встроенные функции для массивов
- •4.12.1. Вычисления в массиве
- •4.12.2. Умножение векторов и матриц
- •4.12.3. Справочные функции для массивов
- •4.12.3.1. Статус размещаемого массива
- •4.12.3.2. Граница, форма и размер массива
- •4.12.4. Функции преобразования массивов
- •4.12.4.1. Элементная функция MERGE слияния массивов
- •4.12.4.2. Упаковка и распаковка массивов
- •4.12.4.3. Переформирование массива
- •4.12.4.4. Построение массива из копий исходного массива
- •4.12.4.5. Функции сдвига массива
- •4.12.4.6. Транспонирование матрицы
- •4.13. Ввод/вывод массива под управлением списка
- •4.13.1. Ввод/вывод одномерного массива
- •4.13.2. Ввод/вывод двумерного массива
- •5. Выражения, операции и присваивание
- •5.1. Арифметические выражения
- •5.1.1. Выполнение арифметических операций
- •5.1.2. Целочисленное деление
- •5.1.3. Ранг и типы арифметических операндов
- •5.1.4. Ошибки округления
- •5.2. Выражения отношения и логические выражения
- •5.3. Задаваемые операции
- •5.4. Приоритет выполнения операций
- •5.5. Константные выражения
- •5.6. Описательные выражения
- •5.7. Присваивание
- •6. Встроенные процедуры
- •6.1. Виды встроенных процедур
- •6.2. Обращение с ключевыми словами
- •6.3. Родовые и специфические имена
- •6.4. Возвращаемое функцией значение
- •6.5. Элементные функции преобразования типов данных
- •6.6. Элементные числовые функции
- •6.7. Вычисление максимума и минимума
- •6.8. Математические элементные функции
- •6.8.1. Экспоненциальная, логарифмическая функции и квадратный корень
- •6.8.2. Тригонометрические функции
- •6.9. Функции для массивов
- •6.10. Справочные функции для любых типов
- •6.11. Числовые справочные и преобразовывающие функции
- •6.11.1. Модели данных целого и вещественного типа
- •6.11.2. Числовые справочные функции
- •6.12. Элементные функции получения данных о компонентах представления вещественных чисел
- •6.13. Преобразования для параметра разновидности
- •6.14. Процедуры для работы с битами
- •6.14.1. Справочная функция BIT_SIZE
- •6.14.2. Элементные функции для работы с битами
- •6.14.3. Элементная подпрограмма MVBITS
- •6.14.4. Пример использования битовых функций
- •6.15. Символьные функции
- •6.16. Процедуры для работы с памятью
- •6.17. Проверка состояния "конец файла"
- •6.18. Неэлементные подпрограммы даты и времени
- •6.19. Случайные числа
- •6.20. Встроенная подпрограмма CPU_TIME
- •7. Управляющие операторы и конструкции
- •7.1. Оператор GOTO безусловного перехода
- •7.2. Оператор и конструкции IF
- •7.2.1. Условный логический оператор IF
- •7.2.2. Конструкция IF THEN END IF
- •7.2.3. Конструкция IF THEN ELSE END IF
- •7.2.4. Конструкция IF THEN ELSE IF
- •7.3. Конструкция SELECT CASE
- •7.4. DO-циклы. Операторы EXIT и CYCLE
- •7.5. Возможные замены циклов
- •7.6. Оператор STOP
- •7.7. Оператор PAUSE
- •8. Программные единицы
- •8.1. Общие понятия
- •8.2. Использование программных единиц в проекте
- •8.3. Работа с проектом в среде DS
- •8.4. Главная программа
- •8.5. Внешние процедуры
- •8.6. Внутренние процедуры
- •8.7. Модули
- •8.8. Оператор USE
- •8.9. Атрибуты PUBLIC и PRIVATE
- •8.10. Операторы заголовка процедур
- •8.10.1. Общие характеристики операторов заголовка процедур
- •8.10.2. Результирующая переменная функции
- •8.11. Параметры процедур
- •8.11.1. Соответствие фактических и формальных параметров
- •8.11.2. Вид связи параметра
- •8.11.3. Явные и неявные интерфейсы
- •8.11.4. Ключевые и необязательные параметры
- •8.11.5. Ограничения на фактические параметры
- •8.11.6. Запрещенные побочные эффекты
- •8.12. Перегрузка и родовые интерфейсы
- •8.12.1. Перегрузка процедур
- •8.12.2. Перегрузка операций и присваивания
- •8.12.3. Общий вид оператора INTERFACE
- •8.13. Ассоциирование имен
- •8.14. Область видимости имен
- •8.15. Область видимости меток
- •8.16. Ассоциирование памяти
- •8.16.1. Типы ассоциируемой памяти
- •8.16.2. Оператор COMMON
- •8.16.3. Программная единица BLOCK DATA
- •8.17. Рекурсивные процедуры
- •8.18. Формальные процедуры
- •8.18.1. Атрибут EXTERNAL
- •8.18.2. Атрибут INTRINSIC
- •8.19. Оператор RETURN выхода из процедуры
- •8.20. Оператор ENTRY дополнительного входа в процедуру
- •8.21. Атрибут AUTOMATIC
- •8.22. Атрибут SAVE
- •8.23. Атрибут STATIC
- •8.24. Атрибут VOLATILE
- •8.25. Чистые процедуры
- •8.26. Элементные процедуры
- •8.27. Операторные функции
- •8.28. Строка INCLUDE
- •8.29. Порядок операторов и директив
- •9. Форматный ввод/вывод
- •9.1. Преобразование данных. Оператор FORMAT
- •9.2. Программирование спецификации формата
- •9.3. Выражения в дескрипторах преобразований
- •9.4. Задание формата в операторах ввода/вывода
- •9.5. Списки ввода/вывода
- •9.5.1. Элементы списков ввода/вывода
- •9.5.2. Циклические списки ввода/вывода
- •9.5.3. Пример организации вывода
- •9.6. Согласование списка ввода/вывода и спецификации формата. Коэффициент повторения. Реверсия формата
- •9.7. Дескрипторы данных
- •9.8. Дескрипторы управления
- •9.9. Управляемый списком ввод/вывод
- •9.9.1. Управляемый именованным списком ввод/вывод
- •9.9.1.1. Объявление именованного списка
- •9.9.1.2. NAMELIST-вывод
- •9.9.1.3. NAMELIST-ввод
- •9.9.2. Управляемый неименованным списком ввод/вывод
- •9.9.2.1. Управляемый неименованным списком ввод
- •9.9.2.2. Управляемый неименованным списком вывод
- •10. Файлы Фортрана
- •10.1. Внешние и внутренние файлы
- •10.2. Позиция файла
- •10.3. Устройство ввода/вывода
- •10.4. Внутренние файлы
- •10.5. Внешние файлы
- •10.6. Записи
- •10.6.1. Типы записей
- •10.6.2. Записи фиксированной длины
- •10.6.3. Записи переменной длины
- •10.6.4. Сегментированные записи
- •10.6.5. Потоки
- •10.6.6. CR-потоки
- •10.6.7. LF-потоки
- •10.7. Передача данных с продвижением и без
- •10.8. Позиция файла перед передачей данных
- •10.9. Позиция файла после передачи данных
- •10.10. Двоичные последовательные файлы
- •10.11. Неформатные последовательные файлы
- •10.12. Текстовые последовательные файлы
- •10.13. Файлы, подсоединенные для прямого доступа
- •10.14. Удаление записей из файла с прямым доступом
- •10.15. Выбор типа файла
- •11. Операции над внешними файлами
- •11.1. Оператор BACKSPACE
- •11.2. Оператор REWIND
- •11.3. Оператор ENDFILE
- •11.4. Оператор OPEN
- •11.5. Оператор CLOSE
- •11.6. Оператор READ
- •11.7. Оператор ACCEPT
- •11.8. Оператор FIND
- •11.9. Оператор DELETE
- •11.10. Оператор UNLOCK
- •11.11. Оператор WRITE
- •11.12. Оператор PRINT
- •11.13. Оператор REWRITE
- •11.14. Оператор INQUIRE
- •11.15. Функция EOF
- •11.16. Организация быстрого ввода/вывода
- •12.1. Некоторые сведения об объектах ActiveX
- •12.2. Для чего нужен конструктор модулей
- •12.3. Интерфейсы процедур управления Автоматизацией
- •12.4. Идентификация объекта
- •12.5. Примеры работы с данными Автоматизации
- •12.5.1. OLE-массивы
- •12.5.2. BSTR-строки
- •12.5.3. Варианты
- •12.6. Другие источники информации
- •12.7. Как воспользоваться объектом ActiveX
- •12.8. Применение конструктора модулей
- •12.9. Пример вызова процедур, сгенерированных конструктором модулей
- •Приложение 1. Вывод русского текста в DOS-окно
- •Приложение 2. Нерекомендуемые, устаревшие и исключенные свойства Фортрана
- •П.-2.1. Нерекомендуемые свойства Фортрана
- •П.-2.1.1. Фиксированная форма записи исходного кода
- •П.-2.1.2. Оператор EQUIVALENCE
- •П.-2.1.3. Оператор ENTRY
- •П.-2.1.4. Вычисляемый GOTO
- •П.-2.1.5. Положение оператора DATA
- •П.-2.2. Устаревшие свойства Фортрана, определенные стандартом 1990 г.
- •П.-2.2.1. Арифметический IF
- •П.-2.2.2. Оператор ASSIGN присваивания меток
- •П.-2.2.3. Назначаемый GOTO
- •П.-2.2.4. Варианты DO-цикла
- •П.-2.2.5. Переход на END IF
- •П.-2.2.6. Альтернативный возврат
- •П.-2.2.7. Дескриптор формата H
- •П.-2.3. Устаревшие свойства Фортрана, определенные стандартом 1995 г.
- •П.-2.4. Исключенные свойства Фортрана
- •Приложение 3. Дополнительные процедуры
- •П.-3.1. Запуск программ
- •П.-3.2. Управление программой
- •П.-3.3. Работа с системой, дисками и директориями
- •П.-3.4. Управление файлами
- •П.-3.5. Генерация случайных чисел
- •П.-3.6. Управление датой и временем
- •П.-3.7. Ввод с клавиатуры и генерация звука
- •П.-3.8. Обработка ошибок
- •П.-3.9. Аргументы в командной строке
- •П.-3.10. Сортировка и поиск в массиве
- •П.-3.11. Управление операциями с плавающей точкой
- •Литература
- •Предметный указатель
- •Оглавление
Оглавление |
|
Предисловие............................................................................................. |
3 |
1. Элементы языка.................................................................................. |
5 |
1.1. Свободная форма записи программы.................................................... |
5 |
1.2. Консоль-проект........................................................................................ |
6 |
1.2.1. Создание проекта в CVF ................................................................ |
6 |
1.2.2. Создание проекта в FPS.................................................................. |
8 |
1.2.3. Операции с проектом...................................................................... |
8 |
1.2.4. Файлы с исходным текстом........................................................... |
9 |
1.3. Операторы................................................................................................ |
9 |
1.4. Объекты данных.................................................................................... |
10 |
1.5. Имена...................................................................................................... |
12 |
1.6. Выражения и операции......................................................................... |
13 |
1.7. Присваивание......................................................................................... |
15 |
1.8. Простой ввод/вывод.............................................................................. |
16 |
1.8.1. Некоторые правила ввода ............................................................ |
18 |
1.8.2. Ввод из текстового файла............................................................. |
19 |
1.8.3. Вывод на принтер ......................................................................... |
20 |
1.9. Рекомендации по изучению Фортрана................................................ |
20 |
1.10. Обработка программы......................................................................... |
23 |
2. Элементы программирования ....................................................... |
26 |
2.1. Алгоритм и программа.......................................................................... |
26 |
2.2. Базовые структуры алгоритмов............................................................ |
29 |
2.2.1. Блок операторов и конструкций.................................................. |
30 |
2.2.2. Ветвление....................................................................................... |
30 |
2.2.3. Цикл ............................................................................................... |
32 |
2.2.3.1. Цикл "с параметром" ....................................................................... |
33 |
2.2.3.2. Циклы "пока" и "до".......................................................................... |
35 |
2.2.4. Прерывание цикла. Объединение условий................................. |
36 |
2.3. Программирование "сверху вниз"........................................................ |
37 |
2.3.1. Использование функций............................................................... |
38 |
2.3.2. Использование подпрограмм....................................................... |
40 |
2.3.3. Использование модулей............................................................... |
41 |
2.4. Этапы проектирования программ........................................................ |
42 |
2.5. Правила записи исходного кода........................................................... |
44 |
442
|
Оглавление |
3. Организация данных........................................................................ |
47 |
3.1. Типы данных.......................................................................................... |
47 |
3.2. Операторы объявления типов данных................................................. |
50 |
3.2.1. Объявление данных целого типа................................................. |
50 |
3.2.2. Объявление данных вещественного типа................................... |
52 |
3.2.3. Объявление данных комплексного типа..................................... |
53 |
3.2.4. Объявление данных логического типа........................................ |
53 |
3.3. Правила умолчания о типах данных.................................................... |
54 |
3.4. Изменение правил умолчания.............................................................. |
55 |
3.5. Буквальные константы.......................................................................... |
56 |
3.5.1. Целые константы .......................................................................... |
56 |
3.5.2. Вещественные константы ............................................................ |
57 |
3.5.3. Комплексные константы.............................................................. |
58 |
3.5.4. Логические константы.................................................................. |
59 |
3.5.5. Символьные константы................................................................ |
59 |
3.6. Задание именованных констант........................................................... |
61 |
3.7. Задание начальных значений переменных. Оператор DATA ........... |
63 |
3.8. Символьные данные.............................................................................. |
65 |
3.8.1. Объявление символьных данных ................................................ |
65 |
3.8.2. Применение звездочки для задания длины строки.................... |
67 |
3.8.3. Автоматические строки................................................................ |
69 |
3.8.4. Выделение подстроки................................................................... |
69 |
3.8.5. Символьные выражения. Операция конкатенации.................... |
70 |
3.8.6. Присваивание символьных данных............................................. |
71 |
3.8.7. Символьные переменные как внутренние файлы...................... |
71 |
3.8.8. Встроенные функции обработки символьных данных.............. |
72 |
3.8.9. Выделение слов из строки текста................................................ |
78 |
3.9. Производные типы данных................................................................... |
79 |
3.9.1. Объявление данных производного типа..................................... |
79 |
3.9.2. Инициализация и присваивание записей.................................... |
82 |
3.9.2.1. Конструктор производного типа................................................... |
82 |
3.9.2.2. Присваивание значений компонентам записи................................ |
84 |
3.9.2.3. Задаваемые присваивания записей.................................................. |
84 |
3.9.3. Выражения производного типа.................................................... |
84 |
3.9.4. Запись как параметр процедуры.................................................. |
85 |
3.9.5. Запись как результат функции..................................................... |
86 |
3.9.6. Пример работы с данными производного типа.......................... |
87 |
3.9.7. Структуры и записи...................................................................... |
89 |
3.9.7.1. Объявление и присваивание значений.............................................. |
89 |
3.9.7.2. Создание объединений...................................................................... |
91 |
3.9.8. Итоговые замечания ..................................................................... |
92 |
443
О. В. Бартеньев. Современный ФОРТРАН
3.10. Целочисленные указатели .................................................................. |
93 |
3.11. Ссылки и адресаты.............................................................................. |
95 |
3.11.1. Объявление ссылок и адресатов................................................ |
96 |
3.11.2. Прикрепление ссылки к адресатам............................................ |
96 |
3.11.3. Инициализация ссылки. Функция NULL.................................. |
99 |
3.11.4. Явное открепление ссылки от адресата.................................... |
99 |
3.11.5. Структуры со ссылками на себя.............................................. |
100 |
3.11.6. Ссылки как параметры процедур............................................ |
104 |
3.11.7. Параметры с атрибутом TARGET........................................... |
105 |
3.11.8. Ссылки как результат функции ............................................... |
106 |
4. Массивы ........................................................................................... |
108 |
4.1. Объявление массива............................................................................ |
108 |
4.2. Массивы нулевого размера................................................................. |
113 |
4.3. Одновременное объявление объектов разной формы...................... |
113 |
4.4. Элементы массива............................................................................... |
113 |
4.5. Сечение массива.................................................................................. |
114 |
4.6. Присваивание массивов...................................................................... |
119 |
4.7. Маскирование присваивания.............................................................. |
121 |
4.7.1. Оператор и конструкция WHERE ............................................. |
121 |
4.7.2. Оператор и конструкция FORALL ............................................ |
123 |
4.8. Динамические массивы....................................................................... |
126 |
4.8.1. Атрибуты POINTER и ALLOCATABLE .................................. |
126 |
4.8.2. Операторы ALLOCATE и DEALLOCATE ............................... |
127 |
4.8.3. Автоматические массивы........................................................... |
131 |
4.9. Массивы - формальные параметры процедур................................... |
132 |
4.9.1. Массивы заданной формы.......................................................... |
132 |
4.9.2. Массивы, перенимающие форму............................................... |
134 |
4.9.3. Массивы, перенимающие размер.............................................. |
135 |
4.10. Использование массивов................................................................... |
137 |
4.11. Массив как результат функции........................................................ |
138 |
4.12. Встроенные функции для массивов................................................. |
139 |
4.12.1. Вычисления в массиве.............................................................. |
140 |
4.12.2. Умножение векторов и матриц................................................ |
145 |
4.12.3. Справочные функции для массивов........................................ |
147 |
4.12.3.1. Статус размещаемого массива.................................................. |
147 |
4.12.3.2. Граница, форма и размер массива .............................................. |
147 |
4.12.4. Функции преобразования массивов........................................ |
148 |
4.12.4.1. Элементная функция MERGE слияния массивов....................... |
148 |
4.12.4.2. Упаковка и распаковка массивов................................................. |
149 |
4.12.4.3. Переформирование массива......................................................... |
150 |
4.12.4.4. Построение массива из копий исходного массива..................... |
151 |
444
|
Оглавление |
4.12.4.5. Функции сдвига массива............................................................... |
152 |
4.12.4.6. Транспонирование матрицы........................................................ |
153 |
4.13. Ввод/вывод массива под управлением списка................................ |
153 |
4.13.1. Ввод/вывод одномерного массива........................................... |
154 |
4.13.2. Ввод/вывод двумерного массива............................................. |
156 |
5. Выражения, операции и присваивание...................................... |
158 |
5.1. Арифметические выражения.............................................................. |
158 |
5.1.1. Выполнение арифметических операций................................... |
158 |
5.1.2. Целочисленное деление.............................................................. |
159 |
5.1.3. Ранг и типы арифметических операндов.................................. |
160 |
5.1.4. Ошибки округления.................................................................... |
161 |
5.2. Выражения отношения и логические выражения............................. |
162 |
5.3. Задаваемые операции.......................................................................... |
165 |
5.4. Приоритет выполнения операций...................................................... |
167 |
5.5. Константные выражения..................................................................... |
167 |
5.6. Описательные выражения................................................................... |
168 |
5.7. Присваивание....................................................................................... |
169 |
6. Встроенные процедуры.................................................................. |
172 |
6.1. Виды встроенных процедур ............................................................... |
172 |
6.2. Обращение с ключевыми словами..................................................... |
172 |
6.3. Родовые и специфические имена....................................................... |
173 |
6.4. Возвращаемое функцией значение.................................................... |
174 |
6.5. Элементные функции преобразования типов данных ..................... |
174 |
6.6. Элементные числовые функции......................................................... |
176 |
6.7. Вычисление максимума и минимума ................................................ |
178 |
6.8. Математические элементные функции.............................................. |
179 |
6.8.1. Экспоненциальная, логарифмическая функции |
|
и квадратный корень............................................................................. |
179 |
6.8.2. Тригонометрические функции................................................... |
180 |
6.9. Функции для массивов........................................................................ |
181 |
6.10. Справочные функции для любых типов.......................................... |
184 |
6.11. Числовые справочные и преобразовывающие функции................ |
185 |
6.11.1. Модели данных целого и вещественного типа ...................... |
185 |
6.11.2. Числовые справочные функции............................................... |
187 |
6.12. Элементные функции получения данных о компонентах |
|
представления вещественных чисел......................................................... |
189 |
6.13. Преобразования для параметра разновидности.............................. |
191 |
6.14. Процедуры для работы с битами ..................................................... |
191 |
6.14.1. Справочная функция BIT_SIZE............................................... |
192 |
6.14.2. Элементные функции для работы с битами........................... |
192 |
445
О. В. Бартеньев. Современный ФОРТРАН
6.14.3. Элементная подпрограмма MVBITS....................................... |
194 |
6.14.4. Пример использования битовых функций.............................. |
195 |
6.15. Символьные функции........................................................................ |
198 |
6.16. Процедуры для работы с памятью................................................... |
198 |
6.17. Проверка состояния "конец файла" ................................................. |
199 |
6.18. Неэлементные подпрограммы даты и времени .............................. |
199 |
6.19. Случайные числа............................................................................... |
201 |
6.20. Встроенная подпрограмма CPU_TIME ........................................... |
202 |
7. Управляющие операторы и конструкции ................................. |
203 |
7.1. Оператор GOTO безусловного перехода........................................... |
203 |
7.2. Оператор и конструкции IF ................................................................ |
204 |
7.2.1. Условный логический оператор IF............................................ |
204 |
7.2.2. Конструкция IF THEN END IF .................................................. |
204 |
7.2.3. Конструкция IF THEN ELSE END IF........................................ |
205 |
7.2.4. Конструкция IF THEN ELSE IF................................................. |
205 |
7.3. Конструкция SELECT CASE .............................................................. |
206 |
7.4. DO-циклы. Операторы EXIT и CYCLE............................................. |
208 |
7.5. Возможные замены циклов................................................................. |
212 |
7.6. Оператор STOP .................................................................................... |
214 |
7.7. Оператор PAUSE ................................................................................. |
214 |
8. Программные единицы................................................................. |
216 |
8.1. Общие понятия .................................................................................... |
216 |
8.2. Использование программных единиц в проекте .............................. |
217 |
8.3. Работа с проектом в среде DS ............................................................ |
219 |
8.4. Главная программа.............................................................................. |
221 |
8.5. Внешние процедуры............................................................................ |
222 |
8.6. Внутренние процедуры....................................................................... |
223 |
8.7. Модули ................................................................................................. |
223 |
8.8. Оператор USE ...................................................................................... |
226 |
8.9. Атрибуты PUBLIC и PRIVATE.......................................................... |
230 |
8.10. Операторы заголовка процедур........................................................ |
232 |
8.10.1. Общие характеристики операторов заголовка процедур...... |
232 |
8.10.2. Результирующая переменная функции................................... |
233 |
8.11. Параметры процедур......................................................................... |
236 |
8.11.1. Соответствие фактических и формальных параметров......... |
236 |
8.11.2. Вид связи параметра................................................................. |
238 |
8.11.3. Явные и неявные интерфейсы ................................................. |
240 |
8.11.4. Ключевые и необязательные параметры................................ |
242 |
8.11.5. Ограничения на фактические параметры ............................... |
244 |
446
|
Оглавление |
8.11.6. Запрещенные побочные эффекты............................................ |
245 |
8.12. Перегрузка и родовые интерфейсы.................................................. |
247 |
8.12.1. Перегрузка процедур................................................................ |
247 |
8.12.2. Перегрузка операций и присваивания..................................... |
250 |
8.12.3. Общий вид оператора INTERFACE ........................................ |
252 |
8.13. Ассоциирование имен....................................................................... |
253 |
8.14. Область видимости имен.................................................................. |
255 |
8.15. Область видимости меток................................................................. |
258 |
8.16. Ассоциирование памяти ................................................................... |
258 |
8.16.1. Типы ассоциируемой памяти................................................... |
260 |
8.16.2. Оператор COMMON................................................................. |
261 |
8.16.3. Программная единица BLOCK DATA.................................... |
264 |
8.17. Рекурсивные процедуры................................................................... |
265 |
8.18. Формальные процедуры.................................................................... |
266 |
8.18.1. Атрибут EXTERNAL................................................................ |
267 |
8.18.2. Атрибут INTRINSIC ................................................................. |
269 |
8.19. Оператор RETURN выхода из процедуры...................................... |
274 |
8.20. Оператор ENTRY дополнительного входа в процедуру.............. |
275 |
8.21. Атрибут AUTOMATIC...................................................................... |
278 |
8.22. Атрибут SAVE ................................................................................... |
279 |
8.23. Атрибут STATIC................................................................................ |
280 |
8.24. Атрибут VOLATILE.......................................................................... |
281 |
8.25. Чистые процедуры............................................................................. |
281 |
8.26. Элементные процедуры.................................................................... |
284 |
8.27. Операторные функции...................................................................... |
287 |
8.28. Строка INCLUDE .............................................................................. |
288 |
8.29. Порядок операторов и директив ...................................................... |
288 |
9. Форматный ввод/вывод ................................................................ |
290 |
9.1. Преобразование данных. Оператор FORMAT.................................. |
290 |
9.2. Программирование спецификации формата..................................... |
292 |
9.3. Выражения в дескрипторах преобразований.................................... |
294 |
9.4. Задание формата в операторах ввода/вывода................................... |
295 |
9.5. Списки ввода/вывода .......................................................................... |
296 |
9.5.1. Элементы списков ввода/вывода............................................... |
296 |
9.5.2. Циклические списки ввода/вывода........................................... |
298 |
9.5.3. Пример организации вывода...................................................... |
298 |
9.6. Согласование списка ввода/вывода и спецификации формата. |
|
Коэффициент повторения. Реверсия формата......................................... |
300 |
9.7. Дескрипторы данных .......................................................................... |
302 |
9.8. Дескрипторы управления.................................................................... |
312 |
447
О. В. Бартеньев. Современный ФОРТРАН
9.9. Управляемый списком ввод/вывод.................................................... |
318 |
9.9.1. Управляемый именованным списком ввод/вывод................... |
318 |
9.9.1.1. Объявление именованного списка.................................................. |
319 |
9.9.1.2. NAMELIST-вывод............................................................................ |
319 |
9.9.1.3. NAMELIST-ввод............................................................................... |
321 |
9.9.2. Управляемый неименованным списком ввод/вывод............... |
323 |
9.9.2.1. Управляемый неименованным списком ввод ................................ |
323 |
9.9.2.2. Управляемый неименованным списком вывод.............................. |
325 |
10. Файлы Фортрана.......................................................................... |
327 |
10.1. Внешние и внутренние файлы.......................................................... |
327 |
10.2. Позиция файла................................................................................... |
327 |
10.3. Устройство ввода/вывода................................................................. |
328 |
10.4. Внутренние файлы............................................................................. |
329 |
10.5. Внешние файлы................................................................................. |
330 |
10.6. Записи................................................................................................. |
331 |
10.6.1. Типы записей............................................................................. |
331 |
10.6.2. Записи фиксированной длины................................................. |
332 |
10.6.3. Записи переменной длины....................................................... |
333 |
10.6.4. Сегментированные записи....................................................... |
333 |
10.6.5. Потоки........................................................................................ |
334 |
10.6.6. CR-потоки.................................................................................. |
334 |
10.6.7. LF-потоки .................................................................................. |
335 |
10.7. Передача данных с продвижением и без......................................... |
336 |
10.8. Позиция файла перед передачей данных ........................................ |
336 |
10.9. Позиция файла после передачи данных.......................................... |
337 |
10.10. Двоичные последовательные файлы.............................................. |
337 |
10.11. Неформатные последовательные файлы....................................... |
338 |
10.12. Текстовые последовательные файлы............................................. |
339 |
10.13. Файлы, подсоединенные для прямого доступа............................. |
341 |
10.14. Удаление записей из файла с прямым доступом.......................... |
346 |
10.15. Выбор типа файла............................................................................ |
347 |
11. Операции над внешними файлами........................................... |
349 |
11.1. Оператор BACKSPACE .................................................................... |
350 |
11.2. Оператор REWIND............................................................................ |
351 |
11.3. Оператор ENDFILE ........................................................................... |
352 |
11.4. Оператор OPEN ................................................................................. |
352 |
11.5. Оператор CLOSE ............................................................................... |
361 |
11.6. Оператор READ................................................................................. |
362 |
11.7. Оператор ACCEPT ............................................................................ |
364 |
11.8. Оператор FIND .................................................................................. |
365 |
448
|
Оглавление |
11.9. Оператор DELETE............................................................................. |
365 |
11.10. Оператор UNLOCK ......................................................................... |
365 |
11.11. Оператор WRITE ............................................................................. |
366 |
11.12. Оператор PRINT .............................................................................. |
367 |
11.13. Оператор REWRITE ........................................................................ |
367 |
11.14. Оператор INQUIRE ......................................................................... |
368 |
11.15. Функция EOF ................................................................................... |
373 |
11.16. Организация быстрого ввода/вывода ............................................ |
373 |
12. Конструктор модулей для объектов ActiveX ........................... |
376 |
12.1. Некоторые сведения об объектах ActiveX ...................................... |
376 |
12.2. Для чего нужен конструктор модулей............................................. |
377 |
12.3. Интерфейсы процедур управления Автоматизацией..................... |
378 |
12.4. Идентификация объекта.................................................................... |
379 |
12.5. Примеры работы с данными Автоматизации ................................. |
380 |
12.5.1. OLE-массивы............................................................................. |
380 |
12.5.2. BSTR-строки.............................................................................. |
383 |
12.5.3. Варианты.................................................................................... |
385 |
12.6. Другие источники информации ....................................................... |
388 |
12.7. Как воспользоваться объектом ActiveX .......................................... |
388 |
12.8. Применение конструктора модулей ................................................ |
388 |
12.9. Пример вызова процедур, сгенерированных конструктором |
|
модулей........................................................................................................ |
391 |
Приложение 1. Вывод русского текста в DOS-окно..................... |
412 |
Приложение 2. Нерекомендуемые, устаревшие |
|
и исключенные свойства Фортрана................................................ |
417 |
П.-2.1. Нерекомендуемые свойства Фортрана......................................... |
417 |
П.-2.1.1. Фиксированная форма записи исходного кода................... |
417 |
П.-2.1.2. Оператор EQUIVALENCE.................................................... |
419 |
П.-2.1.3. Оператор ENTRY................................................................... |
421 |
П.-2.1.4. Вычисляемый GOTO ............................................................. |
421 |
П.-2.1.5. Положение оператора DATA................................................ |
422 |
П.-2.2. Устаревшие свойства Фортрана, |
|
определенные стандартом 1990 г.............................................................. |
422 |
П.-2.2.1. Арифметический IF ............................................................... |
422 |
П.-2.2.2. Оператор ASSIGN присваивания меток.............................. |
423 |
П.-2.2.3. Назначаемый GOTO .............................................................. |
423 |
П.-2.2.4. Варианты DO-цикла.............................................................. |
424 |
П.-2.2.5. Переход на END IF ................................................................ |
425 |
П.-2.2.6. Альтернативный возврат....................................................... |
425 |
449
О. В. Бартеньев. Современный ФОРТРАН
П.-2.2.7. Дескриптор формата H.......................................................... |
425 |
П.-2.3. Устаревшие свойства Фортрана, |
|
определенные стандартом 1995 г.............................................................. |
425 |
П.-2.4. Исключенные свойства Фортрана ................................................ |
426 |
Приложение 3. Дополнительные процедуры ................................ |
427 |
П.-3.1. Запуск программ............................................................................. |
427 |
П.-3.2. Управление программой................................................................ |
428 |
П.-3.3. Работа с системой, дисками и директориями.............................. |
428 |
П.-3.4. Управление файлами...................................................................... |
429 |
П.-3.5. Генерация случайных чисел.......................................................... |
430 |
П.-3.6. Управление датой и временем ...................................................... |
431 |
П.-3.7. Ввод с клавиатуры и генерация звука.......................................... |
432 |
П.-3.8. Обработка ошибок.......................................................................... |
433 |
П.-3.9. Аргументы в командной строке.................................................... |
433 |
П.-3.10. Сортировка и поиск в массиве.................................................... |
433 |
П.-3.11. Управление операциями с плавающей точкой.......................... |
433 |
Литература........................................................................................... |
435 |
Предметный указатель...................................................................... |
436 |
450