Данные комплексного типа. Данные логического типа. Данные символьного типа. Дополнительная классификация, страница 4

Продолжая "ящичную аналогию", одномерный массив можно представить как выстроенные в ряд ящики одинакового размера, которые последовательно склеены друг с другом. К началу склейки прикреплена этикетка с именем массива. Каждый ящик соответствует одному элементу массива. На всех ящиках проставлены в возрастающем порядке целочисленные номера, начиная с некоторого начального. Номера соседних ящиков отличаются на единицу. Начальный номер может быть, в принципе, любым, но мы условимся для нашего же удобства считать его равным 1. Номер ящика представляет значение индекса одномерного элемента массива.

Таким образом, условимся, что индекс в одномерном массиве представляется произвольным выражением целого типа с минимальным значением, равным 1.

При записи элементов двумерных массивов договоримся считать первый индекс – индексом строки, а второй индекс – индексом столбца.

Например, запись  MX i, j представляет элемент матрицы MX, расположенный на пересечении  i-й  строки и  j-го столбца.

Обращение к элементу массива при реализации алгоритма на ЭВМ сопряжено с вычислением значений индексов и определения по этим значениям  адреса  слова памяти, содержащего элемент массива. Связь между значениями индексов и адресами устанавливается с помощью  формулы доступа  и  адресной таблицы. Адресная таблица – это таблица имен всех объектов, входящих в программный модуль, и  базовых адресов памяти, связанных с ними.

Каждый базовый адрес определяет первое слово области памяти, содержащей данное (в частности, массив).

Формула доступа – это формула, позволяющая установить соответствие между конкретным элементом массива и его адресом  относительно базового адреса, т.е. с относительным адресом. Если, допустим, мы работаем с одномерным массивом R, то при обращении к элементу Ri относительный адрес будет вычислен по формуле Addr i = i – 1.

При работе с элементом двумерного массива A, состоящим из M строк и N столбцов, вычисление относительного адреса зависит от вида компилятора, т.к. матричные элементы будут по-разному размещаться в памяти.

В Фортране, где элементы матрицы загружаются в память последовательно по столбцам, относительный адрес элемента A i,j имеет вид  Addr i j = (j – 1) ∙ M + i – 1.

В алголоподобных языках (Паскале и Си) матричные элементы упаковываются в память последовательно по строкам, поэтому для Ai,j относительный адрес Addr i j = (i – 1) ∙ N + j–1.

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

Понятие  обращения к функции как объекта данных имеет обычный смысл.  Его описание указывает  набор действий для получения некоторого результата в зависимости от значений аргументов.

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

Конструкция вида  F(A,B,C), как и COS(X), имеет специальное название: указатель функции. В ней F – имя функции, а заключенный в скобки список (A,B,C) – набор независимых переменных, именуемых аргументами либо параметрами. Аргументом может быть переменная, элемент массива,  указатель функции,  выражение.

Условимся далее (до перехода к изучению Фортрана) работать лишь со стандартными функциями. Это позволит, во-первых, отказаться от их описаний и, во-вторых, считать результатом работы функции значение, передаваемое через ее имя.