Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование delphi.doc
Скачиваний:
806
Добавлен:
09.02.2015
Размер:
2.97 Mб
Скачать

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

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

При выводе элементов массива можно, например, использовать следующие элементы: метка (элемент Label, вкладка Standard, значок ),строка ввода (Edit, Standard, ).

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

Для ввода элементов массива можно использовать: для ввода целых чисел элемент Ввод целых чисел (SpinEdit, Samples, ); при вводе/выводе массива (особенно двухмерного) очень удобен элемент Таблица (StringGrid, Additional, ).

Подробно действия с этими элементами при работе с массивами будут рассмотрены при построении демонстрационной программы.

Генератор псевдослучайных чисел. Если необходимо получить числа, содержащие случайные значения, то можно использовать генератор псевдослучайных чисел. Существует 2 оператора:

  1. Randomizeслужит для «запуска» генератора чисел (иначе последовательность генерируемых чисел всегда будет одна и та же).

  2. Random[(R)] – служит для генерации случайного числа в диапазоне от 0 до R, включая значение R. Квадратные скобки при описании какого-либо оператора обозначают, что часть кода помещённая в них, может не указываться, тогда будут использованы начальные установки для этого оператора. Если в операторе Random граница R не указана, то числа будут генерироваться в диапазоне от 0 до 1, включая значение 1.

Для генерации случайного числа по нормальному распределению необходима функция RandG(m,sd) из модуля Math (задается математическое ожидание m и стандартное отклонение sd).

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

Алгоритм поиска минимального (максимального) элемента массива довольно очевиден: сначала делается предположение, что первый элемент массива является минимальным (максимальным), затем остальные элементы массива последовательно сравниваются с этим элементом. Если при очередной проверке обнаруживается, что проверяемый элемент меньше (больше) принятого за минимальный (максимальный), то этот элемент принимается за минимальный (максимальный) и продолжается проверка оставшихся элементов.

Пример

Пусть Size – размер массива a, переменная для хранения минимума min, максимума max, I параметр цикла.

Тогда поиск минимального и максимального значений будет выглядеть так:

min := a[1];

max := a[1];

For I := 1 to Size do

begin

If a[I] < min then min := a[I];

If a[I] > max then max := a[I];

end;

После окончания цикла в переменной min будет храниться минимальное значение, а в переменной max – максимальное.

Поиск заданного элемента. Самый простой способ – перебора – последовательный перебор значений массива и сравнение с искомым. Но при большой размерности массива это приведет к неоправданным затратам времени. Оптимальным является метод бинарного поиска. Алгоритм предполагает, что исходный массив отсортирован. На структурной схеме алгоритма (рис. 4.1) приняты следующие обозначения: A – массив значений; S – средний индекс массива; N – начальный индекс массива; K – конечный индекс массива; F – иско­мое значение.

Сортировка данных. Для ускорения поиска, как уже отмечалось, удобно использовать отсортированный массив. Рассмотрим алгоритмы сортировки данных. Наиболее популярным является «метод пузырька». В основе алгоритма лежит обмен соседних элементов массива. Каждый элемент массива, начиная с первого, сравнивается со следующим и если он больше следующего, то элементы меняются местами. Таким образом, элементы с меньшими значениями передвигаются к началу массива («всплывают»), а с большими значениями – к концу массива («тонут»). Отсюда и название «пузырьковая сортировка». Процесс сравнения повторяется столько раз, сколько элементов в массиве минус единица, поэтому при большом количестве элементов процесс сортировки требует много времени. На структурной схеме (рис. 4.2) приняты следующие обозначения: А – массив, К – конечный индекс массива, I, J – параметры цикла.