Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
пособие Pascal.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
666.62 Кб
Скачать

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.

Задачи

  1. Ввести массив из n – элементов целых чисел. Определить элементы, которые:

а) являются нечетными числами;

б) кратны 3 и 5;

в) являются удвоенными нечетными числами.

  1. Ввести массив из n – элементов целых чисел. Определить элементы, которые:

а) при делении на 5 дают остаток 2;

б) при делении на 7 дают остаток 3;

в) при делении на 3 дают остаток 1.

  1. Ввести массив из n – элементов. Определить элементы, удовлетворяющие условию:

а) A[i]<i;

б) A[i]<i2;

в) A[i]>10-i

  1. Ввести массив из n – элементов целых чисел. Выяснить, верно ли, что:

а) сумма первой половины матрицы больше суммы второй половины;

б) максимальный элемент матрицы находится в первой половине;

в) матрица симметрична;

г) суммы величин положительных и отрицательных чисел равны.

  1. Ввести массив из n – элементов целых чисел. Заменить все отрицательные числа их модулями.

  2. Ввести массив из n – элементов целых чисел. Определить повторяющиеся числа.

  3. Ввести массив из n – элементов целых чисел. Подсчитать число соседств положительных и отрицательных чисел.

  4. Ввести массив из n – элементов целых чисел. Определить позицию и величину минимального и максимального элемента.

  5. Ввести два одномерных массива из n – элементов целых чисел. Найти их сумму и разность.

  6. Пусть A[1], A[2], … , A[20] – количество осадков в миллиметрах, выпавшее в Москве в течении первых 20 лет прошлого столетия. Вычислить среднее количество осадков и отклонение от среднего для каждого года.