Алг_яз_Лекция_14.pptx
- Количество слайдов: 71
FORTRAN Название языка происходит от словосочетания FORmulae TRANslation — преобразование формул
üПервыемашинно-ориентированныеязыки в целом были несовершенны. • У одних языков описание последовательности вычислений было оторвано от самих формул, другие имели сложную символику, мало наглядную или слишком специализированную, третьи были приспособлены лишь для решения ограниченного круга задач. Основной недостаток заключался в привязанности языка к данной машине. 2
üС появлением машин второго поколения возникла потребность создания языков, целиком ориентированных на особенности задач и не зависящих от конкретной машины. • Это требование усугублялось еще и тем, что ЭВМ раз ных марок быстро сменяли одна другую или использовались совместно. üСимволом второго поколения ЭВМ стали проблемно-ориентированные языки программирования. • • Их развитие все в большей степени определялось спецификой задач, а не особенностями, машин. На первый план выступило то общее, что было в различных задачах, а это сближало разные языки, созданные в эпоху господства вычислительных задач. 3
Эти языки принято называть формальными алгоритмическими языками или просто алгоритмическими языками. 4
От формального алгоритмического языка требуется многое: 1. Наглядность, что может быть достигнуто использованием существующей математической символики и других легко понимаемых изобразительных средств. 2. Гибкость, чтобы любой алгоритм мог быть описан без излишнего усложнения, связанного с недостаточностью изобразительных средств. 3. Однозначность — запись любого алгоритма, выполненная с соблюдением всех правил языка, должна не допускать различных толкований. 4. Многоступенчатость — сложный алгоритм может быть описан в виде сочетания более простых алгоритмов. 5. Язык должен быть единым — с одной стороны, число изобразительных средств не должно быть слишком большим, и с другой стороны, чтобы одни и те же средства можно было применять для выражения одних и тех же или родственных понятий в разных (по их назначению) частях алгоритма. Формальные алгоритмические языки. 5
Формальный алгоритмический язык служит: 1. Средством мышления ― логическое несовершенство предполагаемого метода решения задачи часто выявляется в процессе записи этого метода средствами алгоритмического языка. 2. Средством общения между людьми ― описание процесса, выполненное одним человеком, должно быть доступно другим. 3. Посредником между человеком и машиной — при этом перевод с алгоритмического языка на язык машины выполняется самой машиной с помощью программирующей программы, или транслятора. Формальные алгоритмические языки. 6
üОдним из первых и наиболее удачных формальных алгоритмических языков стал FORTRAN, разработанный фирмой IBM. üВ 1954 г. группа американских специалистов в области программирования во главе с проф. Дж. В. Бэкусом опубликовала первое сообщение о языке. üНазвание языка происходит от словосочетания FORmulae TRANslation — преобразование формул. 7
Язык фортран не только просуществовал до наших дней, но и уверенно удерживает первое место и мире по распространенности. Среди причин такого долголетия можно отметить простую структуру как самого фортрана, так и предназначенных для него трансляторов. 8
ü 1954 г. ― фирмой IBM был разработан язык Fortran. ü 1958 г. ― появилась модификация языка, получившая название ФОРТРАН II и содержащая понятия подпрограммы и общих переменных для обеспечения связи между сегментами. ü 1962 г. ― появление языка, известного под названием ФОРТРАН IV и ставшего наиболее употребительным в настоящее время. • К этому же времени относится и начало деятельности комиссии при Американской Ассоциации Стандартов (ASA). 9
ü 1966 г. ― ASA выработала два стандарта: языки ФОРТРАН (Fortran 66) и Базисный ФОРТРАН (Basic FORTRAN). • • Эти языки приблизительно соответствуют модификациям IV и II. Однако Базисный ФОРТРАН является подмножеством фортрана, в то время как ФОРТРАН II таковым для ФОРТРАНА IV не является. üПервоначально язык разрабатывался для численных приложений, и стандарт отражал запросы соответствующего класса пользователей. Программа на фортране, разработанная для некоторой вычислительной системы, если она удовлетворяла стандарту, могла без всяких изменений использоваться и на другой вычислительной системе. • 10
ü 70 -е годы ― сфера применения фортрана расширялась, охватывая не только область сугубо численных приложений, но и такие, например, области, как обработка текстов и работа с файлами. • • üВ Происходила модификация языка, в него включались более мощные средства обработки данных, появлялись все новые и новые версии (диалекты) фортрана. Отличия диалектов от стандарта касаются главным образом расширения возможностей языка и включения дополнительных элементов. результате увеличилась область потенциальных приложений фортрана, но за счет ухудшения переносимости написанных на фортране программ. Возникла необходимость создания нового стандарта. 11
üПроект нового стандарта был опубликован в 1976 г. , а в 1978 г. была принята окончательная версия нового стандарта, получившего название ФОРТРАН 77. • Новый стандарт не исключает использования старых фортранных программ, он лишь расширяет возможности языка при вводе и выводе при описании данных, описании подпрограмм и конструкций, в которых ранее допускались только значения целого типа, а также включает ряд изменений разнообразного характера, в том числе синтаксические и семантические усовершенствования. 12
Язык фортран до сих пор продолжает развиваться и совершенствоваться, оказывая влияние на создание и развитие других языков. Например, фортран заложен в основу диалогового языка BASIC и его расширений. 13
В настоящее время создан новый стандарт — ФОРТРАН 90. 14
üФортран – формальный алгоритмический язык, созданный для использования в сфере научных и инженерно-технических вычислений. • Однако на этом языке легко описываются задачи с разветвленной логикой (моделирование производственных процессов, решение игровых ситуаций и т. д. ), некоторые экономические задачи и особенно задачи редактирования (составления таблиц, сводок, ведомостей и т. д. ). 15
üПрограмма на фортране записывается в виде последовательности предложений, или операторов (под оператором понимается описание некоторого преобразования информации), и оформляется по определенным правилам. • Эти правила накладывают ограничения, в частности, на форму записи и расположения частей оператора в строке бланка для записи операторов. üПрограмма, записанная на фортране, представляет собой один пли несколько сегментов (подпрограмм), состоящих из операторов. • Сегмент, управляющий работой всей программы в целом, называется основной программой. 16
üДля Фортрана характерен относительно примитивный синтаксис, что упрощает и одновременно повышает эффективность трансляции текста в машинный язык конкретной ЭВМ. • Благодаря этому обеспечивается более высокая скорость обработки данных, что имеет все возрастающее значение для любого языка, используемого для научных расчетов. üУстойчивость Фортрана обеспечивает его широкое распространение, что обусловливает исключительно высокую степень переносимости языка. • Большинство крупных научно технических прикладных программ написано на Фортране именно потому, что он обладает переносимостью и устойчивостью. 17
МС Фортран Метакоманды Программы и компилируемые части программ Символы Строки Имена Типы Операторы Выражения Система ввода/вывода Состав языка. 18
Метакоманды 19
Метаязык - это язык управления компилятором Фортрана, позволяющий расширить его возможности. Метакоманды позволяют определить варианты, воздействующие на все операции компиляции. • Например, с помощью метакоманд можно включить или выключить генерацию файла листинга, проверку кода при ошибке счета, или использовать такие возможности Фортрана, которые не входят в подмножество или в полный стандарт языка. Метаязык содержит команды, которые вставляются в файл исходного текста, каждая из которых занимает отдельную строку, и каждая из которых начинается с символа доллар ( $) в первой колонке. Метакоманды. 20
Существующие в настоящий момент метакоманды: $[NO]DEBUG • Включает [выключает] проверку при счете целых арифметических операций и присваемого GO TO $DECMATH • Указывает компилятору создавать действительные константы в десятичном виде с плавающей точкой $DO 66 • Приводит исполнение операторов DO к семантике Фортрана 66 Метакоманды. 21
$[NO]FLOATCALLS • Включает [выключает] выполнение операции с плавающей точкой через библиотеку подпрограмм с помощью инструкции CALL, а не через прерывания $INCLUDE: файл • Заставляет компилятор считать, что в этой точке вставлен файл $[NOT]LARGE [: имя [, имя ]. . . ] • Помечает именованные массивы для адресации вне DGROUP. $NOTLARGE отменяет этот раздел для именованных массивов. • Если имена массивов не указаны команда действует на все массивы. Метакоманды. 22
$LINESIZE: n $[NO]LIST $MESSAGE: ’строка’ • Формирует страницы шириной в n позиций листинга • Посылает часть листинга в файл лист. • $NOLIST останавливает генерацию листинга. • Посылает строку в кавычках на стандартное устройство вывода при исполнении Фортрана с начала до конца Метакоманды. 23
$PAGE • Начинает новую страницу листинга $PAGESIZE: n • Задает длину страницы листинга n $STORAGE: n • Определяет количество (n) байтов памяти для всех LOGICAL или INTEGER переменных в тексте Метакоманды. 24
$[NOT]STRICT • Запрещает возможности МSФортрана, не входящие в Фортран 77 или в полный стандарт языка. • $NOTSTRICT разрешает их. $SUBTITLE: 'подзаголовок' • Создает подзаголовок нескольких страниц листинга $TITLE: 'заголовок' • Создает заголовок для нескольких страниц листинга Метакоманды. для 25
Программы и компилируемые части программ 26
Компилятор Фортрана производит программные единицы. • Ими могут быть основная программа, подпрограмма или функция Вы можете откомпилировать любую из этих единиц отдельно и затем загрузить вместе, без объединения их еще до компиляции. Программы и компилируемые части программ. 27
Программа - любая программная единица, не начинающаяся с оператора FUNCTION или SUBROUTINE. Ø Первым оператором может быть PROGRAM, но такой оператор не обязателен. Ø Выполнение программы всегда начинается с первого выполняемого оператора в главной программе. В каждой выполняемой программе должна быть одна единственная главная программа. Программы и компилируемые части программ. 28
Подпрограмма - программная единица, которая может вызваться из других программных единиц оператором CALL. Ø Будучи вызванной, подпрограмма осуществляет набор действий, определенных ее выполняемыми операторами, и затем возвращает управление оператору, стоящему непосредственно за оператором вызова. Ø Подпрограмма не возвращает величины прямо, хотя они могут быть переданы в вызывающую программную единицу через параметры или общие переменные. Программы и компилируемые части программ. 29
Функция - программная единица, которая может быть употреблена в выражении. Ø Функция прямо возвращает величину, которая используется при вычислении выражения, и кроме того может возвращать величины через параметры. Ø Существует три вида функций: • внешние (подпрограммы-функции) • внутренние • функция-оператор Функция оператор не может быть скомпилирована отдельно. Программы и компилируемые части программ. 30
Подпрограмма блока данных программная единица, обеспечивающая начальные значения переменных в COMMON-блоках. Начальные значения переменных обычно присваиваются оператором DATA, но начальные значения переменных в COMMON не могут быть присвоены нигде кроме подпрограммы блока данных. Программы и компилируемые части программ. 31
Подпрограммы и функции позволяют создавать большие структурированные программы, которые можно делить на части. Программы и компилируемые части программ. 32
Разделение программы на части дает Вам следующие преимущества: ü Если программа большая, разделение ее на части облегчает создание, тестирование и ее сборку. ü Если программа большая и повторная компиляция всего исходного текста занимает много времени, разделение ее на части экономит время компиляции. ü Если надо использовать некоторые процедуры в других программах, то можно создать один объектный файл из этих процедур и затем загружать его в каждую из программ, в которой нужны эти процедуры. ü Если процедуру надо использовать в разных случаях разным образом, можно записать ее в отдельный файл и скомпилировать отдельно, затем для обеспечения ее вариативности Вы можете изменить содержание и даже переписать ее на Ассемблере, С или Паскале, а остальная часть программы не изменится. Программы и компилируемые части программ. 33
СИМВОЛЫ 34
При записи программ используются символы трех категорий: буквы • 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 специальные знаки • см. таблицу на следующем слайде СИМВОЛЫ. 35
Специальными знаками языка являются символы: Символ = + * / Наименование пробел равно плюс минус звездочка наклонная черта Символ ( ) , . ‘ & СИМВОЛЫ. Наименование открывающая скобка запятая точка апостроф коммерческое <и> 36
Набор символов каждого конкретного транслятора может отличаться от приведенного. В частности, в записи комментариев и текстовых констант допускается использование всех литер, которые поддерживаются установленной кодовой таблицей. 37
При построении элементов языка используются конструкции, представляющие собой неделимые символы – лексемы. К ним относятся, в частности, ключевые слова: Слово Значение АSSIGN присвоить DEFINE FILE определение файла ВАСKSPАСЕ назад DIMENSION размерность ВLОСК DАТА блок данных DO выполнить САLL вызвать ЕND конец СОММОN общий END FILE определение файла СОМРLЕХ комплексный ЕNTRY вход CОNTINUE продолжать EQUIVALENCE эквивалентность DАТА данные EXTERNAL внешний КЛЮЧЕВЫЕ СЛОВА. 38
Слово Значение FIND найти PRINT печать FORMAT формат PUNCH перфорация FUNCTION функция READ читать GO ТО перейти к REAL действительный IF если RETURN вернуться IMPLICIT неявный REWIND возврат INTEGER целый STOP стоп LOGICAL логический SUBROUTINE подпрограмма NAMELIST список ТО к PAUSE останов WRITE писать КЛЮЧЕВЫЕ СЛОВА. 39
В различных версиях языка список ключевых слов может быть расширен (или сокращен). 40
Основными символами являются также следующие конструкции: Ø логические константы: • . TRUE. (истина), • . FALSE. (ложь); Ø символ операции возведения в степень: • Ø знаки операций отношения: • • • **; . LT. (меньше чем), . LE. (не больше), . GT. (больше чем), . GE. (не меньше), . EQ. (равно), . NE. (не равно); Ø знаки логических операций: • . NOT. (не), • . AND. (и), • . OR. (или). СИМВОЛЫ. 41
СТРОКИ 42
Строка состоит из последовательности символов. Символы после 72 -го в строке игнорируются, строка короче 72 символов считается заполненной пробелами. Позиция символа в строке Фортрана имеет важное значение: • символы в позиции с 1 -ой по 5 -ую опознаются как метки операторов; • символы в позиции 6 являются признаком продолжения; • символы в позициях с 7 по 72 является собственно оператором Фортрана; • комментарии опознаются по символу "С" или звездочке "*" в первой позиции, а метакоманды по знаку доллара в первой позиции. С некоторыми исключениями, пробелы не являются значащими в Фортране. Символы табуляции имеют значение при некоторых обстоятельствах, которые будут описаны далее. СТРОКИ. 43
Строки Фортрана представляют собой что-либо следующее: Строка метакоманды • в первой позиции знак доллара • она управляет действиями компилятора Строка комментария • в первой позиции "С", "с" или звездочка, или вся строка пустая • игнорируется при обработке Начальная строка оператора • имеет пробел или нуль в 6 -ой позиции и все пробелы или метку оператора в позициях с 1 -ой по 5 -ую Строка продолжения • это не строка метакоманды, не строка коментария и не начальная строка; • с первой по пятую позиции пробелы, а в шестой символ, отличный от пробела или нуля СТРОКИ. 44
ОБРАЗЦЫ ПЕРФОКАРТ. 45
ОБРАЗЦЫ ПЕРФОКАРТ. 46
ИМЕНА 47
Именами обозначают переменные, массивы, функции или подпрограммы в вашей программе, независимо от того определены ли они Вами или системой. Ограничения на имена: 1. Максимальное число символов в имени не превышает 1320 (двадцать строк по 66 символов). 2. Начальный символ должен быть буквой, последовательность символов быть буквенноцифровой. 3. Пробелы игнорируются. 4. Значимыми являются первые шесть символов, остальные игнорируются. ИМЕНА. 48
С учетом ограничений на имя, любая последовательность символов может быть использована как имя в Фортране. Здесь нет зарезервированных имен, как в других языках. 49
Последовательности буквенных символов, используемые компилятором Фортрана как ключевые слова, не смешиваются с именами пользователя. • Компилятор различает ключевые слова по их контексту и поэтому на использование имен пользователями нет никаких ограничений. • Поэтому, например, в программе могут быть массивы с именами IF, READ или GOTO и ошибок при этом не возникает (до тех пор пока не изменят правило, которому подчиняются все массивы). ИМЕНА. 50
Использование ключевых слов как имен пользователя мешает "читабельности" программ, и его следует избегать. 51
ТИПЫ 52
Данные в Фортране относятся к одному из шести базовых типов: 1. Целые (INTEGER*2 и INTEGER*4) 2. Вещественные обычной точности (REAL*4 или REAL) 3. Вещественные двойной точности (REAL*8 или DOUBLE PRECISION) 4. Комплексный (COMPLEX*8 и COMPLEX*16) 5. Логический (LOGICAL*2 и LOGICAL*4) 6. Символьный (CHARACTER) ТИПЫ. 53
Типы данных объявляются. Если тип не объявлен, то тип данных определяется по первой букве имени • по умолчанию или из оператора IMPLISIT Оператор описания типа может также включать информацию о размерности ТИПЫ. 54
ОПЕРАТОРЫ 55
Операторы представляют собой набор функций, таких как вычисления, запись результатов вычислений, изменение цепочек управления, чтение и запись файлов и определение информации для компилятора. Операторы Фортрана разделяются на два основных класса: Выполняемые операторы вызывают требуемые действия Невыполняемые операторы никаких действий не вызывают. Вместо этого они определяют, описывают или классифицируют элементы программ, такие как входные точки, данные или программные единицы. ОПЕРАТОРЫ. 56
Функциональные категории операторов: Присваивание Комментарий Управления DАТА FORMAT • Выполняемый. • Присваивает величину переменной или элементу массива. • Невыполняемый. • Допускает комментарии внутри подпрограммы. • Выполняемый. • Управляет порядком выполнения операторов. • Невыполняемый. • Присваивает начальные значения переменным • Невыполняемый. • Обеспечивает информацию о редактировании данных ОПЕРАТОРЫ. 57
Ввод/вывод • Выполняемый. • Определяет тексты и адреса передачи данных и другие особенности ввода/вывода. Описание • Невыполняемый. • Определяет атрибуты переменных, массивов и имен функций программиста. Функцияоператор • Невыполняемый. • Определяет простую, локально используемую функцию. Заголовок программной единицы • Невыполняемый. • Определяет начало программной единицы и описывает ее формальные параметры. ОПЕРАТОРЫ. 58
ВЫРАЖЕНИЯ 59
Выражение - это формула для вычисления величины, оно содержит последовательность операндов и операторов. Операнды могут содержать обращения к функциям, переменные, константы и даже другие выражения. Операторы определяют действия, которые необходимо произвести над операндами. В следующем выражении плюс (+) - это оператор, а A и B - операнды: A+B ВЫРАЖЕНИЯ. 60
Существует четыре основных вида выражений в Фортране: 1. Арифметические выражения 2. Символьные выражения 3. Выражения отношения 4. Логические выражения ВЫРАЖЕНИЯ. 61
Каждый тип выражений работает с определенным типом операндов и использует определенный тип операторов. • Результатом вычисления каждого выражения является величина определенного типа Выражения не являются операторами, но могут входить в них как их части. • В следующем примере вся строка - это оператор, но только часть его после знака равенства является выражением: • X = 2. 0/3. 0 + A + B ВЫРАЖЕНИЯ. 62
СИСТЕМА ВВОДА/ВЫВОДА 63
Ввод - это передача данных из внешней среды или из внутреннего файла во внутреннюю память. Процесс передачи называется чтением. Вывод - это передача данных из внутренней памяти во внешнюю среду или внутренний файл. во Этот процесс называется записью. СИСТЕМА ВВОДА/ВЫВОДА. 64
В Фортране есть: Ø набор операторов, передачу данных; обеспечивающих Ø набор операторов для редактирования таких данных; Ø несколько вспомогательных операторов ввода/вывода, управляющих внешней средой, или определяющих, или описывающих свойства соединения с внешней средой. СИСТЕМА ВВОДА/ВЫВОДА. 65
Функции ввода/вывода Операторы ввода/вывода Передача данных READ, WRITE Вспомогательные функции ввода/вывода OPEN, CLOSE Определение положения в файле BACKSPASE, ENDFILE, REWIND, INQUIRE, LOCKING, BACKSPASE, ENDFILE СИСТЕМА ВВОДА/ВЫВОДА. 66
При описании системы ввода/вывода Фортрана важно определить такие понятия как ЗАПИСЬ и ФАЙЛ. 67
Запись. Понятие, на котором основана система файлов Фортрана. Запись - это последовательность символов или величин. Существует три вида записей: ü форматные, ü бесформатные ü конец файла. СИСТЕМА ВВОДА/ВЫВОДА. 68
Файл. Последовательность записей. Файлы могут быть внешними или внутренними. Внешние файлы - это файлы, относящиеся к устройству, или само устройство. Внутренний файл это текстовая переменная, которая используется либо как текст, либо как назначение некоторых действий по форматному вводу/выводу. СИСТЕМА ВВОДА/ВЫВОДА. 69
Все файлы имеют следующие атрибуты: a) имя файла (произвольное) b) указатель позиции в файле c) структура (форматная, неформатная или двоичная) d) метод доступа прямой) (последовательный или СИСТЕМА ВВОДА/ВЫВОДА. 70
Хотя возможно большое разнообразие типов файлов, большинство приложений сводится к двум типам: неявно открытые и явно открытые, внешние, последовательные, форматные файлы. 71