Задачи занятия: Сформировать навыки поиска поиск минимума и максимума; Закрепить навыки работы с одномерными массивами

Вид материалаПрактическая работа

Содержание


Педагогические технологии
Ход занятия
Самый распространенный ответ
1) исправить программу так, чтобы найти минимальный элемент массива. 2)
Домашнее задание
Пояснение к сказке
Подобный материал:
Автор: Клещунова Марина Анатольевна

Образовательное учреждение: МОУ «Зональненская СОШ» Томского района.

п. Зональная станция

Предмет: Информатика.

Класс: 10


Тема занятия: Базовый алгоритм нахождения максимального (минимального) элемента массива.


Необходимое оборудование и материалы для занятия: компьютер, программная среда Turbo-Pascal 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

Скажите, мы увидим результат работы программы на экране монитора?

Предполагаемый ответ: нет.

Почему?

Предполагаемый ответ: Потому, что мы не вывели значение переменной 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
writeln(‘max=’,max);

readkey

end.


Ребята скажите, данную программу можно использовать только для нахождения монеты наибольшего номинала?


Предполагаемый ответ: нет.


Приведите примеры, где можно в нашей жизни использовать данный алгоритм?


Наиболее часто приводимые примеры:
  1. Данную программу можно использовать для определения победителя соревнований (кто набрал наибольшее количество очков);
  2. Данную программу можно использовать для нахождения не только максимального, но и минимального значения элемента массива.
  3. Данную программу можно использовать для определения максимальной или минимальной температуры окружающей среды за определенный период времени и т.д.


Вывод: Таким образом, данный алгоритм можно использовать для решения не только одной задачи, но и целого ряда однотипных задач с разными входными значениями.


Вопрос ученикам: Скажите, как называется это свойство алгоритма?


Предполагаемый ответ: массовость.


Вопрос ученикам: Что нужно изменить в программе, чтобы она работала для любой размерности массива?


Предполагаемый ответ: Ввести n с клавиатуры и заменить 1800 на n. Второй способ задать n в разделе описания констант.


А теперь наберите и отладьте данную программу на компьютере для n элементов массива, а затем модифицируйте данный алгоритм, выполнив следующее задание:

1) исправить программу так, чтобы найти минимальный элемент массива.

2) дописать программу, чтобы запоминался порядковый номер минимального элемента массива.


Домашнее задание: придумайте задачу, для решения которой подходит данный алгоритм нахождения минимального (максимального элемента массива).


Литература:
  1. Н.Е. Тимошевская, Е.А. Перышкина «Основы алгоритмизации и программирования на языке Pascal». Справочник. Учебное пособие. Томск 2005. - 135с.
  2. Тимошевская, Н. Е., Перышкина, Е. А. Основы алгоритмизации и программирование на языке Pascal. Рабочая тетрадь: Учеб. пособие. — Томск, 2005. — 116 с.

Пособия рекомендованы Российской академией образования к использованию в образовательных учреждениях, реализующих образовательные программы общего образования и допущены ДОО Томской области.


Пояснение к сказке:

Сказка составлена по мотивам старинной итальянской сказки «Храбрый мельник».

Сказку «Храбрый мельник» я читала очень давно, еще в детстве, книга была библиотечная, поэтому автора сборника сказок восстановить не представляется возможным. Сказка была очень длинная со многими подробностями, и в этой сказке проблема была поставлена перед мельником другая – нужно было разделить монеты пополам, а количество монет было нечетным. Мельник для решения проблемы разрубил монету пополам.

При прохождении темы нахождения максимального (минимального) элемента массива мне пришла в голову мысль, а что если переделать сказку так, чтобы герою пришлось искать монету максимального номинала. А так как в русских сказках мельники всегда состоятельные люди, а герой был беден, то я изменила героя сказки на кузнеца.