- •Одномерные массивы
- •Пример 1. Прочитать с клавиатуры 10 целых чисел. Вывести их на экран в обратном порядке.
- •Пример 2. Заполнить массив в соответствии с закономерностью 1, 2, 1, 2, 1….
- •Генератор случайных чисел
- •Пример 3. Заполнить массив случайными числами от 0 до 9 и вывести на экран его элементы через пробел.
- •Константы.
- •Пример 5. Массив из 20 элементов заполнить случайными числами от 0 до 99. Все элементы массива, меньшие 10, заменить нулями.
- •Максимальный элемент массива
- •Пример 6. Заполнить массив случайными числами и вывести на экран наибольший элемент массива и его индекс.
- •Задачи.
- •Использование массивов в играх.
- •Двумерные массивы.
- •Использвание двумерных массивов при создании игр
Одномерные массивы
Допустим, у нас имеется сложный объект, у котрого много координат или по экрану должны двигаться много объектов, например, у вас пулемет, который стреляет очередями, да и врагов немало. Конечно, можно завести под каждый объект переменные, как мы это делали раньше. Но если объектов много, то и переменных будет очень много, как в них не запутаться? Кроме того, программа будет длинной, если по очереди рисовать все объекты. Эти действия похожи и хотелось бы использовать цикл. Но как это сделать, если координаты каждого объекта – различные перменные. Выход есть – массивы.
Массивы – это переменные Паскаля, которые используются для хранения таблиц. Например таблицу
№ |
1 |
2 |
3 |
4 |
5 |
Число |
|
|
|
|
|
можно хранить в массиве, который описывается следующим образом
var a:array[1..5] of integer;
Таблица пока пуста, но в любую ячейку можно записать некоторое целое число. Каждая ячейка массива имеет свой номер - индекс. Например, номера ячеек массива a 1, 2, 3, 4, 5. Число, которое содержится в ячейке с номером i часто будем также называть элементом с номером i. В теле программы содержимое любой ячейки массива можно использовать, как обычную переменную, при этом нужно указывать имя массива и далее в квадратных скобках индекс ячейки в массиве. Например после выполнения операторов
a[2]:=11;
a[3]:=9;
a[4]:=a[2]+a[3];
В таблице будут записаны следующие числа
№ |
1 |
2 |
3 |
4 |
5 |
Число |
|
11 |
9 |
20 |
|
Рассмотрим еще раз, как описывается массив
var a:array[1..20] of integer;
Ключевые слова в этой конструкции окрашены в синий цвет. Имя у массива может быть любое и записывается перед двоеточием, так же, как при описании любой переменной. Далее идет ключевое слово array – массив. Затем в квадратных скобках указываются два числа, между которыми лежат возможные значения индексов ячеек (в нашем случае ячейки имеют номера от 1 до 20). После слова of указывается тип данных, которые могут храниться в массиве. Запомните: во всех ячейках массива хрантяся однотипные переменные. Если массив of integer, то в его ячейках можно хранить целые числа. Большинство операций с массивом удобно проводить в цикле.
Пример 1. Прочитать с клавиатуры 10 целых чисел. Вывести их на экран в обратном порядке.
Решение. Сначала в цикле прочитаем все числа и запишем их в массив, а потом выведем элементы массива в обратном порядке.
Var i:integer;
A:array[1..10] of integer;
Begin
For i:=1 to 10 do
Begin
Write(‘input a[‘,i,’] ’);
Readln(a[i]);
End;
i:=10;
while i>0 do
begin
writeln(a[i]);
i:=i-1;
end;
End.
Пример 2. Заполнить массив в соответствии с закономерностью 1, 2, 1, 2, 1….
Решение. Как видно из представленной закономерности, в ячейки с нечетными номерами нужно записать число 1, а в ячейки с четными – 2. Значит нужен цикл с условием.
var
a:array[1..20] of integer;
i:integer;
begin
for i:=1 to 20 do
if i mod 2=1 then a[i]:=1
else a[i]:=2;
writeln;
for i:=1 to 20 do write(a[i]);
end.