Уроки 44–47. Программирование одномерных массивов целых чисел
Планируемые образовательные результаты:
предметные – представления о понятиях «одномерный массив», «значение элемента массива»,
«индекс элемента массива»; умение исполнять готовые и записывать на языке
программирования простые циклические алгоритмы обработки одномерного массива
чисел (суммирование всех элементов массива; суммирование элементов массива с
определѐнными индексами; суммирование элементов массива, с заданными
свойствами; определение количества элементов массива с заданными свойствами;
поиск наибольшего/ наименьшего элементов массива и др.);
метапредметные – умение самостоятельно планировать пути
достижения целей; умение соотносить свои действия с
планируемыми результатами, осуществлять контроль своей
деятельности, определять способы действий в рамках
предложенных условий, корректировать свои действия в
соответствии с изменяющейся ситуацией; умение оценивать
правильность выполнения учебной задачи;
личностные – алгоритмическое мышление, необходимое для
профессиональной деятельности в современном обществе;
представление о программировании как сфере возможной
профессиональной деятельности.
Решаемые учебные задачи:
1) напомнить сущность понятия массив, одномерный массив;
2) рассмотреть правила описания одномерных целочисленных массивов в среде программирования Паскаль;
3) рассмотреть несколько способов заполнения массивов;
4) рассмотреть возможности вывода массивов;
5) рассмотреть примеры и получить опыт решения типовых задач по обработке массивов (суммирование, поиск, наименьшего / наибольшего значения, подсчет количества элементов с некоторым свойством);
6) познакомиться с сущностью процесса сортировки массива.
7) сформировать умение записывать на языке программирования короткие алгоритмы обработки одномерных массивов.
Основные понятия, рассматриваемые на уроках:
![]()
массив;
описание массива;
заполнение массива;
![]()
вывод массива;
![]()
обработка массива;
последовательный поиск;
![]()
сортировка.
Используемые на уроке средства ИКТ:
персональный компьютер (ПК) учителя, мультимедийный
проектор, экран;
ПК учащихся.
Электронные образовательные ресурсы
презентация
«Одномерные массивы целых чисел» из электронного приложения к учебнику.
Особенности изложения содержания темы урока
Все четыре урока – уроки-практикумы. Они обеспечены большим количеством задач в учебнике и в рабочей тетради. Выбор тех или иных задач для выполнения на уроке и дома остаѐтся за учителем.
На последнем уроке можно провести небольшую проверочную работу (на 15 мин). Работа может быть построена на основании задач 7, 8, 9 (стр. 223). Задание 9 имеет повышенный уровень сложности.
Задание № 10 имеет высокий уровень сложности. Оно может быть предложено для выполнения дома наиболее сильным ученикам.
Ответы и решения к заданиям в РТ.
№ 201.
a)
|
i |
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
|
a[i] |
|
1 |
1 |
1 |
1 |
1 |
1 |
1 |
|
|
б) |
|
|
|
|
|
|
|
|
i |
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
|
a[i] |
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
|
|
в) |
|
|
|
|
|
|
|
|
i |
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
|
a[i] |
|
-3 |
0 |
5 |
12 |
21 |
32 |
45 |
|
|
г) |
|
|
|
|
|
|
|
|
i |
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
|
a[i] |
|
3 |
4 |
-1 |
5 |
0 |
10 |
-12 |
|
|
д) |
|
|
|
|
|
|
|
|
i |
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
|
a[i] |
|
0 |
1 |
0 |
2 |
0 |
3 |
0 |
№ 202. В номере опечатка. Нужно очистить ячейки второй строки, или добавить ниже еще одну строку.
a)
|
i |
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
|
a[i] |
|
2 |
-1 |
0 |
8 |
-5 |
10 |
4 |
-3 |
|
b[i] |
|
7 |
4 |
5 |
13 |
0 |
15 |
9 |
2 |
|
|
б) |
|
|
|
|
|
|
|
|
|
i |
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
|
a[i] |
|
2 |
-1 |
0 |
8 |
-5 |
10 |
4 |
-3 |
|
b[i] |
|
4 |
-2 |
0 |
16 |
-10 |
20 |
8 |
-6 |
№ 203.
a)
|
i |
1 |
|
2 |
|
|
3 |
|
|
|
4 |
|
|
5 |
|
|
6 |
|
|||||
|
a[i] |
1 |
|
7 |
|
|
3 |
|
|
|
6 |
|
|
0 |
|
|
10 |
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
s |
|
i |
|
|
|
sr |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
0 |
|
|
- |
|
|
|
- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
1 |
|
|
|
- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
|
|
2 |
|
|
|
- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
11 |
|
|
3 |
|
|
|
- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
17 |
|
|
4 |
|
|
|
- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
17 |
|
|
5 |
|
|
|
- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
27 |
|
|
6 |
|
|
|
- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4.5 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
б) Опечатки. Вместо s:=s+1 и writeln (‘s=’, s) надо |
k:=k+1 и writeln |
|||||||||||||||||||||
|
(‘k=’, k) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
i |
|
1 |
|
2 |
|
|
3 |
|
4 |
|
|
5 |
|
6 |
|
7 |
|
|||||
|
a[i] |
|
3 |
|
6 |
|
|
9 |
|
12 |
|
|
15 |
|
18 |
|
21 |
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
k |
|
i |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
0 |
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
|
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
|
|
3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
|
5 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
|
|
6 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4 |
|
|
7 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
в) Опечатки. Второй раз вместо n:=0 |
надо |
|
k:=0. После последнего |
|||||||||||||||||||
|
ветвления надо end; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
i |
|
1 |
|
2 |
|
|
3 |
|
4 |
|
|
5 |
|
6 |
|
7 |
|
|||||
|
a[i] |
|
-1 |
|
7 |
|
|
-3 |
|
-6 |
|
|
0 |
|
1 |
|
2 |
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
i |
m |
|
|
|
n |
|
k |
|
|
|
|
|
- |
|
0 |
|
|
0 |
0 |
|
|
|
||
|
1 |
|
|
|
|
1 |
|
|
|
|
|
|
|
2 |
|
1 |
|
|
|
|
|
|
|
|
|
|
3 |
|
|
|
|
2 |
|
|
|
|
|
|
|
4 |
|
|
|
|
3 |
|
|
|
|
|
|
|
5 |
|
|
|
|
|
|
1 |
|
|
|
|
|
6 |
|
2 |
|
|
|
|
|
|
|
|
|
|
г) |
|
|
|
|
|
|
|
|
|
|
|
|
i |
|
1 |
2 |
|
3 |
|
4 |
|
5 |
6 |
|
|
a[i] |
|
1 |
-7 |
|
3 |
|
6 |
|
0 |
-10 |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
i |
d |
|
|
m |
|
|
|
|
|
||
|
|
|
1 |
|
|
1 |
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
3 |
|
3 |
|
|
3 |
|
|
|
|
|
|
|
4 |
|
4 |
|
|
6 |
|
|
|
|
|
|
|
5 |
|
|
|
|
|
|
|
|
|
|
|
|
6 |
|
|
|
|
|
|
|
|
|
|
|
№ 204. Опечатка в блок-схеме: z :=0. Уточнения в шапке таблицы переменных.
program n_204; var i, y, z: integer;
const a: array [1..10] of integer = (-5, 3, 1, -4, -3, 2, 5, -1, -7, 4); begin
y :=0; z :=0;
for i :=1 to 10 do
if a[i] > 0 then z := z + a [i] else y := y+ a[i]; writeln ('y =', y,' ', 'z =', z)
end.
|
i |
|
1 |
|
2 |
3 |
4 |
5 |
|
6 |
7 |
8 |
9 |
10 |
|||
|
a[i] |
|
-5 |
|
3 |
1 |
-4 |
-3 |
|
2 |
5 |
-1 |
-7 |
4 |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
i |
|
z |
|
|
y |
|
|
a[i]>0 |
|
|
|
|
|
||
|
|
|
|
|
0 |
|
|
0 |
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
-5 |
|
|
|
нет |
|
|
|
|
|
|
|
2 |
|
|
3 |
|
|
|
|
|
|
да |
|
|
|
|
|
|
|
3 |
|
|
4 |
|
|
|
|
|
|
да |
|
|
|
|
|
|
|
4 |
|
|
|
|
|
-9 |
|
|
|
нет |
|
|
|
|
|
|
|
5 |
|
|
|
|
|
-12 |
|
|
|
нет |
|
|
|
|
|
|
|
6 |
|
|
6 |
|
|
|
|
|
|
да |
|
|
|
|
|
|
7 |
11 |
|
да |
|
8 |
|
-13 |
нет |
|
9 |
|
-20 |
нет |
|
10 |
15 |
|
да |
№ 205. program n_205;
var i, k, n, s1, s2, s3: integer;
m: array [1..30] of integer; begin
s1:=0; s2:=0; s3:=0; for i :=1 to 10 do begin
readln (m[i]); s1:= s1+m[i]; end;
for i :=11 to 20 do begin
readln (m[i]); s2:= s2+m[i];
end;
for i :=21 to 30 do begin
readln (m[i]); s3:= s3+m[i];
end;
k:= s1; n:=1; if k < s2 then begin
k := s2; n:=2; end;
if k < s3 then begin
k := s3; n:=3; end;
writeln (‘Самый большой путь пройден в декаду:’, n) end.
Начало
Список данных
![]()
![]()
![]()
m (1:30), s1,s2, s3, k, n, i - цел
s1:=0; s2:=0; s3:=0

i = 1, 10
m[i]
s1:=s1+ m[i]

i = 11, 20
m[i]
s1:=s1+ m[i]

i = 21, 30
m[i]
|
s1:=s1+ m[i] |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
k:= s1; n:= 1 |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
k < s2 |
Да |
|
||||
|
|
|
|
|
|||
|
Нет |
|
|
|
|
|
|
|
|
k :=s2; n :=2 |
|
||||
|
|
|
|
|
|
|
|
|
k < s3 |
Да |
|
||||
|
|
|
|
|
|||
|
|
|
|
|
|
||
|
Нет |
|
|
k :=s3; n :=2 |
|
|
|
|
|
|
|
|
|
|
|
n
Конец
№ 206. Ответ: 90.
№ 207. Ответ: 3 – количество дней с температурой выше 14 градусов.
№ 208. Исходим из того, что ограничения, введѐнные на исходные данные, не требуют проверок. В противном случае в постановке задачи должно быть указано, что делать в случае ввода «недозволенных» данных – повторять ввод, прерывать программу и т.п.
program n_208; var
x: integer; // Исходные данные
k: integer; // Результат begin
k := 0;
writeln ('Введите целое x>>'); readln (x);
while x>0 do
if (a mod 3 =0) and (a mod 2 =0) then k:=k+1; writeln ('Количество чѐтных чисел, кратных 3 =', k)
end.
Задания в тексе параграфа.
1. Программа, в которой осуществляется: заполнение случайным образом целочисленного массива a, состоящего из 10 элементов, значения которых изменяются в диапазоне от 0 до 99; вывод массива а на экран (стр. 216).
program n_1_216;
var
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 writeln (‘a[’, i, ‘]=’, a[i] )
end.
2. Программа формирования массива дополнена блоком обработки (вычисления суммы) элементов массива и выводом результатов суммирования на экран (с. 217).
program n_2_217;
var
i, s: 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
writeln ('a[', i, ']=', a[i]);
s := 0;
for i :=1 to 10 do
s := s + a[i];
writeln ('s=', s)
end.
3. Программа формирования массива дополнена блоком обработки) элементов массива (поиском элемента массива, имеющего наибольшее значение) и выводом этого элемента на экран (с. 218).
program n_3_218; var
i, imax: 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 writeln ('a[', i, ']=', a[i]);
imax := 1;
for i := 2 to 10 do
if a[i] > a[imax] then imax := i;
writeln ('Наибольшее значение элементов массива', a[imax]) end.
Если в массиве несколько элементов, имеющих наибольшее значение,
то в представленной выше программе определяется номер первого из таких элементов. Если нужно найти номер последнего из таких элементов, то условный оператор следует записать так:
if a[i] >= a[imax] then imax := i
4. Программа поиска минимального значения элементов массива. program n_4_218;
var
i, imin: 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 writeln ('a[', i, ']=', a[i]);
imin := 1;
for i := 2 to 10 do
if a[i] < a[imin] then imin := i;
writeln ('Наименьшее значение элементов массива‘, a[imin])
end.
5. Программа проверки наличия в массиве элемента с заданным значением.
program n_5_218;
var
i, n, x: 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 writeln ('a[', i, ']=', a[i]);
writeln ('x='); readln (x); n := 0;
for i := 1 to 10 do
if a[i] = x then n := i; if n = 0
then writeln ('Элемента со значением, равным заданному, в
массиве нет’)
else writeln ('Индекс элемента, равного заданному, ’, n)
end.
6. Просмотр массива прекращается после нахождения первого из элементов с заданным свойством.
program n_6_219;
var i: integer;
const a: array [1..10] of integer = (1, 55, 50, 120, 50, 17, 4, -50, 80, 50); begin
i := 0;
repeat
i := i + 1;
until (a[i]=50) or (i=10);
if a[i] = 50
then writeln ('Индекс первого элемента, равного заданному, ', i)
else writeln ('Элемента со значением, равным заданному, в массиве
нет')
end.
7. Количество элементов, больших 50. В массиве из программы 6 –
это 3.
program n_7_218;
var i, k: integer;
const a: array [1..10] of integer = (1, 55, 50, 120, 50, 17, 4, -50, 80, 50); begin
k := 0;
for i := 1 to 10 do
if a[i]>50 then k := k+1;
writeln ('k=', k)
end.
8. Сумма элементов, больших 50, но меньших 60. В массиве из программы 6 – это 55.
program n_8_218; var i, s: integer;
const a: array [1..10] of integer = (1, 55, 50, 120, 50, 17, 4, -50, 80, 50); begin
s := 0;
for i := 1 to 10 do
if (a[i]>50) and (a[i]<60) then s := s+a[i]; writeln ('s=', s)
end.
8. Программа сортировки массива из десяти случайных целых чисел. program n_9_221;
var
i, j, imax, x: integer;
a: array [1..10] of integer;
begin randomize;
for i :=1 to 10 do a[i]:= random(100);
writeln ('Исходный массив'); for i :=1 to 10 do
writeln ('a[', i, ']=', a[i]); for i := 1 to 9 do
begin imax := i;
for j := i+1 to 10 do
if a[j]>a[imax] then imax := j; x := a[i];
a[i] := a[imax]; a[imax] := x
end;
writeln ('Отсортированный по убыванию массив'); for i :=1 to 10 do
writeln ('a[', i, ']=', a[i]);
end.
Ответы и решения к заданиям в учебнике (после параграфа)
№ 1. Нет.
№ 3. а) массив а, состоящих из 10 элементов, значениями которых являются произвольные целые числа, принадлежащие отрезку [-50; 50];
б) массив а, состоящих из 20 элементов, значениями которых являются целые числа, совпадающие с индексами элементов;
в) массив а, состоящих из 5 целочисленных элементов, значения которых вычисляются по заданной формуле.
№ 4.
program n_4_222;
var
a: array [1..30] of integer; // Исходные данные
i: integer; // Промежуточная величина
s: integer; // Результат
begin
randomize;
for i :=1 to 30 do
a[i]:= random(151)+50;
for i :=1 to 30 do
writeln ('a[', i, ']=', a[i]);
s := 0;
for i := 1 to 30 do
s := s + a[i];
writeln ('s=', s);
end.
№ 5.
program n_5_222;
var
a: array [1..50] of integer; // Исходные данные
i: integer; // Счетчик цикла
k: integer; // Результат
begin randomize;
for i :=1 to 50 do a[i]:= random(51)+150;
for i :=1 to 50 do writeln ('a[', i, ']=', a[i]);
k := 0;
for i := 1 to 50 do
if a[i]>=170 then k := k + 1; writeln ('k=', k)
end.
№ 6.
program n_6_222;
var
a: array [1..7] of integer; // Исходные данные
i, s: integer; // Промежуточные величины
st: real; // Результат
const b: array [1..7] of string = ('Понедельник', 'Вторник', 'Среда',
'Четверг', 'Пятница', 'Суббота', 'Воскресенье'); begin
writeln ('Введите температуру');
for i :=1 to 7 do
begin
writeln (b[i],'>>');
readln (a[i])
end;
s := 0;
for i :=1 to 7 do
s := s+a[i];
st := s/7;
writeln ('Средняя температура за неделю: ', st:4:2)
end.
№ 7. Задача решается в 2 шага: 1) определяется наибольшее значение элементов массива; 2) подсчитывается количество элементов массива, равных максимальному.
program n_7_223; var
a: array [1..10] of integer; // Исходные данные i, max: integer; // Промежуточные величины
k: integer; // Результат
begin
randomize;
for i :=1 to 10 do
a[i]:= random(5);
for i :=1 to 10 do
writeln ('a[', i, ']=', a[i]);
max := a[1];
for i := 2 to 10 do
if a[i] > max then max := a[i];
writeln ('max=', max);
k := 0;
for i := 1 to 10 do
if a[i] = max then k := k + 1;
writeln ('k=', k);
end.
№ 8.
program n_8_223;
var
a: array [1..20] of integer; // Исходные данные
i: integer; // Промежуточные величины k2, k3, k4, k5: integer; // Результат
begin
randomize;
for i :=1 to 20 do
a[i]:= random(4)+2;
for i :=1 to 20 do
writeln ('a[', i, ']=', a[i]);
k2:=0; k3:=0; k4:=0;
for i := 1 to 20 do
begin
if a[i] = 2 then k2:= k2+1;
if a[i] = 3 then k3:= k3+1;
if a[i] = 4 then k4:= k4+1;
end;
k5 := 20-(k2+k3+k4);
writeln ('k2=', k2);
writeln ('k3=', k3);
writeln ('k4=', k4);
writeln ('k5=', k5);
end.
№ 9.
program n_9_223;
var
a, b: array [1..10] of integer;
s: array [1..10] of real;
i: integer; max: real;
begin
randomize;
for i :=1 to 10 do
begin
a[i]:= random(10)+1;
b[i]:= random(10)+1;
s[i]:=a[i]*b[i]/2;
writeln ('a[', i, ']=', a[i]:6, ' b[', i, ']=', b[i]:6, ' s[', i, ']=', s[i]:6:2); end;
max := s[1];
for i := 2 to 10 do
if s[i] > max then max := s[i];
for i := 1 to 10 do
if s[i] = max then writeln ('i=', i, ' a=', a[i], ' b=', b[i], ' s=', s[i]); end.
№ 10. Площадь приведена в тыс. км2, население в тыс. чел. program n_10_223;
var
p: array [1..10] of real;
n: array [1..10] of string; i, j, imin: integer;
x: real;
r: string;
const
k: array [1..10] of real = (58100, 81200, 10300, 5190, 39100, 57200, 38500, 9800, 5060, 57800);
s: array [1..10] of real = (244.1, 357, 132,43.1,504.8,301.2,312.7, 92.0,
337, 551); begin
n[1]:= 'Великобритания'; n[2]:= 'Германия'; n[3]:= 'Греция'; n[4]:= 'Дания'; n[5]:= ' Испания ';
n[6]:= ' Италия '; n[7]:= ' Польша '; n[8]:= ' Португалия'; n[9]:= 'Финляндия'; n[10]:= 'Франция';
for i :=1 to 10 do p[i] := k[i]/s[i]; for i := 1 to 9 do begin
imin := i;
for j := i+1 to 10 do
if p[j]<p[imin] then imin := j; x := p[i];
p[i] := p[imin]; p[imin] := x;
r := n[i]; n[i]:= n[imin]; n[imin] := r;
end;
writeln ('Отсортированная информация'); for i :=1 to 10 do
writeln (n[i], ' - ', p[i]); end.
Домашнее задание. §4.7; задания – по усмотрению учителя.
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.