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

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

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

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

Добавлен: 25.07.2024

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

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

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

- 38 -

щения одной или нескольких страниц. Обмен страницами меж­ ду МОЗУ и МБ при обращении к элементам динамического мас­ сива происходит автоматически. Следовательно, пользова­ тель работает с динамическими массивами точно так же, как и о обычными (расположенными в МОЗУ) массивами. Общая дли­ на динамических массивов (при полном использовании трех МБ) может быть равна 48768 ячеек.

2.6.2.1.3.5.2. Описание динамического массива имеет вид:

REAL'

AC °t) <D > , ...,B(j» , p<D> '

 

...,С(О.С0ЬЗ N /<?/)< D > ,

где А,Б,С, - идентификаторы динамических массивов, °С|?|<Н Ь - натуральные десятичные числа;

' К см. 2,6.2.1.3.4.

1> - признак динамического массива. 2.6.2.1.3.5.3. Все .динамические массивы располагаются на МБ подряд, начиная с нулевого адреса нулевого МБ. Распо­ ложение и длина поля страниц динамических массивов в МОЗУ определяется компилятором автоматически„ Организация всех

действий о динамическими маосивами (создание административ­ ной системы я реализация обращений к элементам динамических

кассявов) осуществляется с помощью написанного Б.Б.Леш

па­

кета из четырех стандартных программ (см. 8.5.

)•• К

.гнуу£?ср соктдет соответствующие команды в рабочей программе 2.В.2.1.3,0. Д^мерные массивы (матрицы) распадаться в память ло отрокам.

i«5»SeI.3.7. Замечания. ,

2«6*2«1»3,7.1. Описания типа, т.е. простых переменных и злайоивоз, могут встречаться в ФОРТРАН-программе в любом козвчестзо. Все эти описания должны размещаться перед аершм ззыначняемкм оператором соответствующей программной едааицн, 2 6.2.Г.Э.7.2, Проотые переменные и массивы могут быть

аврвчаолены в лобок описания типа в произвольном порядке.

Опнсакжя

-39 -

REAL A,B(10);

. REAL B(10),A;

эквиваленты меаэду собой и совокупности описаний

REAL А; REAL В ( 1 0 ) {

2.6.2.1.3.7.3. Простые переменные, для кбторых не указан их абсолютный адрес (см. 2.6.2.1.2.), располагаются в ну­

левом кубе подрад.

Массивы, для которых не указан их абсолютный адрес,

располагаются в соответствующем кубе (см. 2.6.2.1.3.3.)

подряд.

2.6.2.1.4. Описание EQUIYALEHCK

Как известно, полями для различных массивов служат

различные области памяти. Однако, имеется возможность ис­ пользовать одно и то »е место в памяти для хранения раз­

личных массивов. Это ыокет быть весьма полезным, например, при нехйатке места в памяти и в ряде других случаев. Для этого используется описание EQUIVALEHOB , которое имеет вид:

где каждое

EQUIVALENCE ( Ж , ) . ( K - J

К^,(ьюкет быть только одно) называется группой

ВОШУАЬВНСВ

И, в свою очередь, имеет вид:

 

A(ot ) , в(/» ) , ос j f \ S"),.•.

где А,В,С... - идентификаторы массивов;

oCf j j j л

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

Массивы А,В,С,... должны бить предварительно описаны в данной программной единице. Эти массивы не могут бить фор­

мальными параметрами.

Это означает, что элементы массивов A(ot)».B(|5 )» С( у , X" ) занимают одну и ту же ячейку в памяти.

Поскольку элементы внутри массива располагаются в памяти подрад, соответственно будут расположены и другие

элементы массивов А, В и С.



-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, .