Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PP_KR22.doc
Скачиваний:
11
Добавлен:
10.12.2018
Размер:
507.9 Кб
Скачать

24. Язык фортран 90. Общая характеристика.

3 класса (категории) языков параллельного программирования:

1. Языки с явным описанием взаимодействий параллельных процессов (Параллельный C, OCCAM); 2. Языки с неявным описанием параллелизма (способом представления структур данных) (FORTRAN); 3. Не процедурные языки (НОРМА).

Фортра́н (Fortran)  — первый язык программирования высокого уровня, имеющий транслятор. Создан в период с 1954 по 1957. Разработчики ориентировались на военные цели и задачи физики. 2 раза в год – симпозиум по параллельным вычислениям. Название Fortran  от FORmula TRANslator (переводчик формул). Фортран широко используется в первую очередь для научных и инженерных вычислений. В Fortran-90 включены инструкции для параллельного прог-ания.

Фортран - язык фиксировано-свободных форматов записи. Любой оператор состоит из 80-ти символов. Состоит из метки (5 символов), далее пробел и до конца - операнды. Если не хватает 80 символов, то можно писать на следующей строке при условии, что шестым символом идет символ, отличный от пробела.

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

Если буква С в первой позиции то далее будет комментарий.

Типы данных: INTEGER, REAL, LOGICAL (bool). Язык с неявным описанием типа. Все, которые начинаются с I,J,K,L,M,N – по умолчанию целые, а прочие – вещественные. Явное описание, возможно, любым INTEGER B5. Неявное описание IMPLICIT REAL J. Массивы описываются словом DIMENSION A(10,10), в скобках указываются верхние границы индексов, а нижние всегда единица. Максимальное измерение 7. В памяти располагаются по столбцам.

Структура программы.

ОСНОВНАЯ

ПРОГРАММА

ПОДПРОГРАММА1

ПОДПРОГРАММА2

ПОДПРОГРАММАn

Каждый раздел заканчивается словом «END». Описание переменных идет сначала раздела. Подпрограммы начинаются со слов SUBROUTINE или FUNCTION.

Операторы:

1. Оператор присваивания: <переменная> = <выражение>

** - возведение в степень

2. Логические отношения: .EQ, .NE, .LT, .GT, .GE, .LE

3. Логические операции .NOT, .AND, .OR, .XOR

4. Логические константы .TRUE, .FALSE

Переход GOTO <метка>

Логический IF <логическое выражение> <оператор1> <оператор2>

Арифметический IF <арифметическое выражение> (M1, M2, M3)

Если меньше нуля, то переход на M1, равно нулю M2, больше M3.

Цикл

DO <метка> <оператор цикла> = <начальное значение>, <верхняя граница>

<тело цикла>

<метка>

Оператор CONTINUE – аналогия break

Вызов процедуры CALL <имя процедуры> (список операторов)

Операторы ввода и вывода

В языке фортран осуществляется форматный ввод и вывод. Это означает что операторы ввода и вывода применяются в паре с форматом, которое может быть помещено в любой части программы. Обычно № канала: для ввода 5, для вывода 6.

READ (№ канала, метка формата) список ввода; WRITE (№ канала) список вывода.

Метка формата это FORMAT (I4, F8.3 …). Каждая спецификация может иметь кратность повторения и заключаться в скобки : 2(4I4,5F8.3). Работает как цикл. Первый вывод при выводе – управляющий: 1X. Для размещения введенного формата есть спецификации целых I, (доп. еще E, F), затем идет число позиции, например I4. Для F – F8.3, затем число позиций после запятой. Для E10.5.1 : второе – для мантиссы, а третье для изображения чисел после запятой. Для порядка обозначатся E+01. Спецификация L – для логических переменных (например, L4), спецификация X – пробег (2X – два пробега)

Для ввода/вывода массива можно использовать неявный цикл

DIMENSION A(5), B(3,3)

WRITE (6,1) ((B(I,J), J=1,3), I=1,3)

1FORMAT(1X,3F8.3)

Отличия Fortran 90 (1991) от Fortran:

  • Введены управляющие операторы и конструкции. Добавлены DO … END DO (вместо завершения цикла меткой), DO WHILE, оператор передачи управления на начало цикла CYCLE, конструкция выбора SELECT CASE (для замены громоздких конструкций IF и операторов GOTO), а также заключительный оператор программной единицы, модульной или внутренней процедуры END[3].

  • Введён инструментарий указателей (по аналогии с языком С).

  • Операторы работы с динамической памятью: ALLOCATE, DEALLOCATE и т.д.

  • Добавлены компоненты MODULE, PRIVATE, PUBLIC, CONTAINS и т.д.

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

  • Стандартные операции присваивания, сложения, вычитания, а также деления и умножения на число распространены на массивы и их секции, определяемые сечениями. В этом случае осуществляется поэлементное присваивание.

  • Появились новые встроенные функции, в основном для работы с массивами.

  • В языке появились элементы ООП. Введены производные типы данных.

  • Добавлены дополнительные функции для работы со строковыми данными

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]