Введение
Вычислительная техника, использование передовых программных продуктов является необходимой и неотъемлемой частью работы современного инженера. Широкое и разнообразное использование ЭВМ выдвигает высокие требования к их программному обеспечению. В то же время процесс создания программ требует от специалиста, как проявления творчества, так и владения специальными знаниями и умениями.
Общепризнанно, что с момента разработки и до сих пор Фортран является лучшим языком для решения инженерных и научных задач, получив широкое распространение среди пользователей, занимающихся вопросами численного моделирования.
Название языка Фортран произошло от Formula Translator – переводчик формул. В истории программирования Фортран – живой классический язык. Не одно поколение программистов выросло на Фортране. Хотя многие критиковали Фортран за “примитивность”, но как оказалось, именно простота и четкость помогли ему жить и постоянно развиваться, сохраняя преемственность, совершенствуясь и проходя стандартизацию.
Это объясняется следующими причинами:
1. Существованием огромных фондов прикладных программ на Фортране, накопленных за предыдущий период.
2. Наличием эффективных трансляторов для различных типов машин. Высокой эффективностью программного кода.
3. Переносимостью на другие типы ЭВМ, работающих в различных операционных системах, что достигается наличием стандартов языка.
4. Простотой конструкций языка.
С момента создания первой системы Фортран фирмой IBM в 1950 г. по сегодняшний день было принято три стандарта языка. Все стандарты Фортран предусматривают полную совместимость "снизу-вверх". Первый стандарт Фортран 66 был принят в 1966 г., второй стандарт, Фортран 77, — в 1978 г. В 1992 г. был принят новый стандарт — Fortran 90, который и является предметом изучения. В конце 2004 года опубликован новый международный стандарт языка Фортран - Фортран 2003.
Методическое пособие предназначено для изучения дисциплины «Основы информационных технологий и программирование» студентами инженерных специальностей, а также будет полезностудентам, аспирантам, инженерам, чья профессиональная деятельность связана с проведением расчетов на компьютерах по программам собственной разработки с использованием алгоритмического языка Фортран.
Часть 1. Базовые вычислительные процессы и их реализация на языке Фортран
Тема 1. Алгоритм и его свойства. Основные понятия языка Фортран. Арифметические и логические выражения. Разработка и реализация программ с линейной структурой
Алгоритм и его свойства.
Алгоритм – это точное предписание, которое задает процесс, начинающийся с произвольного исходного данного и направленный на получение полностью определяемого этим исходным данным результата. Алгоритм есть формальное предписание (указание), однозначно определяющее содержание и последовательность операций, переводящих определенную совокупность исходных данных в искомый результат.
Процесс разработки алгоритма называется алгоритмизацией и представляет собой процедуру последовательного преобразования данных, называемых конструктивными элементам, и происходящую дискретными «шагами».
Свойства алгоритмов (требования к алгоритмам):
1. Дискретность. Процесс решения задачи должен быть разбит на последовательность отдельных шагов. Образованная структура алгоритма оказывается прерывной (дискретной): только выполнив одну команду, исполнитель сможет приступить к выполнению следующей
2. Понятность. Алгоритм должен быть понятен исполнителю, и исполнитель должен быть в состоянии выполнить его команды.
3. Детерминированность ( определенность ). Алгоритм не должен содержать команды, смысл которых может восприниматься неоднозначно. (Например, робот будет поставлен в тупик командой "Взять две-три ложки песка": что значит "две-три"?, какого песка?). Недопустимы ситуации, когда после выполнения очередной команды исполнителю не ясно, какую команду выполнять на следующем шаге. Нарушение этого приводит к тому, что одна и та же команда после выполнения разными исполнителями дает неодинаковый результат.
4. Результативность. При точном исполнении всех команд алгоритма процесс решения задачи должен прекратиться за конечное число шагов и при этом должен быть получен определенный постановкой задачи ответ.
5. Массовость. Необходимо разрабатывать алгоритмы, обеспечивающие решение всего класса задач данного типа. Например, если составляется алгоритм решения квадратного уравнения ах2 +вх+ с= 0, он должен обеспечивать возможность решения для любых допустимых исходных значений коэффициентов а, в. с.
Алгоритм может быть представлен в текстовом или графическом виде.
Блок-схема – это графическое представление хода решения задачи на ЭВМ.
Таблица 1.1 Основные элементы блок-схем:
Название | Символ (рисунок) | Выполняемая функция (пояснение) |
1. Блок вычислений | Выполняет вычислительное действие или группу действий | |
2. Логический блок | Выбор направления выполнения алгоритма в зависимости от условия | |
3. Блоки ввода/вывода | Ввод или вывод данных вне зависимости от физического носителя | |
Вывод данных на печатающее устройство | ||
4. Начало/конец (вход/выход) | Начало или конец программы, вход или выход в подпрограмму | |
5. Предопределенный процесс | Вычисления по стандартной или пользовательской подпрограмме | |
6. Блок модификации | Выполнение действий, изменяющих пункты алгоритма | |
7. Соединитель | Указание связи между прерванными линиями в пределах одной страницы | |
8. Межстраничный соединитель | Указание связи между частями схемы, расположенной на разных страницах |
Правила построения блок-схем:
1. Блок-схема выстраивается в одном направлении либо сверху вниз, либо слева направо
2. Все повороты соединительных линий выполняются под углом 90 градусов
Линейным называется алгоритм, в котором результат получается путем однократного выполнения заданной последовательности действий при любых значениях исходных данных. Операторы программы выполняются последовательно, один за другим, в соответствии с их расположением в программе (рис.1.1).
Рис. 1.1. Алгоритмическая структура следование
1.2 Основные понятия языка Фортран
Алгоритмический язык – это способ описания алгоритма, понятный человеку и машине.
Алфавит алгоритмического языка Фортран состоит из 26 букв английского алфавита, 10 цифр, символа пробел и специальных символов: =, +, -, *, /, (, ),., $, ',:, _, #, &, <, >.
Элементы языка:
- ключевые слова и имена;
- переменные, константы;
- выражения;
- операторы;
- программные блоки.
Ключевые слова – последовательность литер, имеющая определенный смысл в языке, например, названия типов переменных, команды ввода-вывода и др. Примеры ключевых слов: integer, real, if, else, end, endif.
Имя можно дать константе, переменной, массиву, производному типу данных, конструкции, программе, процедуре, функции, модулю. В отличие от математики в программировании объекты принято не обозначать, а именовать. Например, 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' |
Различают 5 типов констант:
· три числовых типа - целые, вещественные, комплексные
· логические
· строки
Каждому типу соответствует своя область допустимых значений, особый способ хранения в памяти компьютера и набор команд для их обработки. Различают явные и именованные константы. Именованные константы, также как и переменные, объявляют в описаниях типа. Тип явной константы понятен по ее внешнему виду.
Целая константа
· записывается в виде последовательности цифр, которым предшествует знак “-“ или “+” (его можно опустить)
· лежит в диапазоне от –2 147 483 648 до 2 147 483 647.
· в памяти компьютера представляется точно
· действия над целыми выполняются точно
· по умолчанию записывается в десятичной системе счисления, номожно указать и другую систему счисления
· примеры записи целых констант: 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, содержащей 7 цифр, и порядком из диапазона ±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,2 i
· 8.2 - соответствует мнимой части комплексного числа -10+8,2 i
Логические константы:.TRUE.–"истина" и.FALSE.– "ложь".
Символьная (строковая) константа
· это последовательность символов, заключенная в апострофы ‘текст’ или двойные кавычки “O’K”
· количество символов в константе называется длиной строковой константы, максимум 32767
· символ “пробел” является значащим
· пример: ‘при х=’ - это строковая константа из шести символов
Именованные константы, задаются в операторе parameter, например
real, parameter:: pi=3.14, e=2.71
Переменные в Фортране различают по типу: целые, вещественные, комплексные, логические, символьные. Перечисленные 5 типов называют базовыми, на основе которых программист может определять в операторе type производные типы по своему усмотрению. Целесообразно для каждой переменной объявлять ее тип, не полагаясь на принцип "по умолчанию", который отменяется оператором implicit none
Переменную объявляют
· целой в integer, пример: integer x1, y1, m или с инициализацией некоторых переменных integer:: number=1, sec=2, al;
· вещественной в real, пример: real X, I15, Z;
· комплексной в complex, пример: complex complX, complY, complZ;
· логической в операторе logical, пример: logical L1, L2;
· строковой в операторе character,
- - после “*” указывают длину строки для всех переменных из списка, например, character *70 STIN, STOUT;
- character без указания длины, например, character ONE, first подразумевает длину, равную 1
Перед использованием переменной в правой части выражений ее надо инициализировать, то присвоить значение соответствующего типа.
Все описанные элементы подвергаются обработке компилятором.
Комментарий - текст, который компилятор пропускает. Если программисту нужно записать в тексте программы любую информацию, например, поясняющую код программы, названия и суть модулей, заметки "на полях", он может сделать это с помощью комментариев. Комментарий начинается с восклицательного знака «!».
Программа - это запись последовательности инструкций (операторов). Операторы бывают исполняемые и неисполняемые. Исполняемые операторы задают некоторые действия, которые должны быть выполнены. Неисполняемые определяют различные свойства и соглашения в программе. Объекты, которые подлежат описанию или над которыми выполняются действия называются операндами.
Правила записи программы в свободном формате:
· длина строки текста не превышает 132 символа;
· запись оператора может начинаться с любой позиции строки;
· на одной строке могут размещаться несколько разделенных точкой с запятой операторов;
· если строка текста завершается символом &, то последующая строка рассматривается как строка продолжения;
· в операторе FPS может быть до 7200 символов; число строк продолжения при свободном формате не может быть более 54;
· любые расположенные между восклицательным знаком и концом строки символы рассматриваются как комментарий.
Файл с программой на языке Фортран имеет расширение .F90.
1.3 Арифметические и логические выражения
Выражения – это конструкция, определяющая последовательность действий, которые необходимо выполнить для вычисления какой-либо величины. Выражения состоят из констант, переменных, ссылок на стандартные функции (см. Приложение А) и функции пользователя, операций с одним операндом, например -Х, или несколькими операндами, например X+Y, круглых скобок. Выражение соответствует осмысленной математической формуле, записанной в отличие от математики последовательно символ за символом, то есть в строку. В отличие от математики объекты не обозначают буквами, а функции спецзначками, - все именуются. Выражения, в зависимости от типа объектов, входящих в них, разбивают на
· арифметические, выполняющие действия над числами целого, вещественного или комплексного типа
· логические, выполняющие действия над логическими величинами
· строковые, выполняющие действия над строками из символов
Арифметические выражения
Доступные математические операции и порядок их выполнения приведен в таблице ниже
Таблица 1.3 Приоритет операций в арифметических выражениях
Операция | Название | Уровень | Порядок выполнения | Пример |
Функция(х) | см. приложение А | Сначала действия в скобках | Sin(x+1) | |
** | Возведение в степень | Справа налево | X**3 | |
* | Умножение | Слева направо | X*y | |
/ | Деление | Слева направо | x/y | |
+ | Сложение | Слева направо | X+y | |
- | Вычитание | Слева направо | x-y | |
- | Смена знака | Слева направо | -x |
Вычисления в арифметических выражениях производят с лева на право, согласно приоритету операции (табл. 1.3). Для изменения порядка действий используются круглые скобки. Верхние и нижние индексы в записи арифметических выражений недопустимы. При возведении в степень действия выполняются с право налево. Все переменные, используемые в выражении, должны быть к моменту вычисления выражения определены.
Операции с целыми операндами имеют особенности:
результат деления двух целых чисел определен как целая часть частного;
Любое не нулевое целое, не равное 1 или –1, возведенное в отрицательную степень, будет равно нулю. Это связано с тем, что I**(-J) интерпретируется как 1/I**J и предполагает деление двух целых чисел
Возведение в степень имеет особенности