Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Паскаль.doc
Скачиваний:
58
Добавлен:
07.06.2015
Размер:
1.21 Mб
Скачать

9.5. Массивы

Массив – это совокупность элементов, имеющих одинаковое имя и отличающихся номером (индексом) их расположения в последовательности.

Типы данных, которые мы до сих пор рассматривали, называют скалярными. Их использование не всегда эффективно. Так, если в задаче данные являются родственными, например оценки группы студентов, то скалярные типы применять неудобно. Для определения количества студентов (KolStud), имеющих балл (BallStud) выше среднего (Sr), пришлось бы записать 25 операторов вида

KolStud := 0;

If BallStud1 > Sr Then

KolStud := KolStud + 1;

If BallStud2 > Sr Then

KolStud := KolStud + 1;

и т. д.

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

Примеры массивов:

1) последовательность чисел (оценок)

х1, x2, x3, ..., xn – 1 индекс

2) матрица чисел

Примером представления данных в виде матрицы может служить запись коэффициентов системы линейных уравнений.

Для описания массива используется служебное слово Array (Массив). Кроме того, необходимо задать:

1) имя массива;

2) диапазон изменения каждого индекса..

Количество индексов называется размерностью массива. По количеству индексов различают:

– одномерные массивы (последовательность чисел, символов);

– двумерные массивы (матрицы);

– трехмерные и т.д. массивы.

Как и скалярные переменные, массивы описываются в разделе описания переменных (т.е. после служебного слова Var), например:

Var

Имя_Массива : Array[Диапазоны_индексов] Of Тип_Элементов_Массива;

где Диапазоны_индексов – список границ изменения каждого индекса.

Пример.

Const

N=100;

M=5;

Var

X:Array[1..N] Of Real; {массив вещественных чисел}

A:Array[1..M,1..M] Of Integer; {мaтрица целых чисел}

Следует различать описание массива и значение его элемента при обработке (внутри программы, после первого Begin). Элемент массива в программе записывают в виде

Имя_Массива [индекс] или

Имя_Массива [список индексов]

Пример.

X[2] => x2

A[i,j] => Aij

Ваll [k,i+2] => Ballk,i+2

Индекс – это число, переменная или выражение перечисляемого целого или символьного типа.

Рассмотрим пример программы обработки массива.

Задача. Ввести в ЭВМ оценки студентов одной группы по одному предмету. Подсчитать средний балл и количество оценок выше средней.

Алгоритм

1. Ввести оценки.

2.1. Положить сумму баллов = 0.

2.2. Для номера оценки (i) от 1 до Количества_студентов_в_группе выполнить

Подсчитать сумму баллов.

3. Вычислить средний балл.

4. Положить количество оценок выше средней, равной 0.

5. Для номера (i) от 1 до Количества_студентов_в_группе выполнить

Подсчитать количество оценок выше средней.

6. Закончить.

Уточняем алгоритм.

1.1. Ввести количество оценок n.

1.2. Для номера оценки (i) от 1 до n выполнить.

1.2.1. Ввести баллi

2.1. Положить сумму баллов = 0.

2.2. Для номера оценки (i) от 1 до n выполнить

2.2.1. Сумма_баллов = сумма_баллов + баллi

3. Вычислить средний балл = сумма_баллов / n.

4. Положить количество оценок выше средней = 0.

5. Для номера от 1 до n выполнить

5.1. Если баллi > среднего, то

количество = количество +1.

Программа для этого алгоритма будет иметь вид

Program Ball;

Const

M=25;

Var

B:Array[1..M] OF Integer;

S:Real; {сумма и средний балл}

N,I,K:Integer; {K - счетчик}

Begin

Writeln('Введите количество оценок'); { п.1.1 }

Read (N);

Writeln('Введите оценки'); { п.1.2 }

For I:= 1 To N Do

Read(B[I]);

S:=0; { п.п. 2.1 - 2.2 }

For I:= 1 To N Do

S := S+B[I];

S := S/N; { п.3 - средний балл }

Writeln('Средний балл - ',S);

K: = 0; { п.4 }

For I:= 1 To N Do { п.5 }

If B[I]>S Then

K:=K+1;

Writeln('Количество оценок выше средней = ',K);

End.

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