Паскаль Тема 5: Табличные величины, массивы, Поиск в массивах элементов


Лекция Р_5

Табличные величины. массивы

Цель: Познакомить учащихся с понятием массива, рассмотреть одномерные и двумерные массивы

План

1.  одномерные массивы

2.  двумерные массивы

3.  Поиск в массивах элементов с некоторым свойством

1. Одномерные массивы. Массив — это структурный тип данных, состоящий из фиксированного числа элементов одного и того же типа.

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

Характерные свойства массива:

1. Тип элементов массива должен быть конкретно описан. Для каждого элемента массива существует прямой доступ.

2. Число элементов массива определяется во время его описания и в дальнейшем не меняется. Описать массив можно следующим образом:

Первый способ.

Type имя типа = Агга [тип индекса] of тип компонент массива;

Var идентификатор массива: имя типа;

Например

Type MAS = array [1..5] of integer;

Var A: MAS;

Второй способ,

Var идентификатор массива: Агга [m..n] of тип элементов массива;

Где m, n — константы целого типа.

Например.

А: Агга [1 .. 5] of integer;

B: array [5..10] of real;

Один и тот же массив А в приведенных выше примерах описан двумя различными способами.

При обращении к массиву нужно указать идентификатор переменной-массива, а также еще и индекс, указывающий на мисцезнаход ния требуемого значения в массиве. Индекс записывается у идентификатора переменной-массива в квадратных скобках. Тип индекса должен принадлежать к любому скалярного типа, кроме действительного.

Читать  Алгоритм, его свойства и формы представления

Например. а [1], а [5], b [2]

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

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

Задача. Найти сумму элементов одномерного массива.

Program SummaLinMassiv;

Var A: array [1..5] of integer;

и: integer;

S: integer;

Begin

for i = l to 5 do

Begin

Write ( ‘А [‘, i, ‘] =’);

Readln (A [i]);

End;

S: = 0;

for i = l to 5 do S = S + A [i];

writeln ( ‘Macив A:’);

writeln;

for i = l to 5 do write (A [i]: 5);

writeln;

writeln ( ‘S =’, S);

end.

2.двумерные массивы Двумерные массивы можно рассматривать как таблицу, состоят из m-строк и n-столбцов.

В общем виде двумерный массив описывается следующим образом:

Первый способ.

Type

Имя типа = аrrау [тип индекса] of array [тип индекса] of тип компонент;

Var идентификатор массива: имя типа;

Например.

Type MAS = array [1..5] of array [1..4] of integer;

Var MATR: MAS;

Второй способ.

Var

Имя массива: Агга [m..n, k..h] of тип элементов массива;

Например:

Var

MATR: array [l..10,1..4] of integer;

Один и тот же двумерный массив MATR описан выше двумя способами. Обращение к элементам массива, описанного таким образом, осуществляется следующим образом:

MATR [i, j] — это элемент массива MATR, который находится на пересечении и — рядка и j-колонки.

Читать  Величины и их описание, Общая структура алгоритма

Например:

MATR [5,3] — элемент, который находится на пересечении 5-й строки и 3-го столбика.

Разработка элементов двумерного массива осуществляется таким же образом, как и с одномерным. Единственное отличие — это то, что необходимо использовать вложенные циклы.

Задача.

Составить программу нахождения суммы всех элементов двумерного массива.

program SummaMatrMassiv;

Var

M: array [1 ..3,1..4] of integer;

S, i, j: integer;

Begin

For i: = 1 to 3 do

for j = l to 4 do

begin

write ( ‘Введите a [‘, i, ‘,’, j, ‘] =’);

readln (M [i, j]);

end;

S: = 0;

For i = l to 3 do

for j = l to 4 do

S = S + m [i, j];

Writeln ( ‘S =’, S);

End.

В данном примере введения элементов массива осуществляется с помощью сочетания указаний write и readln. Массив будет записать ной не в виде двумерной таблицы, а таблица вытянется в столбец.

Write ( ‘Введите a [‘, i, ‘,’, j, ‘] =’) — в данной строке записывается подсказка для пользователя в виде — а [1,2] =, то есть информация | о том, какой элемент массива вводим. Readln (M [i, j]) — считывает элемент массива.

Чтобы можно было вводить таблицу в «естественном» виде — строка за строкой, необходимо использовать другую форму ввода элементов двумерного массива:

For i = l to 3 do

Begin

for j = l to 4 read (M [i, j]);

readln;

End;

Вывод элементов двумерного массива необходимо также осуществлять в цикле:

Читать  Управление динамической памятью в Турбо Паскаль

For i = l to 3 do

for j = l to 4 do

writeln ( ‘a [‘, i, j ‘] =’, a [i, j]);

В данном случае все элементы таблицы будут записаны в виде одной колонки.

Чтобы вывода таблицы осуществлялось в «естественном» виде, то есть строка за строкой, необходимо использовать такую ​​форму вывода двумерного массива:

For i = l to 3 do

begin

for j = l to 4 do write (a [i, j]: 6);

writeln;

End;

В данном случае таблица будет выведена так, как она описана vаr a: array [1..3,1..4] of integer; (3 строки по 4 числа в каждом).

3.Поиск в массивах элементов с некоторым свойством. Найти максимальный элемент в двумерном массиве.

Program MaximumMatrMassiv;

Var M: array [1..3,1..4] of integer;

i, j, max: integer;

Begin

for i = l to 3 do

for j = l to 4 do

begin

write ( ‘Bвeдiть M [‘, i, ‘,’, j, ‘] =’);

readln (M [i, j]);

end;

MAX = M [1,1];

For i = l to 3 do

for j = l to 4 do

If M [i, j]> MAX then МАХ = М [и, j];

Writeln;

Writeln ( ‘Macив m:’);

Writeln;

For i = l to 3 do

begin

for j = l to 4 do write (M [i, j]: 5);

writeln;

end;

Writeln;

Writeln ( ‘max =’, MAX)

End.

Упорядочение элементов массива «Метод пузыря»

«Метод пузыря» основывается на перестановке соседних или пос. Для упорядочения элементов массива осуществляем повторные проходы по массиву, каждый раз перемещая маленький еле мент части массива, оставшееся до начала.

Читать  Базовые структуры алгоритмов – Виды алгоритмов

Перемещение элементов массива осуществляется таким образом :! просматриваем массив справа налево, сравнивая пары соседних чисел; если числа в паре размещены в порядке возрастания, то оставляем их без изменения, а если нет — то меняем их местами.

В результате первого прохода наименьшее число будет постав не в начало массива. Во втором проходе такие операции выполняются над элементами из последнего к другому, в третьем — с последнего к третьему и т. д. Упорядочение массива будет оконча чено, если при проходе массива не будет выполняться ни пе рестановкы элементов массива. Факт перестановки фиксируется с помощью вспомогательной переменной, которая в начале имеет значе ние 0 и приобретает значение 1 тогда, когда будет выполняться перестает новка в какой-нибудь паре. Эта переменная используется в целях экономии времени в том случае, когда часть элементов массива заранее упорядочена.

Упорядочение элементов массива методом выбора минимального элемента

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

Введение произвольного массива и поиск строки с наименьшим элементом

Читать  Введение и вывод значений величин | Составляющие алгоритма обработки величин

Program Zad4;

Const N = 3;

Var A: Array [1 ..N, 1 ..N] of Integer;

Min, K: Integer;

I, J: Integer;

Begin

Randomize;

Writeln;

Writeln ( ‘Исходный массив’);

For i: = 1 to N do

Begin

Writeln;

For J = 1 to N do

Begin

A [i, j] = Random (10);

Write (A [I, J]: 2)

End;

end;

Writeln;

Min = A [1,1];

k: = 1;

Begin

For i: = 1 to N do

For J = 1 to N do

IF Min> A [I, J] Then Begin Min = A [I, J]; k = i;

end;

end;

Writeln ( ‘Номер строки с наименьшим элементом k =’, k);

End.

[Всего голосов: 3    Средний: 5/5]