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

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

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

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

Добавлен: 25.07.2024

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

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

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

- 23 -

При выполнении оператора PRIHT. указанным (в опера­ торе ВДМАТ или при помощи параметраV ) способом печата­ ются значения величин, упомянутых в списке печати.

Переменная специфицирует сама себя - печать одного значения (значения простой переменной или элемента масси­ ва).

Идентификатор массива специфицирует весь массив - печать всего массива. Если массив является двумерным, то он печатается по строкам, т.е. в следующем порядке:

а 1 1 ' а 1 2 ' * * * , а 1п*а а 22*' **, а 2 п ' * • * »вш1, а т2"" в , а шп*

Неявный цикл специфицирует некоторую часть массива. Он имеет вид:

(Л(1), 1=11, 12, 13)

или

( А ( 1 , о С ),

1=11,

12,

13)

 

 

или ,

 

 

13)

 

 

(оС ,1), М 1 ,

12,

 

 

или

J=J1, J2, J3), 1=11»

 

 

( ( A ( I , J ) ,

12,

13)

или

 

 

13), J=J1,

 

 

( ( A ( I , J ) ,

1=11,

12,

J2,

J3)

пли яе

 

12, I J ) .

 

 

( A ( I , I ) ,

1*11,

 

 

Здесь:

 

 

 

 

 

A - идентификатор массива; °C - (натуральное) число или

простая переменная; I,J,I1,I2,I3»J1,J2,J3

- параметр цик­

ла, начальное и конечное значения и шаг-соответствующих

неявных циклов (ср. 2.6.1.2.8.).

 

 

В случае вложешюсти неявных циклов наиболее быотро

меняется параметр внутреннего цикла.

 

 

При 13=1

или J3=»1

элемент неявного цикла ",13" или,

соответственно, ", J3" можно не писать. Примеры.

Печать главной диагонали матрицы 10 х 10:

PRINT 1 , ( A ( I , I ) , 1п1,10)5


- 24 ~

Печать пторой строки матрицы 10 х 10: PRIST 1, ( A ( 2 , I I ) , 11=1,10);

Печать першх трех элементов К-го-столбца матрицы 10 х 10:

PRINT 1 , ( Л ( 1 , К ) ,

1=1,5);

Печать по столбцам верхней левой подматрицы 3 x 3

в матрице х 10:

I*1,3)»Js1,3)f

PRINT 1, ( ( A ( I , J ) ,

Печать на АЦПУ в соответствии со спешфикацшшн оператора гййКАД описана в 2.6.2.2,5. Если происходит печать только (текстовое) постоянной информации, специфкцированноп (ак­ тивными) элементами формата или накопленного на буфере ос­ татка, то<список печати >отсутствует, и, таким образом, оператор печати в STOM случае будет иметь вид:

PRIifT п;

Характер вывода на узкую печать определяется значе­ нием параметра t) , который должен бить цифрой 0,1 пли 2.

V =0 - восьмеричная печать (печать команд);

^=1 - печать чисел с переводом из двоичной системы счисления в десятичную;

^=Z ~ десятичная печать без перевода (печать шиф­ ров).

Вслучае вывода па узкую печать модно печатать и интерва­ ла. .Для печати одного интервала служит (отсутствующий при печати на АЦПУ) элемент списка печати "/" (косач черта).

Для печати нескольких интервалов косая черта повторяется несколько раз.

При печати чисел или шифров интервал имеет вид:

0,

при печати команд - 1.11.1111.1111.1111

2.6,143.2. Оператор ввода с перфокарт. '

Оператор ввода с перфокарт имеет вид:

READ ОС' (5 , А, В, C m , . . . ;

- 25 -

где c*L и (3 - признаки соответственно контроля правильнос­ ти ввода и перепода вводимого материала из десятичной сис­ темы в двоичную ( = 0 - контроль есть, оСй 1 - контроля нет; =0 - перевод есть, ( 3 * 1 - перевода нет); Л, Б, С:п , ... - элементы ввода, отделенные друг от друга запятыми;

Л, В, ... - идентификаторы простых переменных (не являю­ щихся параметрами цикла и не тлеющих абсолютного адреса - см. 2.G.2.1.2) или массивов, значения которых вводятся с перфокарт (значения массивов вводятся поэлементно по строкам).

С:п - где п - натуральное число - означает, что подряд вводятся значения нескольких (а именно, п) простых пере­ менных (не являющихся параметрами цикла и не имеющих абсо­ лютного адреса). Эти значения вводятся одним массивом пер­ фокарт и присваиваются простым переменным в порядке их яв­ ного описания (см. 2.6.2.1.2). Все п простых переменных, начиная с переменной С, должны, таким образом, быть явно описаны,- в противном случае результат выполнения операто­

ра READ не определен.

Каждый элемент ввода в операторе ввода с перфокарт дожен подготавливаться в виде отдельной колода перфокарт (в частности, одной перфокарты), снабженной правильной контрольной суммой (К£), если оС=0 (контроль есть), или , " 2 1 " . если Л =1 (контроля нет).

При выполнении оператора ввода с перфокарт вводятся соответствующие массивы данных, и значения этих данных присваиваются соответствующим элементам ввода.

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


- 26 -

Длина вводимого массива данных может быть меньшей, чем длина соответствующего элемента ввода. Б этом случае

все остальные переменные (или элементы массива)-в элемен­

те ввода сохраняют свои прежние значения. При вводе с контролем об этом печатается соответствующая информация, но останов не происходит.

При вводе с переводом перед присваиваниемзначений

вводимых данных соответствующим переменным происходит пере­

вод этих значений в .двоичную систему счисления, т.е. внут­ реннюю форму представления данных в машине.

Замечание.

Нельзя непосредственно вводить с перфокарт значения

массивов - формальных параметров или массивов, расположен­

ных в динамической памяти (см. 2.6.2.1.3.5).

2,6.1.3.3. Оператор перфорации.

Оператор перфорации имеет вид:

PUNCH А, В, С:п, . . . ;

где А, В, С: п, ... - элементы списка перфорации, отделен­

ные друг от друга зашпыми.

Элементы списка перфорации в точности соответствуют элементам ввода с перфокарт (см.2.6.1.3.2.). Перфорация г::эчеки£ соответствующих переменных происходит в том виде, в каком из; представлены в машине (т.е. без перевода).

Каждый элемент списка перфорации перфорируется в виде

отдельной колоды перфокарт. В конце этой колоды перфорирует­

ся перфокарта с ее контрольной суммой, и происходит останов:

0.77. 0. 0770. 0 Еслед за этим требуется установить на читающее устройство

отперфорированную колоду перфокарт и падать па ПУСК. Про­ изойдет (фиктивный) ввод упомянутой колоды. Если она отперфорирована и ввелась правильно, то продолжится дальнейшая

работа программы. В противном случае (т.е. если колода отперфорирована или ввелась неправильно)- произойдет АВОСТ ВЗ.У,

Тогда следует выбросить эту колоду перфокарт и нажать на

-27 -

ПУСК. Произойдет повторная перфорация той же колоды,

вслед за чем нужно повторить описанную проверку и т.д. - вплоть до правильной перфорации колоды.

Замечание.

Нельзя непосредственно отперфорировать значения

массивов - форлалышх параметров пли массивов, расположен­ ных в динамической памяти (см. 2.6.2.1.3.5.).

2.6.1.3.4. Операторы обмена с ЦБ или ЫЛ.

Программист может использовать магнитную ленту на

лентопротяжных механизмах О, I , 2 и 3 и магнитные бараба-'

ны U, I й 2. Однако, если в программе тлеются обращения к стандартным программам, вводимым с перфокарт, то последняя четверть 1.Ш-2 (3.0000*3.7777) не может быть использована.

Кроме того, если имеются динамические массивы (см, 2.6.2.^.3.5.), то не может бить использовано начало памяти на

магнитных.барабанах (начиная с МБ-0), т.е. участок, раз­ ный общей длине динамических массивов (с некоторой незначи­

тельной поправкой, связанной с постраничной организацией

этих [массивов - см. $.5. ) .

Операторы обмена с Г.Ш или МЯ осуществляют считывание

или запись одного массива на магнитный барабан или магнит­

ную лепту. Соблюдение указанных выше ограничений, однако,

компилятором•не проверяется, так что при их невыполнении могут возникнуть неопределенные результаты. Используемый массив не может быть формальным параметром и не может нахо­

диться в динамической памяти.

Обмен с МБ или МЛ происходит с контролем. При неудач­ ной четырехкратной попытке записи или считывания происхо­ дит останов.

0.77. 0.7777.0 При нажатии на ПУСК попытка повторяется (см. также?. 4. ) .

Если дата записываемого массива в МОЗГ составляет н кодов, то на МБ или МП запишется (Н+1 кодов (последний код - контрольная сумма). Это следует учитывать при записи


- 28 -

последующих массивов на МБ и при разметке МЛ. Перед за­

писью на ЬШ лента должна быть соответстгущим образом

размечена.

5.6.1.3.4.1. Обмен с магнитным барабаном.

Операторы обмена с магнитным барабаном имеют вид:

WRITS С И , а), А}

для записи на МБ и

READ (14 , в ) , А;

для считывания с МБ,

где S> - номер МБ (9 =0, 1 или 2 ) , а - адрес на МБ (вось­

меричное число в диапазоне 0^а^37777д или простая пере­ менная, принимающая в момент выполнения данного оператора

целочисленные значения в диапазоне 0^ а * 16383JQ), Л - идентификатор записываемого или считываемого массива (из

МОЗУ-0 или М03У- 1 ) .

Простая переменная а не может быть параметром цикла или иметь абсолютный адрес.

2.6.1.3.4.2. Обмен с магнитной лентой.

Операторы обмена с магнитной лентой имеют вид:

 

WRITS ( 2 ^ | а ) , А|

для записи на МЛ и

 

READ ( 2 ^ » а ) , А;

для считывания с МЛ,

где

- номер лентопротяжного механизма (SI =0, 1 , 2

или 3 ) ,

а - номер зоны на МЛ (восьмеричное целое число или

простая переменная, принимающая в момент выполнения данно­ го оператора целые неотрицательные значения), А - иденти­ фикатор записываемого или считываемого массива (из МОЗУ-0 или М03У- 1 ).

Простая переменная а не может быть параметром цикла или иметь абсолютный адрес.

-29 -

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

Оператор отладочной печати слуяит для вывода указан­ ное количество раз па узкую печать элементов печати, рас­ смотрениях в 2.6.1.3.1.

Оператор отладочной печати имеет вид:

.DEBUG n, V , <список печати > }

где п - количестве повторений выполнения данного операто­ ра - натуральное десятичное число, $ - вид печати (V =0 - восьмеричная печать (команд), V =1 - печать чисел с пе­ реводом из двоичной системы в десятичную, V =2 - десятич­ ная печать без перевода (печать шифров)). Определение (списка печати > приводится в 2.6.1.3.1.

Оператор DEBUG выполняется тогда, когда на него по­ падает управление, а количество повторений его выполнения еше не исчерпано (т.е. он еще не выполнился п раз).

В случае д=1000 и/или i =1 соответствующие п и ^ мокно не писать. Если до < списка печати > указано только одно число, то считается, что это число - количество повто­ рений п. •

При печати элементы списка печати автоматически отде­ ляются друг, от друга интервалом, описанным в 2.6.1.3.1.

Примеры.

Печать 1000 раз (т.е. практически, каждый раз)чис­ лового массива А:

DEBUG А;

Печать два раза переменной С2 и диагональных элемен­ тов матрицы Р:

DEBUG 2, 02,

1-1,10 ) |

Печать каждый раз массива шифров (непереведенных де­ сятичных чисел) G:

DEBUG 1000, 2, 0}

Перед выводом £ списка печати ^ печатаются три строки:

+++0 +++++++++

++40 +++++•+++

+++0 +++++F