Слайд 1FORTRAN
Название языка происходит от словосочетания
FORmulae TRANslation — преобразование формул
Слайд 2ВВЕДЕНИЕ.
Первые машинно-ориентированные языки в целом были несовершенны.
У одних языков описание
последовательности вычислений было оторвано от самих формул, другие имели сложную
символику, мало наглядную или слишком специализированную, третьи были приспособлены лишь для решения ограниченного круга задач.
Основной недостаток заключался в привязанности языка к данной машине.
Слайд 3ВВЕДЕНИЕ.
С появлением машин второго поколения возникла потребность создания языков, целиком
ориентированных на особенности задач и не зависящих от конкретной машины.
Это
требование усугублялось еще и тем, что ЭВМ разных марок быстро сменяли одна другую или использовались совместно.
Символом второго поколения ЭВМ стали проблемно-ориентированные языки программирования.
Их развитие все в большей степени определялось спецификой задач, а не особенностями, машин.
На первый план выступило то общее, что было в различных задачах, а это сближало разные языки, созданные в эпоху господства вычислительных задач.
Слайд 4Эти языки принято называть формальными алгоритмическими языками
или просто алгоритмическими
языками.
Слайд 5Формальные алгоритмические языки.
От формального алгоритмического языка требуется многое:
Наглядность, что может
быть достигнуто использованием существующей математической символики и других легко понимаемых
изобразительных средств.
Гибкость, чтобы любой алгоритм мог быть описан без излишнего усложнения, связанного с недостаточностью изобразительных средств.
Однозначность — запись любого алгоритма, выполненная с соблюдением всех правил языка, должна не допускать различных толкований.
Многоступенчатость — сложный алгоритм может быть описан в виде сочетания более простых алгоритмов.
Язык должен быть единым — с одной стороны, число изобразительных средств не должно быть слишком большим, и с другой стороны, чтобы одни и те же средства можно было применять для выражения одних и тех же или родственных понятий в разных (по их назначению) частях алгоритма.
Слайд 6Формальные алгоритмические языки.
Формальный алгоритмический язык служит:
Средством мышления ― логическое несовершенство
предполагаемого метода решения задачи часто выявляется в процессе записи этого
метода средствами алгоритмического языка.
Средством общения между людьми ― описание процесса, выполненное одним человеком, должно быть доступно другим.
Посредником между человеком и машиной — при этом перевод с алгоритмического языка на язык машины выполняется самой машиной с помощью программирующей программы, или транслятора.
Слайд 7ИСТОРИЯ РАЗВИТИЯ ЯЗЫКА.
Одним из первых и наиболее удачных формальных алгоритмических
языков стал FORTRAN, разработанный фирмой IBM.
В 1954 г. группа американских
специалистов в области программирования во главе с проф. Дж. В. Бэкусом опубликовала первое сообщение о языке.
Название языка происходит от словосочетания FORmulae TRANslation — преобразование формул.
Слайд 8Язык фортран не только просуществовал до наших дней, но и
уверенно удерживает первое место и мире по распространенности.
Среди причин
такого долголетия можно отметить простую структуру как самого фортрана, так и предназначенных для него трансляторов.
Слайд 9ИСТОРИЯ РАЗВИТИЯ ЯЗЫКА.
1954 г. ― фирмой IBM был разработан язык
Fortran.
1958 г. ― появилась модификация языка, получившая название ФОРТРАН II
и содержащая понятия подпрограммы и общих переменных для обеспечения связи между сегментами.
1962 г. ― появление языка, известного под названием ФОРТРАН IV и ставшего наиболее употребительным в настоящее время.
К этому же времени относится и начало деятельности комиссии при Американской Ассоциации Стандартов (ASA).
Слайд 10ИСТОРИЯ РАЗВИТИЯ ЯЗЫКА.
1966 г. ― ASA выработала два стандарта: языки
ФОРТРАН (Fortran 66) и Базисный ФОРТРАН (Basic FORTRAN).
Эти языки приблизительно
соответствуют модификациям IV и II.
Однако Базисный ФОРТРАН является подмножеством фортрана, в то время как ФОРТРАН II таковым для ФОРТРАНА IV не является.
Первоначально язык разрабатывался для численных приложений, и стандарт отражал запросы соответствующего класса пользователей.
Программа на фортране, разработанная для некоторой вычислительной системы, если она удовлетворяла стандарту, могла без всяких изменений использоваться и на другой вычислительной системе.
Слайд 11ИСТОРИЯ РАЗВИТИЯ ЯЗЫКА.
70-е годы ― сфера применения фортрана расширялась, охватывая
не только область сугубо численных приложений, но и такие, например,
области, как обработка текстов и работа с файлами.
Происходила модификация языка, в него включались более мощные средства обработки данных, появлялись все новые и новые версии (диалекты) фортрана.
Отличия диалектов от стандарта касаются главным образом расширения возможностей языка и включения дополнительных элементов.
В результате увеличилась область потенциальных приложений фортрана, но за счет ухудшения переносимости написанных на фортране программ.
Возникла необходимость создания нового стандарта.
Слайд 12ИСТОРИЯ РАЗВИТИЯ ЯЗЫКА.
Проект нового стандарта был опубликован в 1976 г.,
а в 1978 г. была принята окончательная версия нового стандарта,
получившего название ФОРТРАН 77.
Новый стандарт не исключает использования старых фортранных программ, он лишь расширяет возможности языка при вводе и выводе при описании данных, описании подпрограмм и конструкций, в которых ранее допускались только значения целого типа, а также включает ряд изменений разнообразного характера, в том числе синтаксические и семантические усовершенствования.
Слайд 13Язык фортран до сих пор продолжает развиваться и совершенствоваться, оказывая
влияние на создание и развитие других языков.
Например, фортран заложен
в основу диалогового языка BASIC и его расширений.
Слайд 14В настоящее время создан новый стандарт — ФОРТРАН 90.
Слайд 15ОБЩАЯ ХАРАКТЕРИСТИКА ЯЗЫКА.
Фортран – формальный алгоритмический язык, созданный для использования
в сфере научных и инженерно-технических вычислений.
Однако на этом языке легко
описываются задачи с разветвленной логикой (моделирование производственных процессов, решение игровых ситуаций и т. д.), некоторые экономические задачи и особенно задачи редактирования (составления таблиц, сводок, ведомостей и т. д.).
Слайд 16ОБЩАЯ ХАРАКТЕРИСТИКА ЯЗЫКА.
Программа на фортране записывается в виде последовательности предложений,
или операторов (под оператором понимается описание некоторого преобразования информации), и
оформляется по определенным правилам.
Эти правила накладывают ограничения, в частности, на форму записи и расположения частей оператора в строке бланка для записи операторов.
Программа, записанная на фортране, представляет собой один пли несколько сегментов (подпрограмм), состоящих из операторов.
Сегмент, управляющий работой всей программы в целом, называется основной программой.
Слайд 17ОБЩАЯ ХАРАКТЕРИСТИКА ЯЗЫКА.
Для Фортрана характерен относительно примитивный синтаксис, что упрощает
и одновременно повышает эффективность трансляции текста в машинный язык конкретной
ЭВМ.
Благодаря этому обеспечивается более высокая скорость обработки данных, что имеет все возрастающее значение для любого языка, используемого для научных расчетов.
Устойчивость Фортрана обеспечивает его широкое распространение, что обусловливает исключительно высокую степень переносимости языка.
Большинство крупных научно-технических прикладных программ написано на Фортране именно потому, что он обладает переносимостью и устойчивостью.
Слайд 18Состав языка.
МС Фортран
Метакоманды
Программы и компилируемые части программ
Символы
Строки
Имена
Типы
Операторы
Выражения
Система ввода/вывода
Слайд 20Метакоманды.
Метакоманды позволяют определить варианты, воздействующие на все операции компиляции.
Например, с
помощью метакоманд можно включить или выключить генерацию файла листинга, проверку
кода при ошибке счета, или использовать такие возможности Фортрана, которые не входят в подмножество или в полный стандарт языка.
Метаязык содержит команды, которые вставляются в файл исходного текста, каждая из которых занимает отдельную строку, и каждая из которых начинается с символа доллар ($) в первой колонке.
Метаязык - это язык управления компилятором Фортрана, позволяющий расширить его возможности.
Слайд 21Метакоманды.
Существующие в настоящий момент метакоманды:
$[NO]DEBUG
Включает [выключает] проверку при счете целых
арифметических операций и присваемого GO TO
$DECMATH
Указывает компилятору создавать действительные константы
в десятичном виде с плавающей точкой
$DO66
Приводит исполнение операторов DO к семантике Фортрана 66
Слайд 22Метакоманды.
$[NO]FLOATCALLS
Включает [выключает] выполнение операции с плавающей точкой через библиотеку подпрограмм
с помощью инструкции CALL, а не через прерывания
$INCLUDE: файл
Заставляет компилятор
считать, что в этой точке вставлен файл
$[NOT]LARGE [: имя [, имя ]. . .]
Помечает именованные массивы для адресации вне DGROUP. $NOTLARGE отменяет этот раздел для именованных массивов.
Если имена массивов не указаны команда действует на все массивы.
Слайд 23Метакоманды.
$LINESIZE: n
Формирует страницы листинга шириной в n позиций
$[NO]LIST
Посылает часть листинга
в файл лист.
$NOLIST останавливает генерацию листинга.
$MESSAGE: ’строка’
Посылает строку в кавычках
на стандартное устройство вывода при исполнении Фортрана с начала до конца
Слайд 24Метакоманды.
$PAGE
Начинает новую страницу листинга
$PAGESIZE: n
Задает длину страницы листинга n
$STORAGE: n
Определяет
количество (n) байтов памяти для всех LOGICAL или INTEGER переменных
в тексте
Слайд 25Метакоманды.
$[NOT]STRICT
Запрещает возможности МS-Фортрана, не входящие в Фортран 77 или в
полный стандарт языка.
$NOTSTRICT разрешает их.
$SUBTITLE: 'подзаголовок'
Создает подзаголовок для нескольких страниц
листинга
$TITLE: 'заголовок'
Создает заголовок для нескольких страниц листинга
Слайд 26Программы и компилируемые части программ
Слайд 27Программы и компилируемые части программ.
Компилятор Фортрана производит программные единицы.
Ими
могут быть основная программа, подпрограмма или функция
Вы можете откомпилировать любую
из этих единиц отдельно и затем загрузить вместе, без объединения их еще до компиляции.
Слайд 28Программы и компилируемые части программ.
Программа - любая программная единица, не
начинающаяся с оператора FUNCTION или SUBROUTINE.
Первым оператором может быть
PROGRAM, но такой оператор не обязателен.
Выполнение программы всегда начинается с первого выполняемого оператора в главной программе.
В каждой выполняемой программе должна быть одна единственная главная программа.
Слайд 29Программы и компилируемые части программ.
Подпрограмма - программная единица, которая может
вызваться из других программных единиц оператором CALL.
Будучи вызванной, подпрограмма
осуществляет набор действий, определенных ее выполняемыми операторами, и затем возвращает управление оператору, стоящему непосредственно за оператором вызова.
Подпрограмма не возвращает величины прямо, хотя они могут быть переданы в вызывающую программную единицу через параметры или общие переменные.
Слайд 30Программы и компилируемые части программ.
Функция - программная единица, которая может
быть употреблена в выражении.
Функция прямо возвращает величину, которая используется
при вычислении выражения, и кроме того может возвращать величины через параметры.
Существует три вида функций:
внешние (подпрограммы-функции)
внутренние
функция-оператор
Функция-оператор не может быть скомпилирована отдельно.
Слайд 31Программы и компилируемые части программ.
Подпрограмма блока данных -
программная единица,
обеспечивающая начальные значения переменных в COMMON-блоках.
Начальные значения переменных обычно
присваиваются оператором DATA, но начальные значения переменных в COMMON не могут быть присвоены нигде кроме подпрограммы блока данных.
Слайд 32Программы и компилируемые части программ.
Подпрограммы и функции позволяют создавать большие
структурированные программы, которые можно делить на части.
Слайд 33Программы и компилируемые части программ.
Разделение программы на части дает Вам
следующие преимущества:
Если программа большая, разделение ее на части облегчает создание,
тестирование и ее сборку.
Если программа большая и повторная компиляция всего исходного текста занимает много времени, разделение ее на части экономит время компиляции.
Если надо использовать некоторые процедуры в других программах, то можно создать один объектный файл из этих процедур и затем загружать его в каждую из программ, в которой нужны эти процедуры.
Если процедуру надо использовать в разных случаях разным образом, можно записать ее в отдельный файл и скомпилировать отдельно, затем для обеспечения ее вариативности Вы можете изменить содержание и даже переписать ее на Ассемблере, С или Паскале, а остальная часть программы не изменится.
Слайд 35СИМВОЛЫ.
При записи программ используются символы трех категорий:
буквы
26 прописных букв
латинского алфавита: А В С D Е F G Н
I J К L М N O P Q R S T U V W X Y Z, а также знак денежной единицы, обозначаемый обычно $ (иногда иначе).
Во входных языках для отечественных трансляторов, как правило, разрешается также использовать в качестве букв прописные буквы русского алфавита
цифры
десять арабских цифр: 0 1 2 3 4 5 6 7 8 9
специальные знаки
см. таблицу на следующем слайде
Слайд 36СИМВОЛЫ.
Специальными знаками языка являются символы:
Слайд 37Набор символов каждого конкретного транслятора может отличаться от приведенного.
В
частности, в записи комментариев и текстовых констант допускается использование всех
литер, которые поддерживаются установленной кодовой таблицей.
Слайд 38КЛЮЧЕВЫЕ СЛОВА.
При построении элементов языка используются конструкции, представляющие собой неделимые
символы – лексемы. К ним относятся, в частности, ключевые слова:
Слайд 40В различных версиях языка список ключевых слов может быть расширен
(или сокращен).
Слайд 41СИМВОЛЫ.
Основными символами являются также следующие конструкции:
логические константы:
.TRUE. (истина),
.FALSE.
(ложь);
символ операции возведения в степень:
**;
знаки операций отношения:
.LT. (меньше чем),
.LE. (не больше),
.GT. (больше чем),
.GE. (не меньше),
.EQ. (равно),
.NE. (не равно);
знаки логических операций:
.NOT. (не),
.AND. (и),
.OR. (или).
Слайд 43СТРОКИ.
Строка состоит из последовательности символов.
Символы после 72-го в строке
игнорируются, строка короче 72 символов считается заполненной пробелами.
Позиция символа в
строке Фортрана имеет важное значение:
символы в позиции с 1-ой по 5-ую опознаются как метки операторов;
символы в позиции 6 являются признаком продолжения;
символы в позициях с 7 по 72 является собственно оператором Фортрана;
комментарии опознаются по символу "С" или звездочке "*" в первой позиции, а метакоманды по знаку доллара в первой позиции.
С некоторыми исключениями, пробелы не являются значащими в Фортране.
Символы табуляции имеют значение при некоторых обстоятельствах, которые будут описаны далее.
Слайд 44СТРОКИ.
Строки Фортрана представляют собой что-либо следующее:
Строка метакоманды
в первой
позиции знак доллара
она управляет действиями компилятора
Строка комментария
в первой позиции
"С", "с" или звездочка, или вся строка пустая
игнорируется при обработке
Начальная строка оператора
имеет пробел или нуль в 6-ой позиции и все пробелы или метку оператора в позициях с 1-ой по 5-ую
Строка продолжения
это не строка метакоманды, не строка коментария и не начальная строка;
с первой по пятую позиции пробелы, а в шестой символ, отличный от пробела или нуля
Слайд 48ИМЕНА.
Именами обозначают переменные, массивы, функции или подпрограммы в вашей программе,
независимо от того определены ли они Вами или системой.
Ограничения
на имена:
Максимальное число символов в имени не превышает 1320 (двадцать строк по 66 символов).
Начальный символ должен быть буквой, последовательность символов быть буквенно-цифровой.
Пробелы игнорируются.
Значимыми являются первые шесть символов, остальные игнорируются.
Слайд 49С учетом ограничений на имя, любая последовательность символов может быть
использована как имя в Фортране.
Здесь нет зарезервированных имен, как
в других языках.
Слайд 50ИМЕНА.
Последовательности буквенных символов, используемые компилятором Фортрана как ключевые слова, не
смешиваются с именами пользователя.
Компилятор различает ключевые слова по их контексту
и поэтому на использование имен пользователями нет никаких ограничений.
Поэтому, например, в программе могут быть массивы с именами IF, READ или GOTO и ошибок при этом не возникает (до тех пор пока не изменят правило, которому подчиняются все массивы).
Слайд 51Использование ключевых слов как имен пользователя мешает "читабельности" программ, и
его следует избегать.
Слайд 53ТИПЫ.
Данные в Фортране относятся к одному из шести базовых типов:
Целые (INTEGER*2 и INTEGER*4)
Вещественные обычной точности
(REAL*4 или REAL)
Вещественные двойной
точности
(REAL*8 или DOUBLE PRECISION)
Комплексный
(COMPLEX*8 и COMPLEX*16)
Логический (LOGICAL*2 и LOGICAL*4)
Символьный (CHARACTER)
Слайд 54ТИПЫ.
Типы данных объявляются.
Если тип не объявлен, то тип данных определяется
по первой букве имени
по умолчанию или из оператора IMPLISIT
Оператор описания
типа может также включать информацию о размерности
Слайд 56ОПЕРАТОРЫ.
Операторы представляют собой набор функций, таких как вычисления, запись результатов
вычислений, изменение цепочек управления, чтение и запись файлов и определение
информации для компилятора.
Операторы Фортрана разделяются на два основных класса:
Выполняемые операторы вызывают требуемые действия
Невыполняемые операторы никаких действий не вызывают.
Вместо этого они определяют, описывают или классифицируют элементы программ, такие как входные точки, данные или программные единицы.
Слайд 57ОПЕРАТОРЫ.
Функциональные категории операторов:
Присваивание
Выполняемый.
Присваивает величину переменной или элементу массива.
Комментарий
Невыполняемый.
Допускает комментарии внутри подпрограммы.
Управления
Выполняемый.
Управляет порядком выполнения операторов.
DАТА
Невыполняемый.
Присваивает начальные значения
переменным
FORMAT
Невыполняемый.
Обеспечивает информацию о редактировании данных
Слайд 58ОПЕРАТОРЫ.
Ввод/вывод
Выполняемый.
Определяет тексты и адреса передачи данных и другие особенности ввода/вывода.
Описание
Невыполняемый.
Определяет
атрибуты переменных, массивов и имен функций программиста.
Функция-оператор
Невыполняемый.
Определяет простую, локально используемую
функцию.
Заголовок программной единицы
Невыполняемый.
Определяет начало программной единицы и описывает ее формальные параметры.
Слайд 60ВЫРАЖЕНИЯ.
Выражение - это формула для вычисления величины, оно содержит последовательность операндов и
операторов.
Операнды могут содержать обращения к функциям, переменные, константы и даже
другие выражения.
Операторы определяют действия, которые необходимо произвести над операндами.
В следующем выражении плюс (+) - это оператор, а A и B - операнды:
A + B
Слайд 61ВЫРАЖЕНИЯ.
Существует четыре основных вида выражений в Фортране:
Арифметические выражения
Символьные выражения
Выражения
отношения
Логические выражения
Слайд 62ВЫРАЖЕНИЯ.
Каждый тип выражений работает с определенным типом операндов и использует
определенный тип операторов.
Результатом вычисления каждого выражения является величина определенного
типа
Выражения не являются операторами, но могут входить в них как их части.
В следующем примере вся строка - это оператор, но только часть его после знака равенства является выражением:
X = 2.0/3.0 + A + B
Слайд 64СИСТЕМА ВВОДА/ВЫВОДА.
Ввод - это передача данных из внешней среды или из внутреннего
файла во внутреннюю память.
Процесс передачи называется чтением.
Вывод - это передача данных
из внутренней памяти во внешнюю среду или во внутренний файл.
Этот процесс называется записью.
Слайд 65СИСТЕМА ВВОДА/ВЫВОДА.
В Фортране есть:
набор операторов, обеспечивающих передачу данных;
набор операторов
для редактирования таких данных;
несколько вспомогательных операторов ввода/вывода, управляющих внешней средой,
или определяющих, или описывающих свойства соединения с внешней средой.
Слайд 67При описании системы ввода/вывода Фортрана важно определить такие понятия как
ЗАПИСЬ и ФАЙЛ.
Слайд 68СИСТЕМА ВВОДА/ВЫВОДА.
Запись.
Понятие, на котором основана система файлов Фортрана.
Запись - это последовательность
символов или величин.
Существует три вида записей:
форматные,
бесформатные
конец файла.
Слайд 69СИСТЕМА ВВОДА/ВЫВОДА.
Файл.
Последовательность записей.
Внешние файлы - это файлы, относящиеся к
устройству, или само устройство.
Внутренний файл - это текстовая переменная, которая
используется либо как текст, либо как назначение некоторых действий по форматному вводу/выводу.
Файлы могут быть внешними или внутренними.
Слайд 70СИСТЕМА ВВОДА/ВЫВОДА.
Все файлы имеют следующие атрибуты:
имя файла (произвольное)
указатель позиции в
файле
структура (форматная, неформатная или двоичная)
метод доступа (последовательный или прямой)
Слайд 71Хотя возможно большое разнообразие типов файлов, большинство приложений сводится к
двум типам:
неявно открытые и явно открытые, внешние, последовательные, форматные
файлы.