Вам бонус- начислено 1 монета за дневную активность. Сейчас у вас 1 монета

АЛГОРИТМИЧЕСКИЙ КОМПИЛЯТОР ФОРТРАН

Лекция



Привет, мой друг, тебе интересно узнать все про фортран, тогда с вдохновением прочти до конца. Для того чтобы лучше понимать что такое фортран , настоятельно рекомендую прочитать все из категории Языки и методы программирования. Теория трансляции.

фортран - самый ранний из языков высокого уровня. Он применяется для математических задач и научных исследований и является в высокой степени платформенно независимым. В фортране накоплено громадное множество прикладных библиотек, позволяющих быстро и качественно провести любое научное изыскание. Расширение файлов .for .f .f90 .f95, Система типов: строгая, статическая. Семантика: императивный, параллельный. Класс языка : процедурный, модульный, c элементами объектно-ориентированного программирования. Тип исполнения: компилируемый. Появился в 1957.Последняя версия языка Fortran 2018 (ранее известная как Fortran 2015) была выпущена 28 ноября 2018 года

Компилятор Fortran - это программное обеспечение, которое используется для преобразования исходного кода на языке программирования Fortran в машинный код, который может быть исполнен компьютером.

Fortran (сокращение от "Formula Translation") - один из самых старых и широко используемых языков программирования, специально разработанный для научных и инженерных вычислений. Он был создан в 1950-х годах и с тех пор прошел несколько версий и обновлений.

Компилятор Fortran выполняет несколько основных задач:

  1. Анализ исходного кода: Компилятор анализирует синтаксис исходного кода на Fortran, проверяет его на соответствие правилам языка и выявляет возможные ошибки или проблемы в коде.

  2. Оптимизация: Компилятор может производить различные оптимизации для улучшения производительности и эффективности скомпилированной программы. Это может включать в себя оптимизацию циклов, устранение лишних вычислений или использование специфических инструкций аппаратного обеспечения.

  3. Генерация машинного кода: Компилятор преобразует анализированный и оптимизированный исходный код на Fortran в машинный код, который может быть исполнен компьютером. Машинный код представляет собой набор инструкций, понятных для процессора.

  4. Связывание: В случае, если программа состоит из нескольких модулей или подпрограмм, компилятор может осуществлять связывание (linking) этих модулей, чтобы создать окончательный исполняемый файл или библиотеку.

После компиляции исходного кода Fortran с использованием компилятора, полученный исполняемый файл может быть запущен на компьютере или другом устройстве, где будет выполняться вычисления в соответствии с написанной программой на Fortran.

Hello, World! на фортране

Фиксированный формат (символами «␣» выделены пробелы в позициях строки с 1 по 6):

␣␣␣␣␣␣PRINT*, 'Hello, World!'
␣␣␣␣␣␣END

Свободный формат:

print *, "Hello, World!"
end

Здесь представлены компоненты составляющие язык Фортран применительно к версии МS-Фортран.

Содержание:

  1. Метакоманды MS-Фортрана
  2. Программы и компилируемые части программ, Аргументы подпрограмм
  3. Ввод / Вывод в Фортране
  4. Операторы Фортрана
  5. Выражения Фортрана
  6. Имена в Фортране
  7. Типы в Фортране
  8. Строки в Фортране
  9. Символы в Фортране

Метакоманды MS-Фортрана

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

Метаязык - это уровень языка, позволяющий расширить использование компилятора MS-Фортрана. Хотя в большинстве реализаций Фортрана есть средства управления компилятором, метакоманды MS-Фортрана не входят в стандарт Фортрана (и поэтому не мобильны).

Ниже приведены существующие в настоящий момент метакоманды:

  $[NO]DEBUG       $[NO]LARGE  $PAGESIDE
  $DEVFNH          $LINESIDE   $STORAGE
  $DO66            $[NOT]LIST  $[NOT]STRICT
  $[NO]FLOATCALLS  $MESSADE    $SUBTITLE
  $INCLUDE         $PAGE       $TITLE

Программы и компилируемые части программ

Компилятор MS-Фортрана производит программные единицы. Ими могут быть основная программа, подпрограмма или функция. Вы можете откомпилировать любую из этих единиц отдельно и затем загрузить их вместе без объединения их еще до компиляции.

1.Программа.

Любая программная единица, не начинающаяся с оператора FUNCTION или SUBROUTINE. Первым оператором может быть PROGRAM, но такой оператор не обязателен. Выполнение программы всегда начинается с первого выполняемого оператора в главной программе. Следовательно в каждой выполняемой программе должна быть единственная главная программа.

2.Подпрограмма.

Программная единица,которая может вызваться из других программных единиц оператором CALL, будучи вызванной, подпрограмма осуществляет набор действий, определенных ее выполняемыми операторами, и затем возвращает управление на оператор, стоящий непосредственно за оператором вызова. Подпрограмма не возвращает прямо величины, хотя они могут быть переданы в вызывающую программную единицу через параметры или общие переменные.

3.Функция.

Программная единица, которая может быть употреблена в выражении. Функция прямо возвращает величину, которая используется при вычислении этого выражения, и кроме того может возвращать величины через параметры. Существует три вида функций: внешние, внутренние и функция-оператор. (Функция-оператор не может быть скомпилирована отдельно).

4.Подпрограмма блока данных.

Программная единица, обеспечивающая начальные значения переменных в COMMON-блоках. Переменные обычно заводятся оператором DATA, но переменные в COMMON не могут быть заведены нигде кроме подпрограммы блока данных.

Подпрограммы и функции позволяет Вам создавать большие структурированные программы, которые можно делить на части. Об этом говорит сайт https://intellect.icu . Это дает преимущества в следующих ситуациях:

  1. Если программа большая, разделение ее на части облегчает создание, тестирование и ее сборку.
  2. Если программа большая и повторная компиляция всего исходного текста занимает много времени, разделение ее на части экономит время компиляции.
  3. Если Вам надо использовать некоторые процедуры во многих других программах, Вы можете создать один объектный файл из этих процедур и затем загружать его в каждую из программ, в которой нужны эти процедуры. Это будет Ваша пользовательская библиотека подпрограмм.
  4. Если процедуру надо использовать в разных случаях разным образом, можно записать ее в отдельный файл и скомпилировать отдельно. Затем для обеспечения ее вариативности Вы можете изменить содержание и даже переписать имена Ассемблере или MS- Паскале, а остальная часть Вашей программы не изменится.

Аргументы подпрограмм

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

Аргументы подразделяются на формальные и фактические. Аргументы заключаются в скобки после имени подпрограммы и разделяются запятыми. Имена фактических и формальных аргументов могут совпадать.

Формальные аргументы — это аргументы подпрограммы (функции), указанные при ее описании. При отсутствии аргументов у подпрограммы, скобки могут быть опущены. У функции скобки расставляются и при отсутствии формальных аргументов. Формальный параметр-процедура называется формальной процедурой.

Фактические аргументы — это аргументы, передаваемые подпрограмме или функции для выполнения при ее вызове. Функция без аргументов вызывается с пустым списком в скобках, подпрограмма — без скобок.

Формальные и фактические аргументы должны быть согласованы. Типы аргументов и разновидности их вида должны быть одинаковыми, массиву должен соответствовать массив (или сечение массива) той же конфигурации.

Существуют массивы, перенимающие конфигурацию и перенимающие размер как формальные аргументы процедур. Массив, перенимающий конфигурацию — это формальный аргумент-массив, который наследует конфигурацию соответствующего ему фактического массива. У такого массива при его объявлении задается размерность (совпадающая с размерностью фактического аргумента-массива) и опускаются верхние границы. По умолчанию нижние границы равны 1, но могут быть заданы произвольными. Число и значение элементов массива, перенимающего конфигурацию, точно наследуются от фактического аргумента-массива. Массив, перенимающий размер — это оставленный для совместимости более ранний, свойственный языку Fortran’77, способ описания наследующих массивов. У таких массивов наследуется только последнее измерение, верхняя граница которого описывается звездочкой (*). При этом формальный и фактический массивы-аргументы могут иметь разную размерность. Массивы, перенимающие конфигурацию и размер, не могут быть динамическими или быть указателями. Процедуры, имеющие наследующие массивы, должны иметь явный интерфейс.

Строки-формальные аргументы также могут наследовать (перенимать) длину у соответствующего фактического аргумента-строки. Строки, перенимающие длину, описываются посредством символа *: Character (Len = *) имя_строки. При явном задании длины строки, длина строки-формального аргумента не может быть больше соответствующего фактического аргумента-строки.

Аргументы бывают позиционными и ключевыми. Позиционные формальные и фактические аргументы связываются друг с другом по порядку их расположения в списке аргументов, который должен совпадать. Ключевые — по имени ключа, который совпадает с именем формального аргумента. Ключевые позволяют нарушить порядок следования аргументов или пропустить часть из них. Так, для подпрограммы с заголовком Subroutine ONE (A, B, C, D) вызов может быть таким: Call ONE (D=Z, C=Y, B=X, A=W), где W, X, Y, Z — фактические аргументы.

Ключевые аргументы позволяют иметь необязательные аргументы, которые могут быть опущены. В этом случае необязательные аргументы должны иметь атрибут Optional. Например, если задано Optional C, D, то в этом случае возможен вызов Call ONE (B=X, A=W).

Процедуры с необязательными параметрами должны иметь явный интерфейс.

Ввод / Вывод в Фортране

Ввод - это передача данных из внешней среды или из внутренного файла во внутреннюю память. Процесс передачи называется чтением. Вывод - это передача данных из внутренней памяти во внешнюю среду или во внутренний файл. Этот процесс называется записью.

В Фортране есть набор операторов, обеспечивающих такую передачу данных, кроме того существует набор операторов для редактирования таких данных.

В дополнение к операторам передачи данных, существует несколько вспомогательных операторов ввода/вывода, управляющих внешней средой, или определяющих, или описывающих свойства соединения с внешней средой.

В таблице 1-1 приведены операторы ввода/вывода, осуществляющие каждую из этих трех функций.

  ---------------------------T---------------------------¬
  |Функции ввода/вывода      | Операторы ввода/вывода    |
  +--------------------------+---------------------------+
  | Передача данных          | READ                      |
  |                          | WRITE                     |
  |                          |                           |
  | Вспомогательные функции  | OPEN                      |
  | ввода/вывода             | CLOSE                     |
  |                          | BACKSPASE                 |
  |                          | ENDFILE                   |
  |                          | REWIND                    |
  |                          | INQUIRE                   |
  |                          | LOCKING                   |
  |                          |                           |
  | Определение положения    | BACKSPASE                 |
  | в файле                  | ENDFILE                   |
  |                          | REWIND                    |
  L--------------------------+----------------------------
          Таб. 1-1 операторы ввода/вывода.

Для понимания системы ввода/вывода нужны также следующие положения:

1.Записи.

Понятие, на котором основана система файлов Фортрана. Запись - это последовательность символов или величин. Существует три вида записей: форматные, бесформатные и конец файла.

2. Файлы.

Последовательности записей. Файлы могут быть внешними или внутренними.

Внешние файлы - это файлы, относящиеся к устройству, или само устройство. Внутренний файл - это текстовая переменная, которая используется либо как текст, либо как назначение некоторых действий по форматному вводу/выводу.

Все файлы имеют следующие атрибуты:
a. имя файла (произвольное)
b. указатель позиции в файле
c. структура (форматная, неформатная или двоичная)
d. метод доступа (последовательный или прямой)

Хотя возможно большое разнообразие типов файлов, большинство приложений сводится к двум типам: неявно открытые и явно открытые, внешние, последовательные, форматные файлы. Смотрите часть 3 "Операторы", где приведены описания операторов ввода/вывода. Для изучения полного описания записей, файлов и редакции форматной информации смотрите часть 4 "Система ввода/вывода".

Операторы Фортрана

Операторы представляют собой набор функций, таких как вычисления, запись результатов вычислений, изменение цепочек управления, чтение и запись файлов и определение информации для компилятора. Операторы Фортрана разделяются на два основных класса: выполняемые и невыполняемые.

Выполняемые операторы вызывают требуемые действия. Невыполняемые операторы никаких действий не вызывают. Вместо этого они определяют, описывают или классифицируют элементы программ, такие как входные точки, данные или программные единицы. Таблица 1-2 описывает функциональные категории операторов.

--------------------T------------------------------------¬
|    Категория      |           Описание                 |
+-------------------+------------------------------------+
| Присваивание      | Выполняемый. Присваивает величину  |
|                   | переменной или элементу массива.   |
|                   |                                    |
| Комментарий       | Невыполняемый. Допускает коммента- |
|                   | рии внутри подпрограммы.           |
|                   |                                    |
| Управления        | Выполняемый. Управляет порядком вы-|
|                   | полнения операторов.               |
|                   |                                    |
| DАТА              | Невыполняемый. Присваивает началь- |
|                   | ные значения переменным.           |
|                   |                                    |
| FORMAT            | Невыполняемый. Обеспечивает инфор- |
|                   | мацию о редактировании данных.     |
|                   |                                    |
| Ввод/вывод        | Выполняемый. Определяет тексты и   |
|                   | адреса передачи данных идругие осо-|
|                   | бенности ввода/вывода.             |
|                   |                                    |
| Описание          | Невыполняемый. Определяет отрибуты |
|                   | переменных, массивов и имен функций|
|                   | программиста.                      |
|                   |                                    |
| Функция-оператор  | Невыполняемый. Определяет простую, |
|                   | локально используемую функцию.     |
|                   |                                    |
|                   |                                    |
| Заголовок         | Невыполняемый. Определяет начало   |
| программной       | программной единицы и описывает ее |
| единицы           | формальные параметры.              |
|                   |                                    |
L-------------------+-------------------------------------
      Таб. 1-2 Категории операторов Фортрана.

Для полной информации об использовании операторов MS-Фортана смотрите часть 3 "Операторы".

Выражения в Фортране

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

В следующем выражении плюс (+) - это оператор, а A и B - операнды:

A + B

Существует четыре основных вида выражений в Фортране:
1. Арифметические выражения
2. Символьные выражения
3. Выражения отношения
4. Логические выражения

Каждый тип выражений работает с определенным типом операндов и использует определенный тип операторов. Результатом вычисления каждого выражения является величина определенного типа.

Выражения не являются операторами, но могут входить в них как их части. В следующем примере вся строка - это оператор, но только часть его после знака равенства является выражением:

X = 2.0/3.0 + A + B

Для подробного рассмотрения выражений в MS-Фортране смотрите часть 2 "Термины и концепции".

Имена в Фортране

Именами обозначают переменные, массивы, функции или подпрограммы в вашей программе, независимо от того определены ли они Вами или самой системой MS-Фортран. Имя в Фортране содержит последовательнось буквенноцифровых символов. Ограничения на имена таковы:
1. Максимальное число символов в имени не привышает 1320 (двадцать строк по 66 символов).
2. Начальный символ должен быть буквой, последовательность символов быть буквенноцифровой.
3. Пробелы игнорируются.
4. Значимыми являются первые шесть символов, остальные игнорируются.

С учетом этих ограничений на имя, любая последовательность символов может быть использована как имя в Фортране. Здесь нет зарезервированных имен, как в других языках.

Последовательности буквенных символов, используемые компилятором MS-Фортрана как ключевые слова, не смешиваются с именами пользователя. Компилятор различает ключевые слова по их контексту и поэтому на использование имен пользователями нет никаких ограничений. Поэтому, например, в программе могут быть массивы с именами IF,READ или GOTO и ошибок при этом не возникает (до тех пор пока не изменят правило, которому подчиняются все массивы). Однако использование ключевых слов как имен пользователя мешает "читабельности" программ, и его следует избегать.

Для получения подробной информации об области действия и использовании имен в MS-Фортране смотрите часть 2 "Термины и концепции".

Типы в Фортране

Данные в MS-Фортране относятся к одному из шести базовых типов:
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)

Типы данных объявляются. Если он не объявлен, то тип данных определяется по первой букве имени (по умолчанию или из оператора IMPLISIT). Оператор описания типа может также включать информацию о размерности.

Для более полной информации о типах данных смотрите часть 2. Для изучения детального описания оператора описание типа смотрите часть 3 "Операторы".

Строки в Фортране

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

АЛГОРИТМИЧЕСКИЙ КОМПИЛЯТОР ФОРТРАН

Позиция символа в строке Фортрана имеет важное значение. Символы в позиции с 1-ой по 5-ую опознаются как метки операторов, символы в позиции 6 являются признаком продолжения, а символы в позициях с 7 по 72 является собственно оператором Фортрана. Коментарии опознаются по символу "С" или звездочке "*" в первой позиции, а метакоманды по знаку доллара в первой позиции.

С некоторыми исключениями, пробелы не являются значащими в Фортране. Символы табуляции имеют значение при некоторых обстоятельствах, описанных в части 2 "Термины и концепции".

Строки Фортрана представляют собой что-либо следующее:
1. Строка метакоманды.
2. Строка комментария.
3. Начальная строка (оператора).
4. Строка продолжения.

У метакоманды в первой позиции знак доллара и она управляет прохождением компилятора МS-Фортрана.

В строке коментария в первой позиции "С", "с" или звездочка, или вся строка пустая и игнорируется при обработке.

Начальная строка оператора имеет пробел или нуль в 6-ой позиции и все пробелы или метку оператора в позициях с 1-ой по 5-ую.

Строка продолжения - это не строка метакоманды, не строка коментария и не начальная строка. У нее с первой по пятую позиции пробелы, а в шестой символ, отличный от пробела или нуля.

Смотрите часть 2 "Термины и концепции" для подробностей использования различных видов строк МS-Фортрана и как из операторов составлять программы и совместные части программ.

Символы в Фортране

В основном, программы на Фортране - это последовательность символов. Когда эти символы обрабатываются компилятором, они интерпретируются в различных контекстах как символы, имена, метки, константы, строки и операторы.

Символы, используемые в текстах программ на МS-Фортране, относятся к набору символов ASCII, полный список которого приведен в приложении С "Коды символов ASCII".Однако набор символов можно поделить на три основных группы:
1. 52 малых и больших латинских буквы (от A до Z и от a до z)
2. 10 цифр (от 0 до9)
3. Специальные символы (все другие печатаемые символы из набора символов ASCII).

Для более полной информации об использовании символов в МS-Фортране смотрите часть 2 "Термины и концепции".

Вау!! 😲 Ты еще не читал? Это зря!

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

создано: 2014-09-30
обновлено: 2023-06-11
132771



Рейтиг 9 of 10. count vote: 2
Вы довольны ?:


Поделиться:

Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выплнения задания
  • Возможно примерение функции гаранта на сделку
  • Приорететная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можите продать(исполнителем) или купить(заказчиком) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно примерение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей



Комментарии


Оставить комментарий
Если у вас есть какое-либо предложение, идея, благодарность или комментарий, не стесняйтесь писать. Мы очень ценим отзывы и рады услышать ваше мнение.
To reply

Языки и методы программирования. Теория трансляции

Термины: Языки и методы программирования. Теория трансляции