
- •Алфавит, лексемы, ключевые слова языка Фортран. Метки. Комментарии.
- •Структура программы. Внешние подпрограммы. Внутренние подпрограммы. Модули.
- •Переменные. Переменная – это величина, которая может в программе принимать различные значения.
- •Условный оператор if... Then...End if.
- •12.Неявное определение типа.
- •13. Синтаксис определения производных типов
- •14. Атрибут parameter. Именованные константы и константные выражения
- •15. Атрибуты dimension и allocatable. Описание массивов.
- •16. Атрибут intent. Описание формальных параметров.
- •17. Определенные и неопределенные переменные. Выражения с массивами и присваивание массивов.
- •24,Внешние подпрограммы.
- •30.Оператор use
- •31.Основные сведения о массивах
- •32.Массивы. Динамические массивы.
- •33.Операторы allocate, deallocate.
- •34.Форматирование ввода-вывода. Оператор format.
- •35.Соединение файла с логическим устройством
- •Алфавит, лексемы, ключевые слова языка Фортран. Метки. Комментарии.
- •15. Атрибуты dimension и allocatable. Описание массивов.
- •18. Скалярные числовые выражения и скалярное числовое присваивание.
- •27. Модули. Области общей памяти.
Переменные. Переменная – это величина, которая может в программе принимать различные значения.
Переменные различаются по именам. Имя переменной (идентификатор) может содержать от 1 до 6 символов. Причём первый символ – буква (желательно латинского алфавита). Следует избегать имен (идентификаторов), совпадающих с операторами языка, например REAL, READ, а так же с именами встроенных функций.В Фортран-77 и более поздних версиях имя переменной может содержать более 6 символов (до 1320), но только первых 6 символов являются распознаваемыми.Примеры имен переменных: X, Y1,resul и т.п. Имена переменных в программе могут быть набраны прописными или строковыми буквами. Типы переменных: все переменные считаются вещественного типа за исключением тех, имя которых начинается на одну из букв:I, J, K, L, M, N. Если имя переменной начинается на одну из этих букв, то эта переменная считается целого типа и она может содержать только целое число. Во всех других случаях типы переменных задаются с помощью операторов описания:REAL, INTEGER, COMPLEX, CHARACTER, LOGICAL. Константа. Константа – это величина, которая не изменяется в программе в процессе программирования, то есть её значение не изменяется. Существуют константы следующих типов:1) Целые – это простые целые числа любого знака. Например: 3; 157.Максимальным числом целого типа на 16-ти разрядных ЭВМ является число 32767, но уже на современных 32-х разрядных ЭВМ это число составляет 109.2)Константы вещественного типа – они могут записываться в двух формах:а)С фиксированной запятой – это числа следующего вида:-0.125; 1.7; -167.087. Сначала записывается знак числа ”-” или “+” (его можно опустить), целая часть числа а затем десятичная точка и дробная часть числа.Вещественное число записывается в памяти ЭВМ в приближённом виде с точностью до 7-го знака после запятой.б) С плавающей точкой – применяются в основном для записи очень больших или очень маленьких чисел для более наглядного и понятного представления:0.25Е–3; -1.57Е2 .При записи вещественного числа с плавающей точкой в начале указывается знак числа, число (целое или вещественное), затем показатель степени - латинская буква E, за которой без пробела следует целая константа со знаком или без знака. Так –4.Е6 соответствует –4∙106 (без использования Е это число выглядело бы –4000000.) Константы вещественного типа могут находиться в диапазоне порядка 1037.3) Константы комплексного типа – представляют собой два вещественных числа, заключённые в круглые скобки и разделённые запятой. Первая константа представляет действительную, а вторая – мнимую часть комплексного числа. Пример:(1.35, -0.87)=1.35–0.87∙j;(1.,.1)=1.+0.1∙j;4)Логические константы – записываются в виде .TRUE. и .FALSE. и обозначают соответственно истина и ложь. Всегда с двух сторон ограничиваются точками.5)Константы удвоенной точности – имеют такой же вид, как вещественные константы, содержащие показатель степени. Только присутствующая в показателе буква Е заменяется буквой D. Их точность представления вещественных чисел в 2 раза выше, а диапазон используемых значений имеет порядок 10307.Пример:30D–3 (0.03); –0.003D+2 (-0.3) 1,828D125 6)Текстовые константы – могут быть представлены в 2-х формах: а). старая форма – холлеритовская строка. Представляет собой число выводимых символов n, признак константы латинская буква H и сами выводимые символы.б). строка символов, заключённая между двумя апострофами.
Производные типы данных. Оператор TYPE.
Производные типы данных + Оператор TYPE.Современный Фортран предоставляет программисту возможность описывать собственные типы данных, комбинируя их из элементов встроенных типов. Производный тип в Фортране представляет собой структуру, которая состоит из нескольких компонентов. Типы компонентов могут различаться, причем тип компонента, в свою очередь, может быть производным типом. Предложение описания типа начинается с ключевого слова type:
TYPE NEWTYPE
REAL X, Y
INTEGER COLOR
CHARACTER(LEN =1 5) OBJECT_NAME
END TYPE NEWTYPE
В данном примере компонентами нового типа newtype являются х, y, color
И OBJECT_NAME. Как говорилось выше, новый тип вводится оператором описания type. Так, можно определить производный тип, соответствующий дате, в форме "день, месяц, год", как это показано ниже: Описание производного типа DATE
PROGRAM derived_types
TYPE DATE
INTEGER DAY
INTEGER MONTH
INTEGER YEAR
END TYPE DATE
END PROGRAM derived_types
Скалярные переменные производных типов называются структурами. Чтобы описать переменную типа date, используем оператор описания: TYPE(DATE) BIRTHDAY . Для назначения величин компонентам структуры можно использовать конструктор структур: BIRTHDAY = DATEB1, 10, 1953) или присвоить значения каждой компоненте, извлекая их по очереди из структуры селектором компонента %:
BIRTHDAY%DAY =21
BIRTHDAY%MONTH =10
BIRTHDAY%YEAR = 1953
Все обращения к конструкторам типов и элементам структур должны появляться в тексте программы строго после описания соответствующего производного типа. Для объектов производных типов могут быть определены присваивание и арифметические операции. Производные типы могут включаться в состав других производных типов. Используем тип date в описании типа person, представляющего персональную карточку служащего фирмы:
TYPE PERSON
CHARACTER(LEN = 20)
FULLNAME TYPE(DATE) DATE_OF_BIRTH
INTEGER ID
END TYPE PERSON
Теперь, чтобы "достать" из структуры типа person год рождения объекта, операцию селекции компонента структуры нужно выполнить дважды:
TYPE(PERSON) JOHN
JOHN%DATE_OF_BIRTH%YEAR = 1976
Понятно, что с помощью производных типов можно получать программные эквиваленты объектов весьма сложной природы, и относительно просто оперировать ими. Иногда удобно объединить под общим именем разнородные данные, имеющие разный тип. Массивы объединяют однотипные данные и, следовательно, не позволяют решить эту проблему. Кроме производных типов Фортран позволяет определить и новые операции. Операции, определенные пользователем, расширяют возможности встроенных операций.
1)тип:
TYPE name
SEQUENCE
CHARACTER (LEN = 20) lastn
CHARACTER (LEN = 20) firstn
LOGICAL(2) married
INTEGER(2) dependents
END TYPE name
Условный оператор IF... THEN...END IF.
Оператор if...then...else...end if является полной версией условного оператора и имеет вид:
IF(ВЫРАЖЕНИЕ) THEN
ОПЕРАТОР_1_1
…
OПEPATOP_l_N
ELSE
ОПЕРАТОР_2_1
…
OIIEPATOP_2_N
END IF
Если выражение принимает значение "истина", управление передается на оператор оператор_1_1 и далее выполняются операторы между then и else, если же нет, то — на оператор оператор_2_1. Пример условного оператора:
IF(TWO_BY_TWO == 4) THEN
PRINT *, 'ДВАЖДЫ ДВА РАВНО 4'
ELSE
PRINT *, 'ДВАЖДЫ ДВА НЕ РАВНО 4. ПОВТОРИТЕ АРИФМЕТИКУ1'
END IF
Условные операторы можно вкладывать друг в друга, программируя таким образом сложные ветвления. Рассмотрим следующий оператор:
IF (ВЫРАЖЕНИЕ_1) THEN
ОПЕРАТОР_1
…
ELSE
IF(ВЫРАЖЕНИЕ_2) THEN
ОПЕРАТОР_2
…
ELSE 1Р(ВЫРАЖЕНИЕ_3) THEN
ОПЕРАТОР_3
…
ELSE 1Г(ВЫРАЖЕНИЕ_N) THEN
ОПЕРАТОР_N
…
ENDIF
END IF
Здесь вначале вычисляется значение логического выражения выражение 1. Если оно истинно, выполняется оператор оператор_1 и все последующие до ключевого слова else, если же это значение ложно, вычисляется значение выражения выражение_2. В том случае, когда полученное значение истинно, будет выполняться оператор оператор_2, при значении "ложь" будет вычисляться выражение выражение_3 и т. д. Если выражения выражение_1 независимы, то есть вычисление их значений в любом порядке дает один и тот же результат для каждого из них, имеет смысл располагать их в таком порядке, чтобы выражение, с наибольшей вероятностью принимающее значение "истина", стояло на первом месте, выражение, принимающее значение "истина" с меньшей вероятностью, — на втором и т. д. Это уменьшит время выполнения данного фрагмента программы, особенно если вложенный оператор появляется в цикле, который выполняется многократно. Пример вложенных условных операторов:
IF(TWO == 2) THEN
IF(ONE == 1) THEN
PRINT *, 'ЕДИНИЦА РАВНА 1'
ELSE
PRINT *, 'ЕДИНИЦА НЕ РАВНА 1'
END IF
ELSE
IF(THREE == 3) THEN
PRINT *, 'ТРИ РАВНО З'
ELSE
PRINT *, 'ТРИ НЕ РАВНО 3'
END IF
END IF