Просмотр содержимого документа
«Массивы. Паскаль. 9 класс»
Массивы. Паскаль. 9 класс
Каратун О.В.
МАОУ «Зональненская СОШ» Томского района
Определение 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тип;
Количество элементов
Например:
Тип элементов
Имя массива
VarA:Array[1..10] ofInteger;
VarTem:Array[1..100] ofReal;
Описание массиваКонструкция
:array[мин знач. индекса..макс знач.индекса] of;
Var
А:array[1..17] ofinteger;
mas:array[1..20] ofinteger;
X:array[3..4] ofreal;
S1:array[1..3] ofchar;
Способы заполнения массива
1 способ . Ввод каждого значения с клавиатуры:
for i :=1 to 10 doread (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;
begin
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;
begin
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;
begin
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 .
Будет найден первый из элементов, удовлетворяющих условию.
Для подсчета вводится переменная, значение которой увеличивается на единицу каждый раз, когда найден нужный элемент.
program kolich ;
var k, i: integer;
a: array[1..10] of integer;
begin
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
60
21
53
58
14
28
50
10
51
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;
begin
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-х способов (если массив заполняется случайным образом или по формуле, то полученные значения элементов массива вывести на экран)