Farionova_Fortran
.pdfМИНИСТЕРСТВООБРАЗОВАНИЯИНАУКИ, МОЛОДЕЖИИСПОРТАУКРАИНЫ Национальныйуниверситеткораблестроения имени адмирала Макарова
Т. А. ФАРИОНОВА, В. А. ОПАНАСЕНКО
ОСНОВЫ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ И ПРОГРАММИРОВАНИЯ
(язык программирования Фортран)
Учебное пособие
Рекомендовано Методическим советом НУК
Электронноеизданиекомбинированного использования на DVD-ROM
НИКОЛАЕВ • НУК • 2011
УДК004.41: 004.42: 004.43
ББК73
Ф24
Автори: Т. А. Фаріонова, канд. техн. наук, доцент; В. А. Опанасенко, ст. викладач
Рецензенти: К. В. Кошкін, д-ртехн. наук, професор; Л. О. Латанська, канд. фіз.-мат. наук, доцент
ФаріоноваТ. А.
Ф24 Основиінформаційнихтехнологійтапрограмування(мовапрограмуванняФортран) : навч. посібник/ Т. А. Фаріонова, В. А. Опанасен-
ко. – Миколаїв: ВидавництвоНУК, 2011. – 109 c.
Посібник містить теоретичний матеріал, приклади розв'язання задач, питання для самоконтролю, список літератури, необхідної при вивченні курсу, а також основні визначення, принципи побудови алгоритмів, опис основних керуючих структур та типів даних для написання обчислювальних програм мовою програмування Фортран.
Призначено для студентів інженерних спеціальностей, а також буде корисним для студентів, аспірантів, чия професійна діяльність пов'язана з розрахунками на комп'ютерах за програмами власної розробки з використанням алго-
ритмічної мови Фортран.
УДК 004.41: 004.42: 004.43
ББК 73
Навчальне видання
ФАРІОНОВАТетянаАнатоліївна ОПАНАСЕНКОВікторіяАнатоліївна
ОСНОВИ ІНФОРМАЦІЙНИХ ТЕХНОЛОГІЙ ТА ПРОГРАМУВАННЯ
(мова програмування Фортран) Навчальнийпосібник
(російською мовою)
РедакторН.О. Шайкіна
Комп'ютернескладаннятаверстанняВ.Г. Мазанко
КоректорМ.О. Паненко
ФаріоноваТ. А., ОпанасенкоВ. А., 2011
ВидавництвоНУК, 2011
р Фоам т06 ×84/16м. У р. дкук..ар3 . 6, |
Обсяг даних 2671бк . |
Тираж 14. Вид. № 12. |
Зам. № 305. |
ВидавецьівиготівникНаціональнийуніверситеткораблебудування, 54025, м. Миколаїв, просп. Героїв Сталінграда, 9
E-mail : publishing@nuos.edu.ua
Свідоцтвопровнесеннясуб'єктавидавничоїсправидоДержавного реєстру видавців, виготівників і розповсюджувачів видавничої продукції ДК № 2506 від 25.05.2006 р.
2 |
3 |
ВВЕДЕНИЕ
Вычислительная техника, использование передовых программных продуктов являются необходимой и неотъемлемой частью работы современного инженера. Широкое и разнообразное применение ЭВМ выдвигает высокие требования к их программному обеспечению. В то же время процесс создания программ требует от специалиста как проявления творчества, так и владения специальными знаниями и навыками.
Общепризнано, что с момента разработки и до сих пор Фортран является лучшим языком для решения инженерных и научных задач, получивширокоераспространениесредипользователей, занимающихся вопросамичисленногомоделирования.
Название языка Фортран произошло от Formula Translator – переводчикформул. ВисториипрограммированияФортран– живойклассический язык. Не одно поколение программистов выросло на Фортране. Многие критиковали этот язык за "примитивность", но, как оказалось, именнопростотаичеткостьпомоглиемужитьипостоянноразвиваться, сохраняяпреемственность, совершенствуясьипроходястандартизацию.
Это объясняется следующим:
1)существованиемогромныхфондовприкладныхпрограммнаФортране, накопленныхзапредыдущийпериод;
2)наличием эффективных трансляторов для различных типов машин, высокойэффективностьюпрограммногокода;
3)переносимостью надругиетипыЭВМ, работающиевразличных операционных системах, что достигается благодаря наличию стандартов языка;
4)простотойконструкцииязыка.
ВВЕДЕНИЕ
СмоментасозданияпервойсистемыФортранфирмойIBM в1950 г. по сегодняшний день было принято три стандарта языка. Все они предусматривают полную совместимость "снизу–вверх". Первый стандарт Фортран66 былпринятв1966 г., второйстандартФортран77 – в1978 г. В 1992 г. был принят новый стандарт Fortran 90, который и является предметомизучения. Вконце2004 опубликованновыймеждународный стандарт языка Фортран 2003.
4
Часть 1. БАЗОВЫЕ ВЫЧИСЛИТЕЛЬНЫЕ ПРОЦЕССЫ И ИХ РЕАЛИЗАЦИЯ НА ЯЗЫКЕ ФОРТРАН
Тема 1. Алгоритм и его свойства. Основные понятия
языка Фортран. Арифметические и логические выражения. Разработкаиреализацияпрограмм
слинейнойструктурой
1.1.Алгоритм и его свойства
Алгоритм – это точное предписание, которое задает процесс, начинающийсяспроизвольногоисходногоданногоинаправленныйнаполучение полностью определяемого этим исходным данным результата. Алгоритм есть формальное предписание (указание), однозначно определяющее содержание и последовательность операций, переводящих определенную совокупность исходных данных в искомый результат.
Процесс разработки алгоритма называется алгоритмизацией
ипредставляетсобойпроцедурупоследовательногопреобразованияданных, называемых конструктивными элементам, происходящую дискретными"шагами".
Свойства алгоритмов (требования к алгоритмам):
1.Дискретность. Процесс решения задачи должен быть разбит на последовательные отдельные шаги. Образованная структура алгоритма оказывается прерывной (дискретной): только выполнив одну команду, исполнитель сможет приступить к следующей.
2.Понятность. Алгоритм должен быть понятен исполнителю,
иисполнитель должен быть в состоянии выполнить его команды.
3.Детерминированность (определенность). Алгоритм не должен содержать команды, смысл которых может восприниматься неоднозначно. (Например, робот будет поставлен в тупик командой "Взять две-три ложки песка": что значит "две-три"? какого песка?) Недопустимы ситуации, когдапослевыполненияочереднойкомандыисполнителюнеясно, какую команду выполнять на следующем шаге. Нарушение этого приводит к тому, что одна и та же команда после выполнения разными ис-
полнителями дает неодинаковый результат.
4. Результативность. При точном исполнении всех команд алгоритма процесс решения задачи должен прекратиться за конечное число
5
Тема1. Алгоритмиегосвойства ...
шагов и при этом должен быть получен определенный постановкой задачи ответ.
5. Массовость. Необходимо разрабатывать алгоритмы, обеспечивающие решение всего класса задач данного типа. Например, если составляетсяалгоритмрешенияквадратногоуравненияах2 + вх+ с= 0, он должен обеспечивать возможность решения для любых допустимых исходныхзначенийкоэффициентова, в, с.
Алгоритм может быть представлен в текстовом или графическом виде.
Блок-схема – это графическое представление хода решения задачи на ЭВМ (табл. 1.1).
Таблица 1.1. Основные элементы блок-схем
|
Название |
Символ (рисунок) |
Выполняемая функция |
||||||||
|
(пояснение) |
||||||||||
|
|
|
|
|
|
|
|
|
|||
1. |
Блок вычислений |
|
|
|
|
|
|
|
Вычислительное действие или |
||
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
группа действий |
|
|||
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
Выбор направления выполне- |
||
2. |
Логический блок |
|
|
|
|
|
|
|
ния алгоритма в зависимости |
||
|
|
|
|
|
|
|
|
|
от условия |
|
|
3. |
Блоки ввода/вывода |
|
|
|
|
|
|
|
Ввод или вывод данных вне |
||
|
|
|
|
|
|
|
зависимости |
от |
физического |
||
|
|
|
|
|
|
|
|
|
носителя |
|
|
|
|
|
|
|
|
|
|
|
Вывод данных на печатающее |
||
|
|
|
|
|
|
|
|
|
устройство |
|
|
|
|
|
|
|
|
|
|
|
|
||
4. |
Начало/конец |
|
|
|
|
|
|
|
Начало или конец программы, |
||
|
|
|
|
|
|
|
вход или выход в подпрограм- |
||||
(вход/выход) |
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
му |
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
5. |
Предопределенный |
|
|
|
|
|
|
|
Вычисления |
по |
стандартной |
|
|
|
|
|
|
|
или пользовательской подпро- |
||||
процесс |
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
грамме |
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
6. |
Блок модификации |
|
|
|
|
|
|
|
Автоматическое изменение па- |
||
|
|
|
|
|
|
|
раметров |
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
7. |
Соединитель |
|
|
|
|
|
|
|
Указание связи между пре- |
||
|
|
|
|
|
|
|
рванными линиями в пределах |
||||
|
|
|
|
|
|
|
|
|
одной страницы |
|
|
8. |
Межстраничный |
|
|
|
|
|
|
|
Указание связи между частями |
||
|
|
|
|
|
|
|
схемы, расположенной на раз- |
||||
соединитель |
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
ных страницах |
|
|||
|
|
|
|
|
|
|
|
|
|
6
1.2. ОсновныепонятияязыкаФортран
Правила построения блок-схем:
1. Блок-схемавыстраиваетсяводномнаправлениилибосверхувниз, либо слева направо.
2. Все повороты соединительных линий |
Начало |
||
выполняются под углом 90 град. |
|||
|
|
||
Линейным называется алгоритм, в кото- |
|
|
|
Вводисходных |
|||
ром результат получается путем однократно- |
|||
данных |
|||
го выполнения заданной последовательности |
|
|
|
|
|
||
действийприлюбыхзначенияхисходныхдан- |
|
|
|
Блок |
|||
ных. Операторы программы выполняются по- |
|||
вычислений |
|||
следовательно, одинзадругим, всоответствии |
|
|
|
|
|
||
с их расположением в программе (рис. 1.1). |
Вывод |
||
|
результата |
||
Рис. 1.1. Алгоритмическая |
|
|
|
Конец |
|||
структураследования |
1.2. Основные понятия языка Фортран
Алгоритмический язык – это способ описания алгоритма, понятный человеку и машине.
Алфавит алгоритмического языка Фортран состоит из 26 букв английскогоалфавита, 10 цифр, символа"пробел" испециальныхсимволов:
=, +, -, *, /, (, ), ., $, ', :, _, #, &, <, >. При этом не имеет значения,
прописнаябукваилистрочная.
Элементы языка:
•ключевые слова и имена;
•переменные, константы;
•выражения;
•операторы;
•программные блоки.
Ключевые слова – последовательность литер, имеющая определенный смысл в языке, например названия типов переменных, команды ввода/вывода и др. Примеры ключевых слов: integer, real, if, else, end, endif.
Имяможнодатьконстанте, переменной, массиву, производномутипу данных, конструкции, программе, процедуре, функции, модулю. Вотли-
7
Тема1. Алгоритмиегосвойства ...
чие от математики в программировании объекты принято не обозначать, а именовать. Например: velocity лучше, чем V.
В Фортране действует следующее соглашение об именах:
•вименахразрешаетсяиспользоватьтолькоанглийскиебуквы, причем малые и большие буквы не различаются компилятором;
•помимо букв разрешается использовать цифры 0…9 и специальныесимволы"_" и"$";
•первым символом имени может быть только буква;
•в Фортане 90 допускается длина имени до 31 символа, в Фортра-
не 77 – до 8;
•пробелыизнакипрепинания, русскиебуквы, атакжезнакиоперацийвименахнедопустимы.
Переменная и константа– это ячейки памяти, которым для простоты обращения дают уникальные имена. Переменная и константа могут содержать только одно значение, причем во время работы программы значение, хранящееся в переменной, может изменяться, а в константе – постоянно.
Перед использованием переменные и константы объявляют при помощинеисполняемыхоператоровописания. Этиоператорыназывают еще типами данных (табл. 1.2).
Таблица 1.2. Типы данных
Тип |
Fortran |
Пример |
Целые |
INTEGER |
5 |
Вещественные |
REAL |
3.14159 |
Комплексные |
COMPLEX |
(1.3,0.00) |
Логические |
LOGICAL |
.true. |
Символьные |
CHARACTER |
'd' |
Различают пять типов констант:
•три числовых типа – целые, вещественные, комплексные;
•логические;
•строки.
Каждому типу соответствует своя область допустимых значений, особый способ хранения в памяти компьютера и набор команд для их обработки. Различают явные и именованные константы. Именованные константы, как и переменные, объявляют в описаниях типа. Тип явной константы понятен по ее внешнему виду.
8
1.2.ОсновныепонятияязыкаФортран
Целая константа:
•записывается в виде последовательности цифр, которым предшествует знак "–" или "+" (его можно опустить);
•лежитвдиапазонеот–2147483648 до2147483647;
•в памяти компьютера представляется точно;
•действия над целыми выполняются точно;
•по умолчанию записывается в десятичной системе счисления, но можно указать и другую систему счисления;
•примеры записи целых констант: 7 +15 –262.
Вещественная константа:
•содержит не десятичную запятую, а десятичную точку ".", как принято в Англии и Америке, например: 3.14 или 3. , причем точку, как признаквещественнойконстанты, опускатьнельзя, втовремякакнулевую целую или дробную часть числа – можно;
•для малых и больших по порядку чисел предпочтительна экспо-
ненциальная форма 1.0Е-7 (число с мантиссой и порядком, обозначаемым "Е", вместо "×10 в степени") вместо фиксированной формы
0.0000001;
•лежит в диапазонах: либо отрицательных чисел из [–3.40*1038, –1.17*10–38], либо равно 0.0, либо положительных чисел из
[+1.17*10–38,+3.40*1038];
•число в памяти компьютера представлено нормализованной мантиссой 0.1≤m<1, содержащей семь цифр, и порядком из диапазона ±38;
•даже в допустимом диапазоне в памяти компьютера представимо не любое число, так что часто хранится приближенное значение;
•действия над вещественными числами выполняются с ошибками округления;
•примерызаписивещественныхконстант:
3.14–7.0 160000.0 0.0000001 1.6Е+5 –0.0000000000023;
нуль можно записать так: 0.0 0. .0 и даже просто точкой;
•при двойной точности 1.6D+5 порядок обозначен D вместо Е.
Комплексная константа:
•записываетсяввидеупорядоченнойпарывещественныхконстант, разделенных символом "," и заключенных в круглые скобки, например
(–10., 8.2);
•–10. – соответствует действительной части комплексного числа
–10+8,2i;
•8.2 – соответствует мнимой части комплексного числа –10+8,2i.
9
Тема1. Алгоритмиегосвойства ...
Логические константы: .TRUE.–"истина" и .FALSE.– "ложь".
Символьная (строковая) константа:
•это последовательность символов, заключенная в апострофы ('текст') или двойные кавычки ("O'K");
•количество символов в константе называется длиной строковой константы (максимум – 32767);
•символ "пробел" является значащим;
•пример: 'при х=' – это строковая константа из шести символов.
Именованные константы задаются в операторе parameter, на-
пример:
real, parameter :: pi=3.14, e=2.71.
ПеременныевФортранеразличаютпотипу: целые, вещественные, комплексные, логические, символьные. Перечисленные пять типов называют базовыми, на их основе программист может определять в операторе type производные типы по своему усмотрению. Целесообразно для каждой переменной объявлять ее тип, не полагаясь на принцип "по умолчанию", который отменяется оператором implicit none.
Переменную объявляют:
• целуювinteger, пример: integer x1, y1, m – илисинициализациейнекоторыхпеременных:
integer :: number=1, sec=2, al;
• вещественную в real , пример: real X, |
I15, Z; |
||
• комплексную в complex, пример: |
complZ; |
||
complex |
complX, |
complY, |
|
• логическую в операторе logical , пример: |
|
||
|
logical |
L1, L2; |
|
• строковую в операторе character: |
|
||
после"*" указывают длинустрокидлявсехпеременных изсписка, |
|||
например: |
|
STIN, STOUT; |
|
character *70 |
• character без указания длины, например: character ONE, first
– подразумевает длину, равную одному символу.
Перед использованием переменной в правой части выражений ее надоинициализировать, т. е. присвоитьзначениесоответствующеготипа.
Все описанные элементы подвергаются обработке компилятором. Комментарий – текст, который компилятор пропускает. Если программисту нужно записать в тексте программы любую информацию,
10
1.3. Арифметические и логические выражения
например поясняющую код программы, названия и суть модулей, заметки "на полях", он может сделать это с помощью комментариев. Комментарий начинается с восклицательного знака "!".
Программа – это запись последовательности инструкций (операторов). Операторыбываютисполняемыеинеисполняемые. Исполняемые операторы задают некоторые действия, которые должны быть выполнены. Неисполняемые определяют различные свойства и соглашения в программе. Объекты, которые подлежат описанию или над которыми выполняются действия, называются операндами.
Правила записи программы в свободном формате:
•длина строки текста не превышает 132 символа;
•запись оператора может начинаться с любой позиции строки;
•на одной строке могут размещаться несколько разделенных точкой с запятой операторов;
•если строка текста завершается символом "&", то последующая строка рассматривается как строка продолжения;
•в операторе FPS может быть до 7200 символов; число строк продолжения при свободном формате не может быть более 54;
•любые расположенные между восклицательным знаком и концом строки символы рассматриваются как комментарий.
Файл с программой на языке Фортран имеет расширение .F90.
1.3.Арифметические и логические выражения
Выражение– этоконструкция, определяющаяпоследовательность действий, которые необходимо выполнить для вычисления какой-либо величины. Выражениясостоятизконстант, переменных, ссылокнастандартные функции (прил. А) и функции пользователя, операций с одним операндом, например–Х, илинесколькими операндами, напримерX+Y, круглых скобок. Выражение соответствует осмысленной математической формуле, записанной, в отличие от математики, последовательно символ за символом, т. е. в строку. В отличие от математики, объекты не обозначают буквами, а функции спецзначками – все именуются. Выражения, взависимостиоттипаобъектов, входящихвних, разбиваютна
•арифметические, выполняющие действия над числами целого, вещественногоиликомплексноготипа;
•логические, выполняющие действия над логическими величинами;
•строковые, выполняющие действия над строками из символов.
11