Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпаргалка по программированию.DOC
Скачиваний:
50
Добавлен:
01.05.2014
Размер:
1.9 Mб
Скачать

Билет№44 Массивы в качестве параметров:открытые массивы №44 Сведения о массивах в языке Паскаль

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

Пример (объявление типа-диапазона и переменных):

Type Colors = ( Black, Red, Green, Blue, Yellow, White );

Cols = Red .. Blue; { диапазон на базе типа Colors }

Letters = 'A' .. 'z'; { английские буквы : диапазон на базе типа char }

Digits = 0 .. 9; {цифры}

var z : Cols; c, d : Letters; x : Digits;

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

Type имя_типа = array [ диапазоны индексов ] of тип элемента массива;

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

Пример (способы описания одного и того же типа массива):

type {1)} Array1 = array ['a'..'z'] of Integer;

Array2 = array [1..15] of Array1;

Array3 = array [-5..5] of Array2;

{2)} Array3 = array [-5..5] of array [1..15] of array ['a'..'z'] of Integer;

{3)} Array3 = array [-5..5,1..15,'a'..'z'] of Integer;

var A : Array3; { Объявление и обращение к элементам массива: }

begin

Read(A[-4,3,'w']); Read(A[1][10]['g']); A[3][7,'h']:=100;

end.

Над массивами допускается применение только операции присваивания массивов (подмассивов) одинаковых типов. Остальные операции должны выполняться поэлементно.

Передача массивов в процедуры и функции.

Открытые параметры-массивы

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

type MyElems = Real;

MyArray = array [-5..5] of MyElems;

procedure Inp( var parameter : MyArray);

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

procedure OpenArray( vector : array of MyElems);

Формальный параметр при этом является массивом эл-тов типа MyElems с нулевой базой, т. е. array [0..N-1] of MyElems; где N – количество эл-тов массива, которое можно определить с помощью стандартной ф-ции High: N в примере равно High(vector).