- •Индуктивные функции
- •Общая схема вычисления индуктивных функций
- •Общая формулировка задания
- •Задания
- •Обработка одномерных массивов
- •Сведения о массивах в языке Паскаль
- •Цель, требования и рекомендации к выполнению задания
- •Примеры выполнения задания. Работа с одномерным массивом
- •Задания
- •Простые алгоритмы сортировки одномерных массивов
- •Обработка двухмерных массивов
- •Пример выполнения задания
- •Цель, требования и рекомендации к выполнению задания Цель, требования и рекомендации аналогичны изложеным в 7. 2.
- •Задания
- •Обработка файлов, представляющих упорядоченные множества
- •Общая формулировка задания
- •Цель, требования и рекомендации к выполнению задания
Обработка одномерных массивов
Сведения о массивах в языке Паскаль
Тип-диапазон (ограниченный или интервальный тип) является подмножеством своего базового типа, в качестве которого может выступать любой порядковый тип кроме типа-диапазона. Тип-диапазон наследует все свойства своего базового типа.
Пример (объявление типа-диапазона и переменных):
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.
Число индексов при определении массивов не ограничено. Важен суммарный объем данных в программе, в стандартном режиме работы Турбо Паскаля он ограничен размерами сегмента (64 Кбайт). Над массивами допускается применение только операции присваивания массивов (подмассивов) одинаковых типов. Остальные операции должны выполняться поэлементно.
Передача массивов в процедуры и функции.
Открытые параметры-массивы
Используемые в программе массивы могут передаваться при вызове процедур (функций) в качестве фактических параметров. Их заголовок должен иметь соответствующий формальный параметр, при описании которого в общем случае необходимо использовать идентификатор, обозначающий тип массива, который ранее был введен в разделе описания типов (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).
