Методика преподавания темы «Программирование массивов в основной школе» ( из опыта работы )
Вирченко Н. И.
Учитель ГБОУ ЛНР
«ВУВК №2 «Берегиня»
Рабочая программа
Алгоритмы и программирование
Разработка алгоритмов и программ
Разбиение задачи на подзадачи. Составление алгоритмов и программ с использованием ветвлений, циклов и вспомогательных алгоритмов для управления исполнителем Робот или другими исполнителями, такими как Черепашка, Чертёжник и другими.
Табличные величины (массивы). Одномерные массивы. Составление и отладка программ, реализующих типовые алгоритмы обработки одномерных числовых массивов, на одном из языков программирования (Python, C++, Паскаль, Java, C#, Школьный Алгоритмический Язык): заполнение числового массива случайными числами, в соответствии с формулой или путём ввода чисел, нахождение суммы элементов массива, линейный поиск заданного значения в массиве, подсчёт элементов массива, удовлетворяющих заданному условию, нахождение минимального (максимального) элемента массива. Сортировка массива.
Обработка потока данных: вычисление количества, суммы, среднего арифметического, минимального и максимального значения элементов последовательности, удовлетворяющих заданному условию
Календарно-тематическое планирование
16
Одномерные массивы
17
1
Типовые алгоритмы обработки массивов
18
Сортировка массива
1
19
20
1
Обработка потока данных.Пр.р №9 «Составление и отладка программ, реализующих типовые алгоритмы обработки одномерных числовых массивов»
Обобщение и систематизация знаний. Контрольная работа по теме «Разработка алгоритмов и программ»
25.12
1
1
08.01
15.01
1
1
22.01
29.01
Учебник
Языки программирования
Объявление массива
Даем определение
Набор однотипных элементов, которые имеют свой номер и общее имя.
Внимание на первый индекс первого элемента
Примеры только числа целые в ячейках, но можно и вещественные числа, символы, строки и набор чисел
Ввод массива
Вывод массива
- В столбец
- В строку (в начале не показываем, желательно чтобы ученики сказали сами)
По учебнику так:
- С клавиатуры
- По формуле
- Случайным образом
Практическую часть начинаем отрабатывать случайным образом
Что надо добавить, чтобы вывод был в строку? Затем увеличьте количество элементов
Вычисление суммы
Что добавить, чтобы суммировались только четные (нечетные элементы, кратные 3 ,…), среднее арифметическое
Можно задать в домашнее задание
Набранный на уроке программный код желательно сохранить для следующей работы
Типовые алгоритмы обработки
- Последовательный поиск элемента
- Поиск максимального (минимального) элемента
- Реверс массива
- Сдвиг элементов массива
=a[i] then M:=a[i]; Write (M); M=a[0] For i in range(1,N): if M=a[i]: M=a[i] Что добавить, чтобы выдал и номер максимального элемента Измените на поиск минимального " width="640"
Поиск максимального
M=a[1];
For i:=2 to n do
If M=a[i] then M:=a[i];
Write (M);
M=a[0]
For i in range(1,N):
if M=a[i]:
M=a[i]
Что добавить, чтобы выдал и номер максимального элемента
Измените на поиск минимального
3 : k += 1 print (k) k = 0 for i:=1 to N do if A[i] 3 : k :=k+ 1; write(k) Варианты условий: Измените чтобы счет был четных элементов и др., можно добавить и вычисление суммы if A[i] % 10 == 6 : k += 1 if( A[i] = 10 and A[i] 100 ): k += 1 if (A[i] % 10 == 6 and A[i] % 3 == 0 ): k += 1 " width="640"
Подсчёт элементов
k = 0
for i in range (N):
if A[i] 3 : k += 1
print (k)
k = 0
for i:=1 to N do
if A[i] 3 : k :=k+ 1;
write(k)
Варианты условий:
Измените чтобы счет был четных элементов и др., можно добавить и вычисление суммы
if A[i] % 10 == 6 : k += 1
if( A[i] = 10 and
A[i] 100 ): k += 1
if (A[i] % 10 == 6 and
A[i] % 3 == 0 ): k += 1
Поиск элементов с заданным свойством
Значение можно ввести с клавиатуры или конкретно задать число
Что такое сортировка?
Сортировка – это расстановка элементов массива в заданном порядке.
… по возрастанию, убыванию, последней цифре, сумме делителей, по алфавиту, …
Алгоритмы:
- простые и понятные, но неэффективные для больших массивов
- простые и понятные, но неэффективные для больших массивов
- метод пузырька метод выбора (дается в учебнике) сложные, но эффективные «быстрая сортировка» ( QuickSort )
- метод пузырька метод выбора (дается в учебнике)
- метод пузырька
- метод выбора (дается в учебнике)
- сложные, но эффективные «быстрая сортировка» ( QuickSort )
- «быстрая сортировка» ( QuickSort )
Метод пузырька (сортировка обменами)
Идея: пузырек воздуха в стакане воды поднимается со дна вверх.
Для массивов – самый маленький («легкий» элемент перемещается вверх ( «всплывает» ).
1-й проход:
- сравниваем два соседних элемента; если они стоят «неправильно», меняем их местами
- за 1 проход по массиву один элемент (самый маленький) становится на свое место
4
5
1
2
3
4
5
2
1
3
4
1
4
5
4
1
5
5
2
2
2
1
3
3
3
Метод пузырька
2-й проход:
3-й проход:
4-й проход:
1
1
1
1
2
2
2
2
4
4
3
3
5
4
4
3
5
5
5
3
1
2
3
4
5
1
1
1
1
4
4
2
4
5
2
4
5
5
2
5
2
3
3
3
3
Можно дать объяснение на карточках
a[j+1]: a[j],a[j+1]=a[j+1],a[j] For i:=1 to n-1 do For j:=1 to n-i do If a[j]a[j+1] then begin c:=a[j]; a[j]:=a[j+1]; a[j+1]:=c end; Основная операция – перестановка элементов! " width="640"
Программа
for i in range(N-1):
for j in range(N-i):
if a[j]a[j+1]:
a[j],a[j+1]=a[j+1],a[j]
For i:=1 to n-1 do
For j:=1 to n-i do
If a[j]a[j+1]
then begin c:=a[j]; a[j]:=a[j+1]; a[j+1]:=c end;
Основная операция – перестановка элементов!
Сортировка выбором
R : разделение закончено! " width="640"
Быстрая сортировка
78
L
6
82
67
55
44
34
R
34
6
82
67
L
55
44
78
R
34
6
44
67
55
L
R
82
78
34
6
44
55
67
R
L
82
78
!
L R : разделение закончено!
= nEnd then Exit; L:= nStart; R:= nEnd; X:= A[(L+R) div 2]; while L R do begin { разделение } while A[L] X do L:= L + 1; while A[R] X do R:= R - 1; if L R then begin c:= A[L]; A[L]:= A[R]; A[R]:= c; L:= L+1; R:= R-1 end end; qSort(nStart, R); { рекурсивные вызовы } qSort(L, nEnd) end; " width="640"
procedure qSort(nStart, nEnd: integer); var L, R, c, X: integer; begin if nStart = nEnd then Exit; L:= nStart; R:= nEnd; X:= A[(L+R) div 2]; while L R do begin { разделение } while A[L] X do L:= L + 1; while A[R] X do R:= R - 1; if L R then begin c:= A[L]; A[L]:= A[R]; A[R]:= c; L:= L+1; R:= R-1 end end; qSort(nStart, R); { рекурсивные вызовы } qSort(L, nEnd) end;
20
Быстрая сортировка
Сортировка массива случайных значений :
N
метод пузырька
1000
метод выбора
0,24 с
5000
15000
быстрая
0,12 с
5,3 с
45 с
0,004 с
2,9 с
сортировка
0,024 с
34 с
0,068 с
Можно провести эксперимент
Практическая работа
«A»: Заполнить массив случайными числами и найти минимальный и максимальный элементы массива и их номера.
Пример :
Массив:
1 2 3 4 5
Минимальный элемент: A[1]=1
Максимальный элемент: A[5]=5
«C»: Введите массив с клавиатуры и найдите количество элементов, имеющих максимальное значение.
Пример :
Массив:
3 4 5 5 3 4 5
Максимальное значение 5
Количество элементов 3
Практическая работа
«A»: Напишите программу, в которой сортировка выполняется «методом камня» – самый «тяжёлый» элемент опускается в конец массива.
Контрольная работа по теме: «Массивы».
- Дан массив из 37 целых чисел. Элементы массива могут принимать целочисленные значение значения от -70 до 70. Составить программу вычисления суммы положительных элементов массива.
- Дан массив из 43 целых чисел. Элементы массива могут принимать целочисленные значение значения от -140 до 140. Определить количество нулевых элементов, стоящих на чётных местах.
- Дан массив из 75 целых чисел. Элементы массива могут принимать целочисленные значение значения от -55 до 55. Отрицательные элементы, индексы которых кратны 4, заменить числом 60.