
- •Программирование на языке Паскаль: работа с одномерными массивами
- •Суммирование двух массивов а и в в результирующий массив с.
- •Объединение массивов в один с чередованием элементов исходных массивов
- •Инвертировать массив с
- •Программный код:
- •Поиск максимального элемента в массиве а с запоминанием индекса
- •Удаление элемента из заданной позиции последовательности
- •Результат:
- •Вспомогательные переменные:
- •Вставка элемента в заданную позицию последовательности
- •Результат:
Программирование на языке Паскаль: работа с одномерными массивами
Цель работы: овладение навыками программирования вычислительного процесса со сложными типами данных - одномерными массивами и навыками по отладке и тестированию программ.
Задание:
Знакомство с приемами решения задач;
Разработать алгоритмы для решения задач варианта.
Записать алгоритмы на языке программирования Turbo Pascal.
Произвести отладку и тестирование программы.
Краткие теоретические сведения
Определение массива
В Паскале могут использоваться объекты, содержащие множество однотипных элементов. Массив является формальным объединением нескольких однотипных элементов (чисел, символов, строк и т.п.), рассматриваемых как единое целое. Данные объединяют в массивы в случае, если надо выполнить одни и те же действия над одним и тем же определенным количеством однотипных значений. Элементы массива можно легко упорядочить и обеспечить доступ к любому из них простым указанием его порядкового номера. Исходя из выше изложенного, можно дать следующее определение:
Массив – это упорядоченная совокупность однотипных элементов.
Массив характеризуется своим именем (идентификатором), базовым типом элементов, количеством измерений и границами размерностей (верхней и нижней).
Размерностью называется число индексов, определяющих элемент массива. Тип индексов может быть любым простым порядковым (ординальным) типом данных, кроме стандартного Longint и его диапазона. В том числе он может быть перечисляемым или диапазонным.
Количество элементов в массиве с учетом всех его измерений называется размером массива. Размерность массива на языке Паскаль не ограничена. Однако общий объем оперативной памяти массива должен быть не более 65520 байт.
Массивы отображают следующие математические понятия:
Вектор с элементами Аi для i = 1 + n; на языке Паскаль это одномерный массив;
Матрица с элементами Ai, j ; на языке Паскаль это двумерный массив;
Пространство Ai, j, k...; на языке Паскаль это n-мерный массив, где n – количество его измерений (индексов).
Объявление массива
Элементы массива располагаются в последовательных ячейках памяти. Это означает, что массив занимает непрерывную область памяти. Прежде чем обращаться к массиву из программы, надо указать, сколько памяти необходимо для размещения массива. Заданный размер будет указывать максимально возможный размер этого массива. Не нужно указывать, сколько байт памяти необходимо для размещения массива. Достаточно указать только максимальное число элементов массива.
Массивы можно определить в разделах TYPE и VAR двумя способами:
Непосредственно в разделе объявления переменных:
VAR Т: ARRAY [ Т1 ] OF Т2;
где T – имя массива; T1 – тип индексов в виде списка типов, по одному для каждого измерения (обычно тип индексов диапазонный; T2 – базовый тип: тип элементов массива.
объявление массива в два этапа: сначала в разделе объявления типов объявляется тип массивов, затем в разделе объявления переменных массив объявляется этим типом.
TYPE M = ARRAY [ T1 ] OF T2;
VAR Т: ARRAY M;
где M – имя типа массива.
Примеры объявления массивов данных различных типов:
TYPE TA = ARRAY [ 1 .. 10 ] OF integer; { Тип массива А }
MN = SET OF 2 .. 100; { Тип множества }
VAR A: TA; { Массив данных A – целого типа }
B: ARRAY [ 1 .. 20] OF REAL; { Массив данных B – вещественного типа }
C: ARRAY [ 1 .. 10, 1 .. 20] OF REAL; { Массив данных C двумерный – вещественного типа }
D: ARRAY [ -10 .. 10] OF BOOLEAN; { Массив данных D – логического типа }
E: ARRAY [ 1 .. 20] OF MN; { E – множество }
Тип массива А и множества Е в примере определен в разделе TYPE. Остальных массивов – в разделе VAR.
Объявление массивов отвечает на следующие вопросы транслятора:
Какие переменные могут быть с индексами;
Сколько должно быть индексов при обращении к элементу массива;
Какие допустимы значения индексов в соответствии с определенными для них границами;
Какой объем ОП нужен массиву.
Доступ к элементам массива
Для обращения к отдельному элементу массива нужно указать имя массива и после него в скобках номер этого элемента в массиве. Например: A[ I ], A [ 2 ], A[ I * 2 ].
Значение, указанное в скобках называется индексом массива. Часто рассматривают весь массив как набор индексированных переменных.
Индекс не имеет ничего общего с содержимым элемента массива это просто метка ячейки памяти, и используется для обращения к этой ячейке. Индекс можно представить переменной или сложным выражением. Важно только предусмотреть, чтобы значение индекса всегда удовлетворяло заданному размеру массива.
Присвоение значения элементу массива
Как и обычные переменные, элемент массива имеет значение 0 с момента, когда массив определен. Элементам массива можно присваивать значения таким же образом, как и обычным переменным. Чаще всего элементы массива получают значения с помощью оператора присваивания или оператора ввода. Например: S[3] := 53; S[5] := x + 31;
Элементы массива независимы и могут получать значения в любом порядке. Программа может оставлять некоторые элементы неиспользованными. Начальное нулевое значение таких элементов никогда не меняется.
Во многих применениях массив определяется с максимальным размером, который только может потребоваться. Используется же только часть массива, которая нужна при данном прогоне программы.
Формирование массива случайными числами
Для заполнения массива разными числами используют случайную функцию RANDOM.
Применяются такие формулы:
Для получения случайного вещественного числа в диапазоне (a,b): x=(b-a)* random +a;
Целые числа в диапазоне (k,l): x=trunc((l-k+1)* random +k);
Целые числа в диапазоне (1,а): x=1+int(a* random;
вещественные числа в диапазоне (0,1): x= random.
Типовые алгоритмы обработки одномерных массивов
Любая обработка элементов одномерного числового массива требует организации циклов, в которых параметром является индекс элементов массива. При решении большинства реальных задач используются типовые приемы обработки массивов. В этом разделе рассматриваются часто встречающиеся типовые алгоритмы обработки одномерных массивов, которые оформлены в виде части программы. Предполагается, что исходные массивы введены предварительно.