Автор: Образовательное учреждение: Предмет: Класс:

advertisement
Автор: Клещунова Марина Анатольевна
Образовательное учреждение: МОУ «Зональненская СОШ» Томского района.
п. Зональная станция
Предмет: Информатика.
Класс: 10
Тема занятия: Базовый алгоритм нахождения максимального (минимального) элемента массива.
Необходимое оборудование и материалы для занятия: компьютер, программная среда TurboPascal 7.0.
Время реализации занятия: 45 мин. (1 урок).
Задачи занятия:
1. Сформировать навыки поиска поиск минимума и максимума;
2. Закрепить навыки работы с одномерными массивами;
3. Сформировать навыки выполнения технологической цепочки разработки программ
средствами языка программирования Pascal;
4. Активизировать познавательный процесс, направленный на формирование у учащихся
навыков поиска собственного решения поставленной задачи.
Педагогические технологии: проблемная, информационные.
План занятия:
Блок урока
Организация начала урока. Рассказ
сказки.
Постановка проблемы
Поиск решения
Обобщение и выводы
Домашнее задание
Практическая работа на компьютере
Время реализации
3 мин
1 мин.
18 мин.
2 мин.
1 мин.
20 мин.
Ход занятия
Учитель: Ребята, сегодня начнем урок с того, что я расскажу вам сказку
В одном селе жил был храбрый кузнец. Он ничего не боялся, был справедливым и добрым
малым.
Недалеко от села находились развалины какого-то старого замка. По легенде, в этих
развалинах хранились несметные сокровища. Много смельчаков пыталось добыть эти сокровища,
но никто так и не вернулся живым с этих развалин.
Как-то раз у кузнеца сильно заболел отец, а денег на лечение не было. Решил кузнец добыть
денег в развалинах старого замка.
Собрал он с собой котомку с запасом еды и отправился в путь. К развалинам кузнец
подошел, когда уже стемнело. Там он нашел комнату, где был камин, развел огонь, сварил
похлебку и сел ужинать. Тут раздался страшный гром и на пороге появился еле живой дряхлый
старик. Кузнец подбежал к старику, скорее посадил его за стол поближе к огню, налил похлебки.
После ужина старик повеселел и говорит: «Спасибо тебе добрый человек. За то, что ты меня
обогрел и накормил, я тебя за это щедро награжу. Пойдем со мной».
Пришли они в подвал, и кузнец увидел в нем целую гору золотых монет. А старик ему
говорит: «Здесь 18000 монет разного номинала. Если ты к утру найдешь в этой куче монету
самого большого номинала, то возьмешь с собой столько золота, сколько сможешь унести. Если
же ты не успеешь этого сделать, то так и останешься в этом подвале навечно».
Кузнец подумал, почесал голову, и приступил к работе. К утру, он отыскал нужную монету,
взял награду и отправился домой, спасать своего больного отца.
Ребята, представьте себя на месте кузнеца, как бы вы искали эту монету?
Самый распространенный ответ:
Разложу монеты в кучки по возрастанию. Комментарий учителя: так найти можно, но очень
долго. А в подвале мало места и время ограничено. Подумайте еще.
Иногда, ученики сами находят правильный алгоритм, если этого не происходит, то учитель
задает наводящий вопрос:
1. Учитель берет в руку два разных предмета и спрашивает: «Какой предмет больше?».
Ученики отвечают. А как вы это определили? Сравнили. А если, я возьму еще один
предмет, какой из них будет больше? Сравним больший из двух с третьим и снова выберем
который больше.
2. А теперь давайте сформулируем данный алгоритм для любого количества предметов
(монета тоже предмет).
Учитель выслушивает формулировки обучающихся для каждого этапа и выбирает подходящую.
Словесная формулировка нахождения монеты наибольшего номинала:
1. Берем в одну руку первую монету;
2. Берем в другую руку - следующую монету;
3. Сравниваем монеты и оставляем в руке большую, а другую откладываем на новое место.
4. Повторяем предыдущие действия (п.2, п.3.), пока не закончатся все монеты.
5. В результате, в вашей руке останется монета наибольшего номинала.
Учитель: «Давайте, формализуем данный алгоритм. Скажите, с помощью какого составного типа
в языке программирования Turbo-Pascal мы можем представить в памяти компьютера наши
монеты?»
Предполагаемый ответ – массива.
А какая размерность массива?
Предполагаемый ответ – 18000.
Нам еще нужны какие-нибудь переменные?
Предполагаемый ответ – да, переменная цикла. Обозначим ее i. И переменная для хранения
максимального значения номинала монеты. Обозначим ее MAX.
Итак, в разделе описания переменных мы должны описать следующие переменные:
VAR
A:array[1..18000] of integer; {массив, который содержит номиналы монет}
I: integer; {параметр цикла}
MAX: integer; {переменная для хранения максимального значения}
Учитель: Скажите, какой способ заполнения массива наиболее подходит для этой задачи?
Предполагаемый ответ: массив удобнее всего заполнить случайными значениями.
Учитель: Предположим, что номинал монет находится в диапазоне от 1 до 100. Как мы его
запишем?
Предполагаемый ответ: random(100)+1;
Итак, в теле программы мы запишем:
BEGIN
For i:=1 to 18000 do
Begin
A[i]:=random(100)+1;
Write(a[i]:5);
End;
Теперь формализуем ранее записанный словесный алгоритм нахождения монеты наибольшего
номинала:
Как запишется на формальном языке каждый пункт данной формулировки?
Предполагаемый ответ:
1. Присвоить переменной max первый элемент массива;
2. Сравнить max со следующим элементом массива, если следующий элемент больше max, то max
присвоить значение этого элемента.
3. Пункт 2. Повторить n-1 раз. (начальное значение переменной цикла 2).
Итак, продиктуйте мне, пожалуйста, как я должна записать этот алгоритм на языке
программирования Turbo-Pascal.
(Ученики диктуют, учитель записывает, если возникает проблема, то она решается совместно
учителем и учениками).
В итоге получится следующий алгоритм нахождения максимального элемента массива:
max:=A[1];
For i:=2 to 18000 do
If max<a[i] then max:=a[i];
Скажите, мы увидим результат работы программы на экране монитора?
Предполагаемый ответ: нет.
Почему?
Предполагаемый ответ: Потому, что мы не вывели значение переменной max.
Как это сделать?
Предполагаемый ответ: writeln(‘max=’,max);
Таким образом, получилась программа:
Program xx;
Uses crt;
VAR
A:array[1..18000] of integer; {массив, который содержит номиналы монет}
I: integer; {параметр цикла}
max: integer; {переменная для хранения максимального значения}
BEGIN
For i:=1 to 18000 do
Begin
a[i]:=random(100)+1;
Write(a[i]:5);
End;
max:=a[1];
For i:=2 to 18000 do
If max<a[i] then max:=a[i];
writeln(‘max=’,max);
readkey
end.
Ребята скажите, данную программу можно использовать только для нахождения монеты
наибольшего номинала?
Предполагаемый ответ: нет.
Приведите примеры, где можно в нашей жизни использовать данный алгоритм?
Наиболее часто приводимые примеры:
1. Данную программу можно использовать для определения победителя соревнований (кто
набрал наибольшее количество очков);
2. Данную программу можно использовать для нахождения не только максимального, но и
минимального значения элемента массива.
3. Данную программу можно использовать для определения максимальной или минимальной
температуры окружающей среды за определенный период времени и т.д.
Вывод: Таким образом, данный алгоритм можно использовать для решения не только одной
задачи, но и целого ряда однотипных задач с разными входными значениями.
Вопрос ученикам: Скажите, как называется это свойство алгоритма?
Предполагаемый ответ: массовость.
Вопрос ученикам: Что нужно изменить в программе, чтобы она работала для любой размерности
массива?
Предполагаемый ответ: Ввести n с клавиатуры и заменить 1800 на n. Второй способ задать n в
разделе описания констант.
А теперь наберите и отладьте данную программу на компьютере для n элементов массива, а затем
модифицируйте данный алгоритм, выполнив следующее задание:
1) исправить программу так, чтобы найти минимальный элемент массива.
2) дописать программу, чтобы запоминался порядковый номер минимального элемента массива.
Домашнее задание: придумайте задачу, для решения которой подходит данный алгоритм
нахождения минимального (максимального элемента массива).
Литература:
1) Н.Е. Тимошевская, Е.А. Перышкина «Основы алгоритмизации и программирования на
языке Pascal». Справочник. Учебное пособие. Томск 2005. - 135с.
2) Тимошевская, Н. Е., Перышкина, Е. А. Основы алгоритмизации и программирование на
языке Pascal. Рабочая тетрадь: Учеб. пособие. — Томск, 2005. — 116 с.
Пособия рекомендованы Российской академией образования к использованию в
образовательных учреждениях, реализующих образовательные программы общего
образования и допущены ДОО Томской области.
Пояснение к сказке:
Сказка составлена по мотивам старинной итальянской сказки «Храбрый мельник».
Сказку «Храбрый мельник» я читала очень давно, еще в детстве, книга была библиотечная,
поэтому автора сборника сказок восстановить не представляется возможным. Сказка была очень
длинная со многими подробностями, и в этой сказке проблема была поставлена перед мельником
другая – нужно было разделить монеты пополам, а количество монет было нечетным. Мельник
для решения проблемы разрубил монету пополам.
При прохождении темы нахождения максимального (минимального) элемента массива мне
пришла в голову мысль, а что если переделать сказку так, чтобы герою пришлось искать монету
максимального номинала. А так как в русских сказках мельники всегда состоятельные люди, а
герой был беден, то я изменила героя сказки на кузнеца.
Download