
- •Одномерные массивы
- •Пример 1. Прочитать с клавиатуры 10 целых чисел. Вывести их на экран в обратном порядке.
- •Пример 2. Заполнить массив в соответствии с закономерностью 1, 2, 1, 2, 1….
- •Генератор случайных чисел
- •Пример 3. Заполнить массив случайными числами от 0 до 9 и вывести на экран его элементы через пробел.
- •Константы.
- •Пример 5. Массив из 20 элементов заполнить случайными числами от 0 до 99. Все элементы массива, меньшие 10, заменить нулями.
- •Максимальный элемент массива
- •Пример 6. Заполнить массив случайными числами и вывести на экран наибольший элемент массива и его индекс.
- •Задачи.
- •Использование массивов в играх.
- •Двумерные массивы.
- •Использвание двумерных массивов при создании игр
Генератор случайных чисел
При решении задач на компьютере человек часто использует случайные числа. Это особенно важно при программировании игр. Для того, чтобы генерировать случайные числа, в паскале предусмотрена функция random. У нее один целочисленный аргумент. Функция возвращает неотрицательное целое случайное число, меньшее аргумента, пример использования
x:=random(y);
Если вы собираетесь использовать функцию random в своей программе, то до ее первого использования необходимо выполнить процедуру randomize без параметров, которая устанавливает генератор в начальное состояние. Если не использовать randomize, то вызовы random будут все время выдавать одну и ту же последовательность чисел.
Пример 3. Заполнить массив случайными числами от 0 до 9 и вывести на экран его элементы через пробел.
Решение.
var a:array[1..20] of integer;
begin
randomize;
for i:=1 to 20 do a[i]:=random(10);
for i:=1 to 20 do write(a[i],’ ‘);
end.
Задачи
Прочитать с клавиатуры элементы массива. Вывести на экран те элементы, индексы которых нечетны.
Записать в ячейки массива последовательность вида 1,2,3,1,2,3,1,2,3,1,2,3,1,2,3…
Заполнить массив случайными числами от 0 до 100 и вывести все элементы, которые лежат от 30 до 50.
Заполнить массив случайными числами от 10 до 90 и вывести все элементы, которые лежат от 30 до 50.
Ряд чисел образуется следующим образом. Сначала записывают числа 1 и 2. Каждое следующее число получается как сумма двух предыдущих. Вывести на экран первые 10 чисел ряда в порядке убывания.
Константы.
В примере 4 число 20 встречается во многих местах программы. Если его вдруг придется изменить, то легко запутаться. По этой причине имеет смысл дать числу 20 некоторое имя, а затем использовать это имя в программе. Для этих целей в паскале предусмотрен еще один тип объектов – константы. Константы имеют имя и значение и в этом смысле очень напоминают переменные. Два важнейших отличия констант:
значения констант нельзя изменять в программе
константы можно использовать вместо чисел в квадратных скобках при описании массива, а переменные – нельзя.
Для описания констант предусмотрен специальный раздел, который начинается со слова const и располагается до тела программы.
const n=10; k=5;
Рассмотрим использование константы на примере.
Пример 5. Массив из 20 элементов заполнить случайными числами от 0 до 99. Все элементы массива, меньшие 10, заменить нулями.
Решение.
const n=20;k=100;
var
a:array[1..n] of integer;
i,s:integer;
begin
randomize;
for i:=1 to n do a[i]:=random(k);
s:=0;
for i:=1 to n do if a[i]<10 then a[i]:=0;
writeln;
for i:=1 to n do write(a[i],’ ‘);
end.
Далее в задачах о массивах количество ячеек следует описывать как константу .
Задачи.
Заполнить массив случайными числами от 0 до 100. Вывести элементы массива на экран. Все элементы массива, лежащие между 20 и 30 и между 50 и 60, уменьшить на 2.
Максимальный элемент массива
Сразу рассмотрим пример.
Пример 6. Заполнить массив случайными числами и вывести на экран наибольший элемент массива и его индекс.
Решение.
Нам необходимо хранить только индекс максимального элемента массива, для этого будем использовать переменную imax.
const n=20;
var
a:array[1..n] of integer;
i,imax:integer;
begin
randomize;
for i:=1 to n do a[i]:=random(100);
imax:=i;
for i:=2 to n do if a[i]>a[imax] then imax:=i;
writeln(‘максимальный элемент ’,a[imax]);
writeln(‘индекс максимального элемента’,imax);
end.