Загрузил ainsleedistinct

Урок 7 - Цикл for. Функция range

реклама
Методические указания
Урок 7. Цикл for. Функция range().
Задачи урока:
●
●
Познакомиться с циклом for;
Познакомиться с функцией range();
Материалы, демонстрируемые на проекторе:
●
Презентация
Материалы, необходимые для урока
●
●
листы А4 с числами от 0 до 10 и с программой.
Скопированный padlet
План урока:
Этап
№
Время этапа (мин.)
1
Разминка
5 мин
2
Вспоминаем прошлый урок
10 мин
3
Объяснение темы “цикл for”
15 мин
4
Решение задач с использованием цикла for
15 мин
5
Перерыв
5 мин
6
Детальное изучение функции range()
30 мин
7
Рефлексия
15 мин
0. Подготовка к уроку
До начала урока преподавателю необходимо:
1) Просмотреть, как ученики справились с домашним
заданием
2) Зарегистрироваться на https://padlet.com/ (это быстро) и
создать ремейк опроса
https://padlet.com/romanbelykh/q79zefj4u33p
3) Прочитать методичку
4) Решить задачи из курса на Stepik: урок 7.1 и 7.2
1.
Разминка
(5 мин.)
Игра способствует сосредоточению, собранности, вниманию к происходящему, развивает умение
действовать группой. Проходит динамично, энергично. Игроки садятся по кругу, рассчитываются по
порядку и запоминают свои номера (цифры). Ведущий задает темп: два хлопка по коленям, два щелчка
пальцами. Все повторяют. Как только удается установить единый ритм, вводятся слова. Хлопнув по
коленкам первый раз, ведущий произносит свой номер, после первого щелчка пальцами - произносит
номер игрока, которому передает слово (например: <один, три>). Теперь этот игрок (под номером <3>),
не выходя из общего темпа, ведет игру и передает слово следующему (например: < три, шесть>).
Целесообразно в начале игры просто по очереди передавать слово, чтобы игроки запомнили темп и
правила игры, а потом делать это в разнобой, постепенно ускоряя темп.
2. Повторение пройденного материала.
(10 мин.)
Учитель:
Вариант 1: (если ребята разобрались с материалами на прошлом уроке) На прошлом уроке мы говорили
про три основных типа данных int, float, str. Тип данных int представляет собой целое число, тип данных
float - вещественное (дробное) число. Вещественные числа в информатике называются числами с
плавающей точкой.
Тип данных str представляет собой последовательность символов (строка текста). Для строкового типа
данных определены две удобные операции: операция сложения (сцепление, конкатенация) и операция
умножения на число (повторение).
Выпишем на доске семь математических операторов, существующих в Python для работы с числами.
(При работе с числами мы можем использовать уже привычные нам математические операторы: +, -, /, *,
а также 3 дополнительных: // (целочисленное деление), % (нахождение остатка) и ** возведение в
степень.)
А для работы со строками какие операторы применимы?
Учитель: Язык Python включает множество встроенных функций. На слайде вы видите список функций,
пройденных на прошлом уроке. Давайте попробуем быстро сказать, что делает каждая из них?
Для закрепления навыков использования этих функций решим устно задачу,.
Идея задачи: использовать функцию len() для определения
длины названий, функцию max() для поиска самого
длинного слова, функцию in для проверки на содержание
“Санкт”, и функцию str() для удобного вывода ответа одной
строкой.
Вариант 2: Если вам кажется, что учащиеся не разобрались или плохо разобрались в материале
прошлого урока, начните с презентации (скрытые слайды, начиная с 17) и возьмите часть заданий из
Варианта 1.
3. Цикл for
(15 мин.)
Учитель: Мы уже изучили:
●
ввод и вывод данных;
●
целочисленную и вещественную арифметику: тип int и float;
●
условный оператор (кстати, одна из важнейших концепций всех языков программирования, без
которой тяжело написать сколько-нибудь полезную программу);
●
строковый тип данных.
Пришло время поговорить об еще одной концепции, присущей всем языкам программирования - это
циклы.
В языке Python существует два типа циклов:
●
счетные циклы, когда мы заранее знаем количество повторений;
●
условные циклы, когда мы заранее не знаем количество повторений, но знаем условие, согласно
которому нужно что-либо повторять.
Счетный цикл в языке Python (как и в большинстве других языков программирования) называется for.
Представьте, что надо написать программу, выводящую на экран слово “Привет” один раз. Очевидно,
команда print(), запросто справится с поставленной задачей. А что если слово “Привет” нужно вывести 5
раз? Можно написать 5 строк кода. А если 10 раз? Неужели писать 10 одинаковых строк кода? Это
достаточно частый сценарий: повторить что-либо определенное количество раз, поэтому можно
предположить, что в языках программирования должны быть средства, позволяющие решить
поставленную задачу проще и быстрее. И действительно, они есть, и называются циклами.
Рассмотрим код, использующий цикл for:
for i in range(10):
print('Привет')
Обратите внимание, программа состоит из 2 строчек кода вместо 10.
Общая структура цикла for в Python имеет вид:
for название переменной in range(количество повторений):
блок кода
Мы пишем ключевое слово for, затем название переменной цикла (об этом чуть позже), далее слова in
range() и в скобках указываем количество повторений. Далее следует обязательный символ двоеточия, а
затем на новой строке, с отступом - блок кода, который и будет повторяться заданное количество раз.
Обратите внимание: двоеточие (:) в конце строки сообщает Python, что дальше находится повторяющийся
блок команд - тело цикла.
Похожую структуру имеет и уже знакомый условный оператор if.
if условие:
блок кода
Однократное выполнение тела цикла (прогон) называется итерацией цикла;
Учитель: На предыдущих уроках мы писали программы, обрабатывающие числа. С помощью цикла for
можно писать код для считывания и обработки любого количества чисел.
Эта программа, используя цикл for, считывает 5 чисел и выводит их квадраты с поясняющим текстом:
for i in range(5):
num = int(input())
print('Квадрат вашего числа равен:', num*num)
print('Цикл завершен')
Тело цикла состоит из двух строк кода, они выделены отступом. Не забывайте, что в Python отступы имеют
большое значение!
Четвертая строка кода, печатающая текст “Цикл завершен” не содержит отступа, так как не является
частью цикла.
Учитель: Давайте закрепим материал. Что будет выведено на экран в результате выполнения
следующего кода?
print('A')
print('B')
for i in range(5):
print('C')
print('D')
print('E')
Если ученики испытывают трудности, учитель наводящими вопросами помогает прийти к правильному
ответу. Затем подробно комментирует код, отмечая , что его первые две строки находятся вне цикла, и
будут выполнены единожды, до цикла.
Тело цикла состоит из двух строк кода, выводящих по одному символу C, D, и повторяется 5 раз. А после
цикла есть еще одна команда — печати символа E. Таким образом, результатом выполнения такой
программы будет:
A
B
C
D
C
D
C
D
C
D
C
D
E
Учитель: Программа может содержать сколько угодно циклов. Как вы думаете, что будет выведено на
экран в результате выполнения следующей программы?
print('A')
print('B')
for i in range(5):
print('C')
for i in range(5):
print('D')
print('E')
После получения правильного ответа учитель комментирует код: программа содержит два цикла, первый
печатает 5 раз символ С, второй — 5 раз символ D. Три строки программы не входят в тела циклов.
Учитель: Итак:
1. однократное выполнение тела цикла (прогон) называется итерацией цикла;
2. слово for пишется маленькими буквами;
3. первая строка цикла заканчивается двоеточием (:);
4. тело цикла выделяют отступом.
Учитель: Посмотрим еще раз на структуру цикла for в Python:
for название переменной in range(количество повторений):
блок кода
Для чего нужна и как работает переменная цикла? Рассмотрим следующий программный код:
for i in range(10):
print(i)
В теле цикла указана команда print(), печатающая переменную цикла i. Что увидим на экране?
Учитель: Когда цикл начинает работу Python устанавливает значение переменной цикла i = 0. Каждая
итерация цикла Python увеличивает значение переменной на 1. Таким образом, результатом выполнения
такого кода будет:
0
1
2
3
4
5
6
7
8
9
Учитель: Обратите внимание, первое значение 0, а не единица! И последнее число на единицу меньше
указанного в скобках. Это особенность языка Python, о которой важно всегда помнить.
Так решили разработчики языка Python. Существуют языки в которых начальное значение начинается с
1, это не принципиально, просто нужно помнить. После решения некоторого количества задач, это станет
настолько привычно, что не будет вызывать никаких трудностей.
Учитель: Если все же нам нужно начать с 1, то можно сделать так:
for i in range(10):
print(i + 1, '-- Привет')
В теле цикла печатаем i+1, вместо i, а также слово Привет. Результатом выполнения такой программы
будет:
1 -- Привет
2 -- Привет
3 -- Привет
4 -- Привет
5 -- Привет
6 -- Привет
7 -- Привет
8 -- Привет
9 -- Привет
10 -- Привет
Учитель: Поговорим об именовании переменных цикла. Имя переменной должно быть “говорящим”.
Например, если она обозначает “имя человека”, то может называться … (отвечают ученики, правильный
ответ — name [нэйм] англ. имя). Если “число”, то переменная может называться … (отвечают ученики,
правильный ответ - num или number [нáмбэ] англ. число).
Для переменных цикла принято использовать буквы i, j, k. (почему именно эти буквы можно прочесть в
материалах курса). Однако это не значит, что мы не можем давать более говорящие названия
переменным цикла. Ничто не мешает назвать переменную цикла num. Учитель демонстрирует слайд и
говорит, что результатом выполнения обеих программ будет одно и тоже.
Иногда переменная цикла совсем не используется внутри тела цикла. Например, следующая программа
выводит 5 раз текст:
for i in range(5):
print('Python - awesome!')
В теле цикла нет упоминания переменной i, она не используется. Так зачем ей давать название? В
Python можно написать так:
for _ in range(5):
print('Python - awesome!')
Мы заменили имя переменной на символ нижнего подчеркивания, тем самым сказав: “нам не нужна
переменная цикла внутри тела цикла”. Результатом выполнения такого кода будет:
Python - awesome!
Python - awesome!
Python - awesome!
Python - awesome!
Python - awesome!
И еще раз: помните, что правая граница в цикле for, всегда невключительна, а счет начинается с ноля.
Забывают об этом часто, это очень распространенная ошибка.
Решение задач:
1. Python awesome;
2. Звездный прямоугольник;
3. Повторяй за мной 2;
4. Звездный треугольник.
4. Детальное изучение функции range()
(30 мин.)
Учитель: Давайте встанем в шеренгу перед доской/монитором (для маленьких групп - в круг). Мы будем
вместе читать новую информацию о параметрах функции range(), и выполнять программы, написанные
на слайдах.
Первого исполняющего учитель назначает в начале каждого примера произвольно.
На первом слайде - вспомним, как работает функция
range() в самом простом варианте.
Давайте выполним цикл из примера по очереди, в
каждой итерации меняя исполнителя. Начинаем с
(имя ученика), каждый говорит “Привет”, и называет
значение переменной i.
А теперь кое-что новенькое. Читаем вместе.
Итак, если нужно начать перебор чисел не с нуля, то
в функцию range() передается два параметра, через
запятую: начало и конец последовательности.
Отработаем? Давайте исполним этот цикл, первым
будет (...)
Дальше усложняем! Если нужно в ряду чисел делать
пропуски, идти с шагом, отличающимся от единицы,
то
можно
вызвать
функцию
range()
с
тремя
параметрами, где третьим указан как раз размер
шага.
Может ли параметр начала последовательности быть
больше
параметра
конца?
Да,
если
шаг
отрицательный. Давайте пробежимся по этому циклу,
и поймем, как работает отрицательный шаг.
А следующий слайд - будем делать на скорость! Я
буду говорить, какое действие выполняем (показать
на пальцах правильное число, хлопнуть, назвать номер, подпрыгнуть нужное число раз, …), и мы быстро
пробежимся по всем примерам из таблицы, а потом проверим себя на следующем слайде.
Далее ученики решают задачи из курса:
1. Последовательность чисел 1;
2. Последовательность чисел 4;
3. Таблица умножения.
5. Рефлексия
Продолжите предложения.
(Ребята могут заполнить Padlet, скопированный с https://padlet.com/romanbelykh/q79zefj4u33p)
Сегодня на уроке я:
выполнил…
научился…
не понял и хочу разобраться…
После заполнения формы, обсуждение:
Расскажите, что поняли о цикле for, зачем он нужен и что важно о нем запомнить.
Простыми или сложными показались задачи? Что было легко/ тяжело? Какие вопросы
возникли?
Домашняя работа
В конце урока можно подвести итоги и дать домашнюю работу:
1. Ученики могут пройти уроки 7.1 и 7.2 из курса:
a. прочитать теоретические конспекты
b. решить тестовые задачи и задачи на программирование
Учителю стоит сказать, что циклы это очень важная тема при изучении любого языка
программирования, и желательно выполнить все задачи, чтобы чувствовать себя комфортнее на
следующих уроках.
Дополнительно
1. Если есть время, ученики могут продолжать решать задачи, тогда их меньше останется на
домашнюю работу.
Скачать