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

4.4. Работа с заданными массивами.

Все рассмотренные ранее алгоритмы позволяли работать со скалярными данными: числами, символами и т.д. Однако очень часто при решении задач необходимо использовать объекты, содержащие множество одно­типных элементов. Для обработки таких объектов и служит массив.

Массив- структурированный тип данных, состоящий из фиксированного числа элементов одного типа: например, при обработке результатов много­кратных замеров температуры воздуха в течение года удобно рассматривать значения температур как массив вещественных чисел. Аналогом одномерного массива является вектор, двумерного - матрица. Рассмотрим работу с массива­ми на языке Турбо Паскаль.

Для описания массива служат служебные слова array of. Сама же процедура может выполняться двумя способами:

1) ввести новый тип данных, а потом описать переменные нового типа. В этом случае формат команды type следующий:

type

<имя_типа>' = array [<тип_индекса>] of <тип_компонентов>;

В качестве типа_индекса можно использовать перечислимый тип. Тип_компонентов - это любой ранее определенный тип данных, напри­мер:

type

massiv=array[0..12] of real;

dabc=array[-3. .6] of integer;

var

x,y:massiv;

z: dabc;

2) можно не вводить новый тип, а просто описать переменную следующим образом:

var <переменная> : array [<тип_кндекса>] of <тип_переменных>;

Например:

var

z,x; array[1..25] of word;

g:array[-2. .7] of real;

Операции над массивами

Для работы с массивом как с единым целым надо использовать идентификатор массива без указания индекса в квадратных скобках. Доступ к каждому элемен­ту массива осуществляется с помощью индекса, то есть порядкового номера элемента массива. Для обращения к элементу массива надо указать имя масси­ва и порядковый номер элемента: х[1], y[5], с[25], А[8]. Если указано только имя массива, то речь идет обо всем массиве (А, С и F). Обычно для обработки массива нужно организовать цикл и уже в нем работать с элементами.

В Турбо Паскале определена также операция присваивания для массивов, идентичных по структуре, то есть с одинаковыми типами индексов и компонен­тов. Например, если массивы С и D описаны как

var c,d: array [0..30] of real; то можно записать оператор

c:=d;

Такая операция сразу всем элементам массива С присвоит значения элементов массива D, соответствующих им по номерам.

Ввод-вывод элементов массива

Паскаль не имеет специальных средств ввода-вывода всего массива, поэтому данную операцию следует организовывать поэлементно. При вводе массива необходимо последовательно вводить 1-й, 2-й, 3-й и т.д. элементы массива, ана­логичным образом поступить и при выводе. Следовательно, для ввода-вывода необходимо организовать цикл, в котором практически все операции с масси­вами необходимо проводить поэлементно. Для обработки элементов массива удобно использовать цикл for ... do.

{ Ввод элементов массива X с помощью цикла while.}

var

х: array [1..100] of real;

i,n: integer; begin

writeln {'введите размер массива'};

readln(N);

i:=l;

while (i<=N) do

begin

write('x(',i,')=');

readln(x[i]);

i:=i+l

end;

end.

{ Ввод элементов массива X с помощью цикла for. }

var

х: array [1..100] of real; i,n: integer;

begin

readln(N);

for i:=l to N do begin

write('x(',i, ')= ');

readln(x[i])

end;

end.

Как видно, цикл for ... do удобно использовать для обработки всего масси­ва, и в дальнейшем при выполнении таких операций мы будем применять имен­но его.

Вывод массива организуется аналогично вводу.

Алгоритм нахождения суммы элементов массива

Дан массив X, состоящий из n элементов. Найти сумму элементов этого массива. Блок-схема алгоритма расчета суммы приведена на рис. 5.3.

Соответствующий алгоритму фрагмент программы будет иметь вид:

s: = 0;

for i:-l to N do

s:=s+x[i];

Алгоритм нахождения произведения элементов массива

Дан массив Х, состоящий из n элементов. Найти произведение элементов это­го массива. Блок-схема алгоритма приведена на рис. 5.4. Соответствующий фрагмент программы будет иметь вид:

р:=1;

for i:=l to N do

p:=p*x[i];

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]