Продолжая "ящичную аналогию", одномерный массив можно представить как выстроенные в ряд ящики одинакового размера, которые последовательно склеены друг с другом. К началу склейки прикреплена этикетка с именем массива. Каждый ящик соответствует одному элементу массива. На всех ящиках проставлены в возрастающем порядке целочисленные номера, начиная с некоторого начального. Номера соседних ящиков отличаются на единицу. Начальный номер может быть, в принципе, любым, но мы условимся для нашего же удобства считать его равным 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) – набор независимых переменных, именуемых аргументами либо параметрами. Аргументом может быть переменная, элемент массива, указатель функции, выражение.
Условимся далее (до перехода к изучению Фортрана) работать лишь со стандартными функциями. Это позволит, во-первых, отказаться от их описаний и, во-вторых, считать результатом работы функции значение, передаваемое через ее имя.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.