Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Фортран Теория Информатика

.pdf
Скачиваний:
40
Добавлен:
24.01.2023
Размер:
11.02 Mб
Скачать

1.Общая сравнительная характеристика языка Фортран, основные версии языка. Фортран — скоращение от Formula Translator. — первый язык программирования

высокого уровня. Он используется для числовых и научных вычислений. Оригинальные версии Fortran I, II, III сегодня считаются устаревшими.

Самые старые версии, которые еще используются Fortran IV и Fortran 66. Наиболее часто использующиеся версии на сегодняшний день Fortran 77, 90, 95. Версии Фортран 90 и 95 отличаются наличием многопоточности и прямой

обработки массивов.

2.Структура главного программмного модуля Фортран-программы.

Любая программа имеет одну головную программу, которая в общем случае

имеет вид:

program имя_программы операторы описания исполняемые операторы внутренние процедуры

end program имя_программы

Любая самостоятельная программа на Фортран должна содержать метку начала и конца программы.

3.Правила записи Фортран-программы. Фиксированный и свободный формат текста.

-длина строки текста равна 132 символа

-запись оператора может начинаться с любой позиции строки

-на одной строке могут размещаться несколько операторов разделенныхточкой

сзапятой (;)

-если строка завершается знаком &, то последующая строка рассматривается как продолжение предыдущей строки

-в операторе Фортрана может быть до 7200 символов, а число строк продолжения при свободном формате не может быть свыше 54

-символы расположенные после восклицательного знака ! рассматриваются как комментарий

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

4.Целый тип данных в Фортране. Разновидности. Особенности записи констант. Целый тип данных — integer.

kind — параметр разновидности типа. Пример:

integer (kind=2) m

integer(1) занимает 1 байт integer(2) занимает 2 байта integer(3) занимает 4 байта.

Целые константы можно задать по произвольному основанию: 2#11010, 8#62 и т. д. Если основание не указано, считается, что константа задается шестнадцатиричной системой счисления.

Целочисленную константу можно записать несколькими способами: integer:: a

a = 10

или используя именованную константу: integer, parameter::: a=10.

5.Вещественный тип данных в Фортране. Разновидности. Особенности записи констант.

Вещественный тип данных — real. Хранит числа с плавающей запятой. real(4) дробная часть может содержать до 6 десятичных знаков (4 байта) real(8) дробная часть может содержать до 15 десятичных знаков (8 байт) Вещественные константы могут быть представлены в E, F, D формах.

Целая или дробная часть в F-форме могут быть опущены, но не одновременно. Вещественные константы формы F и D записываются:

[±][мантисса] Е/D [±] [порядок]

6.Логический тип данных в Фортране. Разновидности. Особенности записи констант.

Объект логического типа принимает два значения: .TRUE. и .FALSE.

Объект стандартного логического типа объявляется оператором Logical. Также возможно задать логические объекты с параметром разновидности типа.

Константа логического типа записывается: logical, parameter:: a= .TRUE.

7.Символьный тип данных в Фортране. Строки.

Объявление символьных данных выполняется оператором character. Для символьного типа существует встроенная операция конкатенация

(склеивания), которая обозначается двумя слешами //.

character:: ch=‘a’

! Символьная переменная длиной 1 символ.

character (len = 20) st

! Символьная переменная длиной 20 символов.

st = ‘Example’.

! Присваивание значения символьной переменной.

st = trim(st)//‘_’//ch

! st = Example_a

8. Производные типы данных.

Производный тип данных — одно или несколько объявлений переменных как правило разного типа, сгруппированного под одним типом.

Пример произвольного типа данных:

type exam

! Объявление производного типа

character(20) name

 

integer m1, m2, m3

! Компоненты

end type exam

 

9.Арифметические операции

**Возведение в степень *, / Умножение и деление

+,- Унарные сложение и вычитание Операции выполняется в порядке убывания приоритета операций.

Приоритет операций возможно изменить с помощью скобок.

10. Операция отношения в Фортран Операция отношения сравнивает значения двух арифметических выражений.

Результаты выражения отношения является .TRUE. и .FALSE. Операндами операции могут быть скаляры, массивы и сечения.

Операции отношения в Фортране могут быть записаны в двух формах:

.LT.

или

<

меньше;

.LE.

или

<=

меньше или равно;

.GT.

или

>

больше;

.GE.

или

>=

больше или равно;

.EQ.

или

==

равно;

.NE.

или

/=

не равно

11. Логические операции в Фортране

Логические операции имеют результатом логическое значение истина .TRUE.

или ложь .FALSE.

 

.NOT.

отрицание

.AND.

логическое И

.OR.

логическое ИЛИ

.XOR.

логическое исключающее ИЛИ

.EQV.

эквивалентность

.NEQV.

неэквивалентность

12. Особенности записи арифметических и логических выражений в Фортране. Приоритет операций.

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

·делить на нуль;

·возводить равный нулю операнд в отрицательную или нулевую степень;

·возводить отрицательный операнд в нецелочисленную степень.

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

Приоритет операций в порядке убывания:

·арифметические операции;

·операции отношения;

·логические операции.

13. Структурированные операторы Фортрана. Ветвление. [В данном вопросе достаточно нарисовать блок-схему общего случая блока условия (if-else) и записать код на фортране. Дальше сам экзаменатор спросит по необходимости об остальных случаях].

IF(ЛВ) THEN

IF(ЛВ) оператор

БОК1

IF(ЛВ) THEN

END IF

БОК1

 

ELSE

 

БОК2

 

END IF

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

Различают ветвления четырех видов:

если - то;

если - то - иначе;

если - то - иначе - если;

выбор по ключу.

Если-то:

IF(ЛВ) THEN! Запись на Фортране

БОК1 END IF

Если-то-иначе:

IF(ЛВ) THEN! Запись на Фортране

БОК1 ELSE

БОК2 END IF

Замечание. Оператор END IF можно записать и без пробела: ENDIF.

14. Структурированные операторы Фортрана. Цикл с параметром. [Блок-схема цикла + код на фортране в общем случае]

DO p = ps, pe [, s]

БОК

END DO

Пример

do i = 1, 10, 2 write(*, *) i

end do

При этом шаг s можно не указывать, тогда по умолчанию шаг s =1. ps — начальное значение, с которого начинается цикл

pe — конечное значение, до которого продолжается цикл s — шаг цикла

15. Структурированные операторы Фортрана. Циклы пока и до. [Блок-схема + код на фортране + необходимо знать различие между циклами]

DO WHILE(ЛВ)

DO

БОК

БОК

END DO

IF(.NOT.

 

ЛВ) EXIT

 

END DO

Цикл “пока” выполняется до тех пор, пока истинно некоторое ЛВ. Причем проверка истинности ЛВ выполняется перед началом очередной итерации. Цикл “до” отличается от цикла “пока” тем, что проверка истинности ЛВ осуществляется после выполнения очередной итерации.

Замечание. Следует при работе с циклами “пока” и “до” следить за тем, чтобы ЛВ обязательно рано или поздно приняло значение ложь.

Цикл “пока”:

Цикл “до”:

DO WHILE(ЛВ)

DO

БОК

БОК

END DO

IF(.NOT. ЛВ) EXIT

 

END DO

16. Программирование ввода-вывода данных, управляемого списком объектов

ввода-вывода в Фортране.

 

READ *, список ввода

! Ввод с клавиатуры

WRITE(*, *) список вывода

! Вывод на экран

PRINT *, список вывода

! Вывод на экран

Пример:

 

print *, 'Введите n '

 

read *, n

 

read *, x, y, z

 

Ввод может разделяться пробелами или запятыми.

17. Программирование форматного ввода-вывода данных с использованием основных операторов ввода-вывода и объявления формата данных в Фортране.

Спецификация формата содержит заключенный в скобки список дескрипторов

преобразований.

 

character(20) :: st = 'Строка вывода'

 

write(*, '(1x, f8.3)') a

!-345.456

write(*, '(1x, i10)') k

!_____32789

write(*, '(1x, a25)') st

!___________Строка вывода

Спецификация может быть задана как встроенная в оператор В/В символьная строка (как константа и как строковая переменная):

'(F8.3, I10)'

или как отдельный оператор FORMAT, на который операторы В/В ссылаются при помощи метки:

метка FORMAT (список ДП)

 

write(*, '(1x, f8.3, i10)') a, k

!-345.456‚‚‚‚‚32789

write(*, 1) a, k

!-345.456‚‚‚‚‚32789

1 format(1x, f8.3, i10)

 

18. Основные описатели полей данных в Фортране. Правила построения списка описателей полей в объявлении формата данных.

· в виде метки, указывающей на оператор формата: write(*, 10) a, k

write(*, fmt = 10) a, k

10 format(1x, f8.3, i10) ! 10 — метка, 1х — пробел, f8.3 — 8 знаков до запятой и после запятой, i — целочисленная

·в виде встроенного в оператор ввода-вывода символьного выражения: write(*, '(1x, f8.3, i10)') a, k

write(*, fmt = '(1x, f8.3, i10)') a, k

·в виде звездочки, неименованный список ввода-вывода:

write(*, *) a, k write(*, fmt = *) a, k

· в виде имени именованного списка ввода-вывода: integer :: k = 100, iarray(3) = (/ 41, 42, 43 /)

real(4) :: r4 = 24.0 real(8) :: r8 = 28.0_8

namelist /mesh/ k, r4, r8, iarray write (*, mesh)

write (*, nml = mesh)

Элементы списка ввода-вывода и дескрипторы данных должны быть согласованы по типам. Если в списке ввода-вывода присутствует несколько элементов, то каждый элемент из списка ввода-вывода выбирает соответствующий элемент дескриптор данных.

19. Объявления формата данных в Фортране. Коэффициенты повторения и реверсия формата.

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

read(*,'(I8, 3I5)') k, n, m(2), m(4) ! 8 — 8 знаков для k, 3 - коэффициент повторения (для n, m(2), m(4) элементы массива) для переменных 5 знаков

Общий вид: n[(] группа дескрипторов преобразований [)] write(*, '(2x, F3.0, 2x, F3.0, 2x, F3.0)') a, b, c

write(*, '(3(2x, F3.0))') a, b, c ! Для всех трех переменных форматы одинаковы

Реверсия:

● integer k, n, m(9)

read(*, '(I8, 3I5)') k, n, m(1:9) ! m — массив размером 9. ● integer :: j, k, n, a(10), b(30)

read(*, '(2I8, 5(I2, I3), 5(I4, 1X, I1))') k, n, a, (b(j), j=1,30)

20. Особенности программирования ввода-вывода массивов данных на Фортране. Элемент со встроенным циклом в списках объектов ввода-вывода операторов ввода-вывода Фортрана.

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

Циклический список также называют встроенным DO-циклом.

Пример:

 

print '(1x,80a1)', ('_', k = 1, 80)

! Выводится строка из 80 пробелов

21. Внутренние и внешние файлы в Фортране. Устройства ввода-вывода.

Внешний файл - поименованная область во внешней памяти ЭВМ.

Внутренний файл - символьная строка (подстрока) или массив.

Внутренние файлы являются открытыми по умолчанию. Внешние файлы должны быть открыты (подсоединены к устройству В/В) оператором OPEN. Номером устройства является целочисленное выражение, значение которого должно находиться в интервале от 0 до 32767. После подсоединения и устройство, и файл считаются открытыми. Доступ к файлу, после того как он открыт, выполняется по номеру устройства, к которому он подсоединен.

Файлы Фортрана подразделяются на файлы последовательного и прямого (произвольного) доступа. Внутренние файлы являются файлами последовательного доступа. Внешние файлы могут быть открыты как для последовательного, так и для прямого доступа.

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

22. Операторы работы с файлами (open, close, rewind, backspace). Функция Eof.

BACKSPACE Возвращает файл на одну запись назад REWIND Позиционирует файл в начало его первой записи OPEN Открывает внешний файл

CLOSE Закрывает внешний файл

Функция EOF возвращает .TRUE., если подсоединенный к устройству u файл позиционирован на специальной записи “конец файла” или после этой записи. Иначе EOF возвращает .FALSE. Индикатор конца файла.

Синтаксис: EOF(u) (u - выражение стандартного целого типа, задающее номер устройства).

23. Открытие файлов на чтение, запись, добавление. Особенности операторов read/write при работе с файлами. Анализ ошибок (параметры err, iostat).

READ Выполняет передачу данных из файла, подсоединенного к устройству ввода-вывода

WRITE Передает данные из списка вывода в файл, подсоединенный к устройству ввода-вывода.

err и iostat проверяет файл на открытие

24. Классификация процедур Фортрана. Процедуры-подпрограммы. Подпрограмма - это именованная программная единица, в заголовке которой

присутствует оператор SUBROUTINE. Вызов подпрограммы осуществляется по ее имени в операторе CALL.

заголовок подпрограммы [операторы описания] [исполняемые операторы]

[CONTAINS

внутренние процедуры]

END [SUBROUTINE [имя подпрограммы]]

Вызов подпрограммы выполняется оператором:

CALL имя подпрограммы ([список фактических параметров])

25. Классификация процедур Фортрана. Процедуры-функции.

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

[операторы описания] [исполняемые операторы] [CONTAINS

внутренние процедуры] END [FUNCTION [имя функции]]

Имя результирующей переменной задается предложением RESULT или совпадает с именем функции, если это предложение опущено. Задаваемое предложением RESULT имя результата не может совпадать с именем функции.

26. Особенности структуры внешних программных модулей в Фортране. Чистые процедуры.

Модуль используется для задания глобальных данных и модульных процедур. MODULE имя модуля

[раздел описаний] [CONTAINS

модульные процедуры] END [MODULE [имя модуля]]

для подпрограмм - любой: INTENT(IN, или OUT, или INOUT).