Разработки уроков по теме «Программирование» с исполь-зованием финансовых задач
Решение финансовых задач с помощью программирования
Класс: 8 или 10 класс (базовый уровень в классах социально-экономического профиля)
Раздел программы: Начала программирования (язык Python)
Темы уроков:
Организация ввода и вывода (работа с целыми числами)
Программирование линейных алгоритмов (работа с вещественными числами)
Программирование разветвляющихся алгоритмов
Программирование циклических алгоритмов (цикл WHILE)
Программирование циклических алгоритмов (цикл FOR)
Планируемые результаты:
Метапредметные результаты:
целеполагание как постановка учебной задачи на основе соотнесения того, что уже известно и усвоено учащимся, и того, что еще неизвестно;
планирование – определение последовательности промежуточных целей с учетом конечного результата, составление плана и последовательности действий;
прогнозирование – предвосхищение результата и уровня усвоения, его временных характеристик;
контроль в форме сличения способа действия и его результата с заданным эталоном с целью обнаружения отклонений и отличий от эталона;
коррекция – внесение необходимых дополнений и корректив в план и способ действия в случае расхождения эталона, реального действия и его продукта;
Формирование алгоритмического мышления - умение планировать последовательность действий для достижения какой-либо цели (личной, коллективной, учебной, игровой и др.);
умение решать задачи, ответом для которых является описание последовательности действий на естественных и формальных языках;
умение вносить необходимые дополнения и изменения в план и способ действия в случае расхождения начального плана (или эталона), реального действия и его результата.
Метепредметные результаты (финансовая грамотность):
достижение личных финансовых целей, путём анализа финансовых альтернатив и планирования;
умение находить эффективные способы решения финансовых задач;
получение первичных навыков самоанализа и самоменеджмента;
умение создавать и использовать в работе модели и схемы для решения финансовых задач
Личностные результаты:
формирование понятия связи различных явлений, процессов, объектов с информационной деятельностью человека;
личностное, профессиональное, жизненное самоопределение и построение жизненных планов во временной перспективе
эффективное и рациональное использование таких жизненных ролей как потребитель, налогоплательщик, инвестор
Предметные результаты:
умение использовать термины «алгоритм», «программа»; понимание различий между употреблением этих терминов в обыденной речи и в информатике;
умение формально выполнять алгоритмы, описанные с использованием алгоритмических конструкций;
умение создавать и выполнять программы для решения несложных алгоритмических задач в выбранной среде программирования;
навыки выбора способа представления данных в зависимости от постановленной задачи.
Тип урока (уроков): комбинированный (лекция + учебный практикум)
Оборудование: компьютерный класс, среда программирования
Урок 1. Организация ввода и вывода (работа с целыми числами)
Действия учителя | Время | Действия ученика | Обеспечение |
Оргмомент. Приветствие. Проверка отсутствующих. | 1 мин. | | Электронный журнал |
Постановка проблемы Программисту пришло задание - автоматизация финансовой отчётности. Вычисления, которые нужно реализовать в программе: сумму дохода первых двух кварталов поделить на сумму последних двух кварталов, чтобы понять динамику роста или падения дохода | 2 мин. | Помогают составить псевдокод, который необходимо превратить в код на языке программирования запросить ввод 4 значений найти сумму дохода за 2 первых квартала найти сумму дохода за 2 последних квартала вывести результат деления сумм | доска, электронная доска |
Объяснение нового материала Для написания программного кода нам необходимо познакомиться с операторами ввода, вывода и основными арифметическими операциями Оператор вывода Для вывода в Питоне есть функция print(). Внутри круглых скобок через запятую мы пишем то, что хотим вывести. Это может быть текст: print(‘Hello’) # текст записываем в кавыках или апострофах print(3 + 5) # результат вычислений print(a) # значение переменной Для вывода текста, значений переменных можно использовать следующие варианты: перечисление через запятую print(a, "+", b, "=", c) объединение (конкатенация) print('Здравствуйте, ' + name + '!') f-строки print( f "{a}+{b}={c}" ) метод format print(“{a} + {b} = {c}”.format(a = a, b = b, c = a+b) Переменная – величина, которая имеет имя, тип и значение. Значение переменной может изменяться во время выполнения программы В имени переменной допускается использование: - латинские буквы (прописные и строчные различаются) - цифры (нельзя начинать имя с цифры) - знак _ (нижнее подчеркивание) Типы переменных: int – целое число float – вещественное число str – строка bool – логическое значение Записать значение в переменную можно: - с помощью оператора присваивания а = 5 - ввести значение с клавиатуры с помощью оператора ввода input Оператор ввода input() Для ввода данных в программу мы используем функцию input(). Она считывает одну строку. По умолчанию все данные, которые наша программа считывает с клавиатуры распознаются как символьная строка. a = input() >>> 5 print(a) >>> ‘5’ Для того, чтобы с данными можно было работать как с числом, добавим функцию int, она преобразует введенную строку к целочисленному значению a = int(input()) Чтобы организовать диалог пользователя с компьютером можно добавить подсказку для ввода a = int(input(“Введите первое число”)) Арифметические операции print(5 + 10) print(3 * 7, (17 - 2) * 8) print(2 ** 16) # две звёздочки означают возведение в степень print(37 / 3) # один слэш — это деление с ответом-дробью print(37 // 3) # два слэша считают частное от деления нацело print(37 % 3) # процент считает остаток от деления нацело | 15 мин | ведут конспект | доска, электронная доска |
А теперь запишем наш псевдокод для задачи с помощью оператор языка Python | 2 мин | period1 = int(input(“Введите сумму дохода за первый квартал”) period2 = int(input(“Введите сумму дохода за второй квартал”) period3 = int(input(“Введите сумму дохода за третий квартал”) period4 = int(input(“Введите сумму дохода за четвертый квартал”) sum1 = period1 + period2 sum2 = period3 + period3 print(“Динамика: {d}”.format(d = sum1 / sum2)) | |
Закрепление материала. Практическая работа. | 20 мин | Пишут программы, используя среду Python Задачи (см. файл Линейный алгоритмы. Целые числа) Примеры решений: 1.1 – 1.4 | компьютерный класс, среда программирования |
Домашнее задание Выполнить задания урока «Ввод и вывод данных» на сайте Питонтьютор | 1 мин | | электронный журнал |
Урок 2. Программирование линейных алгоритмов (работа с вещественными числами)
Действия учителя | Время | Действия ученика | Обеспечение |
Оргмомент. Приветствие. Проверка отсутствующих. | 1 мин. | | Электронный журнал |
Повторение. Тестирование по материалам прошлого урока | 7 мин. | Отвечают на вопросы | компьютеры, возможно интерактивная система тестирования, или вывод вопросов на экран с последующим обсуждением результата |
Постановка проблемы При оплате покупок картой за рубежом банки делают конвертацию через промежуточную валюту. Например, если оплачивать отечественной картой товар в евро, то сначала эта сумма конвертируется в доллары, а потом — в рубли. Напишите программу, которая получает на вход стоимость покупки в евро, а затем выводит ответ в рублях. Пример работы программы Стоимость покупки в евро: 150.00 Курс евро к доллару: 1.20 Курс доллара к рублю: 90.25 Стоимость покупки в рублях: 16245.00 | 3 мин. | Помогают составить псевдокод, который необходимо превратить в код на языке программирования | доска, электронная доска |
Изучение нового материала Дробная часть числа от целой в программировании отделена точкой Для целых чисел определены операции +, -, * и **. Операция деления / для целых чисел возвращает вещественное число (значение типа float). Также функция возведения в степень возвращает значение типа float, если показатель степени — отрицательное число. Обратите внимание, что если вы хотите считать с клавиатуры действительное число, то результат, возвращаемый функцией input() необходимо преобразовывать к типу float: a = float(input()) Для работы с вещественными числами будут полезны такие функции: int(x) - округляет число до целого в сторону нуля round(x) – округляет число до ближайшего целого round(x, n) - Округляет число x до n знаков после точки Для проведения вычислений с действительными числами язык Питон содержит много дополнительных функций, собранных в библиотеку (модуль), которая называется math. Подключить модуль математика import math Некоторые функции модуля math math.sqrt(x) – извлечение квадратного корня math.pi() - число math.ceil(x) – округление вверх math.floor(x) – округление вниз | 10 мин. | ведут конспект | доска, электронная доска |
А теперь запишем наш псевдокод для задачи с помощью оператор языка Python cost1 = float(input('Стоимость покупки в евро: ')) evro_dol = float(input('Курс евро к доллару: ')) dol_rub = float(input('Курс доллара к рублю: ')) cost2 = cost1 * evro_dol cost3 = cost2 * dol_rub print('Стоимость покупки в рублях: ', round(cost3,2)) | 3 мин | Записывают пример кода в тетрадь | доска, электронная доска |
Закрепление материала. Практическая работа. | 15 мин | Пишут программы, используя среду Python Задачи (см. файл Вычисления. Вещественные числа) Примеры решений: 2.1 – 2.6 | компьютерный класс, среда программирования |
Домашнее задание Выполнить задания урока «Вычисления» на сайте Питонтьютор | 1 мин | | электронный журнал |
Урок 3. Программирование разветвляющихся алгоритмов
Действия учителя | Время | Действия ученика | Обеспечение |
Оргмомент. Приветствие. Проверка отсутствующих. | 1 мин. | | Электронный журнал |
Повторение. Тестирование по материалам прошлых уроков | 7 мин. | Отвечают на вопросы теста | компьютеры, возможно интерактивная система тестирования, или вывод вопросов на экран с последующим обсуждением результата |
Постановка проблемы Необходимо написать программу, которая получает сумму покупки и выводит сумму чека со скидкой 10%, если сумма чека превышает 10000 руб., и без скидки, если сумма не превышает 10000 руб. | 2 мин. | Помогают составить псевдокод, который необходимо превратить в код на языке программирования | доска, электронная доска |
Изучение нового материала Все ранее рассматриваемые программы имели линейную структуру: все инструкции выполнялись последовательно одна за одной, каждая записанная инструкция обязательно выполняется. Для решения новой задачи линейной конструкции недостаточно. Необходимо предусмотреть разные варианты развития событий в зависимости от выполнения или не выполнения условия
Условная инструкция (полное ветвление) в Питоне имеет следующий синтаксис: if Условие: Блок инструкций 1 else: Блок инструкций 2 Блок инструкций 1 будет выполнен, если Условие истинно. Если Условие ложно, будет выполнен Блок инструкций 2. Неполная форма условного оператора if Условие: Блок инструкций Операторы сравнения: < > - меньше, больше >= <= - больше или равно, меньше или равно == - равно != - не равно Задача: найти минимум из двух чисел Решение 1 (полная форма условного оператора) a = int(input(“Первое число: ”)) b = int(input(“Второе число: ”)) if a < b: print(“Минимальное число: ”, a) else: print(“Минимальное число: ”, b) Решение 2 (неполная форма условного оператора) a = int(input(“Первое число: ”)) b = int(input(“Второе число: ”)) m = a if b < m: m = b print(“Минимальное число: ”, m) Использование логических операций в условиях (сложные условия) Сложное условие – это условие, состоящее из нескольких простых условий (отношений), связанных с помощью логических операций: and – одновременное выполнение условий а >= 25 and а <= 40 or – выполнение хотя бы одного из условий а <= 25 or а >= 40 not – отрицание, обратное условие not (а > 25) Каскадное ветвление Пример программы, определяющий четверть координатной плоскости, можно переписать используя “каскадную“ последовательность операцией if... elif... else: x = int(input()) y = int(input()) if x > 0 and y > 0: print("Первая четверть") elif x > 0 and y < 0: print("Четвертая четверть") elif y > 0: print("Вторая четверть") else: print("Третья четверть") В такой конструкции условия if, ..., elif проверяются по очереди, выполняется блок, соответствующий первому из истинных условий. Если все проверяемые условия ложны, то выполняется блок else, если он присутствует. | 10 мин. | ведут конспект | доска, электронная доска |
А теперь запишем наш псевдокод для задачи с помощью оператор языка Python summa = float(input('Стоимость товаров в корзине: ')) if summa > 10000: s1 = summa * 0.9 else: s1 = summa print('Сумма в чеке:', round(s1,2),'руб.') | 3 мин | Записывают пример кода в тетрадь | доска, электронная доска |
Закрепление материала. Практическая работа. | 16 мин | Пишут программы, используя среду Python Задачи (см. файл Условные вычисления. Ветвление) Примеры решений: 3.1 -3.3 | компьютерный класс, среда программирования |
Домашнее задание Выполнить задания урока «Условия» на сайте Питонтьютор | 1 мин | | электронный журнал |
Урок 4. Программирование циклических алгоритмов (цикл WHILE)
Действия учителя | Время | Действия ученика | Обеспечение |
Оргмомент. Приветствие. Проверка отсутствующих. | 1 мин. | | Электронный журнал |
Повторение Тестирование по материалам прошлых уроков | 7 мин. | Отвечают на вопросы теста https://onlinetestpad.com/hufxqgcn3l7gs | |
Постановка проблемы Необходимо вычислить, сколько лет нужно выплачивать фирме кредит, если известна ежегодная ставка по кредиту и ежегодная выплата. 1. Определим исходные данные. Исходные данные: S - сумма кредита, p - процентная ставка, V - выплата по кредиту. 2. Логика задачи достаточно проста. Нужно определять, как будет уменьшаться сумма кредита каждый год, пока не станет равной 0. И подсчитывать при этом количество лет. Определим, что S0 - это начальная сумма. Тогда S1 - это сумма на конец первого года. S1 = (S0+S0×p/100)−V Для второго года сумма кредита равна S2=(S1+S1×p/100)−V Sn=(Sn−1+Sn−1×p/100)−V для n>0 То есть, необходимо изменять по формуле значение суммы кредита каждый год. Данное действие нужно производить пока сумма кредита больше 0. | 5 мин. | Помогают составить псевдокод, который необходимо превратить в код на языке программирования | доска, электронная доска |
Изучение нового материала Цикл while (“пока”) позволяет выполнить одну и ту же последовательность действий, пока проверяемое условие истинно. Условие записывается до тела цикла и проверяется до выполнения тела цикла. Как правило, цикл while используется, когда невозможно определить точное значение количества проходов исполнения цикла. Синтаксис цикла while в простейшем случае выглядит так: while условие: блок инструкций Пока выполняется условие, прописанное после while, блок кода внутри цикла будет повторяться. Чтобы Python понял, какую часть кода повторять в цикле, а какую выполнять после цикла, используйте отступы: while x < 10: x -= 1 — этот код будет выполнен после цикла. При необходимости код можно прервать без выполнения условия: while x < 10: if x == 5: break — эта команда прервёт выполнение цикла. x += 1 x -= 1 — после прерывания будет выполнен код после цикла. | 7 мин. | ведут конспект | доска, электронная доска |
А теперь запишем наш псевдокод для задачи с помощью оператор языка Python S = float(input('Введите сумму кредита: ')) p = float(input('Введите процентную ставку: ')) V = float(input('Какова будет ежегодная выплата: ')) r = 0 while S > 0: S += S * p/100 S -= V r += 1 print(S,r) print(f'Для выплаты кредита необходимо {r} лет') | 2 мин | Записывают пример кода в тетрадь | доска, электронная доска |
Закрепление материала. Практическая работа. | 17 мин | Пишут программы, используя среду Python Задачи (см. файл Цикл WHILE) Примеры решений: 2.1 – 2.6 | компьютерный класс, среда программирования |
Домашнее задание Выполнить задания урока «Цикл While» на сайте Питонтьютор | 1 мин | | электронный журнал |
Урок 5. Программирование циклических алгоритмов (цикл FOR)
Действия учителя | Время | Действия ученика | Обеспечение |
Оргмомент. Приветствие. Проверка отсутствующих. | 1 мин. | | Электронный журнал |
Повторение. Тестирование по материалам прошлых уроков | 7 мин. | Отвечают на вопросы теста https://onlinetestpad.com/5hdspg4soyagq | |
Постановка проблемы Необходимо написать программу, которая подсчитывает чистый доход предпринимателя в течение календарного года (12 месяцев). Программа получает доход в каждый из месяцев года, из этого дохода нужно вычесть 35% налогов, остальное нужно учесть в чистом доходе | 5 мин. | Помогают составить псевдокод, который необходимо превратить в код на языке программирования | доска, электронная доска |
Изучение нового материала Цикл for, также называемый циклом с параметром, в языке Питон богат возможностями. В цикле for указывается переменная и множество значений, по которому будет пробегать переменная. Множество значений может быть задано списком, кортежем, строкой или диапазоном. i = 1 for color in 'red', 'orange', 'yellow', 'green', 'cyan', 'blue', 'violet': print('#', i, ' color of rainbow is ', color, sep = '') i += 1 В этом примере переменная color последовательно принимает значения 'red', 'orange' и т.д. В теле цикла выводится сообщение, которое содержит название цвета, то есть значение переменной color, а также номер итерации цикла число, которое сначала равно 1, а потом увеличивается на один (инструкцией i += 1 с каждым проходом цикла. Функция range в цикле for # одно значение for n in range(10): print(n) n принимает значения 0 1 2 3 4 5 6 7 8 9 # два значения for n in range(1,10): print(n) n принимает значения 1 2 3 4 5 6 7 8 9 # три значения + for n in range (1,10,2): print(n) n принимает значения 1 3 5 7 9 # три значения - for n in range(10,1,-1): print(n) n принимает значения 10 8 6 4 2 Задача Найти сумму чисел от 1 до 1000 # решение s=0 for n in range(1,1000+1): s=s+n # s+=n print(s) | 7 мин. | ведут конспект | доска, электронная доска |
А теперь запишем наш псевдокод для задачи с помощью оператор языка Python summa = 0 for month in range(1,12+1): d = float(input(f'Введите доход за {month} месяц: ')) summa += d*0.65 print('Чистый доход предпринимателя за год {s}'.format(s = round(summa,2))) | 3 мин | Записывают пример кода в тетрадь | доска, электронная доска |
Закрепление материала. Практическая работа. | 16 мин | Пишут программы, используя среду Python Задачи (см. файл Цикл FOR) Примеры решений: 2.1 – 2.6 | компьютерный класс, среда программирования |
Домашнее задание Выполнить задания урока «Цикл for» на сайте Питонтьютор | 1 мин | | электронный журнал |
Итоговый тест на следующий урок https://onlinetestpad.com/k63qj34dtktrg
Список источников
Питонтьютор. Интерактивный учебник языка программирования Python. http://pythontutor.ru/
Авторская мастерская Л.Л.Босовой https://lbz.ru/metodist/authors/informatika/3/
Сайт К.Ю. Полякова https://kpolyakov.spb.ru/
Н.Прохоренок, В.Дронов. Python 3. Самое необходимое. – Спб.: «БХВ –Петербург», 2016
Сборник математических задач «Основы финансовой грамотности» - М.,2019
