Программирование (Python)
Программирование (Python)
Два типа подпрограмм
Простая процедура
Линии разной длины
Процедура с параметром
Ввод аргумента с клавиатуры
Задачи
Задачи
Задачи
Рекурсия
Рекурсия
Рекурсивная процедура
Рекурсивная процедура
Задачи
Задачи
Программирование (Python)
Что такое функция?
Как вызывать функцию?
Как вызывать функцию?
Как вызывать функцию?
Максимум из двух (трёх) чисел
Максимум из трёх чисел
Сумма цифр числа
Сумма цифр числа
Задачи
Задачи
Логические функции
Логические функции
Рекурсивные функции
Рекурсивная функция
Сумма цифр числа (рекурсия)
Задачи
Задачи
Конец фильма
Источники иллюстраций
795.00K
Category: programmingprogramming

9_2_4py_Программирование_Python_12be9e8afd665a92b48d92f6450f8d6a

1. Программирование (Python)

1
Программирование
(Python)
§ 2.4.1 Процедуры
§ 2.4.2 Функции
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru

2. Программирование (Python)

2
Программирование
(Python)
§ 24. Процедуры
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru

3. Два типа подпрограмм

Программирование (Python), 9 класс
3
Два типа подпрограмм
Подпрограммы
Процедуры
выполняют действия
? Процедура или функция?
Функции
+ возвращают некоторый
результат
а) рисует окружность на экране
б) определяет площадь круга
в) вычисляет значение синуса угла
г) изменяет режим работы программы
д) возводит число x в степень y
е) включает двигатель автомобиля
ж) проверяет оставшееся количество бензина в баке
з) измеряет высоту полёта самолёта
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru

4. Простая процедура

Программирование (Python), 9 класс
4
Простая процедура
define – определить
def printLine():
print("----------")
? Что делает?
...
вызов
printLine()
процедуры
...
какие-то
операторы
можно вызывать сколько угодно раз
нет дублирования кода
изменять – в одном месте
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru

5. Линии разной длины

Программирование (Python), 9 класс
5
Линии разной длины
def printLine5():
print("-----")
? Как улучшить?
def printLine10():
print("----------")
def printLine10():
print("-"*10)
параметр
процедуры
def printLine( n ):
print("-"*n)
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru

6. Процедура с параметром

Программирование (Python), 9 класс
6
Процедура с параметром
Параметр – величина, от
которой зависит
работа процедуры.
def printLine( n ):
...
...
printLine(10)
...
printLine(7)
printLine(5)
printLine(3)
К.Ю. Поляков, Е.А. Ерёмин, 2018
? Что делает?
Аргумент – значение
параметра при
конкретном вызове.
http://kpolyakov.spb.ru

7. Ввод аргумента с клавиатуры

Программирование (Python), 9 класс
7
Ввод аргумента с клавиатуры
Подпрограмма-процедура
def F(n):
print("+" *n)
Основная программа
n=int(input("Длина цепочки: "))
F(n)
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru

8. Задачи

Программирование (Python), 9 класс
8
Задачи
«A»: Напишите процедуру, которая принимает параметр –
натуральное число N – и выводит на экран две линии из
N символов "–".
Пример:
Длина цепочки: 7
------------«B»: Напишите процедуру, которая принимает один
параметр – натуральное число N, – и выводит на
экран прямоугольник длиной N и высотой 3
символа.
Пример:
Длина прямоугольника: 7
ooooooo
o
o
ooooooo
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru

9. Задачи

Программирование (Python), 9 класс
9
Задачи
«C»: Напишите процедуру, которая выводит на экран
квадрат со стороной N символов. При запуске
программы N нужно ввести с клавиатуры.
Пример:
Сторона квадрата: 5
ooooo
o
o
o
o
o
o
ooooo
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru

10. Задачи

Программирование (Python), 9 класс
10
Задачи
«D»: Напишите процедуру, которая выводит на экран
треугольник со стороной N символов. При запуске
программы N нужно ввести с клавиатуры.
Пример:
Сторона: 5
o
oo
ooo
oooo
ooooo
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru

11. Рекурсия

Программирование (Python), 9 класс
11
Рекурсия
Задача. Вывести на экран двоичный код натурального
числа.
def printBin( n ):
...
Алгоритм перевода через остатки:
while n!=0:
print(n % 2, end="")
n = n // 2
011
? Что получится
при n = 6?
в обратном порядке!
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru

12. Рекурсия

Программирование (Python), 9 класс
12
Рекурсия
Чтобы вывести двоичную запись числа n, нужно сначала
вывести двоичную запись числа (n // 2), а затем — его последнюю двоичную цифру, равную
(n % 2).
двоичная запись числа 6
110
6 % 2
двоичная запись числа 3
! Чтобы решить задачу,
нужно решить ту же
задачу
для меньшего числа!
Это и есть рекурсия!
! Чтобы понять рекурсию, нужно понять рекурсию!
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru

13. Рекурсивная процедура

Программирование (Python), 9 класс
13
Рекурсивная процедура
def printBin( n ):
printBin(n % 2)
print(n % 2, end = "")
вызывает сама себя!
Рекурсивная процедура — это процедура, которая
вызывает сама себя.
printBin(6)
printBin(3)
? Что получится? printBin(6)
printBin(1)
printBin(0)
printBin(0)
К.Ю. Поляков, Е.А. Ерёмин, 2018
бесконечные вызовы
? Как исправить?
http://kpolyakov.spb.ru

14. Рекурсивная процедура

Программирование (Python), 9 класс
14
Рекурсивная процедура
def printBin( n ):
if n = 0: return
printBin(n // 2)
print(n % 2)
получится?
? Что
printBin(6)
printBin(6)
printBin(3)
printBin(1)
printBin(0)
рекурсия
заканчивается!
110
print(1 % 2)
print(3 % 2)
print(6 % 2)
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru

15. Задачи

Программирование (Python), 9 класс
15
Задачи
«A»: Напишите рекурсивную процедуру, которая
переводит число в восьмеричную систему.
Пример:
Введите число: 66
В восьмеричной: 102
«B»: Напишите рекурсивную процедуру, которая
переводит число в любую систему счисления с
основанием от 2 до 9.
Пример:
Введите число: 75
Основание: 6
В системе с основанием 6: 203
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru

16. Задачи

Программирование (Python), 9 класс
16
Задачи
«С»: Напишите рекурсивную процедуру, которая
переводит число в шестнадцатеричную систему.
Пример:
Введите число: 123
В шестнадцатеричной: 7B
«D»: Напишите рекурсивную процедуру, которая
переводит число в любую систему счисления с
основанием от 2 до 36.
Пример:
Введите число: 350
Основание: 20
В системе с основанием 20: HA
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru

17. Программирование (Python)

17
Программирование
(Python)
§ 25. Функции
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru

18. Что такое функция?

Программирование (Python), 9 класс
18
Что такое функция?
Функция — это вспомогательный алгоритм, который
возвращает результат (число, строку символов и др.).
Задача. Написать функцию, которая вычисляет среднее
арифметическое двух целых чисел.
цел a, b
исходные данные
целые
def Avg(a, b):
return (a+b)/2
Avg
вещ r
результат
? Тип результата?
результат
функции
return – вернуть
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru

19. Как вызывать функцию?

Программирование (Python), 9 класс
19
Как вызывать функцию?
Запись результата в переменную:
sr = Avg(5, 8)
6.5
x = 2; y = 5
sr = Avg(x, 2*y+8)
Вывод на экран:
x = 2; y = 5
sr = Avg(x, y+3)
print( Avg(12,7) )
print( sr + Avg(x,12) )
К.Ю. Поляков, Е.А. Ерёмин, 2018
? Чему равно?
10
5
9.5
12
http://kpolyakov.spb.ru

20. Как вызывать функцию?

Программирование (Python), 9 класс
20
Как вызывать функцию?
Использование в условных операторах:
a = int(input())
b = int(input())
if Avg(a,b) > 5:
print("Да!")
Когда печатает «Да»?
else:
print("Нет!");
?
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru

21. Как вызывать функцию?

Программирование (Python), 9 класс
21
Как вызывать функцию?
Использование в циклах:
a = int(input())
b = int(input())
ввод двух чисел в
while Avg(a,b) > 0:
одной строчке
print("Нет!")
a,b = map(int, input().split())
print("Угадал!");
? Когда напечатает «Угадал»?
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru

22. Максимум из двух (трёх) чисел

Программирование (Python), 9 класс
22
Максимум из двух (трёх) чисел
Задача. Составить функцию, которая определяет
наибольшее из двух целых чисел.
цел a, b
исходные данные
цел r
результат
Max
?
def Max(a, b):
Как с её помощью найти
if a > b:
максимум из трёх?
return a
else:
return b
def Max3(a, b, c):
return Max( Max(a,b), c )
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru

23. Максимум из трёх чисел

Программирование (Python), 9 класс
23
Максимум из трёх чисел
Задача. Составить функцию, которая определяет
наибольшее из двух целых чисел.
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru

24. Сумма цифр числа

Программирование (Python), 9 класс
24
Сумма цифр числа
Задача. Составить функцию, которая вычисляет сумму
значений цифр натурального числа.
def sumDigits( N ):
sum = 0
# накапливаем сумму с 0
while N!=0:
d = N % 10
# выделим последнюю цифру
sum += d
# добавим к сумме
N = N // 10 # удалим последнюю цифру
return sum
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru

25. Сумма цифр числа

Программирование (Python), 9 класс
25
Сумма цифр числа
Задача. Составить функцию, которая вычисляет сумму
значений цифр натурального числа.
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru

26. Задачи

Программирование (Python), 9 класс
26
Задачи
«A»: Напишите функцию, которая вычисляет среднее
арифметическое пяти целых чисел.
Пример:
Введите 5 чисел: 1 2 3 4 6
Среднее: 3.2
«B»: Напишите функцию, которая находит количество
цифр в десятичной записи числа.
Пример:
Введите число: 751
Количество цифр: 3
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru

27. Задачи

Программирование (Python), 9 класс
27
Задачи
«С»: Напишите функцию, которая находит количество
единиц в двоичной записи числа.
Пример:
Введите число: 75
Количество единиц: 4
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru

28. Логические функции

Программирование (Python), 9 класс
28
Логические функции
Логическая функция — это функция, возвращающая
логическое значения (да или нет).
• можно ли применять операцию?
• успешно ли выполнена операция?
• обладают ли данные каким-то свойством?
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru

29. Логические функции

Программирование (Python), 9 класс
29
Логические функции
Задача. Составить функцию, которая возвращает
«True», если она получила чётное число и «False»,
если нечётное.
def Even( N ):
if N % 2 == 0:
def Even( N ):
return True
return (N % 2 == 0)
else:
return False
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru

30. Рекурсивные функции

Программирование (Python), 9 класс
30
Рекурсивные функции
Рекурсивная функция — это функция, которая
вызывает сама себя.
Задача. Составить рекурсивную функцию, которая
вычисляет сумму цифр числа.
? Как сформулировать решение рекурсивно?
Сумму цифр числа N нужно выразить через сумму
цифр другого (меньшего) числа.
Сумма цифр числа N равна значению последней цифры
плюс сумма цифр числа, полученного отбрасыванием
последней цифры.
sumDig(12345) = 5 + sumDig(1234)
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru

31. Рекурсивная функция

Программирование (Python), 9 класс
31
Рекурсивная функция
Сумма цифр числа N
последняя цифра
Вход: натуральное число N.
Шаг 1: d = N % 10
число без
Шаг 2: M = N // 10
последней цифры
Шаг 3: s = сумма цифр числа M
Шаг 4: sum = s + d
Результат: sum.
? Что забыли?
К.Ю. Поляков, Е.А. Ерёмин, 2018
? Когда остановить?
http://kpolyakov.spb.ru

32. Сумма цифр числа (рекурсия)

Программирование (Python), 9 класс
32
Сумма цифр числа (рекурсия)
def sumDigRec( N ):
if N == 0: return 0
else:
d = N % 10
sum = sumDigRec(N // 10)
return sum + d
? Зачем это?
? Где рекурсивный вызов?
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru

33. Задачи

Программирование (Python), 9 класс
33
Задачи
«A»: Напишите логическую функцию, которая
возвращает значение «истина», если десятичная
запись числа заканчивается на цифру 0 или 1.
Пример:
Введите число: 1230
Ответ: Да
«B»: Напишите логическую функцию, которая
возвращает значение «истина», если переданное ей
число помещается в 8-битную ячейку памяти.
Пример:
Введите число: 751
Ответ: Нет
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru

34. Задачи

Программирование (Python), 9 класс
34
Задачи
«C»: Напишите логическую функцию, которая
возвращает значение «истина», если переданное ей
число простое (делится только на само себя и на
единицу).
Пример:
Введите число: 17
Число простое!
Пример:
Введите число: 18
Число составное!
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru

35. Конец фильма

Программирование (Python), 9 класс
35
Конец фильма
ПОЛЯКОВ Константин Юрьевич
д.т.н., учитель информатики
ГБОУ СОШ № 163, г. Санкт-Петербург
kpolyakov@mail.ru
ЕРЕМИН Евгений Александрович
к.ф.-м.н., доцент кафедры мультимедийной
дидактики и ИТО ПГГПУ, г. Пермь
eremin@pspu.ac.ru
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru

36. Источники иллюстраций

Программирование (Python), 9 класс
36
Источники иллюстраций
1.
2.
иллюстрации художников издательства «Бином»
авторские материалы
К.Ю. Поляков, Е.А. Ерёмин, 2018
http://kpolyakov.spb.ru
English     Русский Rules