Конспект урока "Перестановка элементов в одномерном массиве"

Урок по теме «Перестановка элементов одномерного массива»
Тип урока: урок «открытия» нового знания.
Цели урока.
Деятельностная: формирование способности учащихся обрабатывать элементы массива.
Образовательная: расширение понятийной базы за счёт включения понятий перестановка
элементов, промежуточная переменная.
Этапы урока.
I.Мотивация к деятельности.
II.Актуализация знаний. Пробное действие.
III.Выявление места и причины затруднения.
IV.Построение проекта выхода из затруднения.
V.Реализация построенного проекта.
VI.Первичное закрепление
VII.Самостоятельная работа с самопроверкой по эталону
VIII.Включение в систему знаний и повторение.
IX.Рефлексия деятельности (итог урока)
Ход урока.
Не существует проблем,
Не содержащих в себе дар,
Предназначенный вам.
Вы ищите проблемы,
Потому что вам нужны их дары.
Ричард Бах.
I.
Сегодня мы продолжим разговор об одномерных массивах. Это третий урок,
посвященный массивам. Пока вы обладаете небольшим запасом знаний и умений по этой
теме. Думаю, стоит напомнить, как важно понять и запомнить типовые алгоритмы
обработки массивов. Потому что решение задач как пирамида из кубиков стоится из этих
алгоритмов.
Проверим задачу из домашнего задания. Постарайтесь выделить в программе
знакомые алгоритмы (на экране появляются слайды с частями программы).
Задать массив, состоящий из 25 целых чисел. Удвоить положительные
элементы массива, остальные оставить без изменения.
План построения программы.
1)описание переменных.
2)стандартный ввод-вывод исходного массива.
3)поиск и удвоение положительных элементов.
4)вывод обработанного массива в строку.
Var A:array[1..25] of integer;
i: integer;
begin
randomize;
For i:=1 to 25 do
Begin
a[i]:=-10+random(21);
write(a[i]:4);
end; writeln;
For i:=1 to 25 do
If a[i]>0 then a[i]:=2*a[i];
For i:=1 to 25 do
write(a[i]:4);
writeln;
end.
II.
Прежде чем, узнать что-то новое стоит повторить уже известное.
Фронтальный опрос. На экране слайды с заданиями.
1)Найдите ошибки при описании массива и правильный вариант:
а) Var A: array(1..100) of integer; б) Var A: array[1…100] of integer;
в) Var A: array[1..10] of readln; г) Var A: array[1..10] of integer;
2)Сколько элементов в массиве и каким способом задаются элементы массива?
Var A: array[1..100] of integer;
i:integer;
Begin
For i:=1 to 15 do
readln(A[i]);
3) Найдите ошибки при задании массива:
а) For i=1 to 15 do б) For i:=1 to 15 do;
readln(A[i]); readln(A[i]);
в)randomize; г)randomize;
For i:=1 to 15 do For i:=1 to 15 do
Begin Begin
a[i]:=-10+random[21]; a[i]:=-10+random(21);
write(a(i):4); write(a[i]:4);
end; writeln; end; writeln;
4)Зачем нужен каждый алгоритм (что делает с массивом)?
а) s:=0; б)k:=0
For i:=1 to 20 do For i:=1 to 15 do
s:=s+a[i]; if a[i]>0 then k:=k+1;
в) For i:=1 to 20 do
if a[i] mod 2 =0 then write(a[i]:4);
г)max:=a[1];
For i:=1 to 20 do
if a[i]>max then max:=a[i];
Вы обратили внимание, что если нужно просмотреть все элементы массива, то нужно
использовать цикл, работающий по номерам элементов.
Есть ли ситуации, когда при работе с элементами, цикл не нужен? (да, если в
задании рассматриваются не все, а отдельные элементы) Например, нужно сложить
1-й и 7-й элементы, или поменять их местами.
III.
Давайте придумаем алгоритм перестановки 2-х элементов, порядок следования элементов
не нарушается, перемещаются их значения.
Нужно поменять местами 2-й и 5-й элементы массива, состоящего из десяти целых чисел.
Был массив: 10, 30, -7, 15, 75, 16, -5, 0, 14, -10
Стал массив: 10, 75, -7, 15, 30, 16, -5, 0, 14, -10
Вроде всё просто, взять и переложить. Попробуем проинсценировать ситуацию (двое
учащихся исполняют роли элементов a[2] и a[5], которые хранят значения 30 и 75
соответственно).
Возникает проблема, учитывая, что переменная – это «ящик», который может хранить
только одно значение, просто переложить элементы не получается.
IV-V.
Вот и обозначилась тема и цель нашего урока. Как вы думаете, они звучат?
Тема урока «Перестановка элементов в одномерном массиве».
Цель урока: научиться переставлять элементы в одномерном массиве.
Итак, возвращаясь к нашей инсценировке, что нужно сделать, чтобы не потерять
значение, хранящееся в a[2]? (его нужно запомнить, отложить куда-нибудь) Нам нужен
ещё один «ящик» - промежуточная переменная.
Проинсценируем ситуацию с тремя переменными. Обратите внимание, что процесс можно
проводить как слева направо так и с права налево (после инсценировки на экране
появляется схема процесса).
Попробуйте описать этот процесс в программе (сначала в тетради, потом на доске).
pr:=a[2];
a[2]:=a[5];
a[5]=pr;
Запишем алгоритм в общем виде. Нужно переставить элементы a[i] и a[j]
pr:=a[i];
a[i]:=a[j];
a[j]=pr;
VI.
Что ж, пора написать программу решения задачи.
Нужно поменять местами 2-й и 5-й элементы массива, состоящего из десяти целых
чисел.
Но прежде давайте обсудим из каких «кубиков»-алгоритмов будет состоять программа.
1)описание переменных (не забыть про промежуточную переменную). Какой тип должен
быть у промежуточной переменной? (Как у элементов массива)
2)стандартный ввод-вывод массива.
3)перестановка элементов.
4)вывод элементов массива в строку.
После написания в тетради каждого из этапов, для самопроверки на экране появляется
соответствующий слайд. А затем и вся программа целиком.
Program z1;
Var A:array[1..10] of integer;
i,pr: integer;
begin
randomize;
For i:=1 to 10 do
Begin
a[i]:=-10+random(21);
write(a[i]:4);
end; writeln;
pr:=a[2];
a[2]:=a[5];
a[5]=pr;
For i:=1 to 10 do
write(a[i]:4);
writeln;
end.
VII-VIII.
Пришло время попробовать свои силы за компьютером. Вам предлагается две задачи.
Одна очень похожа на уже рассмотренную, вторая чуть сложнее. Вы можете выбрать одну
из задач по своим силам или решить обе. Там же задача для домашней работы. Помните,
что текст программы можно скопировать и добавлять или удалять нужные элементы. Вы
можете пользоваться тетрадями и запоминалками со стандартными алгоритмами,
полученными на предыдущих уроках.
Вариант 1.
1.Задать массив, состоящий из 15 целых чисел. Поменять местами 1-й и 7-й элементы
массива.
2. Задать массив, состоящий из N целых чисел. Поменять местами 1-й и последний
элементы массива.
Домашнее задание.
Повторить известные алгоритмы обработки массивов, выучить алгоритм
перестановки.
Задать массив, состоящий из 20 целых чисел. Поменять местами 3-й и максимальный
элементы массива.
Вариант 2.
1.Задать массив, состоящий из 12 целых чисел. Поменять местами 3-й и 6-й элементы
массива.
2. Задать массив, состоящий из N целых чисел. Поменять местами 2-й и последний
элементы массива.
Домашнее задание.
Задать массив, состоящий из 20 целых чисел. Поменять местами 3-й и максимальный
элементы массива.
IX.
Пора подводить итоги. Учащиеся сообщают, какие из задач решили. Нерешенные задачи
остаются на дом, есть время подумать и разобраться. Чему научились сегодня на уроке?
Что запомнилось? Мы столкнулись с проблемой. Придумали алгоритм её разрешения.
Применили его в программе. Возвращаясь к эпиграфу урока, можно сказать, что проблема
принесла нам дар, который будем использовать в дальнейшем. Изученное сегодня
поможет нам при сортировке массива. Но это уже тема другого урока.
Открытый урок в рамках школьного методического дня
«Системно-деятельностный подход как механизм реализации ФГОС нового поколения»
«Перестановка элементов одномерного
массива»
информатика и ИКТ
10 класс
Учитель: Воробьёва О.В.
МОУ «Средняя общеобразовательная школа №3»
2012-13 уч. год