![](/user_photo/_userpic.png)
книги из ГПНТБ / Килов Х.И. Фортран для БЭСМ-4 (МИФ) учеб. пособие
.pdf-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 , последним оператором кото
рых является рассматриваемый последний оператор.
Затем выполняется непосредственно следующий за ука занным последним оператором цикла выполняемый оператор.