книги из ГПНТБ / Килов Х.И. Фортран для БЭСМ-4 (МИФ) учеб. пособие
.pdf-50 -
формата выдаются слева направо, с учетом количества пов торений. Весь процесс управления, таким образом, продол жается, т.е. происходит переход на ситуацию 2.6.2.2.5.1.
Например, в операторе Р(йаш? (X,2(19,15) ,2(21,Р10.7) ,115) выдача элементов формата происходит следующим образом:
X, 19k 15, 19, 15, 2Х, Р10.7, 2Х, Р10.7, 115, 2Х, Р10.7,
2Х, V 10.7, 1 1 5 , . . .
2.6.2.2.6. Описание отдельных элементов формата.
2.6.2.2.6.1. Печать пробелов.
Элемент формата
пХ
печатает ц горизонтальных интервалов (пробелов).
2.6.2.2.6.2. Печать текста.
Элемент формата 'сгекст/
печатает текст, расположенный между апострофами. Текст - это строка любых допустимых в ФОРТРАП-программе символов, за исключением апострофа. Пробел в тексте изображается символом
1—4 который при печати преобразуется в обычный пробел.
2.6.2.2.6.3. Печать вертикальных интервалов и перех(.,л па. новую строку.
Символ
/
(косая черта) или несколько (п) таких символов (раздели телей поля) реализует переход на новую строку и на самую левую симво.гьную позицию в этой строке, а также печать (а-1) вертикальных интервалов (т.е. пропуск (п-1) строк). При пэ1 (т.е. если имеется только одна косая черта) пропуска строк ке происходит.
-51 -
2.6.2.2.6.4.Печать переменного количества дертикальных
интервалов.
Элемент формата - У
( 1 - идентификатор переменной, которая к моменту ссылки, на рассматриваемый оператор JgfiMAT должна иметь натураль ное значение i ) реализует печать i вертикальных интерва лов и переход на самую левую символьную позицию в новой строке. Идентификатор I не должен быть параметром цикла, содержащего данный оператор МКМАТ или какой-либо из опе раторов PRINT , в котором имеется метка этого оператора
Р0ЙМАТ.
2.6.2.2.6.5. Печать целых чисел. Элемент формата
реализует повторяющуюся и раз печать целых чисел (т.е. чисел с округлением до ближайших целых). Печатаемое чис ло занимает поле в w символьных позиций и размещается в правом конце поля. Если оно состоит из К цифр (К^. W), то происходит печать (W-к) пробелов и К значащих цифр числа. Если к> W, происходит печать вс«х К цифр и, таким образом, сдвиг вправо всего последующего материала в пе чатаемой строке на (к-w) позиций. Если число отрицательно, то считается, что оно состоит из (К+1) цифр, и перед числом печатается знак минус. Знак плюс перед числом не печатается и не занимает места.
Перед печатью происходит округление. Пример.
J=5000; К=-72.9; LL=99.51;
PRINT 1, J, К, LL;
1; F0RMAT (X, 15, 14-, X, 13) 5
Печатаемая строка:
Позиции; |
-7? |
Ш |
|
|
|
X 15 |
14 I |
13 |
2.6.2.2.6,6. Печать чисел с плавающей точкой. Элемент формата
nPw. d
реализует повторяющуюся к раз печать чисел с плавающей точкой. Число перед печатью округляется до d значащих
цифр после десятичной точки. Печатаемое число занимает
иоле в ? СИМВОЛЬНЫХ позиций и размещается в правом конца поля, причем количество позиций за десятичной точкой рав
но d(«^- d+a).
Печатается: нужное количество пробелов, если потре буется; знак минус, если число отрицательное; и строка цифр (содержащая десятичную точку) - значение печатаемо
го числа. Если печатаемое число (строка цифр плюс знак) v
занимает Солее w символьных позиций, то происходит печать
всего BTGro числа и, таким образом, сдвиг вправо всего последующего материала в печатаемой строке. Знак плюс пе ред числом не печатается и не занимает места. Если d=o, !?о ае печатаемся и десятичная точка.
»» *
шт1. |
в. as |
1$ JgffifAJ |
(У7с2, Р7.4, F 4 . 0 ) ; |
Печатаемая строка:
719 . 00719 . 0000 -2,
-63 -
.Поле М„0 сдвинулось на 1 позицию'вправо, т.к. поля %7Л не было достаточно для печати соответствующего числа (не хватило одной символьной позиции).
2.6.2.2.6.?. Печать чисел с десятичным Элемент формата
nfiw.d
реализует повторяющуюся п раз печать чисел с десятичным порядком. Печатаемое число занимает поле в w символьных
позиций и размещается в правом конце поля. Вид печатаемо
го числа:
(для положительного числа) или:
(.<да отрицательного числа).
d - количество позиций за десятичной точкой. Требуется,
чтобы выполнялось условие w-d 2- б„ в противном случае
пользоваться форматом нельзя. Если печатаемое число зани
мает больше Я символьных позиций, то происходит печать
всего этого числа и, соответственно, сдвиг вправо всего
последующего материала в печатаемой строке.
2.6.2.2.6.8. Печать вооьмевдчаых чисел. Элемент формата
и0 >Л - Л
реализует повторяющуюся п раз печать указанных цифр вось
меричных чисел. Печатаемая величина рассматривается как 15-значное восьмеричное число (содергоплое ячейки):
°Л ^г^з • • • J-ii
Печатается часть указанного числа, начиная от цифры с по рядковым номером ~~Ьл и кончая цифрой с порядковым номером -\ . Таким образом, должно соблюдаться условие:
Например, для печати первой цифры некоторого восьмерично го числа следует указать формат:
- 54 -
01.1
Пример:
1=1 5
|
|
i , i , i |
, i |
; |
|
||
1s |
|
F0HMAT |
(01.3, |
53t, 05.5, X, 04.4) |
|||
Печатаемая строка: |
|
|
|
|
|
||
Позиции: |
1 0 |
1 |
|
о |
0 |
4 |
|
1 |
2 |
3 456 78, |
9 |
1 |
|||
|
01.3 |
5 i |
|
X |
04.4 |
(Число 1 в ячейке выглядит следующим обозом:
1.01.4000.0000.0000).
2.6.2.2,6.9. Печать десятичной кн&ормащш без порьви.ца
(печать шифров)
Элемент фермата
реализует повторяицуюся п раз печать указанных цифр иопереведенных (т.е. двоично-кодированных) деситшпшх чисел. Печатаемая величина рассматривается как двоичло-конкрован-
пае десятнчное число
tit. /b<ftifi,(i4ps (% {ЪЦЬ% р 3
( fie - тетрада - 4 бита).
Печатается часть указанного числа, начиная с цифры (тет рада) с порядковым номером т)< и кончая цифрой с порядко-
ачм номером |
К' |
|
Левые 5 битов этим форматом отпечатать нельзя, так |
||
что додано соблюдаться условие: |
||
О i_ % |
< \ |
4 9. |
2,6.2.2.6,10. Печать алфавитно-цифровой информации (последовательности символов)
- 55 -
Элемент формата
пА реализует повторяющуюся п раз печать последовательности
символов (алфавитно-цифровой информации). Именно, печата емая величина рассматривается как последовательность
(строка) из 4 алфавитно-цифровых символов, закодировашшх в коде АЦПУ' (см. Э. ) и зшсодировапных в ячейке сле
дующим образом:
-4-1 I I I L |
|
|
|
9 бит |
12~бит |
1*Г бит |
12 бит |
Таким образом^каждый |
символ состоит из 7 разрядов. Эта |
информация может быть создана в ячейках машины, как пра
вило, при вводе с перфокарт соответствующих массивов. Ра зумеется, с этой целью можно использовать и автокод. Код
170 (конец информации) прекращает набор печатаемых симво лов (т.е. вместо 4 символов отпечатаются 0, 1 , 2 или 3 символа).
Пример:
М Е 2 ч;
2: 74, 62, 56, 177j
3:13, 177, 54, 50{
4: 64, 170, О, О;
1:00, !2, О, А(1);
00, |
:3, |
О, А(2); |
00, |
:4, |
О, А(5)| |
PRINT 5, |
(A(I),I =1,3); |
5:FORMAT (ЗА) ;
Печатаемая строка |
- |
|
М И Ф |
|
Позиции: |
Э Т О |
6 |
||
1 2 3 |
4 5 |
7. 8 9 |
(Пробел изображается символом с кодом 177).
- 56 -
2.6.2.3. Оператор BMP
Оператор Ш > сообщает компилятору, что физически заканчивается некоторая программная единица (в частности,
основная программа). Этот оператор имеет вид:
END;
или (только для основной программы)
END
В конце каждой подпрограммы, т.е. вслед за последним ее
. оператором, должен быть оператор "вт>у . В 'конце, основ ной программы или, что то тке самое, в конце всей(L<OI-TPA1I
«программы, должен стоять оператор "КНР" - последний символ программы.
2.6.2.4. Оператор COMMENT
Оператор COMMENT не оказывает никакого влияния на
процесс компиляции и служит только для размещения поясне ний в Ф0РТРАН-1грограшё. Oil может быть расположен и любом
месте ФОРТРАН-программы; в частности, он может быть ее первым, вслед заgPTIflN (если они есть), оператором.
• Оператор C44MSNT имеет вид:
(ffififSffg < строка любых допустимых символов ФОРТРАПа, не содержащая точки с запятой > ;
Программистам рекомендуется при написании достаточ но оаоаных программ широко пользоваться данным оператором для комментирования основных идей и наиболее сложных мест программы. Зто значительно упростит понимание программы как для других пользователей, так и для самого автора че рез некоторое время пооле ее составления. Как показывает изучение большого числа ФОРТРАН-программ, составленных в крупных ВЦ £7J , от 11 до 28$ всех операторов в програм
ме составляют комментарии.
^.6.2.5. Операторы 0МЩЯ . управляющие процессом компи
ляции.
- 57 -
Как правило, при компиляции ФОРГРАН-програмш осуще
ствляется некоторый стандартный набор добавочных действий. Если требуется этот набор изменить, следу, т использовать
онераторы 0РКГЩ. Эти операторы должны быть написаны U
любом порядке) в самом начале ФОР'ГРМ-пгюх'раглмы, и ника кие другие операторы не могут предшествовать ни одному из
операторов g p j i g g . Если же программист не требует выполне ния каких-либо добавочных действий, отлнчаюнцисся от стан
дартных, то операторы 0РТ10Ы не нужны.
Стандартными действиями являдаея:
-печать листинга «ЮРТРАП-программы; - контроль стандартной длины раоочего поля ИС-214;
-печать адресов операторов в рабочей программе;
-чистка динамических массивов (если они есть);
-печать распределения памяти рабочей программы (происхо
дит всегда, см. 3.) „
Подробно эти действия описаны ниже.
Введены операторы ffPHffH , реализующие следующие действия:
-запрет печати листинга;
-запрет печати адресов операторов в рабочей программе;
-контроль указанной длины рабочего полЛ' I'.C-'t'M;
. - аытюд рабочей программы на узкую печать;
-печать рабочей программы на А1ЩУ;
-вывод рабочей программы на перфокарты;
-блокировка чистки динамических массивов на магнитных
барабанах.
Следает отметить, что рабочая программа для своего выполнения требует осуществления ряда предварительных дей ствий (см-. 3.). За и действия осуществляются программой
старта, которая создается компилятором и автоматически
Г змещается им перед рабочей программой. 3 конце своей
работы программа старта размещает рабочую программу, на чиная с ячейки 0010, или, при наличии динамических масси
вов,- начиная с ячейки 0320, и передает ей управление (в
- 58 -
ячейку 0010 или 0320). На узкую печать выводится только сама"рабочая программа (соответственно, с ячейки 0010
или 0320). На перфокарты выводится (с ячейки 00*0) пол ностью готовая к работе программа, состоящая из программы
старта и следующей за ней рабочей программы. Вывод на АЦПУ совпадает с выводом на перфокарты.
2.6.2.5.1. Запрет печати листинга.
Компилятор, как правило, печатает листинг Ф0РТРАНпрограммк. Листинг печатается на АЦПУ пооператорно, с ^
указанием номеров операторов (см. рис. I ) . Если, том не менееs программист желает блокировать печать листинга
(например, при компиляции уне отлаженной ФОРТРА![-програм
мы), он может запретить эту печать. Для этого следует на писать:
m m |
i i |
2.6.2.5.2. Печать адресов операторов в рабочей программе.
Каждому выполняемому оператору 'т,0РГРАН-гп.юграммы соответствует некоторый диапазон адресов в рабочей про грамме. Если программист не желает, чтобы ото соответст вие печаталось, то он должен написать:
m m |
2 ; |
информация об указанном соответствии может оказаться по лезной, например, при -поиске возможных причин сбоя в ра
бочей программе.
Вывод осуществляется на узкую печать в виде ряда
строк: |
|
где U T I J L V J ^ |
- десятичный номе{ оператора в ФОРГРАН- |
программе; |
|
cL<J.Z6LbU4 - восьмеричный адрес первой команды ука
занного оператора в рабочей программе.
Если требуется вывод рабочей программы на узкую пе-
- 59 -
чать, то печать адресов операторов происходит после него,
2.6.2.5.3. .1й?.нтиоль указанной .донки рабом'..'О прлд
Компилятор отводит для.рабочего поля (РП) ИС-2М все свободное поло МОЗУ-0, оставшееся после равменения
рабочей программы, ИС-2М, рабочих ячеек, щюотих перемон-
ных и расположенных в ЫОЗУ-0 массивов (ом, 2,6,2.1,3.). Поэтому, если возникает необходимость увеличить длину РП,
надо часть массивов переместить ь йОЗУ-I или в динамичес кую память. Компилятор требует, чтобы длина РП была не
меньше 300^ при отсутствии Б ООРТРЛН-программе оператора P R I NT (или ашзОц ) , или 321^1 когда есть вывод только на
узкую печать, или не 736g при ниягаш вывода на АЦПУ. При
необходимости резервировать большую или (при отсутствии печати) меньшую длину РП, следует написать
0PTI0W з> г л;
где дл - требуемая длина РП (восьмеричное чисто).
Если для РП в МОЗУ-0 не хватает меота. то компиля
тор прекращает работу, отпечатав предварительно соответ ствующее сообщение,
2.6.2.5.4. Вывод рабочей прогивмми на узкую печать
Как правило, рабочая программа (без программы стар та - CM„BU«G) не выводится на узкую печать. Если програм мист желает осуществить такой вывод, он должен написать
При выводе перед каздой командой, адрес которой кратен
.10^, |
печатается этот адрес в виде |
|
где |
77777777777J |
- ^ u ^ |
J^oixoi^'-tj- |
соответствующий адрес. |
Какому выполняемому оператору ФОРТРАН-программы соответ
ствует некоторый диапазон адресов в рабочей программе. Перед первой командой из этого диапазона печатается:
555 5555 5555 ^ Л М ч