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

Переменные. Переменная – это величина, которая может в программе принимать различные значения.

Переменные различаются по именам. Имя переменной (идентификатор) может содержать от 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 и сами выводимые символы.б). строка символов, заключённая между двумя апострофами.

  1. Производные типы данных. Оператор 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

  1. Условный оператор 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

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