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

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

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

-40 -

Например, описание

EQUIVALENCE (А(1), В<1), 0(5D )j

означает, что первые элементы массива В будут расположены на том же месте в памяти, что и первые элементы массива А; кроме того, элементы массива С, начиная с 51-го, будут рас­ положены в тех же ячейках, что и элементы массивов А и В, начиная с 1-го. Если длина массива Л - 100 элементов, мас­ сива В - 50 элементов и массива С - 100 элементов, то опи­ санное расположение массивов в памяти может быть проиллю­ стрировано следующей схемой:

 

АН

1

 

B I —

лсл

С И

V

1

4

sts-f

-too

Запрещается в одной и той ;.;е группе EQUIVALENCE использовать массивы, принадлежащие к разным видам памяти (МОЗУ-О, МОЗУ-I, динамическая память).

Запрещается прямо или косвенно (т.е. через одну и ту же или разные группы EQUIVALENCE ) делать эквивалентными элементы одного и того же массива. Так, например, неверны описания:

EQUIVALENCE

(1),

В(1), А(2)) ;

И

(1),

В(1), С О ) ) , (1), А ( 1 ) ) ;

EQUIVALENCE

массиву из описания

EQUIVALEBCE не может быть присвоен

абсолютный (реальный) адрес (см. 2.6.2.1.3.2.). •

х Если в описании EQUIVALENCE используется двумерный массив переменной структуры (см. 2.6.2.1.3*4.), то индекс этого массива в данном описании может состоять только из одного числа или же, как исключение, из двух чисел, первое из которых должно быть единицей.

2.6.2.1.5. Описание EXTERNAL

Если идентификатор какой-либо подпрограммы А4 пеполь-

-41 -

зуется в качестве фактического параметра при обращении к

другой подпрограмме В, то идентификатор должен быть

описан в описании EXTERNAL . Соответствующий формальный параметр подпрограммы В будет формальным параметром-под­

программой и также должен быть описан в описании BXTBRNAL. Описание EXTERNAL имеет вид:

EXTERNAL /S1/A1,В1,...,/S2/A2,B2,...;

где S1, 32,... - формальные параметры-подпрограммы, каж­

дый из которых образует свою группу;

A1, В1, А2, В2, ... - подпрограммы - фактические па­

раметры, соответствующие формальным параметрам из своих

« групп EXTERNAL.

Если в списке формальных параметров подпрограммы В

имеется формальный параметр-подпрограмма S1 , то при об­ ращении к подпрограмме В в списке фактических параметров

формальному паудметру 31 мотет соответствовать любая из принадлежащих к соответствующей группе EXTERNAL, подпро­ грамм, т.е. А1, В1, ...

Пусть например, подпрограмма SINT вычисляет интег­

рал по методу Симпсона. Тогда соответствующие кусш

ФОРТРАН-программы для вычисления интеграла от функций FUN

и FF будут иметь вид:

EXTERNAL /F/FUH,FF;

SUBROUTINE 8INT( ... ,F);

END;

FUNCTION FUN(X);

END;

FUNCTI0N F F ( X ) ;

END;

-42 -

CALL SINT(...,FUN);

CALL SINT(...,PF)J

END

Описание EXTERNAL ДОЖГЛО быть глобальным описанием (см. 2.5.2), т.е. долига находиться до первого описания

какой-либо подпрограммы в ФОРТРЛН-програше.

Одна и та же подцтрограмма может входить в несколько

разных групп EXTERNAL.

Все подпрограммы из одной и той л;е грушш EXTERNAL

должны быть описаны одинаково, т.е. у них дол;:он совпадать

тип (подпрограмма типа SUBROUTINE или подпрограьп.а-функ- циял, а также количество, порядок и типы (спецификации) формальных параметров.

Подпрограммы из одной и той л;е группы EXTERNAL не должны обращаться друг к другу,т -е. если подпрограммы А1 и В1 принадлелат к одной и той ке группе EXTERNAL , то в подпрограмме А1 не долкно быть прямого или косвенного обращения к подпрограмме В1 и наоборот.

Нормальный параметр 31 из некоторой групш: EXTERNAL

может появиться в списке формальных параметров како::-лпбо

подпрограммы ке раньше, чем будет определена (описана)

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

А1 ^В-** <,.»•)#

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

2.6.3,3.).

Поэтому, если, например, требуется вычислить инте­

грал также и от функции SIN(X) , то следует писать (см.

также предыдущий пример): * е »

EXTERNAL /У/ ГОЛ, РР, 3IB1;

FUNCTION SIH1 (X)-, SIN1,= SIH(X);

RETURN,

END;

• • a

CALL SINT(..., SIH1) i

*О *

END

Если иэпшлъшй яарапет^чюдпрограи.'д ьотречаетсн в

описании EXTERNAL , то это л является его спецификацией

(см. также 2.6.2.СЛ.).

J3 <1'0РТРАП-програше может бить несколько описаний

EXTERNAL.

2.6.2.2. Оператор FORMAT,

Оператор F0RMAT используется при печати па АЦПУ и содержат информацию о редактировании и преобразовании пе­ чатаемых данных из внутреннего представления в машине во (внешнюю) строку символов на АЦПУ.

Печать на АЦПУ осуществляется с помощью оператора PRINT (см. 2.G.I.3.I.), в котором указывается метка соот­ ветствующего оператора F0BMAT . Поэтому оператор PflfRMAT домен всегда бить помечен. Ссылка на эту метку может встречаться только в (возможно, нескольких) операторах

PRINT.

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

где f

mm

< f » 1 V 2 V " , , a t i A ) - »

\

- организационная информация (см.ниже);

»±

- разделители поля. Разделителем поля может быть

запятая, косая черта - символ "/" - или несколько символов "/", например:

/////

- 44 -

t i - описатели поля, состоящие из одного (активного

или пассивного) элемента формата или группы таких элемен­

тов. Группа элементов формата (повторяемая группа), в сми очередь, имеет вид:

У ( a n ». .а 1с^1с^ *

где Г - количество повторений, причем Г не пишется при

p a l . Внутри повторяемой группы не может быть друх'ой пов­ торяемой группы, т.е. каждое 1^<з=1,... Д ) - один эле­

мент формата; Г - натуральное десятичное число; в { , - один или несколько символов "/".

f и/зли Я<, могут отсутствовать; m может бить, незалисмаго от этого, равным нулю (оператор FgfRMAT(0) олужхт ,цля

печати остатка - см. 2.6.2.2.4.). Каждый элемент формата,

атакже символ V" реализует печать какой-либо•информации,

-либо указанной в операторе PRIKT (в случае пассивных

элементов формата), либо явно указанной в операторе P0RMAT (в случае активных элементов формата).

2.6.2.2.1. Имеются следующие элементы формата:

аХ * < текст > '

OS $4 . \

.

а£. .

 

где в - количество повторений одного элемента формата (п

может отсутствовать - тогда п=1);

w - количество печатаемых символов (т.е. ширина поля выводимой строки символов);

d - количество цифр после десятичной точки;

порядковые номера цифр - информация печатается, на-

чилая с цифры с порядковым номером V4 и кончая цифрой с порядковым номером V, .

 

-

45 -

n,w,d, i i ^ b

~

натуральные десятичные числа.

Элементы формата п-Х, -

I

/ и символ "/" служат для печати

горизонтальных и вертикальных интервалов; элемент формата <<текст>. - для печати указанного в этом элементе текста; элементы формата nlw , nFw.a и nEw.d - Для печати чисел (с переводом); элемент формата пд1%Уь - для печати вось­ меричной информации; элемент формата nsv,.^ - для печати десятичной информации без перевода (.идя печати шиф­ ров) ; и, наконец, элемент формата пЛ - для печати алфа­ витно-цифровой информации.

Подробное описание элементов формата приводится ниже (см. 2.6.2.2.6.).

2.6.2.2.2. Если требуется многократное использование одно­ го и того же элемента формата или группы элементов формата, то следует воспользоваться счетчиком повторений ( - в случае одного элемента формата и Г - в случае группы элементов формата - см. вы..е). Тогда соответствующий эле­ мент (группа элементов) формата будет выдав?ться многократ­ но - столько раз, сколько указано в счетчике повторений

(т.е. элемент формата выдается

раз и, соответственно,

группа элементов формата

-

г раз).

2.6.2.2.3. Внешним представлением информации при печати на АЦПУ являются строки символов.

В одной строке размещается 128 символов. Рекоменду­ ется избегать переполнения печатаемой строки. Если же про­ грамма потребует отпечатать "строку" с большим количеством символов, то отпечатаются две или более строк, в первой из которых отпечатаются первые 128 символов, во второй, начи­ ная с самой левой символьной позиции,- 128 следующих сим­ волов и т.д. Символьные позиций в строке нумеруются слева направо.

Замечание. Если при Наборе ^строки" длиной более 128 символов произойдет переполнение буфера АЦПУ (см,2.6.2.2.4.), то печатаемый материал будет испорчен.

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

-46 -

количество обращении к (возможно, различным) оператором PRINT равно или больше числа, указанного в организацион­

ной информации. Если организационная ыипормац:щ отсутст­ вует, то указанное число считается равным единице, и в

втом случае печать накопленного материала происходит при

кандом обращении к соответствукщему оператору PRINT.

Тем не менее, эту организационную информацию рекомендует­

ся указывать и использовать, так как АЦПУ работает значи­ тельно медленнее процессора, а печать из буфера машины мо­

жет происходить одновременно с работой процессора (со сче­ том) [ 4*1 , что приводит к значительной экономии машинного

времени и более выгодному режиму работы АЦПУ.

Кроме того, организационная информация, позволяет

осуществить набор строки из фрагментов. При этом необхо­

димо следить за тем, чтобы печать не происходила до окон­ чательного набора строки.

Для печати остатка накопленного на буфере материала

можно воспользоваться, например, следующими операторами:

PRIHT 100; 100»ffiRMAT(О);

ИЛИ:

PRIST 1011

101»

ттт

(*К0НЕЦ,_, ЗАДАЧИ*); и т.п.

Следует отметить, что буфер машины используется для накопления материала и при узкой печати или перфорации.

Поэтому, воли печать на АЦПУ происходит в режиме накопле­ ния на буфер, т.е. не при каждом обращении.к оператору PRIST следует позаботиться о том, чтобы к моменту уз­ кой печати или перфорации накопленный на буфере материал был отпечатан.

Организационная информация имеет вид:

В

или;

+

или;

- 47 -

или:

< пусто > ,

где N - натуральное десятичное число,

Печать накопленного на буфере материала происходит либо

при заполнении буфера до определенного предела (независи­ мо от N ) , либо если количество обращений к операторам

P R I NT

после последней печати равно или больше

и „ В

последнем случае сразу после печати содержимого буфера

количество обращений к операторам P R I N T

считается рав­

ным нулю.

 

 

 

Как правило, т.е. при отсутствии символа "+", набор

материала на буфер, инициируемый оператором

P R I N T

.начи­

нается с перехода на новую строку и на самую левую сим­

вольную позицию в этой -отроке» Однако, при наличии симво­ ла - такого перехода не произойдет, т„е, набор мате­

риала на буфер продолжается с той же символьной позиции Й той же строки, на которой прервался предыдущий набор. Ес­

тественно,это имеет смысл лишь тогда, когда на буфере име­

ется накопленный, но еще не отпечатанный материал, т»к»

иначе набор происходит с самой левой символьной позиции

новой строки.

Например, печать олова: ПРОГРАММА

может происходить следующим экзотическим образом:

1:РИША1

(99, *ГГ ) i

 

2: gjftaiAT

(+,99, ' Р*) 5

1

 

 

3» Р0КШТ

(у,99. *0Г4 ):

 

4; Р0ЭД1АТ (+,99, *АММЛ*){

 

5» FORMAT(О);

 

P R I N T

1|

 

P R I N T

2;

 

P R I N T

3;

 

P R I N T

2}

 

P R I N T

4;

 

P R I N T

5;

 

Отсюда видно, что в качестве N можно взять любое доста­ точно большое число, и затем отпечатать накопленный ыа-

-48 -

териал с помощью печати остатка.

другой пример - печать столбца однозначных чисел.

1 ; FORMAT (99,11) {

PRINT 1 , 1 ;

За FQRMAg (2,20 ( ' - ' ) ) ;

PRINT 3»

В этом случае никакой печати остатка не требуется, т.к. к моменту выполнения оператора PRINT3 количество обращений к операторам PRINT уже станетравным ю , что больше указанного в операторе FORMAT с меткой 3 (г.е. в операторе FORMAT , соответствующем оператору PRINTз) Ня2 . Поэтому вышеуказанная группа операторов непосред­

ственно отпечатает накопленный на буфере материал в ви­ де столбца однозначных чисел и строку:

под этим столбцом. Точно такую же печать вызовет указан­ ное в операторе FORMAT с меткой 3 любое N в диапазоне от

1 ДО 10,

не обя­

Повторяем: указание N в операторе FORMAT

зательно. Когда н не указано, считается, что N=1

, и пе

чать будет происходить при каждом обращении к оператору ранг? , Такой реким работы машины, однако, как правило, является невыгодным, хотя программа будет работатг пра­ вильно и в этом случае. Явное использование свойств бу­ фера при печати рекомендуется и при оптимизации ФОРТРАН. -Хфограмм на других машинахС 63 .

2*6,2.2.5. Начало выполнения оператора PRINT (на АЦПУ) ннЕцоирует управление процессом выдачи печатаемой инфор­ мации при помощи оператора FgRMAT . Накопление на буфер и печать этой информации происходит по правилам, указан­ ным в 2.6.2.2.4. Каждое отдельно взятое действие управ­

ления при помощи оператора FORMAT зависит от инфор\1ации обеспечиваемое совместно простейшим элементом списка пе

-49 -

чати (см. 2.6.1.3Л..), если такой элемент есть, и следую­ щим элементом формата. Элементы формата выдаются слева направо, с учетом количества повторений.

Оператор управляет процессом выдачи информа­ ции следующим образом:

2.6.2.2.5.1. Если элемент формата является активным эле­ ментом формата (т.е. если он является одним из элементов пХ , *< текст >' , а также символом '*/")» то инфор­ мация, указанная Б этом элементе формата, непосредственно видается на печать. После этого происходит переход к сле­ дующему элементу формата.

2.6.2.2.5.2. Если элемент формата является пассивным эле­ ментом формата (т.е. если он является одним из элементов

IW , Pw.d

, Ew.d ,

. S ^ . ^ j . » А), то, если в спис­

ке печати

еще остались простейшие элементы, про­

исходит преобразование текущего простейшего элемента из списка печати (т.е. одной простой переменной или одного ялеыента массива) в соответствии с указанным форматом и выдача на печать преобразованного материала. Если не в списке печати больше не осталось простейших элементов, то "выполнение оператора рдшт под управлением оператора |^ШАТ на этом завершается. После выдачи на печать преоб­ разованного материала происходит переход к следующему простейшему элементу из списка печати и к следующему эле­ менту формата.

2.6.2.2.5.3.Если элементов формата больше нет и нет больше простейших элементов в списке печати, то выполнение оператора PRIM; под управлением оператора JjgRM&£ на этом заканчивается.

2.6.2.2.5.4.Если элементов формата больше нет, а в спис­ ке печати еще остались простейшие элементы, то происходит "ереход на новую строку печати и на самую левую символь­ ную, позицию в этой строке,и элементы формата начнут выда­ ваться заново, начиная от первой справа открывающей круг­ лой скобки в операторе РЙЮШ : . И в этом случае элементы

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