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

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

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

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

Добавлен: 25.07.2024

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

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

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

- 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 , последним оператором кото­

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

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



-20 -

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

Если же выход из области цикла осуществляется с по­ мощью безусловного или вычисляемого операторов G0 Tg или арифметического оператора IF , то значение параметра цикла определено и совпадает с его значением в момент выполнения оператора, выводящего из облаоти цикла.

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

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

 

Пример.

>

 

Печать номера первого отрицательного элемента в мас­

сиве длины 100.

 

 

Dg 1 1=1, 10 О;

Gg Tg 2{

1 :

IP (A(I).LT.O)

 

KsO;

 

2s

Gg Tg 3;

 

K=FL0AT ( I ) ;

 

 

PRCTP 4-,K;

 

4: FgRMAT ...

2.6.1.2.8.3.Внутри'области цикла запрещается изменять зна­ чения параметра цикла, а также начального, конечного зна­ чений и шага.

2.6.1.2.8.4.Запрещается переход извне внутрь области цик­ ла. В частности, если один и тот же оператор является ко­ нечным оператором для нескольких вложенных циклов, то ис-

- 21 -

пользование мотки упошнутого оператора разрешается толь­

ко внутри области самого внутреннего (наиболее глубоко вложенного) цикла.

В случае, когда вход внутрь области цикла пли выход

из этой области осуществляются с помощью каких-либо ко­

манд автокода или оператора cgf Tgf с возвратом, компилятор не обеспечивает ни сохранение значения параметра цикла

при выходе из пего, ни проверку на допустимость входа внутрь цикла. Программист при этом-должен учитывать, что

параметр самого внутреннего цикла хранятоя в РА (регист­ ре адреса), а значение параметра внешнего цикла J хранит­

ся в той ;;:е ячейке, что и переменная J,B виде:

0.52. О. J.0

Таким образом, с помощью средств автокода параметр цикла

можно использовать и в этом случае.

Еще один пример. Печать таблицы значений полинома

11

а - х 1 1 - 1 (Л-массив коэффициентов полинома а. ) .

^~

1=1

1

.

 

 

 

Ш

x»i,aoi

Р=0;

DJ 2 1=1,11; 2: Р=РяХ+А(1)|

1: PRINT

з, х. ?;

3; | Я

• • •

Замечание. Разность между конечным значением и начальным значением должна быть кратна шагу.

2.6.1.3. Операторы ввода/вывода. ,

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

-операторы печати;

-оператор ввода с перфокарт;

-оператор перфорации;

-оператор обмена с МБ и МП;

-оператор отладочной печати.


- 22 -

Все операторы ввода/вывода реализуются о помощью

обращений к соответствующим стандартным программам (за исключением ввода с перфокарт без контроля и без перевода).

2.6.1.3.1. Операторы печати.

Операторы печати имеют вид:

ГЮ1Ж;

п,

< список печати) ;

или

cW,

< список печати > ?

PMCNT

Первый оператор осуществляет вывод на АЦПУ, а второйна

узкую печать.

п -метка оператора У0кгЛАт , в соответствии с которым осуществляется преобразование (редактирование) печатаемой

информации (этот оператор FgRUAlдолжен быть

в той же

программкой единице, что и оператор PRIKT

;

^ -признак виде узкой печати (десятичная(с переводом

или 6es него) или восьмеричная).

Список ьечати состоит из одного или отделенных друг о? друга запятыми нескольких элементов списка печати.

(Иногда он может отсутствовать - см.ниже). Элементом списка печати может быть:

-переменна? (простая или с индексом);

-идентификатор массива*

-неквный икнл.

Есда. в описке печати встречается переменная с индек­

сом (либо в качестве самостоятельного элемента списка,ли­

бо в качестве части неявного цикла), то индексные выраже­

ния еч-ой переменной могут быть только (натуральными) чис­

лам

ИЛИ простыми переменными (но не выражениями вида

С- s

I , I + К илз С к I + К).

Простейший элемент списка печати - это простая пере­ менная ы'4 один элемент массива. Таким образом, каждый элемент списка Печати эквивалентен одному ( переменная) кла нескольким (идентификатор массива* неявный цикл)

простейшим элементам списка печати.