До сих пор мы рассматривали переменные, которые имели только одно значение, могли содержать в себе только одну величину определенного типа.
Вы знаете, что компьютер предназначен в основном для облегчения работы человека с большими информационными объемами. Как же, используя только переменные известных вам типов, сохранить в памяти и обработать данные, содержащие десяток, сотню, тысячу чисел или, к примеру, символов? А ведь такие задачи встречаются в любой области знания. Конечно, можно завести столько переменных, сколько данных, можно даже занести в них значения, но только представьте, какой величины будет текст такой программы, сколько времени потребуется для его составления, как много места для возможных ошибок? Естественно, об этом задумывались и авторы языков программирования. Поэтому во всех существующих языках имеются типы переменных, отвечающие за хранение больших массивов данных. В языке Паскаль они так и называются: "массивы".
Массивом будем называть упорядоченную последовательность данных одного типа, объединенных под одним именем.
Проще всего представить себе массив в виде таблицы, где каждая величина находится в собственной ячейке. Положение ячейки в таблице должно однозначно определяться набором координат (индексов). Самой простой является линейная таблица, в которой для точного указания на элемент данных достаточно знания только одного числа (индекса). Мы с вами пока будем заниматься только одномерными массивами, так как более сложные структуры строятся на их основе.
Например: Количество проданных телевизоров в каждый день недели.
или температура воздуха за год
Такие таблицы будем называть массивами. Обозначим:
К – массив количества телевизоров
Т – массив температуры воздуха
Тип элементов массива называется базовым типом. Порядковые номера элементов называется индексами.
Обращение к элементу массива:
k[1]=5
k[2]=6
T[7]=28
T[12]=-20
базовый тип элементов – integer
Описание массива:
var имя массива: array [тип индекса] of базовый тип;
Например, var k: array [1..7] of integer;
var T: array [1..12] of integer;
Например, массив русских букв А
A[1]=’a’
A[2]=’б’
A[3]=’в’
A[33]=’я’
var A: array [1..33] of char;
Стоит подчеркнуть, что в Pascal нет возможности объявить массив переменной длины. То есть, подобный фрагмент кода:
var A: array [1..n] of integer;
вызовет ошибку.
Ввод и вывод массива производится поэлементно.
{ввод массива}
writeln(‘введите массив’);
for i:=1 to 7 do begin write('k[', i ,']=');
readln(k[i]);
end;
{вывод массива}
for i:=1 to 7 do writeln(‘K[‘, i ,’]=’,k[i]);
Заполнение массива случайными числами:
Для заполнения массива случайными числами используется генератор случайных чисел - функция random.
Например, random(100) выдает случайное целое число в диапазоне [0,99].
random(1000) выдает случайное целое число в диапазоне [0,999].
Для получения случайного целого числа из произвольного промежутка [a,b] используется формула a+random(b-a+1)
Например, 3+random(6) выдает случайное целое число в диапазоне [3,8].
Заполнение массива случайными числами избавляет пользователя от ввода массива с клавиатуры. Для этого используется следующий фрагмент программы.
for i:=1 to 10 do A[i]:=random(100);
После заполнения массива случайными числами, необходимо просмотреть их на экране, для этого используется фрагмент вывода на экран.
Задание 1. Запишите объявления массивов по их характеристикам:
массив a из 10 целых чисел, первый элемент имеет номер 0:
Решение:
var a: array [0..9] of integer;
Задание 2. Запишите фрагмент кода, в котором массив a, объявленный как a: array[2..16] of integer;, заполняется по предложенному правилу:
элементы массива - случайные числа из промежутка от 0 до 9:
Решение:
for i:=2 to 16 do a[i]:=random(10);
каждый элемент массива в 3 раза больше своего индекса:
Решение:
for i:=2 to 16 do a[i]:=3*i;
Задание 3. Составить программу для решения следующей задачи: Дан массив количества продаж телевизоров. Подсчитать количество телевизоров, проданных за всю неделю.
var k: array [1..7] of integer;
S, i: integer;
begin
writeln(‘введите массив’);
for i:=1 to 7 do readln(k[i]);
S:=0;
for i:=1 to 7 do S:=S+k[i];
writeln('суммарное количество: ',s);
end.
Задание 4. Составить программу для решения следующей задачи: Дан массив натуральных чисел, заполненный с помощью датчика случайных чисел. Подсчитать количество четных чисел.
var А: array [1..10] of integer;
k, i:integer;
begin
for i:=1 to 10 do A[i]:=random(100);
for i:=1 to 7 do writeln(‘A[‘, i ,’]=’,A[i]);
k:=0;
for i:=1 to 10 do if A[i] mod 2 = 0 then k:=k+1;
writeln(k);
end.
Задание 5. Составить программу для решения следующей задачи: Дан массив A[n]. Найти максимальный элемент массива и его номер.
var А: array [1..1000] of integer;
max, i, n, nom: integer;
begin
writeln(‘введите n’);
readln(n);
writeln(‘введите массив’);
for i:=1 to n do readln(A[i]);
max:=A[1];
nom:=1;
for i:=2 to n do if A[i]>max then begin
max:=A[i];
nom:=i;
end;
writeln('максимальный элемент = ',max, ' его номер = ', nom);
end.
Задание 6. Составить программу для решения следующей задачи: Дан целочисленный массив A[n]. Создайте новый массив, выбросив из A[n] каждый второй элемент.
var А, B: array [1..1000] of integer;
n, i, j:integer;
begin
writeln(‘введите n’);
readln(n);
writeln(‘введите массив’);
for i:=1 to n do readln(A[i]);
j:=1;
for i:=1 to n do if i mod 2<>0 then begin
B[j]:=A[i];
j:=j+1;
end;
for i:=1 to j-1 do writeln(‘B[‘,i,’]=’,B[i]);
end.