Массивы. Описание и использование массивов

При решении практических задач достаточно часто возникает потребность хранения табличных данных. В качестве примеров массивов в математике можно привести векторы, матрицы, таблицы и т.п.

Массив – это группа элементов, названная одним именем. Элементы массива обозначают именем массива, их местоположение в массиве определяется приписываемым к имени массива индексом.

Объявление массива в программе осуществляется с использованием ключевого слова array, используемого следующим образом:

Type

Имя_типа_массива = array [диапазон] of тип_элементов;

Рассмотрим несколько примеров декларации массивов:

Type

Ar = array[1..100] of integer;
Var

A,B,C : Ar;

Декларацию переменных-массивов можно осуществлять непосредственно в разделе переменных:

Var

A,B,C : array[1..100] of integer;

Пример использования отдельных элементов – обращение через оператор присваивания, считывание с клавиатуры, использование в арифметических выражениях. Обратить внимание на принципиальное отличие от обычной переменной — возможность использования косвенной адресации, по номеру (индексу) элемента.

Пример ввода одномерного массива с клавиатуры и последующего вывода его на экран.

const

Nmax = 10;

var

n : integer;

a : array [1..Nmax] of integer;

begin

{Сначала ввод}

for n:=1 to Nmax do

begin

write(‘Введите элемент a[’, n, ‘]: ’);

read(a[n]);

end;

{Теперь вывод}

for n:=1 to Nmax do

writeln(‘Элемент a[’, n, ‘] = ’, a[n]);

end.

В качестве примера работы с массивом рассмотрим задачу расчета среднего арифметического элементов массива:

Const

Nmax = 500; {константа, определяющая максимальный

размер массива}

Var

X : array[1..Nmax] of integer; {массив для хранения целых чисел}

n : integer; {переменная для хранения выбранного пользователем

количества используемых элементов массива}

i : integer; {переменная-параметр цикла}

S : real; {Переменная для хранения

рассчитываемой суммы элементов}

Begin

{Ввод числа элементов n}

write(‘Введите n: ’);

read(n);

{Ввод массива X}

for i:=1 to n do

Begin

write(‘Введите X[’, i, ‘]: ’);

read(X[i]);

end;

{Расчёт среднего арифметического}

S:=0;

For i:=1 to n do

S:=S+X[i];

S:=S/n;

writeln(‘S = ’, S);

End.

Раздел №14 (4 часа)

Процедуры и функции

План:

• Структурный подход к разработке программы. Подпрограммы

• Синтаксис объявления и использования процедур

• Синтаксис объявления и использования функций

• Примеры использования подпрограмм на Паскале

• Параметры-переменные и параметры-значения

14. Процедуры и функции

Структурный подход к разработке программы. Подпрограммы

Рассмотрим следующий пример. Дан треугольник ABC с длинами сторон a, b и c соответственно (рис. 2). Необходимо разработать программу, вычисляющую его площадь.

Массивы. Описание и использование массивов - student2.ru

Рис. 2

Для решения задачи воспользуемся формулой Герона:

Массивы. Описание и использование массивов - student2.ru ,

где Массивы. Описание и использование массивов - student2.ru – полупериметр:

Массивы. Описание и использование массивов - student2.ru .

Алгоритм решения будет иметь вид:

Массивы. Описание и использование массивов - student2.ru

Программная реализация этого алгоритма может иметь вид:

Var

a, b, c : real; {Переменные для хранения исходных данных}

S : real; {Переменные для хранения исходных данных}

p : real; {Вспомогательная переменная для хранения полупериметра}

Begin

write(‘Введите a, b и c: ’); read(a, b, c);

p := (a + b + c)/2.0;

S := sqrt(p*(p-a)*(p-b)*(p-c));

write(‘S=’, S:0:3);

end.

Усложним исходное задание. Предположим, что необходимо рассчитать площадь четырёхугольника ABCD, заданного длинами своих сторон a, b, c, d и длиной диагонали e.

Массивы. Описание и использование массивов - student2.ru

Искомая площадь Массивы. Описание и использование массивов - student2.ru представляет собой сумму площадей соответствующих треугольников Массивы. Описание и использование массивов - student2.ru . Поэтому для решения задачи можно также воспользоваться формулой Герона, которую в этом случае придётся применять дважды. Алгоритм решения можно представить следующим образом:

Массивы. Описание и использование массивов - student2.ru

Следует обратить внимание на то, что одна и та же последовательность вычислений: «расчёт полупериметра – расчёт площади», – выполняется в программе дважды, но с различными исходными данными. Первый раз вычисления производятся с использованием длин a, b и e, а во втором – c, d и e.

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

1. Дублирование операторов увеличивает размер программы, повышает требования к объёму оперативной памяти, необходимой для хранения машинных кодов.

2. Дублирование снижает возможности по сопровождению и модификации программы; например можно представить, что на каком-то этапе разработки программы было принято решение отказаться от использования формулы Герона, и рассчитывать площадь треугольников иным образом. В этом случае программисту пришлось бы тщательно отыскивать все места в программе, где встречается последовательность операторов расчёта площади и менять их на новые фрагменты. При этом нет полной уверенности, что все последовательности были найдены и корректно изменены.

3. Механическое дублирование увеличивает размер исходных текстов программы и усложняет её восприятие программистом.

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

Наши рекомендации