Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Степан / Информатика / Паскаль (Попов).doc
Скачиваний:
56
Добавлен:
20.04.2015
Размер:
828.93 Кб
Скачать

6. Массивы

Как правило, данные для вычислений задаются в упорядоченной форме – в виде последовательности ряда (вектора) чисел или в виде таблицы (матрицы) чисел. Такие совокупности данных называются массивами. Например, векторA длиной K чисел и матрица B из N строк и M столбцов (всего из NM элементов) выглядят следующим (справа) образом. Построение программ, оперирующих с элементами массивов – важнейшая часть техники программирования.

Цифры при имени массива, указывающие порядковый номер элемента, называются индексами. Элементы массивов Аiи Bijобозначаются как А[I] и B[I,J]. К массиву в целом обратиться нельзя. Обработка массива означает последовательную обработку отдельных его элементов.

Оператор описания массивов.Если предполагается работа с массивами, предварительно следует “известить” об этом компьютер в разделе описаний (VAR) программы. Для одномерного массива это оператор вида

имя_массива: ARRAY [диапазон] OF тип_массива

Например,

Var X,z: array [1..8] of real;

y: ARRAY [5..10] OF INTEGER; b: ARRAY [1..4, 1..5] OF INTEGER;

Здесь первый оператор описывает массивы XиZиз 8-ти элементов (с номерами от 1 до 8) вещественного типа. Второй – массивYиз 5-ти элементов (с номерами от 5 до 10) целочисленного типа, третий – двумерный массивBиз четырех строк и пяти столбцов.

program P6_1;

var i,n,m,k: integer;

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

begin

write('n='); readln(n);

for i:=1 to n do begin

write('i=',i:2,' c=');

readln(c[i]);

end;

n=4

Пр

оверка

m:=c[1]; k:=1;

for i:=2 to n do

if m<c[i] then begin

m:=c[i]; k:=i end;

writeln('m=',m:2,' n=',k:1);

end.

m=5, k=1

i=2

5>2

i=3

5<7 m=7,k=3

i=4

7>4

i=5

7, 3

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

Var I,j: integer;

FOR i:=1 TO 8 DO BEGIN {ввод вектора X с подсказкой}

WRITE('x[',i,']='); READLN(x[i]) END;

FOR i:=1 TO 4 DO{ввод матрицы В с подсказкой}

FOR j:=1 TO 5 DO BEGIN

WRITE('b[',i,j,']='); READLN(b[i,j]);

END;

FOR i:=1 TO 4 DO BEGIN {построчный вывод матрицы B}

FOR j:=1 TO 5 DO WRITE('b[',i,j,']=',b[i,j]:4:1,' ');

WRITELN {вывод пустой строки}

END;

Сначала осуществляется ввод данных в вектор X. На экране мы увидим, например, подсказку видаx[2]=, после чего можно ввести значение этого элемента. Аналогичную подсказку (b[2,4]=) увидим для матрицы В размерностью 4 строки на 5 столбцов. Ввод осуществляется с помощью двух циклов, один из которых вложен в другой (так называемые сложные циклы). В наружном цикле изменяется первый индекс I элемента матрицы В, во внутреннем – второй индекс J. Индекс J изменяется быстрее, чемI(на одно изменениеIиндексJизменяется 5 раз). Это означает, что ввод элементов матрицы будет производиться в следующей последовательности: B[1,1], B[1,2],...B[1,5]; B[2,1],B[2,2],...B[2,5];...;B[4,1],B[4,2], ...B[4,5], т.е. по строкам. Аналогично осуществляется и вывод, но вместо оператораREADLNиспользуется операторWRITELN. В примере производится вывод данных из матрицы В. Если позволяет ширина экрана, удобно выводить одну строку матрицы на одной строке монитора. ОператорWRITE('b[',i,j,']= ',b[i,j]:4:1,' ')выводит данные, например, в видеb[2,3]=25.3. Поскольку операторWRITEне переводит строку вывода, принудительный переход на новую строку осуществляется пустым операторомWRITELNпосле того, как строка была полностью выведена.

Начальные значения скалярным переменным и элементам массива (в особенности при отладке) можно задать в разделе констант (начинается со слова const). Например:

CONST z:ARRAY [1..3] OF INTEGER=(4,5,2);

x: INTEGER=5;

r:ARRAY [1..3,1..2] OF INTEGER=((1,2),(3,4),(5,6));

Здесь вектору Zприсваиваются значения:z[1]=4,z[2]=5,z[3]=2, переменной х: 5, а прямоугольной матрицеR:r[1,1]=1,r[1,2]=2,r[2,1]=3,r[2,2]=4,r[3,1]=5,r[3,2]=6.

Пример 6-1.В векторе С предельной размерности 10 элементов найти максимальный по значению элемент и его номер в С по порядку. В программе сделана проверка для N=4 и C=[5,2,7,4] в ее обрабатывающей части. Здесь переменная М запоминает значение максимального элемента, аK– номер этого элемента в вектореC. Первоначально в качестве такого элемента берется самый первый.

Пример 6-2.Определим значения вкладов в банке на конец года. Положим, имеется N счетов вкладчиков. Для всех них известны значения остатков на счете в конце каждого квартала. Следует определить и напечатать значения всех вкладов на конец года с учетом известного процента роста вклада. Все суммы считаем целочисленными (копейки игнорируем).

program P6-2;