![](/user_photo/2706_HbeT2.jpg)
- •Алгоритм выхода из тупиковой ситуации с минимальной ценой
- •Алгоритмы защиты от взаимных блокировок. Классификация алгоритмов защиты.
- •Асинхронные параллельные процессы. Проблема «производитель-потребитель».
- •Асинхронные параллельные процессы. Проблемы синхронизации параллельных процессов.
- •Высокопроизводительный Фортран hpf. Общая характеристика.
- •Задача предотвращения тупиков. Алгоритм банкира.
- •1. Некоторые процессы бесконечно ожидают освобождения требуемых ресурсов, не производя никакой полезной работы
- •2. Процессы удерживают некоторые ресурсы не выполняя никакой полезной работы, и система без внешнего воздействия не может выйти из этого состояния.
- •Задача предотвращения тупиков. Алгоритм упорядоченных классов.
- •1. Некоторые процессы бесконечно ожидают освобождения требуемых ресурсов, не производя никакой полезной работы
- •2. Процессы удерживают некоторые ресурсы не выполняя никакой полезной работы, и система без внешнего воздействия не может выйти из этого состояния.
- •Конструктор массивов в языке Фортран 90.
- •Непроцедурный язык Норма. Понятие сетки. Понятие области.
- •Оператор полагать в языке норма.
- •Операторы языка Фортран 90
- •Операции над массивами в языке Фортран 90.
- •Организация ввода и вывода в языке норма.
- •Понятия критического ресурса и критической секции.
- •Проблема «Производитель-потребитель». Общие семафоры.
- •Проблема взаимных блокировок (тупиков).
- •Программирование пространственно-временных структур на языке оккам.
- •Секции массивов в языке фортран 90.
- •19. Система программирования pvm (Parallel Virtual Machine).
- •20. Система параллельного программирования dvm(Distributed Virtual Machine).
- •21. Система параллельного программирования mpi.
- •22. Структура программы на языке норма. Оператор итерация.
- •23. Условные области в языке норма.
- •24. Язык фортран 90. Общая характеристика.
- •25,26. Язык оккам. Общая характеристика. Операторы языка оккам.
24. Язык фортран 90. Общая характеристика.
Фортра́н (Fortran) — первый язык программирования высокого уровня, имеющий транслятор. Создан в период с 1954 по 1957. Название Fortran является акронимом отFORmula TRANslator (переводчик формул). Фортран широко используется в первую очередь для научных и инженерных вычислений.
Фортран - язык фиксировано-свободных форматов записи. Любой оператор состоит из 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 для частичной замены циклов (правая часть оператора присваивания не изменяется). Маскирование присваивания распространяется почти на все операторы, конструкции и функции, оперирующие с массивами.
-
Стандартные операции присваивания, сложения, вычитания, а также деления и умножения на число распространены на массивы и их секции, определяемые сечениями. В этом случае осуществляется поэлементное присваивание.
-
Появились новые встроенные функции, в основном для работы с массивами.
-
В языке появились элементы ООП. Введены производные типы данных.
-
Добавлены дополнительные функции для работы со строковыми данными