Массивы. Паскаль. 9 класс
Рыжков Д.А.
МБОУ СШ №73
Г. Ульяновск
Определение 1
Массив – пронумерованная совокупность ячеек памяти, названная одним именем
1 2 3 4 5 6 7
10
11
14
30
19
44
22
Индекс (порядковый номер) элемента массива
Значение элемента массива
А
Имя массива
A [ 4 ] := 11;
МАССИВЫ
- Массив - конечный набор данных одного типа и имеющих одно имя;
- Элемент массива - отдельная переменная, входящая в массив;
- Размерность массива – количество элементов, которое содержит массив.
- Индекс элемента массива - номер элемента в массиве;
A
A[1] A[2] A[3] A[n-1] A[n]
3
12
… .
7
11
-2
A[1] - Первый элемент массива; A[1]:= 3 ;
A[2] - Второй элемент массива; A[2]:= 12 ;
.....
A[n] - n-й элемент массива. A[n]:= 11 ;
Описание массива 2
Объявление массива в разделе описания переменных:
Var имя :ARRAY[1.. N ] OF тип ;
Количество элементов
Например:
Тип элементов
Имя массива
Var A :Array[1.. 10 ] of Integer ;
Var Tem :Array[1.. 100 ] of Real ;
Описание массива Конструкция
: array[ мин знач. индекса .. макс знач.индекса ] of ;
Var
А: array[1..17] of integer;
mas: array[ 1 .. 20 ] of integer;
X: array[ 3..4 ] of real;
S1: array[ 1..3 ] of char;
Способы заполнения массива
1 способ . Ввод каждого значения с клавиатуры:
for i :=1 to 10 do read (a[i]);
2 способ . С помощью оператора присваивания (по формуле):
for i :=1 to 10 do a[i]:=i;
3 способ . С помощью оператора присваивания (случайными числами):
randomize ;
for i:=1 to 10 do a[i]:=random(100);
Основные алгоритмы для работы с массивами
1. Заполнение одномерного массива значениями
1) Заполнение с клавиатуры.
For i:=1 to n do
read(a[i]);
Вывод массива
1 способ. Элементы массива можно вывести в строку, разделив их пробелом:
for i:=1 to 10 do write (a[i], ' ');
45
21
56
43
83
56
69
34
28
15
a[1]=4
a[2]=1
a[3]=6
a[4]=3
a[5]=8
a[6]=5
a[7]=9
a[8]=4
a[9]=8
a[10]=7
2 способ . Вывод с комментариями:
for i:=1 to 10 do writeln ('a[', i, ']=', a[i]);
2. Заполнение случайным образом
RANDOMIZE;
For i:=1 to n do
begin
a[i]:=random(m);
Write(a[i],’ ‘);
End;
Пример: m – диапазон случайных значений, для m=10 диапазон от 0 до 9
Заполнения массива A (10) случайными числами и вывод элементов массива
Объявление массива
program n_2 ; var i: integer;
a: array[1..10] of integer;
Заполнение массива
begin for i:=1 to 10 do a[i]:=random(100);
Вывод массива
for i:=1 to 10 do write (a[i] ,` `) ; end .
3. Заполнение по формуле
For i:=1 to n do
a[i]:=;
Например:
For i:=1 to n do
a[i]:=sin(i)-cos(i);
Вывод значений массива на экран по горизонтали (в строку);
For i:=1 to n do
Write(a[i]:5);
Вывод значений массива на экран по вертикали (в столбец);
For i:=1 to n do
Writeln(a[i]);
Вычисление суммы элементов массива
Суммирование элементов массива
осуществляется за счёт поочерёдного добавления слагаемых :
Определяется ячейка памяти (переменная s ),
в которой будет последовательно накапливаться
результат суммирования
Переменной s присваивается начальное значение 0
- число, не влияющее на результат сложения
Для каждого элемента массива из переменной s
считывается её текущее значение и складывается
со значением элемента массива;
полученный результат присваивается переменной s.
Вычисление суммы элементов массива
s := 0
s = 0
s := s + a [1]
s = 0+ a [1]
s := s + a [2]
s = 0+ a [1]+ a [2]
s := s + a [3]
s = 0+ a [1]+ a [2]+ a [3]
…
…
s := s + a [n]
s = 0+ a [1]+ a [2]+ a [3]+…+ a [n]
Основной фрагмент программы:
s:=0;
for i:=1 to n do s:=s+a[i];
Задача. Вычисление суммы элементов массива
program n_3;
var s, i: integer;
a:array[1..10] of integer;
begin
s:=0;
for i:=1 to 10 do a[i]:=random(100);
for i:=1 to 10 do write (a[i],' ');
for i:=1 to 10 do s:=s+a[i];
writeln ('s=', s)
end.
Задание: Заполнить массив с именем X случайными значениями и вывести эти значения на экран. Размерность массива 12, все элементы целого типа. Удвоить значение каждого элемента массива и вывести на экран.
program n_3;
var s, i: integer;
x: array [1..12] of integer;
begin
s:=1;
for i:=1 to 12 do x[i]:=random(100);
for i:=1 to 12 do write (x[i],' ');
for i:=1 to 12 do s:=x[i]*x[i];
writeln ('s=', s)
end .
Нахождение наибольшего элемента
в стопке карточек с записанными числами :
1) Взять верхнюю карточку, записать на доске
(запомнить) число как наибольшее.
2) Взять следующую карточку, сравнить числа. Если
на карточке число больше, то записать это число.
Повторить действия, описанные в пункте 2 для всех
оставшихся карточек
При организации поиска наибольшего элемента массива правильнее искать его индекс.
!
a[imax] then imax:=i; write ( 'Наибольший элемент a[',imax,']=', a[imax]) end . " width="640"
Программа поиска наибольшего элемента в массиве
program n _4;
var s, i, imax : integer;
a: array[1..10] of integer;
b egin
s:=0;
for i:=1 to 10 do a[i] :=random(100) ;
for i:=1 to 10 do write (a[i] ,` `) ;
imax:=1 ;
for i:=2 to 10 do
if a[i]a[imax] then imax:=i;
write ( 'Наибольший элемент a[',imax,']=', a[imax])
end .
Поиск элемента, равного 50
program n _ 5 ;
var n, i: integer;
a: array[1..10] of integer;
b egin
randomize;
for i:=1 to 10 do a[i] :=random(100) ;
for i:=1 to 10 do write (a[i] ,` `) ;
n := 0;
for i:= 1 to 10 do
if a[i] =50 then n :=i;
if n=0 then write( 'Нет' ) else write (i)
end .
Будет найден последний из элементов, удовлетворяющих условию.
10
50
1
3
50
14
21
50
10
21
Поиск элемента, равного 50
program n _5_1;
var n, i: integer;
a: array[1..10] of integer;
b egin
randomize;
for i:=1 to 10 do a[i] :=random(100) ;
for i:=1 to 10 do write (a[i] ,` `) ;
i := 0;
repeat
i:=i+1;
until (a[i]=50) or (i=10);
if a[i]=50 then write(i) else write('Нет')
end .
Будет найден первый из элементов, удовлетворяющих условию.
10
50
1
3
50
14
21
50
10
21
50 then k:=k+1; write ('k=', k) end . 10 6 0 2 1 5 3 5 8 14 2 8 50 10 5 1 " width="640"
Подсчет количества элементов
Для подсчета вводится переменная, значение которой увеличивается на единицу каждый раз, когда найден нужный элемент.
program kolich ;
var k, i: integer;
a: array[1..10] of integer;
b egin
randomize;
for i:=1 to 10 do a[i] :=random(100) ;
for i:=1 to 10 do write (a[i] ,` `) ;
k := 0;
for i:=1 to 10 do
if a[i]50 then k:=k+1;
write ('k=', k)
end .
10
6 0
2 1
5 3
5 8
14
2 8
50
10
5 1
1 0 and (a[i]then s := s + a[i]; write (‘ s =', s ) end . 10 50 1 3 50 14 21 50 10 21 " width="640"
Сумма значений элементов, удовлетворяющих условию
program sum ;
var s, i: integer;
a: array[1..10] of integer;
b egin
randomize;
for i:=1 to 10 do a[i] :=random(100) ;
for i:=1 to 10 do write (a[i] ,` `) ;
s := 0;
for i:=1 to 10 do
if a[i] 1 0 and (a[i]then s := s + a[i];
write (‘ s =', s )
end .
10
50
1
3
50
14
21
50
10
21
Сортировка массива
Сортировка элементов массива по невозрастанию
выбором осуществляется следующим образом:
1. В массиве выбирается максимальный элемент
2. Максимальный и первый элемент меняются местами
(первый элемент считается отсортированным)
3. В неотсортированной части массива снова выбирается
максимальный элемент; он меняется местами с первым
неотсортированным элементом массива
Действия пункта 3 повторяются с неотсортированными
элементами массива, пока не останется один
неотсортированный элемент (минимальный)
Сортировка массива
Индекс
Значение
Шаги
1
2
1
0
2
1
3
3
9
4
2
4
5
4
6
5
3
6
7
7
6
8
5
Итог:
5
6
1
2
3
4
9
0
3
1
6
2
4
5
9
0
9
0
2
4
3
1
5
6
4
0
3
5
6
9
1
2
5
9
2
3
0
1
4
6
5
6
9
0
4
2
3
1
9
6
4
3
2
5
0
1
0
2
5
6
1
9
3
4
Опорный конспект
Массив - это поименованная совокупность однотипных элементов, упорядоченных по индексам, определяющим положение элементов в массиве.
var : array [ ..
] of тип_элементов;
Заполнение массива
Ввод с клавиатуры
Присваивание значений
Задачи по обработке массива
Суммирование элементов
Поиск элемента во свойствам
Сортировка элементов массива
Порядок составления программы содержащей массив
- Описать массив
- Заполнить массив одним из 3-х способов ( если массив заполняется случайным образом или по формуле, то полученные значения элементов массива вывести на экран)
- Записать алгоритм решения поставленной задачи
- Вывести результат на экран.