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

книги из ГПНТБ / Килов Х.И. Фортран для БЭСМ-4 (МИФ) учеб. пособие

.pdf
Скачиваний:
5
Добавлен:
23.10.2023
Размер:
5.14 Mб
Скачать

-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.) идентификатору этой функции

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

- 16 -

яым вызвавшей эту функцию (в данный шме«т) программной

единице,

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

сколько операторов RETURN.

2.6.1.2.6. Оператор С0МТНШЕ.

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

CONTINUE{

Выполнение этого оператора сводится к продолжению обычной (естественной) последовательности выполнения операторов.

Как правило, данный оператор монет использоваться в

конце области цикла Dg или в конце блока, обращение к ко­ торому осуществляется с помощью оператора Gg Tflc возвра­

том.

Например, блок суммирования двух векторов Л и В раз­

мерности 20 может ш.;еть вид: 3 : 1 = 1; 1 : С(1)=А(1)+ва); 1=1+ 1 ;

IP ( I . L E . 2 0 ) Gg Т0 1}

2: C0NTIWUB:

Обращение к. этому блоку из какого-либо места (той же) про­ граммной единицы может иметь вид:

2 0 £ О , 3» 2J } 4:

2.6Л„2,7, Операторы управления программой.

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

-оператор STCJ?;

-оператор

2.6,1.2.7.1. Оператор

STgp.

t

-~

1

имеет вид:

ипе^ат%р sTgg

- 17 -

STgP;

Этот оператор реализуется в рабочей программе в виде пол­ ного останова:

7.77.7777.7777.7777

и приводит поэтому

к прекращению выполнения программы.

D основной программе должен находиться по крайней

мере один оператор

. Таких операторов в основной

программе межет встретиться и несколько.

2.6.1.2.7.2. Оператор PAUSE^

Оператор PAUSE тлеет вид: PAUSE;

или

PAUSE п;

где п - восьмеричное целое число в диапазоне 0^п£?777> Оператор

PAUSE; эквивалентен оператору

PAUSE О;

Этот оператор реализуется в рабочей программе в виде оста­ нова

о. 77.run.п

Как правило, данный оператор используется для приос­ тановки работы программы (.например, для того, чтобы •устано­ вить на читающее устройство новую колоду перфокарт с вводи­ мыми данными и т.п.;. Вслед за этим, после нажатия на "Пуск", работа программы продолжается.

Программист должен указать в своей шструвдйи дейст­ вия в случае соответствующего останова.

2.6.1.2.8. Оператор Ш

Оператор Djg имеет вид

Dg п 1=11,12,13;

I I см*. НУМИчМАн

-НАУЧИ#-ТШ(НИЧЕСКЛЯ

- IB -

или, при 13=1 {

Dg n 1=11,12?

Этот оператор реализует цикл,п, .е. многократное вы­

полнение одного или нескольких операторов. Здесь:

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

последним оператором соответствующего цикла. Оператор, по­

меченный меткой п , должен находиться вслед за описывае­

мым оператором

и в той ке программной единице. Послед-

ним оператором

цикла не могут быть операторы gg Tfl ,

НВТШШ , арифметический I F или Dg , Если это все лее тре­

буется, то следует использовать оператор cgNTIOTR. I - идентификатор простой переменной. Эта переменная называет­

ся параметром цигла (пли управляющей переменной).

I I , 12, 13 - натуральные (целые нолокительше) числа или простые переменные, которые в MOMCKV: выполнения оператора

Dg должны иметь натуральные значения, Указанные числа или значения переменных не должны превосходить 4095. ц назы­ вается начальным значением, 12 - конечным значением, 13 - шагом. Если 13 равно единице, то его можно не писать. Кро­

ме того, должно быть 11^12.

Областью цикла Dg называется множество выполняемых операторов, начинающихся с непосредственно следующего за Dg выполняемого оператора и оканчивающихся последним опе­ ратором цикла, включая этот оператор.

2.6.1.2.8.1. Оператор Dg (т.е. оператор цикла) выполняется следующим образом:

а) параметру цикла I присваивается начальное значе­ ние Ц ;

б) выполняются все выполняемые операторы, входящие в область данного цикла;

в) после выполнения последнего оператора щита, если

оно происходит, текущее значение параметра цшела 1 увеличи­

вается на значение шага 13;

- 19 -

г) если полученное таким образом новое текущее зна­ чение параметра цикла I меньше иди равно конечному значе­

нию 12, то происходит переход па пункт б), В противном

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

В области цикла Dg могут находиться любые выполняе­

мые операторы, в том числе п другие операторы Dg , Если в области цикла Dg встречаются другие операторы J5g , то

такое явление называется вложенностью циклов» а циклы,

оператор Dg которых находится в области исходного цикла

Ш, называются вложенными.

Область вложенного цикла Dg должна полностью входить

•в состав области исходного цикла Dg . Вложенный цикл Dg, в свою очередь может содержать другие, вложенные в него

циклы.

Несколько вложенных друг в друга циклов Dg могут

иметь один и тот же последний оператор цикла.

Теперь можно определить, что происходит после выпол~

нения цикла Dg. Itemto, если последний оператор рассматри­

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

Если же последний оператор рассматриваемого цикла является последним оператором для какого-либо внешнего по отношению к нему оператора цикла, то значение параметра ближайшего внешнего (по отношению к рассматриваемому) цик­ ла увеличивается на значение шага соответствующего цикла, и повторяется действие, указанное в пункте г)', но уже для

этого внешнего цикла. Описанный процесс повторяется вплоть

до выполнения всех циклов Dg , последним оператором кото­

рых является рассматриваемый последний оператор.

Затем выполняется непосредственно следующий за ука­ занным последним оператором цикла выполняемый оператор.

Соседние файлы в папке книги из ГПНТБ