Общая психология и история психологии

Тема 6. Программирование массивов.

1. Понятие массива.

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

Массив - это упорядоченный набор однотипных элементов. Упорядоченность означает, что элементы массива расположены в определенном порядке, т.е., проиндексированные.Одно типичность означает принадлежность элементов массива одному типу данных. Это позволяет использовать обработку массивов с помощью операторов цикла. Рассмотрим обработку массивов на примере одномерного массива.

Массив определяется следующим образом:

имя типа = array [тип индекса] of тип компонентов

Определение массива начинается зарезервированным словом array (массив), за которым следует тип индекса, заключенный в квадратные скобки. После типа индекса идет зарезервированное слово of, за которым указывается тип компонентов массива. В качестве типа индекса может выступать любой скалярный ограниченный тип, кроме real и integer. Вместе с тем типом индекса может выступать диапазон типа integer. В качестве типа компонентов может выступать произвольный тип, кроме файлового. Рассмотрим сначала одномерные массивы, то есть массивы, в которых типом компонентов является скалярный тип данных.

ПРИМЕР:

type

massiv = array [1..10] of integer;

period = array [14..20] of real;

letters = array [char] of boolean;

 

Переменные структурированного типа вводятся обычным путем в разделе описания переменных:

var

a: massiv;

t: period;

k: letters;

 

При этом существует также возможность использования структурированных переменных безымянных типов:

var

b: array [1..10] of integer;

f: array [14..20] of real;

s: array [char] of boolean;

Однако при этом переменные a и b несовместимые (т.е. имеют разный тип), хотя фактически представляют собой одинаковые массивы с одинаковым типом индекса и типом компонентов. Поэтому соответствующий тип целесообразно объявить в разделе описания типов программы и не использовать переменные безымянных типов. Тогда данные такого типа проще обрабатывать.

Для массивов, как единого целого, существует лишь одна операция - операция присваивания. Во всех других случаях массивы обрабатываются поэлементно. Как правило, для этого используются циклы. Это возможно благодаря упорядоченности и однотиповости его элементов. В большинстве случаев это цикл с параметром.

Для обработки элемента массива необходимо указать имя массива и индекс его элемента. Так, запись a [1] означает, что прорабатывается первый элемент массива а; a [k] - прорабатывается k-й элемент массива а; a [2 * k-1] - прорабатывается тот элемент, индекс которого равен выражения 2 * k-1.

ПРИМЕР:

const n = 10;

type

massiv = array [1..n] of integer;

var

a, b, massiv;

i: integer;

begin

...

 a = b; {Правильный оператор}

 read (a); {Неправильный оператор -

 недопустима операция}

for i: = 1 to n do read (a [i]); {Правильный оператор}

 write (b); {Неправильный оператор -

 недопустима операция}

for i: = 1 to n do write (a [i]); {Правильный оператор}

...

end.

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

Как уже отмечалось, базовым типом массива может быть любой тип данных, в том числе и массив. Структура, элементами которой являются массивы, называется многомерным массивом. Такие массивы объявляются аналогично одномерным. Рассмотрим порядок определения и обработки многомерных массивов на примере двумерных числовых массивов.

ПРИМЕР:

type

massiv = array [1..n] of integer;

matr = array [1..m, 1..n] of integer;

tabl = array [1..m] of massiv;

Заметим, что типы matr и tabl - это разные типы, хотя они определяют практически одинаковые массивы. В большинстве случаев используется описание массива аналогичный типа matr, хотя в некоторых ситуациях более целесообразно описание типа tabl.

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

ПРИМЕР:

var

 c, d: matr;

 i, j; integer;

begin

 ...

 c = d; {Правильный оператор}

 c [1] = d [2]; {Правильный оператор}

 d [1,4]: = 10; {Правильный оператор}

 read (c); {Неправильный оператор - недопустимая операция}

 read (d [1]); {Неправильный оператор - недопустимая операция}

 for i: = 1 to n do

 for j = 1 to n do read (d [i, j]); {Правильный оператор}

 ...

end.

Аналогично задаются и обрабатываются массивы других размерностей и с другим типом индексов или компонентов.

2. Основные алгоритмы обработки массивов.

При обработке массивов важны операции ввода значений массива и вывода их на экран. . Рассмотрим выполнение этих операций. При этом будем считать, что действует такое описание:

const n = ...;

type massiv = array [1..n] of integer;

var

 a: massiv;

 i: integer;

 

2.1. Введение элементов массива с клавиатуры на экране.

for i: = 1 to n do

begin

 write ('Введите ¢, i,' - и элемент массива: ');

 read (a [i]);

end;

2.2. Заполнение элементов массива случайными целыми числами. Числа берутся из диапазона [0, 99].

randomize;

for i: = 1 to n do a [i] = random (100);

 

2.3. Форматный печать элементов массива.

for i: = 1 to n do write (a [i]: 4);

writeln

 

Далее рассмотрим типичные алгоритмы обработки массивов.

2.4. Поиск наименьшего элемента массива

Program pr1;

Uses crt;

const n = 20;

type massiv = array [1..n] of integer;

var

 a: massiv;

 i: integer;

 min: integer;

begin

 clrscr;

 randomize;

 for i: = 1 to n do a [i] = random (100);

 writeln ('Исходные данные');

 for i: = 1 to n do write (a [i]: 4);

 writeln;

 min = a [1];

 for i: = 2 to n do if a [i] <min then min = a [i];

 writeln ('Результат');

 writeln ('маленький элемент min =', min: 4);

end.

2.5. Исчисление суммы элементов массива

Program pr2;

Uses СRT;

const n = 20;

type massiv = array [1..n] of integer;

var

 a: massiv;

 i: integer;

 s: integer;

begin

 clrscr;

 randomize;

 for i: = 1 to n do a [i] = random (100);

 writeln ('Исходные данные');

 for i: = 1 to n do write (a [i]: 4);

 writeln;

 s = 0;

 for i: = 1 to n do s = s + a [i];

 writeln ('Результат');

 writeln ('Сумма s =', s: 4);

end.

2.6. Вычисления произведения элементов массива с четными номерами.

Program pr3;

Uses crt;

const n = 20;

type massiv = array [1..n] of integer;

var

 a: massiv;

 i: integer;

 p: longint;

begin

 clrscr;

 randomize;

 for i: = 1 to n do a [i] = random (10) 1;

 writeln ('Исходные данные');

 for i: = 1 to n do write (a [i]: 4);

 writeln;

 p = 1;

 i = 2;

 repeat

 p = p * a [i];

 i = i + 2;

 until i> n

 writeln ('Результат');

 writeln ('Произведение элементов с четными номерами p =', p: 4)

end.

 

 

Обобщение по теме.

 

Массив - это упорядоченный набор однотипных элементов. Упорядоченность означает, что элементы массива расположены в определенном порядке, т.е., проиндексированные.Одно типичность означает принадлежность элементов массива одному типу данных. Это позволяет использовать обработку массивов с помощью операторов цикла.

Для определения массива нужно задать тип индекса и тип элементов. . В качестве типа индекса может выступать любой скалярный ограниченный тип, кроме real и integer. Вместе с тем типом индекса может выступать диапазон типа integer. В качестве типа компонентов может выступать произвольный тип, кроме файлового.

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

Как уже отмечалось, базовым типом массива может быть любой тип данных, в том числе и массив. Структура, элементами которой являются массивы, называется многомерным массивом. Такие массивы объявляются аналогично одномерным. Рассмотрим порядок определения и обработки многомерных массивов на примере двумерных числовых массивов.

 

Вопрос темы:

·  понятие строчной величины;

·  основные процедуры и функции обработки строчных величин.

 

Основные сроки темы:  строчная величина, длина строки.

 

Змiст

Нові надходження

Всього підручників:

292