Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка_Delphi_Ч2.doc
Скачиваний:
15
Добавлен:
02.11.2018
Размер:
1.7 Mб
Скачать
      1. Передача массивов в процедуры и функции

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

Procedure MyProc(A:array[1..10] of integer);

В данном случае необходимо сначала объявить тип массива в разделе Type, а затем использовать его при описании массива в списке формальных параметров процедуры:

type TArr = array[1..10] of integer;

.

.

.

procedure MyProc(A: TArr);

Begin

End;

      1. Операции с массивами

При работе с массивами приходится выполнять ряд специфических операций, связанных именно с этим типом данных. Наиболее распространенными из них являются:

  • ввод массива

  • вывод массива

  • поиск максимального и минимального элемента массива

  • поиск заданного элемента массива

  • циклический сдвиг элементов массива

  • сортировка массива

  • вставка элемента в массив

  • удаление элемента из массива

  • объединение массивов

Типовые процедуры и функции для работы с массивами

При решении учебных задач на обработку массива требуется неоднократно вводить, выводить массивы, а также выполнять над ними различные операции. Очевидно, что в этом случае удобно использовать заранее написанные процедуры и функции, которые целесообразно хранить во вспомогательном модуле. Такой модуль был создан. Он называется UnitArrayDop и находится в папке ProjectToLection\toLection12.

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

      1. Описание типа учебного массива

Описание этого типа массива дадим в интерфейсной части модуля. Оно может выглядеть так.

unit UnitArrayDop;

interface

type TArray100= array[1..100] of integer;

      1. Процедуры создания, ввода и вывода массивов

Несмотря на различие задач, решаемых этими процедурами, у них будет две одинаковых особенности.

Первая состоит в том, что в каждую из этих процедур будет передаваться имя массива. В тех случаях, когда процедура используется для создания массива, его следует передавать через var, то есть «по имени». Если же массив передается для вывода, то его следует передавать через const.

Вторая особенность в том, что помимо массива в процедуру следует передавать количество данных в массиве, так как объявленный размер массива будет обычно значительно превышать количество данных в нем.

Процедура создания случайного массива

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

procedure createRandomArray(var a:TArray100; count, modul:integer );

var i:integer;

begin

randomize;

for i:=1 to count do a[i]:=random(modul);

end;