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

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

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

-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

 

 

PRINT

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 ^ Л М ч

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