2.3 Многомерные массивы

Элементами массивов могут быть также массивы. В этом случае мы имеем двухмерный массив ( матрицу ).

Двухмерные массивы задаются в программе следующим образом:

а) через объявление типа в формате

TYPE

< имя типа > = ARRAY [тип индекса 1] OF ARRAY [тип индекса 2] OF < тип элементов >;

или

< имя типа > = ARRAY [ тип индекса 1, тип индекса 2 ] OF <тип элементов>;

Обе формы описания равносильны, но вторая употребляется чаще.


VAR

< идентификатор >: < имя типа >;

б) через объявление переменных в формате

VAR

< идентификатор >: ARRAY [тип индекса 1, тип индекса 2] OF < тип элементов >;

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

Примеры объявления двухмерных массивов:

CONST

N = 5;

M = 10;

TYPE

A = ARRAY [ 1.. N, 1.. M ] OF WORD;

B = ARRAY [ 1.. 10, 1.. 20 ] OF REAL;

VAR

C: ARRAY [ 1.. N, BOOLEAN ] OF -20.. 20;

D1, D2: A;

F1, F2: B;

Типизированная константа-матрица объявляется в программе следующим образом:

CONST

M: ARRAY [1.. 3, 1.. 2] OF INTEGER = ((1, 2), (3, 4), (5, 6));


Массивы могут быть не только одномерными или двухмерными, но и 3-х, 4-х и n-мерными. В этом случае они описываются в программе следующим образом:

VAR

M: ARRAY [ 1.. 10, -10.. 9, CHAR ] OF BYTE;

N: ARRAY [ 1.. 5, 1.. 10, 1.. 15, 1.. 20 ] OF SHORTINT;

В памяти компьютера элементы размещаются друг за другом так, что при переходе от младших адресов к старшим наиболее быстро изменяется самый правый индекс массива. Например, для матрицы 2х2: A[1,1], A[1,2], A[2,1], A[2,2].

2.4 Действия над элементами массивов

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

Примеры задания индекса:

M [5] - непосредственно числом;

M [x] - косвенно через переменную x;

M [y+5] - косвенно через выражение;

M [Succ(i)] - косвенно через значение функции.

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

VAR

X, Y: ARRAY [1.. 10] OF INTEGER;

Z: ARRAY[1.. 10] OF INTEGER;

то допустим следующий оператор присваивания:

X: = Y;

но недопустим оператор

Z: = X;

так как массивы X и Z не идентичных типов.

В Паскале над массивами не определены операции отношения. Сравнивать массивы можно только поэлементно. К отдельным элементам массива можно применять стандартные процедуры и функции, предусмотренные в языке. Перечень допустимых стандартных подпрограмм зависит от типа элементов массива.

2.5 Ввод и вывод элементов массива

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

Примеры ввода одномерных массивов:

а) ввод с клавиатуры


FOR I: = 1 TO N DO READ ( M [I] );

б) ввод с помощью генератора случайных чисел

RANDOMIZE; { инициализация генератора случайных чисел }

FOR I: = 1 TO N DO M [I]: = - 25 + RANDOM (D);

Стандартная функция Random формирует случайное целое число из диапазона от 0 до D-1. При этом i-му элементу массива будет присвоена сумма выбранного случайного числа и -25. Таким образом, массив будет заполняться целыми случайными числами от -25 до -25 + (D-1). Например, если выбрать D равным 51, то массив будет заполняться случайными числами от -25 до +25.

Вывод одномерных массивов происходит аналогичным образом, например:

FOR I: = 1 TO N DO WRITELN ( M [I] );

Ввод двумерных массивов (матриц) производится с помощью вложенного оператора FOR:

FOR I: = 1 TO N DO

FOR J: = 1 TO K DO

READ ( M [I, J] );

Вывод значений элементов двухмерных массивов производится аналогичным образом с использованием операторов вывода WRITE или WRITELN:

FOR I: = 1 TO N DO

FOR J: = 1 TO K DO

WRITELN ( M [I, J] )

Таким же образом, поэлементно, происходит ввод и вывод многомерных массивов.


Информация о работе «Обработка массивов данных в среде Turbo Pascal»
Раздел: Информатика, программирование
Количество знаков с пробелами: 18333
Количество таблиц: 0
Количество изображений: 0

Похожие работы

Скачать
31468
3
4

... (160,70,'ПАВЛОДАРСКИЙ КОЛЛЕДЖ УПРАВЛЕНИЯ'); outtextxy(170,165,'КУРСОВОЙ ПРОЕКТ ПО ДИСЦИПЛИНЕ: '); outtextxy(110,180,'"ОСНОВЫ АЛГОРИТМИЗАЦИИ И ПРОГРАММИРОВАНИЯ"'); outtextxy(150,225,'TEMA: Проектирование баз данных «Справочник покупателя»'); outtextxy(465,345,'Разработал'); outtextxy(465,365,'Запорожец А.С.'); outtextxy(465,385,'Группа П-33); outtextxy(270,410,'2010 год’); Процедура ВВОD ...

Скачать
12099
0
3

... A do эквивалентно A.Day:=5; Begin Day:=5;I:=1954 End;A.I:=1954; Заключение   В процессе написания работы мы ознакомились с: организацией ввода-вывода, а именно: - процедурами ввода; - процедурами вывода; - бесформатным выводом; - форматным выводом; - описанием одномерных массивов; - вводом – выводом одномерных массивов; - описанием двумерных массивов; - вводом – выводом двумерных ...

Скачать
235892
25
6

... работе в графическом режиме предназ­начается для обучения студентов младших курсов Санкт-Петербургской государственной Академии аэрокосмического приборостроения навыкам программирования, а именно работе в графическом режиме языка Turbo-Pascal . Для работы с настоящей программой необходимо знание стандарта языка, интегрированной среды и элементарным навыкам работы с персональным компьютером . ...

Скачать
24973
0
10

... write ('по дисциплине информатика и программирование'); gotoxy (17,12); write ('на тему создание прикладного программного обеспечения'); gotoxy (22,13); write ('в среде программирования Turbo Pascal'); gotoxy (45,15); write ('Работу выполнила: студентка'); gotoxy (45,16); write (‘_____ курса группы ______'); gotoxy ...

0 комментариев


Наверх