русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

М Н О Г О М Е Р Н Ы Е М А С С И В Ы


Дата добавления: 2014-11-27; просмотров: 472; Нарушение авторских прав


 

В описании типа массива

array [T1] of T

тип Т, определяющий компоненты массива, может быть любым (кроме файла). Следовательно, тип T может быть в частном случае составным типом, в том числе массивом.

 

Пример.

Const M = 10; N = 15; K = 1; L = 12;

Type T1 = M..N; T2 = K..L; T = real;

Var A : array[T1] of array[T2] of T;

B : array[M..N] of array[K..L] of T .

Компонент такого массива обозначается a[i][j], b[i][j].

 

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

VarA : array[T1,T2] of T;

B : array[M..N,K..L] of T.

В этом случае компонент имеет вид a[i,j], b[i,j].

 

В нашем примере А и B - это двумерные массивы, т.е. матрицы, элементы которых имеют тип T (в данном случае тип real).

 

Массивы могут быть и более чем двумерные. Пример трехмерного массива:

VarC : array[1..10,1..15,1..8] of real.

 

Компоненты многомерного массива располагаются в памяти таким образом, что наиболее быстро изменяется последний индекс, а наиболее медленно - первый индекс. По отношению к матрице это означает, что ее элементы располагаются в памяти по строкам: вначале все элементы первой строки в соответствии с описанием типа матрицы, затем все элементы второй строки и т.д.

 

Сравним расположение в памяти элементов одномерного массива и матрицы.

 

Const Mmax = 30; Nmax = 40;

Type Ar = array[1..Nmax] of byte;

Matrix = array[1..Mmax,1..Nmax] of byte;

Var X : Ar;

A : Matrix;

m, n : byte;

 

Предположим, что в программе введено n = 20 элементов массива X и элементов матрицы A ( Mmax, n Nmax).

В поле памяти, отведенном для массива X, будут последовательно заняты первые 20 байт. В отличие от этого, поле памяти A будет заполнено не всплошную, а фрагментарно элементами матрицы: 20 байтов первой строки, 20 свободных байтов, 20 байтов второй строки, 20 свободных байтов, …, 20 байтов пятнадцатой строки, 20 + 5 40 свободных байтов. Эту фрагментарность необходимо учитывать в ряде случаев при программной обработке матрицы.



 

Если A и B - массивы одного типа, то возможно присваивание B := A . Это связано с общим принципом работы оператора присваивания вида y := x - пересылка содержимого поля x в поле y. Если массивы A и B описаны одним именем типа, то это гарантирует, что структура и длина полей A и B одинаковы, в связи с чем не может быть нарушений работы программы при такой пересылке.

 

Пусть многомерный массив имеет k индексов (для матрицы k = 2). При обработке такого массива в общем случае производится изменение каждого его индекса. В связи с этим каждому индексу должна соответствовать отдельная переменная, которая при использовании оператора For является именем параметра цикла. Имена переменных-индексов не должны совпадать между собой.

 

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

 



<== предыдущая лекция | следующая лекция ==>
П О И С К В У П О Р Я Д О Ч Е Н Н О М М А С С И В Е | Ввод матрицы из текстового файла.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.342 сек.