Массивы в языке программирования
Таблицы (массивы)
как основное средство представления однородной информации используется во всех
компьютерных программах. На табличном принципе основана и архитектура
современных ЭВМ: память ПК можно рассматривать как большой массив байтов,
адреса которых располагаются по возрастанию.
Массив – это набор
объектов одного типа, имеющих одно имя, но у каждого из которых есть порядковый
номер.
В Pascal массивы описываются при помощи зарезервированного слова array.При этом количество элементов в массиве должно быть определено
заранее. Также указывается тип элементов, из которых состоит массив и от какого
до какого значения изменяются индексы.
Массив называется
одномерным, если для доступа к его элементам достаточно одного индекса. Массив
описывается следующим образом:
VAR Имя
массива: ARRAY [начальное значение индекса ..
конечное значение индекса] OF тип данных;
В Pascal индекс – это переменная перечисляемого типа. Границы изменения индексов
должны быть постоянными величинами.
Пример описания одномерного массива:
Var A: ARRAY[1..50] OF real;
В результате в каждой ячейке памяти будет
отдельный элемент:
a[1], a[2], a[3], …,a[50].
Для введения данных
в память необходимо организовать цикл. Ввод массива можно выполнить 2-мя
способами:
1) FOR I:= 1 TO N DO
READ(A[I]);
Значения, которые вводятся, набираются на
клавиатуре и отделяются одно от другого пробелом.
2) Вводить можно каждое данное в отдельном
ряду:
FOR I:= 1 TO N DO
BEGIN
Write(‘a[‘, I ,’]=’);
Read(a[i]);
End.
Работу с массивом можно условно разделить на 3
части:
1)
формирование массива;
2)
обработка массива;
3)
вывод обработанного массива.
Формирование
массива:
1 cпособ:
Задача 1. Ввести с
клавиатуры массив из 20 целых чисел.
Program A_251;
Var A: array[1..20]
of integer;
I: integer;
Begin
For i:= 1 to 20 do
Read(a[i]);
End.
2 способ: Формирование случайным
образом.
Массивы можно
задавать с помощью генератора случайных чисел. Этот оператор находится в модуле
CRT, поэтому при его использовании вам необходимо
подключить этот модуль.
ГСЧ(генератор случайных чисел) состоит из двух операторов. В начале нужно
сделать его «активным» для того, чтобы при новом запуске можно было получать
разные числа. Для этого в начале программы используется оператор RANDOMIZE
– он «включает» ГСЧ.
Чтобы
непосредственно получить некоторое число, используется оператор RANDOM.
Если использовать RANDOM(100),
то он «выбирает» произвольное число из диапазона 0-99.
Задача 2 Сгенерировать случайным образом
массив M из 30 элементов целого типа.
Program Massiv;
Uses Crt;
Var M: array[1..30] of integer;
I: integer;
Begin
Randomize;
For i:=1 to 30 do
M[i]: = random(100);
For i:=1 to 30 do
Write(m[i]:4);
End.
Мы рассмотрели случай
использования оператора random, когда есть
ограничения на большее значение. А как быть, если ограничение на нижнее
значение.
Допустим,
учительнице не разрешили ставить оценки ниже 4. Как использовать random?
Рассмотрим пример W:=Random(13); Минимальное значение, которое
принимает переменная w = 0, а максимальное значение = 12.
Как увеличить минимальное значение – прибавить то число, на которое надо
увеличить минимальное значение, значит w:= Random(13)+4; Однако в этом случае на 4 увеличится и максимальное значение.
Чтобы максимальное значение не увеличилось, надо отнять 4 от того, что мы
указали в скобках, т.е. w:= Random(13-4)+4;
В результате w
может принять значения от 4 до 12.
А как быть, если
нужно получить значения из промежутка (-5, 16)? В этом случае минимальное
значение надо уменьшить на 5. А как быть с максимальным значением? Укажем w:= Random(17)-5. Тогда минимальное значение
действительно будет -5. А максимальное? 16-5! Следовательно, максимальное
значение надо увеличить на 5. Получим w:= Random(17+5)-5.
Практические
задачи:
Получите значения P
из промежутка
А) (-3, 7)
Б) (5, 77)
В) (4, 35)
Г) (-4, -1)
Д) (44, 77).
Классические
задачи обработки массивов
- Вычисление суммы элементов массива
Задача №1 Составить программу вычисления суммы элементов массива из N целых чисел.
Указание:
Просмотреть все элементы массива и добавить их в сумму. Операция добавления к
сумме слагаемого уже известна, а просмотреть элементы массива можно при помощи
цикла.
Программа:
Program Z5_5;
Const n=5;
Var I, Sum: integer;
A: array [1..n] of
integer;
Begin
For i:=1 to n do
Begin
Write(‘Введите элементы массива через пробел’);
Read(a[i]);
End;
Sum:=0;
For i:= 1 to n do
Sum:= Sum + a[i];
Writeln(‘Сумма всех
элементов массива=’,Sum);
End.
- Поиск заданного элемента в массиве.
Задачи поиска в
массиве конкретных данных часто решаются методом сканирования массива (просмотром
всех его элементов).
Задача №2 В заданном массиве найти местоположение элементов с заданным
значением.
Программа:
Program Z5_6;
Var A: array[1..10] of real;
X: real;
I: integer;
Begin
Write(‘Введите элементы массива’);
For i:=1 to 10 do
Read(a[i]);
Write(‘Введите
значение величины для поиска’);
Read(x);
For i:=1 to n do
If (a[i]) = x then write(‘на’, I, ‘- месте массива находится заданный элемент’, x:1:2);
End.
- Поиск минимального (максимального)
элемента массива.
Задача №3 Найти наименьший элемент массива и место его расположения в массиве.
Будем
последовательно сравнивать каждый элемент массива с некоторым «трафаретом»
(текущим значением минимального элемента). Если текущий элемент массива меньше
«трафарета», то запоминаем в нём это новое наименьшее значение.
Программа:
Program Z5_7;
Var A: array[1..10] of real;
Min: real;
I: integer;
Begin
Write(‘Введите
элементы массива’);
For I:=1 to 10 do
Read(a[i]);
Min:=a[1]; k:=1;
For I: =2 to 10 do
If (a[i]) < min then
Begin
Min:= a[i];
K:=I;
End;
Write(‘на ‘, k, ‘ – месте массива находится минимальный элемент’, min:1:2);
End.
- Сортировка элементов массива
Задача № 4 Написать программу, которая сортирует по убыванию введённый с
клавиатуры одномерный массив.
Программа:
Program Z5_8;
Const size=5;
Var A: array[1..size] of integer;
I, k, buf : integer;
Begin
Write(‘Введите
элементы массива’);
For i:=1 to size do {Формирование массива}
Read(a[i]);
For i:=1 to size-1 do
Begin
For k:=1 to
size-1 do
Begin
If
a[k]> a[k+1] then
Begin
Buf:
= a[k];
A[k]:=
a[k+1];
A[k+1]:=
buf;
End;
End;
For
k:= 1 to size do write(a[k],’ ‘); {отладочная печать –
состояние
массива после очередного цикла сортировки}
End;
For i:= 1 to size do write(a[i],’
‘); {Вывод массива}
End.
Оставьте свой комментарий
Авторизуйтесь, чтобы задавать вопросы.