Файл: Килов Х.И. Фортран для БЭСМ-4 (МИФ) учеб. пособие.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 25.07.2024

Просмотров: 92

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

-10 -

2.5.2.3.1.Локальнее описания и спецификации формальных

параметров.

2.5.2.3.2.Другие операторы, составляющие подарограмму.

2.5.2.3.3.Оператор IJUD.Ч

2,5.2.4. Операторы, составлявдие основную программу.

2.5.2.4.1.Локальные описания.

2.5.2.4.2.Другие операторы, составляющие основную про­ грамму.

2,5.2*6. Оператор тл.

Операторы, перечисленные в 2.5.2.3., могут повторяться не­

сколько pas или не встречаться ни разу, в зависимости от количества подпрограмм в ФОРТГАН-программе.

2.5.3* В ФОРТРАЛ-программе должен быть хотя бы один выпол­ няемый оператор. ФОРТРАН-програмш всегда должна заканчиэаться оператором иыл.

2.5,4. Термин "программиая единица" обозначает подпрограм­ му или основную программу.

£.5.5. Выполняемые операторы могут быть помечены. Оператор |f§MAT должен 'быть помечен. Все остальные невыполняемые ойераторы не должны быть помечены. Оператор называется по­ меченным, если ему предшествует метка, отделенная от опера­ тора символом ";" (двоетЪчие). Меткой является записываемое без знака натуральное (т.е. целое положительное) число в диапазоне от I до 99999.

Метка служит для передачи управления помеченному опе­ ратору или для ссылки на него, если это - оператор Р0ШАТ.

В одной и той же программной единице все метки долж­

ны быть различными. Таким образом, два оператора могут

быть помечены одинаково тогда и только тогда, когда они на­

ходятся в различных программных единицах.

-I I -

2.5,6. Выполнение ФОРТРАН-программы начинается с первого выполняемого оператора основной программы, продолжается в той последовательности, в какой выполняемые операторы за­ писаны в основной программе, и заканчивается оператором ST0P. Для изменения этой (естественной) последовательно­ сти выполнения операторов служат операторы управления.

Подпрограмма выполняется лишь тогда, когда к ней встречается обращение в основной программе или в выполня­ емой в данный момент подпрограмме. Порядок выполнения опе­ раторов в подпрограмме подчиняется рассмотренным правилам. Выполнение подпрограммы всегда начинается с ее первого вы­ полняемого оператора и заканчивается оператором шзтщщ этой подпрограг.т:.

2.G. Операторы

2.6.1. Выполняемые операторы Выполняемые операторы делятся на четыре клаооа*

-операторы присваивания;

-операторы управления;

-операторы ввода/вывода;

-автокод.

2 . 6 . I . I . Оператор присваивания Оператор присваивания имеет вид:'

v = е;

или

v l = v 2 = v 3 = ° " = v n = е ;

где v - левая часть - простая переменная или переменная о индексом, е - арифметическое выражение. При выполнении это­ го оператора вычисляется значение арифметического выраже­ ния, которое присваивается переменной т «

В операторе присваивания может быть несколько левых частей v 1 , v 2 j v n £п^24). Все они должны быть прос­ тыми переменными. В этом случае значение арифметического


- 12 -

выражения е присваивается каждой из простых переменных

, v 2 , ..., v^.

2.6.1.2. Операторы .управления.

Имеются следующие типы операторов управления:

-операторы G0_T0;

-арифметический оператор IP-,

-логический оператор I F ;

-оператор CALL;

-оператор RETURN;

-оператор срити-ШЕ;

-операторы управления программой;

-оператор од;

Метки, используемые в операторе управления, долж­ ны помечать выполняемые операторы в той же программной единице, в которой встретился данный оператор управления.

2.6.1.2,1. Операторы G0 т0

Имеются следующие типы операторов G0 Т0:

-безусловный Ц0 Т0;

-ВЫЧИСЛЯеМЫЙ G0 Т0;

-Gg Т0 с возвратом.

2.6.1.2.1.1.Безусловный C0_rg

 

Безусловный оператор G0 Т0

имеет вид:

 

 

 

G0 Т0 га;

 

 

 

где ш

- метка.

 

 

с мет­

кой m

Этот оператор передает управление оператору

. Иными словами, следующим выполнится оператор с

меткой т.

 

 

 

2.6.1.2.1.2. Вычисляемый G0 Т0

 

 

 

 

Вычисляемый оператор G0 Т0 имеет вид:

 

 

где

G0 Т0 (пъ,, ш2 ,

щ п ) ,

I

;

- метки ( n ^ 2 ) , I - переменная, которая в момент


_ 13 -

выполнения данного оператора дотанаиметь целое значение в пределах 1 4 1 ^ п.

Этот оператор передает управление оператору о мет­

кой т± , где

i - значение переменной I в момент выпол­

нения вычисляемого GJijrg.

 

 

Таким образом, в списке меток

, т 2 ,

, на­

чиная слева, отсчитывается i-ая метка

т ± , и передается

управление оператору, помеченному этой меткой.

 

Если же к

1

или i>n, то в результате выполнения

вычисляемого

off Tff

управление будет передано непосредст­

венно следующему

за ним выполняемому оператору.

 

Пример.

 

 

 

 

 

1М=4;

 

12, 15, 8, 99), IM;

 

 

G0

Т0 (7,

 

 

В этом случае управление будет передано оператору с меткой 8 ( i = 4 ) .

2.6.1.2.'1.3. GgJE2 с возвратом.

Оператор Gtf Т0 с возвратом имеет вид:

где ,т^ш^ - метки.

Этот оператор передает управление оператору с меткой

т 2 . Затем продолжается естественная последовательность

выполнения операторов, расположенных вслед за оператором с

меткой т 2

. Когда же управление будет передано оператору с

меткой

, программа, не выполняя его, сразу перейдет к

оператору с меткой ш1 .

Такой оператор может быть использован для многократ* ного обращения к блоку (первый оператор которого помечен

меткой ш 2

, а конец, т.е. оператор вслед за последним, -

меткой

) из разных мест программной единицы.

Чаще всего меткой т^' помечается оператор С0ЫТ1ШЕ.

Замечание. Перед передачей управления оператору с


 

-

14 -

 

меткой

происходит восстановление первоначального содер­

жимого первой команды в габоре команд рабочей программы,

реализующем оператор с меткой

 

2.6.1.2.2. Арифметический оператор др.

Арифметический оператор i p имеет вид:

 

 

I P (в) m1,

т 2 , т ? {

, т 2 , ш - метки.

где е - арифметическое выражение,

 

Этот оператор передает управление в одно из трех мест

данной программной единицы в зависимости от значения ариф­

метического выражения е, которое вычисляется в момент вы­ полнения данного оператора.

Именно, если е<0, управление передается оператору с

меткой

; если

е=0, управление передается оператору с

меткой т 2

; если

же е>0, управление передается оператору

ометкой щ,.

2.6.1.2.3.Логический оператор ip.

Логический оператор £р имеет вид:

Ц(Ь) 3;

где ь - логическое выражение, s - выполняемый оператор. При выполнении данного оператора вычисляется логи­

ческое выражение ъ . Если это выражение имеет значение "ис­ тина", то выполняется оператор s . Если же логическое выра­ жение b имеет значение "ложь", то оператор s выполняется так, как если бы на его месте был записан оператор CONTINUE. Оператор s не может быть оператором j>g или другим логичес­ ким операторомI P .

2.6.-1.2.4. Оператор CALL

Оператор CALL имеет вид:

GALL в(

или


- 15 -

 

 

CALL B ( a 1 t в р ,

a ^ ) j

где в

- идентификатор подпрограммы типа

aUBRfifUTINB (см.

2.6.2.6.2), каждое

а±~ фактический параметр.

типа

Этот оператор реализует обращение к подпрограмме

SUBROUTINE

(вызов ее) из основной программы или

какой-либо другой программной единицы. Выполнение подпро­

граммы s начинается с ее первого выполняемого оператора и

завершается тогда, когда в подпрограмме в управление попа­ дает на оператор RETURN . После этого управление переда­ ется выполняемому оператору, непосредственно следующему

за оператором CALL в вызыващей программной единице.

В ФОРТРАН-программе рассматриваемый оператор должен

быть записан после того оператора END , который заверша­ ет определение (описание) подпрограммы в , Иначе говоря, обращение к подпрограмме может быть осуществлено лишь пос­

ле ее описания. Кроме того, запрещены прямые и косвенные рекурсивные обращения к подпрограммам. (Например, если в

подпрограмме S1

встречается обращение к подпрограмме

S2 ,

то в подпрограмме S2 не может встретиться обращение к под­

программе

s i

; в любой подпрограмме s не должно быть

обращения к самой подпрограмме S ) .

 

2.6.1.2.5. Оператор RETURN.

 

Оператор

RETURN имеет вид:

 

Оператор

RETURN;

 

RETURN должен встречаться в подпрограммах и

только в них (как в подпрограммах типа SUBROUTINE

, так

и в подпрограммах-функциях). В результате выполнения этого оператора прекращается выполнение соответствующей подпро­ граммы, и управление передается в вызвавшую ее (в данный

момент) программную единицу.

К моменту выполнения оператора RETURN в подпро­ грамме-функции (см.2.6.3.2.4.) идентификатору этой функции

должно быть присвоено значение, которое становится доступ-