Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
современный фортран , Бортеньев.pdf
Скачиваний:
242
Добавлен:
26.03.2015
Размер:
2.34 Mб
Скачать

Оглавление

 

Предисловие.............................................................................................

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