- •Программирование на языке Pascal введение
- •Этапы разработки программ
- •Ядро Турбо Паскаль
- •Среда программирования Турбо паскаль
- •Функциональные клавиши
- •2.3. Текстовый редактор
- •Запуск и отладка программы
- •Элементы языка
- •3.1. Алфавит
- •3.2. Зарезервированные слова и идентификаторы
- •3.3. Общая структура программ в Турбо Паскаль
- •3.4. Основные типы данных. Простые типы
- •Основные операторы языка программирования Турбо Паскаль
- •4. 1. Ввод – вывод информации в Турбо Паскаль
- •4.2. Математические операции, встроенные математические функции Турбо Паскаль
- •4.3. Пустой оператор и составной оператор
- •4.4. Условный оператор
- •4.5. Оператор выбора
- •4.6. Операторы повторений
- •5. Символьные типы данных
- •6. Строковые типы данных
- •Стандартные процедуры и функции для строк
- •7. Структурированные типы данных. Массивы
- •7. 1. Одномерные массивы
- •Доступ к элементам массива
- •7.2. Сортировка массивов
- •7.2.1. Сортировка вставкой
- •7.2.2. Сортировка выбором
- •7.2.3. Сортировка обменом (пузырьковая сортировка)
- •7.3. Многомерные массивы
- •8. Записи
- •9. Множества
- •10. Типизированные константы
- •10.1. Константы простых типов и типа string
- •10.2. Константы-массивы
- •10.3. Константы-записи
- •10.4. Константы-множества
- •Литература
7. Структурированные типы данных. Массивы
Массив (ARRAY) объединяет элементы одного типа данных. Более формально массив можно определить как одномерную (последовательную) упорядоченную совокупность элементов некоторого типа, которые адресуются с помощью индекса. В качестве иллюстрации можно представить себе шкаф, имеющий множество пронумерованных ящиков. Доступ к содержимому конкретного ящика (элемента данных) осуществляется после выбора ящика по его номеру (индексу). Индексная переменная, служащая для указания отдельного элемента массива должна быть простого типа (например, типа BYTE, INTEGER).
В литературе, наряду с термином «массив», часто можно встретить термины «матрица», «таблица» или «вектор». Суть всех этих типов одна и та же.
Используя массив, мы вместо одного маленького шкафчика, который имеет только один ящик, используем один большой шкаф, в котором имеется огромное количество ящиков.
Наряду с одномерными массивами (шкафами с ящиками в один ряд) в ТП 7.0 используются так же двумерные массивы данных, которые можно представить как шкаф с множеством ящиков, положение которых определяется двумя координатами – по горизонтали и вертикали. В двумерных массивах данных координата по горизонтали соответствует номеру строки, а координата по вертикали – номеру столбца. Размер массива в Турбо Паскаль 7.0 ограничивается только объемом оперативной памяти компьютера.
7. 1. Одномерные массивы
В математике и информатике массив называется одномерным, если для получения доступа к его элементам достаточно одной индексной переменной. Так, чтобы найти в шкафу с одним рядом ящиков нужный нам ящик, достаточно знать его номер и точку отсчета.
Одномерный массив можно объявить следующим образом:
Var Имя массива: ARRAY [начальный индекс..конечный индекс]
of Тип данных.
При объявлении массива необходимо указать, каким образом производится нумерация элементов, указав начальное и конечное значение для индексной переменной (например, 1..5 или 2..6). Тем самым указывается и число элементов в массиве – его размер. Кроме того, необходимо указать идентификатор (имя) массива и тип данных элементов массива.
Например:
Var Matrix: ARRAY [1..5] of Real;
Var Index: Array [2..7] of integer;
Var Name: Array [1..5] of String[25];
Величины в квадратных скобках разделяются двумя точками. Причем перед этими двумя точками и после них допускаются пробелы.
Доступ к элементам массива
В отличие от переменных типа String массивы не могут обрабатываться целиком. Но можно получить доступ к каждому элементу-ячейке массива. Это выполняется, как и в случае строковых переменных, путем указания значения индекса в квадратных скобках. Например, с помощью оператора
Index [2]: = 34;
элементу массива Index с индексом 2 (ячейки с номером 2) присваивается значение 34. Наряду с конкретным значением (константой) в качестве индекса может использоваться переменная, например, при поэлементной обработке массива в рамках цикла For…to…do. Так, с помощью фрагмента
for i: = 2 to 7 do
Index [i]: =0;
всем элементам массива Index присваивается значение 0.
Для заполнения массивов используются следующие конструкции:
for i: = 1 to 5 do
Begin
write ('Введите',i, 'e имя:');
readln (Name [i]);
End;
Пример:
Программа, которая сначала обеспечивает ввод десяти чисел в одномерный массив, затем складывает их и выводит результат на экран.
Program Matrix1;
Const N=10;
Var
I, Sum: Integer;
Matrix: Array[1..N] of Integer;
Begin
for i: = 1 to N do
begin
write('Введите', I, '-й элемент');
read(Matrix[i]);
end;
Sum: = 0
for i: = 1 to N do
Sum: = Sum + Matrix [i];
Writeln('Сумма 10 элементов массива Matrix равна', Sum);
End.
Пример:
Программа, которая обеспечивает ввод с клавиатуры и сохранение в одномерном массиве 25 чисел. Затем формируется запрос на ввод еще одного числа. После ввода данного числа программа проверяет элементы массива на наличие в них числа, равного последнему, введенному, и, если такое число есть, выдает соответствующее сообщение на экран.
Program Matrix2;
Const N = 25;
Var
I, S, R: Integer;
Matrix: Array [1..N] of Integer;
Begin
for i: =1 to N do
begin
writeln('Введите', i, '-й элемент');
read(Matrix [i]);
end;
Writeln ('введите число, поиск которого', 'в массиве хотите осуществить');
Readln(s);
R:=0;
for i: = 1 to N do
begin
if Matrix [i] = s then
begin
R: = R+1;
Writeln ('Обнаружено', R, '-E вхождение числа', S, 'в массив Matrix в позиции', I);
end;
end;
If R < > 0 then Writeln ('Итого число', S, 'встречается в массиве', 'Matrix', R, 'раз')
else
Writeln ('Число', S, 'не встречается в массиве ни разу');
End.
Задачи
Ввести массив из n – элементов целых чисел. Определить элементы, которые:
а) являются нечетными числами;
б) кратны 3 и 5;
в) являются удвоенными нечетными числами.
Ввести массив из n – элементов целых чисел. Определить элементы, которые:
а) при делении на 5 дают остаток 2;
б) при делении на 7 дают остаток 3;
в) при делении на 3 дают остаток 1.
Ввести массив из n – элементов. Определить элементы, удовлетворяющие условию:
а) A[i]<i;
б) A[i]<i2;
в) A[i]>10-i
Ввести массив из n – элементов целых чисел. Выяснить, верно ли, что:
а) сумма первой половины матрицы больше суммы второй половины;
б) максимальный элемент матрицы находится в первой половине;
в) матрица симметрична;
г) суммы величин положительных и отрицательных чисел равны.
Ввести массив из n – элементов целых чисел. Заменить все отрицательные числа их модулями.
Ввести массив из n – элементов целых чисел. Определить повторяющиеся числа.
Ввести массив из n – элементов целых чисел. Подсчитать число соседств положительных и отрицательных чисел.
Ввести массив из n – элементов целых чисел. Определить позицию и величину минимального и максимального элемента.
Ввести два одномерных массива из n – элементов целых чисел. Найти их сумму и разность.
Пусть A[1], A[2], … , A[20] – количество осадков в миллиметрах, выпавшее в Москве в течении первых 20 лет прошлого столетия. Вычислить среднее количество осадков и отклонение от среднего для каждого года.
