Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Современный Fortran на практике

Покупка
Артикул: 644417.03.99
Доступ онлайн
479 ₽
В корзину
Язык программирования Fortran изначально был предназначен для математических вычислений с максимальной производительностью. В последний стандарт Fortran 2008 включено множество современных функциональных возможностей: средства объектно-ориентированного программирования, специализированные операции с массивами, типы, определяемые пользователем и поддержка параллельных вычислений. Данное учебное руководство поможет программистам на языке Fortran научиться применять все вышеперечисленные функциональные возможности в соответствии с современными требованиями: модульность, лаконичность, объектно-ориентированный подход и рациональное использование ресурсов, а также организация работы с учётом наличия нескольких процессоров. В книге рассматриваются практические примеры взаимодействия с программами, написанными на языке C, управления памятью, применения графики и графических пользовательских интерфейсов, параллельные вычисления с использованием библиотек MPI, OpenMP и комассивов (coarrays). Кроме того, автор анализирует некоторые числовые алгоритмы и их реализации, а также показывает, как можно применить некоторые библиотеки с открытыми исходными кодами.
Маркус, А. Современный Fortran на практике : учебно-практическое пособие / А. Маркус ; пер. с англ. А. В. Снастина. - 2-е изд. - Москва : ДМК Пресс, 2023. - 319 с. - ISBN 978-5-89818-602-9. - Текст : электронный. - URL: https://znanium.com/catalog/product/2108481 (дата обращения: 25.11.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов
Арьен Маркус

Современный  

Fortran  

на практике

Modern Fortran 
in Practice

Arjen MArkus 
with Foreword by MichAel MetcAlF

Москва, 2023

Арьен МАркус 
с предисловиеМ МАйклА МеткАлфА

Современный Fortran 
на практике

2-е издание, электронное

УДК 004.438Fortran
ББК 32.973.22
M27

M27
Маркус, Арьен.
Современный Fortran на практике / А. Маркус ; пер. с англ. А. В. Снастина. — 2-е изд., эл. — 1 файл pdf : 319 с. — Москва : ДМК Пресс, 2023. — 
Систем. требования: Adobe Reader XI либо Adobe Digital Editions 4.5 ; 
экран 10". — Текст : электронный.
ISBN 978-5-89818-602-9

Язык программирования Fortran изначально был предназначен для математических вычислений с максимальной производительностью. В последний стандарт 
Fortran 2008 включено множество современных функциональных возможностей: 
средства объектно-ориентированного программирования, специализированные операции с массивами, типы, определяемые пользователем и поддержка параллельных 
вычислений.
Данное учебное руководство поможет программистам на языке Fortran научиться применять все вышеперечисленные функциональные возможности в соответствии 
с современными требованиями: модульность, лаконичность, объектно-ориентированный подход и рациональное использование ресурсов, а также организация работы с учётом наличия нескольких процессоров. В книге рассматриваются практические примеры взаимодействия с программами, написанными на языке C, управления 
памятью, применения графики и графических пользовательских интерфейсов, параллельные вычисления с использованием библиотек MPI, OpenMP и комассивов 
(coarrays). Кроме того, автор анализирует некоторые числовые алгоритмы и их реализации, а также показывает, как можно применить некоторые библиотеки с открытыми исходными кодами.

УДК 004.438Fortran 
ББК 32.973.22

Электронное издание на основе печатного издания: Современный Fortran на практике / 
А. Маркус ; пер. с англ. А. В. Снастина. — Москва : ДМК Пресс, 2015. — 318 с. — ISBN 978-5- 
97060- 302-4. — Текст : непосредственный.

Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было 
форме и какими бы то ни было средствами без  письменного разрешения владельцев авторских прав.
Материал, изложенный в данной книге, многократно проверен. Но поскольку вероятность технических 
ошибок все равно существует, издательство не может гарантировать абсолютную точность и правильность 
приводимых сведений. В связи с этим издательство не несет ответственности за возможные ошибки, связанные с использованием книги.

В соответствии со ст. 1299 и 1301 ГК РФ при устранении ограничений, установленных техническими средствами 
защиты авторских прав, правообладатель вправе требовать от нарушителя возмещения убытков или выплаты компенсации.

ISBN 978-5-89818-602-9
© Arjen Markus, 2012
©  Оформление, перевод на русский язык 
ДМК Пресс, 2015

 «Eadem mutata resurgo»

(вольный перевод: «изменяясь, я вновь воскресаю»)
Надпись на могиле Якоба Бернулли, 
изначально относящаяся к логарифмической спирали

Посвящается памяти моего отца.

Мои родители научили меня любознательности.
Моя жена и мои дети всё время учат меня другим 
важным вещам.

оглавление

Предисловие Майкла Меткалфа.......................... 11

Предисловие автора ......................................... 15

Глава 1. Введение в современный Fortran ............. 17
1.1. особенности современного Fortran .................................. 17
1.2. Fortran 90 .......................................................................... 21
1.3. Fortran 95 .......................................................................... 25
1.4. Fortran 2003 ...................................................................... 26
1.5. Fortran 2008 ...................................................................... 28
1.6. Что осталось неизменным ................................................. 29

Глава 2. Функции для работы с массивами ............ 32
2.1. передача массивов в аргументах ...................................... 33
производительность при использовании функций обработки 
массивов ........................................................................................35
2.2. Элементные функции и автоматическое  
перераспределение памяти .................................................... 36

2.3. два более сложных примера ............................................. 38
дистанционирование иррациональных чисел .................................38
Быстрая сортировка Quicksort ........................................................40
2.4. компактный стиль ............................................................. 41

Глава 3. Математические абстракции .................. 44
3.1. Автоматическое дифференцирование .............................. 44
проблемы при вычислениях ...........................................................49
3.2. дискретное программирование ........................................ 50
управление памятью ......................................................................51
3.3. перечислимое множество решений диофантовых 
уравнений ............................................................................... 53

3.4. отложенные или ленивые вычисления .............................. 56

Оглавление

Глава 4. Управление памятью ............................. 60
4.1. динамически изменяемые массивы .................................. 60

4.2. утечки памяти при использовании указателей .................. 61
4.3. увеличение размера массива ........................................... 62
4.4. строки символов с изменяемой длиной ............................ 63
4.5. сочетание автоматических и динамических массивов ...... 66
4.6. производительность массивов разных типов .................... 67
4.7. параметризованные производные типы ........................... 69

4.8. Утечки памяти в производных типах ................................ 71
4.9. производительность и доступ к памяти ............................. 76

Глава 5. Проблема интерфейса ........................... 80
5.1. подстановка параметров .................................................. 82
5.2. использование пула данных .............................................. 84
данные в модулях ...........................................................................85
внутренние подпрограммы ............................................................88
5.3. передача дополнительных аргументов ............................. 89
Массив параметров ........................................................................89
использование функции transfer() ..................................................90
процедуры, связанные с типом ......................................................91
указатели на процедуры .................................................................93
5.4. управляющие конструкции ............................................... 95
Библиотека openMP .....................................................................100
5.5. работа с числовыми значениями различной точности ..... 102
5.6. резюме ........................................................................... 103

Глава 6. Взаимодействие с программами  
на языке C на примере работы с СУБД SQLite ...... 105
6.1. соответствие типов данных ............................................ 106
6.2. передача аргументов между подпрограммами, 
написанными на c и на Fortran ............................................... 109
6.3. соглашения об именовании и вызовах функций .............. 110
6.4. работа с производными типами ...................................... 113
6.5. создание интерфейса к суБд sQlite .............................. 116

Глава 7. Графика, GUI и Интернет ...................... 124
7.1. вывод результатов в графическом виде .......................... 125
7.2. Графические пользовательские интерфейсы (Gui) ......... 131

Оглавление

7.3. интернет ......................................................................... 139
7.4. работа с XMl-файлами ................................................... 143

Глава 8. Модульное тестирование ..................... 148
8.1. инструментальные средства тестирования ..................... 148
8.2. пример: обработка трёхдиагональной матрицы .............. 149
8.3. проектирование и реализация ........................................ 153
8.4. Заключительные замечания ............................................ 155

Глава 9. Просмотр и рецензирование исходного  
кода ............................................................. 157
9.1. соблюдать определённость и однозначность ................. 158
используйте явные объявления переменных и констант ...............158
используйте предусловия ............................................................160
переменные, сохраняющие свои значения между вызовами ........161
видимость интерфейса к подпрограмме или функции ..................161
доступность переменных и подпрограмм .....................................161
вариант default в блоке select и ветвь else в блоке if ......................162
информативные сообщения об ошибках ......................................162
9.2. избегать излишней сложности и запутанности ............... 164
9.3. избегать «ловушек» ........................................................ 169
правильная обработка ошибок .....................................................169
сравнение вещественных чисел ...................................................169
смешанная точность ....................................................................171
неожиданные результаты при работе с отрицательными  
числами ........................................................................................171
Автоматические массивы .............................................................172
ошибки могут возникать не только при работе с числами .............173
9.4. писать простой и понятный код ...................................... 173

Глава 10. Устойчивая к ошибкам реализация 
нескольких простых алгоритмов ....................... 178
10.1. обзор существующих подобных методик ...................... 179
10.2. линейная интерполяция ................................................ 181
10.3. простые статистические методы и характеристики ....... 187
10.4. поиск корней уравнения ............................................... 195

Глава 11. Объектно-ориентированное 
программирование ......................................... 209
11.1. расширение типов и процедуры, связанные с типами ... 209
передача объекта в другом аргументе ..........................................211

Оглавление

расширение до трёх измерений ...................................................212
пример: случайные перемещения в двух и в трёх измерениях ......215
определение динамического типа ................................................217
наблюдение за частицами ............................................................217
11.2. интерфейсы как контракты ........................................... 221
Аппроксимация множественного наследования ...........................225
11.3. использование прототипирования ................................ 226
пример: моделирование поведения рыб ......................................229
11.4. Абстрактные типы данных и обобщённое 
программирование ............................................................... 232

11.5. изменение поведения типа данных ............................... 235
11.6. Шаблоны проектирования ............................................. 237
Шаблон проектирования Factory...................................................238
Шаблон проектирования наблюдатель .........................................241

Глава 12. Параллельное программирование ....... 245
12.1. простые числа .............................................................. 246
Библиотека openMP .....................................................................248
интерфейс MPi .............................................................................251
комассивы ...................................................................................255
12.2. декомпозиция по доменам ........................................... 259
openMP ........................................................................................261
MPi ...............................................................................................265
комассивы ...................................................................................266
12.3. другие методики параллельного программирования .... 268
12.4. резюме ......................................................................... 270

Приложение А. Инструментальные средства для 
разработки и сопровождения ........................... 271
А.1. компиляторы .................................................................. 271
А.2. средства сборки программ ............................................ 272
А.3. интегрированные среды разработки .............................. 275
А.4. средства проверки во время выполнения ....................... 276
А.5. системы управления версиями ...................................... 278
А.6. документирование исходного кода ................................. 279
А.7. охват кода тестированием и статический анализ ............ 281

Приложение Б. Некоторые нюансы  
использования Fortran ..................................... 285

Оглавление

Б.1. особенности стандарта .................................................. 285
вычисление логических выражений по короткой схеме ................285
сохранение значений локальных переменных ..............................286
ещё об инициализации .................................................................287
двойная точность и вычисление правой части выражений ............287
передача одного и того же аргумента дважды ..............................288
reAl(4) .........................................................................................290
признак конца файла (eoF), вывод на экран и т. п. ........................290
внешние и внутренние (встроенные) подпрограммы ....................291
несовпадения в интерфейсах: предполагаемая форма и явная 
форма массивов ...........................................................................292
инициализация генератора случайных чисел ...............................293
открытие одного и того же файла дважды ....................................294
Б.2. Массивы ......................................................................... 294
использование автоматических и временных массивов может 
привести к переполнению стека ...................................................294
Границы массивов с начальным индексом меньше 1 ....................296
объявления массивов: dimension(:) и dimension(*) .......................296
Б.3. динамические библиотеки ............................................. 297
открытие файла в программе и использование его в dll  
и наоборот ....................................................................................297
выделение памяти в dll и освобождение этой памяти  
в программе и наоборот ...............................................................298
Аргументы командной строки недоступны в dll ...........................298
подпрограммы или данные из основной программы,  
используемые в dll .....................................................................298

Приложение В. Зарегистрированные товарные  
знаки, упоминаемые в данной книге ..................... 300

Список литературы ......................................... 302

Предметный указатель .................................... 309

Доступ онлайн
479 ₽
В корзину