Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
GRIGOREV.DOC
Скачиваний:
4
Добавлен:
01.07.2025
Размер:
608.26 Кб
Скачать

2.12. Общие области, подпрограмма block data. Оператор equivalence

В языке FORTRAN отсутствует возможность описания глобальных имен, все имена переменных и массивов являются локальными и определены только в той подпрограмме, где они описаны. Взамен FORTRAN предоставляет аппарат общих областей. Общая область описывается в виде:

COMMON [/имя/] список

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

Для инициализации переменных из именованных общих областей служит специальный тип подпрограммы - BLOCK DATA. Подпрограмма BLOCK DATA имеет такую структуру:

BLOCK DATA [имя]

описания общих областей

операторы DATA

END

К подпрограммам BLOCK DATA не нужно специально обращаться, они выполняются автоматически. В программе может быть сколько угодно подпрограмм BLOCK DATA, но только одна неименованная.

Оператор EQUIVALENCE позволяет совмещать по памяти различные переменные и массивы, в том числе и данные разных типов. Оператор записывается в виде:

EQUIVALENCE (список объектов)[,...]

Здесь список объектов - это разделенные запятыми имена переменных, имена массивов и элементы массивов. Количество совмещаемых объектов не ограничено. Существует несколько ограничений на использование оператора EQUIVALENCE :

1) совмещения не должны противоречить друг другу;

2) совмещаемые переменные и массивы нельзя инициализировать в операторе описания типа, но только в операторе DATA;

3) нельзя совмещать два объекта, если оба они входят в общие области;

4) не рекомендуется совмещать символьные и несимвольные объекты.

2.13. Символьные переменные

Символьные, или строковые, переменные описываются в виде:

CHARACTER[*общая длина] имя[*длина] , ...

Если задан описатель длина для какой-либо переменной, то он отменяет для этой переменной действие описателя общая длина. Если длина вообще не задана, она считается равной единице. Наибольшая возможная длина строки равна 32767. Символьные переменные можно инициализировать в операторе DATA и операторе присваивания. Если присваиваемое значение длиннее, чем переменная, то оно усекается справа, если короче, то дополняется справа пробелами. Таким образом, символьные переменные в языке FORTRAN имеют фиксированную длину. Неинициализированные символьные переменные заполнены 0-символами. Допускаются символьные массивы любой размерности.

Именованные символьные константы задаются обычным образом в операторе PARAMETER, но такие константы должны быть дополнительно описаны в операторе CHARACTER. Символьные переменные можно выводить оператором PRINT* и вводить оператором READ*, но при вводе символьные значения следует задавать в апострофах. При форматном вводе-выводе используется формат A.

Существует только одна символьная операция - // - конкатенация или сцепление строк. Кроме того, к символьным данным применимы операции сравнения .EQ., .NE., .LT., .LE., .GT., .GE.

Имеется возможность непосредственного обращения к любой подстроке символьной переменной, для этого используется псевдопеременная “подстрока”:

имя строки([начало]:[конец])

где начало и конец - целочисленные выражения, задающие номера первого и последнего символов, образующих подстроку. Если не задано начало, то подстрока начинается с первого символа строки, если не задан конец, то подстрока включает весь остаток строки ( но символ : обязательно должен быть записан). Точно так же можно обратиться к подстроке элемента символьного массива. Подстрока может не только быть операндом выражения, но также стоять в левой части оператора присваивания, вводиться оператором READ и инициализироваться в операторе DATA, т.е. подстрока может использоваться точно так же, как и настоящая символьная переменная.

Для обработки символьных данных в языке FORTRAN есть две встроенные функции:

LEN(character) INTEGER - возвращает длину строки, но, поскольку строки в языке FORTRAN имеют фиксированную длину, возвращаемое значение всегда есть максимальная длина строки или длина строки по описанию.

INDEX(character,character) INTEGER - возвращает номер символа в первом аргументе, начиная с которого второй аргумент входит в первый или 0.

Параметрами подпрограмм могут быть символьные переменные или символьные массивы. Они должны быть соответствующим образом описаны в процедуре. Длину строки можно задавать константой, переменной или использовать описатель неопределенной длины (*). Отметим, что именно для таким образом описанных строк-параметров и используется функция LEN.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]