ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 25.07.2024
Просмотров: 104
Скачиваний: 0
|
- 60 - |
где ^ т / ^ ч |
" восьмеричный номер соответствую |
щего оператора. |
|
Кроме того, если в рабочей программе имеются число |
|
вые константы, то они печатаются в десятичной системе |
счисления, причем перед первой |
из них, а также перед каж |
||
дой последующей, адрес которой |
кратен IOQ, печатается |
||
этот адрес Б виде: |
|
|
|
гдо |
^ ^ ^ г ^ а ^ |
" соответствующий восьмеричный адрес. |
2.6.2.5.5, Печать рабочей прогщтыы на АЦПУ
Программист может потребовать, чтобы рабочая про грамма печаталась на АЦПУ. Для этого нужно написать
Тогда на АЩ1У печатается рабочая программа совместно с программой старта (см. также 3) . Печать происходит с ука
занием адресов, с помощью соответствующей стандартной программы (см. 8.10.).
2.6.2.5.6, Вывод рабочей программы на перфокарты
Полностью готовая рабочая программа совместно с программой старта (см, 3) может быть выдана на перфокар ты. В этом случае полученная колода перфокарт может бить вьедена з машину с ячейки 0010. После передачи управле - ния ячейке 0010 программа старта произведет соответствую
щую подготовительную работу, сдвинет в нужное место памяти
рабочую программу и передаст ей управление. Таким образом, имеется возможность (многократного) повторного счета по
программе без необходимости заново кошилировать ФОРТРАНпрограмму, Дня перфорации рабочей программы нужно написать:
0РТТ01Г б-;
Пооле перфорации происходит останов
0.77.0000.7777.0000
- 61 -
Вслед за этим остановом надо установить отперфорированную колоду перфокарт на читающее устройство и нажать на ПУСК. Произойдет (фиктивный) ввод этих перфокар '. Если перфора ция и ввод'произошли правильно, то произойдет останов
0.77.7777.0000.7777 вслед ЗР которым, при нажатии на ПУСК,начнется работа
(программы старта и, вслед за этим) рабочей программы. Ес ли же перфорация и/или ввод произошли неправильно, то вы вод программы на перфокарты повторится, и снова произой дет останов
0.77.0000.7777.0000 Следует выбросить первую колоду перфокарт, полученную ко
лоду назвать первой и повторить процесс проверки,- вплоть до выхода на останов
0.77.7777.0000.7777
2.6.2.5.7. Блокировка чистки динамических массивов на магнитных барабанах
Если в программе используются массивы, находящиеся
в динамической памяти (динамические массивы - CM.2.6.2.U.5"J, то, как правило, перед началом работы программы эти
массивы на магнитных барабанах чистятся7 т.е. всем юс эле ментам присваивается значение нуль (это, как и все другие действия с динамическими массивами, реализуется стандарт ной программой работы с ниш). Однако, может возникнуть необходимость блокировать эту чистку. Это нужно, например, в том случае, когда несколько (различных) рабочих программ работают подряд и имеют полностью.совпадающую структуру динамических массивов и когда динамические массивы - ре зультаты работы предыдущей программы - используются в по следующей программе. Совершенно ясно, что при обычной раCj're такого рода передача данных между программами невоз можна. Если же блокировать чистку динамических массивов, то передача данных произойдет автоматически. Это позволя ет' в некоторой степени ослабить ограничение на длину ра-
- 62 -
бочих программ (см., например, 2.6.2.5.3.), разделяя слишком длинные программы на несколько более коротких.
Чтобы блокировать чиотку динамических массивов, следует написать:
0PTI01T 7 ;
2,6,2.6. Операторы, определяющие подпрограммы
Имеются следующие типы подпрограмм:
-встроенные функция ;
-(вкешше) подпрогршФШ-фушщш!;
-(внелше) подпрограммы ища SUBROUTINE.
Обращение к функции может осуществляться только в арифметическом выражении. При этом обращении идентифика
тор функции получает некоторое значение - вещественное
число. Данное значение может быть обычным образом исполь зовано в арифметическом выражении (см. 2.4.1.). Кроме то
го, некоторые из фактических параметров функции также могут получить какие-либо значения.
При обращении к подпрограмме типа SUBROUTINE ее идентификатору не присваивается никакого значения. Это обраценае реализуется как отдельный оператор C A L L (см. 2.6.1.2.4.). При таком обращении некоторые из фактических
параметров данной подпрограмма могут получить какие-либо
значения.
Как правило,- для того, чтобы компилятор мог запро
граммировать обращение к некоторой подпрограмме, она
должка быть явным образом определена в ФОРТРАН-программе. Однако, существует небольшое количество известных компи лятору функций (встроенных функций), которые не нуждаются
в явном определении (см. 2.6.3.3.).
Все же другие, отличные от встроенных функций, под программы долины быть явно описаны. Это осуществляется с помощью (определяющих подпрограммы) операторов SUBROUTINE
иPUNCJION , вслед за которыми записывается полностью
тело(т.е. набор операторов) данной подпрограммы, завер-
- 63 -
шаюшееся оператором "SND;" . Следует отметить, что выпол-
.ниние подпрограммы происходит тогда и только тогда, ког да к ней встречается обращение, а обраще vie к подпрограм
ме может быть записано только в одной из программных еди ниц, следующих за ее описанием. Кроме того, запрещены
прямые и косвенные рекурсивные обращения к подпрограммам (см.2.6Л.?.4. - это же относится и к функциям).
Обращения к подпрограммам детально описаны в 2.6.3.
2.6.2.6.1. ОператорfflffiCTIffK и определение функций.
Оператор FUNCTION служит для определения подпрог- раш:-функций и имеет вид:
или:
|
шаль дшстют P (a,,, a,.,...,<£*.): |
• (эти два оператора имеют одинаковый смысл), |
|
где: |
• |
Р |
- идентификатор функции; • |
OL„, . CL^. - формальные параметры - идентифика торы простых переменных, массивов ила юдпрограмм Gi£ 36).
У функции должен быть хотя бы одт формальный пара
метр.
Некоторые из формальных параметров могут быть спе цифицированы, т.е. могут встретиться в описанияхДЕЕВаадь (в начале ФОРТРАН-программы) илиR3A5L (вслед за данным оператором FUNGMgH ) . Такая спецификация определяет тип
формального параметра (простая переменная, подпрограмма или массив). Спецификация простых переменных и массивов
записываются в описании REAL (или в нескольких описаниях RBAL ) в любом порядке, в том числе и вперемешку с обыч
ными описаниями типа (см. 2.6.2.1.3.7.2.). Спецификации массивов подробнее описаны в 2.6.2.1.3.1. Вое неспецнфи'- цированные формальные параметры считаются простыми пере менными.
- 64 -
Никакой формальный параметр-массив не может появить
ся в олератора>с squiVAiaMCB, P^JNCH, HEAD ИЛИ WRITE.
]3след за оператором FUNCTION записывается тело функ ции - набор операторов, соотазлящнх данную функцию и за-
вершакь/йкся оператором "END;" . Б теле функции могут быть любые оператор:, кроме операторов sugRgUTip и других
операторов FUNCTION . И теле функции должен быть хотя бы
один оператор RS'."1.'RM •
Прл выполнении тела функции ее гдентификатору долж
но быть присвоено значение. Значение этого идентификатора к моменту исполнения какого-либо оператора RETURN дашюй
функции считается значением функции.
Идентификатор функции не должен появляться ни в ка ком везаполкяемом операторе этой функции, кроме самого
оператора FUNCTION.
2.6.2.6.2. Оператор SUBROUTINE к определение подпрограмм
-» т;ша SUBROUTINE
Оператор SUBROUTINE служит для определения подпро
граммы типа SUBROUTINE и тлеет вад:
SUBROUTINE |
s (0,л аъ |
... &и.); |
или; |
|
|
SUBROUTINE |
Si |
|
где: |
|
|
3 - идентификатор данной подпрограммы;
аи.~ формальные параметры-идентификаторы про
стых переменных, массивов или подпрограмм(r v * 36).
У поддарограгд.ш типа SUBROUTINE может не быть ни од
ного формального параметра.
Спецафикащш и употребление формальных параметров
описаны выше, в 2.6.2.6.1.
Вслед за оператором SUBROUTINE записывается тело
подпрограммы типа SUBROUTINE , т.е. набор операторов,
составляющих данную подпрограмму и завершающийся опера-
- 65 -
тором "BND;". В теле подпрограмм типа sUBRffraiKB могут
быть любые операторы, кроме операторов №ссттш и .других операторов SUBRflUTTKia. В теле отоЙ подог-«грашы Должен
быть хотя1 бы одам оператор RSgURff.
Идентификатор гюдгфограмш типа зиВБ0Щ'11№ не дол
жен появляться ни и каком операторе этой подпрограммы, кроме самого оператора SUBROUTINE.
2.6.3. Обращения к нодггрогеамлам
Обращение к подпрограмме осуществляется путем ука
зания ее идентификатора и, в случае нзобходашооти, за
ключенного п круглые скобки списка аргументов - фактических
параметров.
Обращение к подпрограше тип».fflBRffUTINB допускает
ся только в операторе GALL (см. 2,6.1.2.4.)»
Обращение к подпрогА.аше-фуЕЬЧции допускается только в арифметическом выражении, которое испольгует полученное значение этой функции.
Как правило, любая йсдарограмла до обращения к ней
должна быть определена (см. 2.6.2.6.). Однако, существу
ет небольшое количество встроенных (т.е. известных ком пилятору) функций, которые не должны быть явно определе ны (см. ниже), ч Подпрограмма -типа SUBRflU'riHE может не иметь ни од
ного параметра, тогда как у подпрограммы-функции должен быть хотя бы один параметр.
2.6,3.1. Порядок, количество и тип. фактических, парамет-. ров, указанных в обращении к подпрограмме, должны соот ветствовать порядку, количеству и типу формальных пара метров, указанных в определении (описании) этой подпро
граммы (см, 2.6.2.6.I.).
•Фактическим параметром может быть:
-идентификатор переменной (простой или с индексом)}
-арифметическое выражение;
-66 -
-идентификатор массива;
-идентификатор подпрограммы.
Если формальный параметр является идентификатором переменкой, то, таким образом, фактический параметр может
быть идентификатором переменной или арифметическим выра
жением.
Если формальный параметр является идентификатором
массива, то и фактический параметр может быть только иден тификатором масоива, причем если формальный параметр яв
ляется идентификатором двумерного массива, то фактический параметр не может быть идентификатором одномерного масси
ва. Вид памяти (МОЗУ-0, РДОЗУ— 4 или динамическая память)
ыассива-фактического параметра должен совпадать с видом памяти массива-формального параметра.
Если формальный параметр является идентификатором подпрограммы, то фактический параметр может бить только
идентификатором подпрограммы. В атом случае как формаль
ный, так и фактический параметры - идентификаторы подпрограмм должны быть указаны в описании БХТЕВЖЬ (см. 2.6.2.1.5.). Подарограмма должна быть описана (определе
на) в .ФОРТРАН-программе раньше, чем она будет использо
вана, в частности, в качестве фактического параметра. Золи в процессе выполнения подпрограммы формальный
параметр-явреиенная получает новое значение,
то соответствующий ему фактический параметр может быть
только простой переменной (но не параметром цикла!) или пе
ременной с индексом.
2.6.3.2. Выполнение обращения к подпрограмме.состоит в
следующем:
2.6,3.2.1. Формальные параметры заменяются на соответст вующие фактические параметры, - точнее, формальным пара метрам-переменным (простым и с индексом) присваиваются
значения соответствующих фактических параметров, а фор мальные параметры-массивы и подпрограммы заменяются на фактические параметры - соответствующие массивы л под
программы .
- 67-
2.6.3.2,2. Происходит выполнение подпрограммы, начиная с ее первого выполняемого оператора и вплоть до встречи ка кого-либо из операторов KEJIPURK ЭТОЙ подпрограммы. 2.6.3.2.3; Фактическим параметрам - простым переменным и переменным с индексом присваиваются ноше значения, полу ченные соответствующими формальными параметрами при выпол нении подпрограммы. (Фактические параметры-массивы уже получили, при необходимости, новые значения в результате замены формальных параметров на фактические и выполнения подпрограммы)
2.6.3.2.4. Если подпрограмма является подпрогралп/юй-функ- цией, то полученное к этому моменту значение идентифика тора данной функции выдается соответствующему арифмети ческому выражению (в котором было обращение к рассматри ваемой функции), и арифметические действия над этим зна чением происходят по обычным правилам - так же, как если бы это значение было значением переменной.
2,6.3.'3. Имеются следующие встроенные функции ЕХР(Х) - для вычисления е х
AL0G(X) - для вычисления Uuc SIN(X) - для вычисления einx C0S(X) - для вычисления оовя ТАЫ(Х) - Для вычисления tgx АТЛН(Х) - Для вычисления arctgx SQRT(X) - для вычисления "У1Г
ABS(X) |
- для вычисления |
\х\ |
А1ЫТ(Х) |
- для вычисления £| X l j [ -aiOH<x>, т.е. |
|
|
SIQN(X) , умноженного на наибольшее целое |
|
SIGN(X) |
число ^ | X \ |
|
для шчиоления знака X: |
||
|
( |
+1 при х > о |
|
V. |
-"1 при х < о |
PL0AT(X) - для преобразования целого положительного числа из единиц второго адреса в норма-
- 68 -
лизованное двоичное число - используется душ обращения к параметру цикла вне этого цикла (см., например, 2.6.1.2.8.2. и 2.6.1.2.8.4.).
Перше шесть функций реализуются компилятором в виде обращений к соответствующим стандартным программам. Коман ды, реализующие последние четыре функции, вставляются ком пилятором непосредственно в рабочую программу.
Фактический параметром любой из встроенных функций монет быть переменная (простая или с индексом) или арифме тическое выражение.
2.7. Отличия №Фа от стандартного ФОРТРАНа
Ниже будут перечислены отличия описанного языка МИФ (МИни ФОРТРАН) от стандартного ФОРТРАНа, описанного вС1Л, С 23 . Здесь указаны только основные отличия. Другие раз личия могут быть обнаружены путем сравнения настоящего опи сания и описания L 1 3 •
2.7.1.Ограничения и изменения
2.7.1.1.Программа записывается не на бланках. Резервиро
ванные олова подчеркиваются. Отсутствует символ $ .
2.7.1.2. Операторы отделяются друг от друга точкой о запя той.
2.7.1.3.Метка отделяется от оператора двоеточием.
2.7.1.4.Подпрограммы определяются (описываются) вслед за глобальными описаниями и до основной программы. Таким обра зом, ни подпрограммы, ни основная программа но могут компи лироваться отдельно, т.е. может происходить только компиля
ция всей ФОРТРАН-программы в целом. Кроме того, обращение
кподпрограмме не может произойти раньше ее описания.
2.7.1.5.Отсутствует оператор C0MM0N , т.к. все глобально описанные величины являются общими для всех программных единиц.
- 69 ~
2.7.1.6. В операторе Щ Ш И описываются не только под- программы-фзктические параметры, но и соответствующие им
цодпрограмглы-формальные параметры.
2.7.1.7. Отсутствует оператор DIMENSION . Отсутствуют ти пы целый, логический, с двоичной точностью и комплексный.
Имеются только арифметические и логические выражения. По следние имеют* более простую структуру.
2.7.1.8. Отсутствуют элементы формата L, н, G, D . Измене
на структура элементов 0 и А.
2.7.1*9. Отсутствует воэмовдость присваивания символьных ( H o l l e r i t h ) значений с помощью оператора присваивания
2.7.. 1,10. Массивы могут быть только одно- и двумерными. •
2.7.1.11.Отсутствуют операторы A S S I G N И назначенный G0 Т0.
2.7.1.12.Отсутствуют операторы RATA и подпрограммы BL0OK
DATA.
2.7.1.13.В операторе рлиав можно указывать не более чем
четырехзначное, восьмерично, число.
2.7.1.14.Б операторе PRINT упрощена структур» неявного
цикла.
2.7.1.15. Первый |
печатаемый в строке символ не служит |
|
для управления печатью. |
не может быть введен с перфо |
|
2.7.1.16. Оператор PgflMAT |
карт или сформирован.
2.7.1.17. В операторе P0RMAT отсутствует масштабный множитель.
2.7.1.18.Двумерные массивы располагаются в памяти по
строкам.
2.7.1.19.В операторе вдщУАЬБЫСВ нельзя указывать, иденти фикаторы простых переменных.
2.7.1.20. Отсутствуют операторы BHD PIL3, Н Е Г С Ш ) , BACKSPACE . Изменена структура операторов PUaoKР READ и WRITE , в частности, ввода с перфокарт, что вызвано особен ностями оборудования БЭСМ-4.
2»7.1.21. Обращение к параметру цикла вне его области, т.е. при выходе из нее с помощью Gff Tg или 1£ , осуществляется