Python 911
Python 911
Подпрограммы
Подпрограмма – это отдельная функционально независимая часть программы,
имеющая имя и решающая отдельную задачу.
Подпрограммы:
✓ избавляют от необходимости многократно повторять в тексте программы
аналогичные фрагменты;
✓ улучшают структуру программы, облегчая ее понимание;
✓ позволяют распределять большие задачи между несколькими
разработчиками или стадиями проекта;
✓ повышают устойчивость к ошибкам программирования и непредвидимым
последствиям при модификациях программы.
Два типа подпрограмм
Подпрограммы
В Python нет формального
разделения подпрограмм на
функции и процедуры (как,
Процедуры Функции например, в Паскале или Си), и
процедурой можно считать
функцию, возвращающую пустое
выполняют действия, значение – в основном
выполняют возвращают используется единственный
действия некоторый результат термин – функция.
Общий вид процедуры
имя процедуры, даётся Параметр – это переменная,
define – определить тем, кто пишет
программу от значения которой зависит
работа подпрограммы.
def name_procedury(параметры):
тело процедуры
если параметры не нужны
ставят пустые скобки ()
name_procedury()
или
name_procedury(n)
или
name_procedury(a,b,c,d)
Простая процедура
процедура
основная часть
программы
вызов
процедуры
✓можно вызывать
сколько угодно раз
✓нет дублирования
кода
✓изменять в одном
месте
Процедура с параметрами
символьная строка
Общий вид функции
имя функции, даётся Выражение, стоящее после
define – определить тем, кто пишет
программу ключевого слова return будет
возвращаться в качестве
результата вызова функции.
Пример:
2) Напишите процедуру, которая принимает один Длина прямоугольника: 7
параметр – натуральное число N, – и выводит ooooooo
на экран прямоугольник длиной N и высотой o o
ooooooo
3 символа.
Пример:
3) Напишите процедуру, которая выводит на экран Сторона: 5
треугольник со стороной N символов. При запуске o
программы N нужно ввести с клавиатуры. oo
ooo
oooo
ooooo
Задачи
4) Напишите функцию, которая вычисляет среднее арифметическое пяти целых
чисел.
5) Напишите функцию, которая находит количество цифр в десятичной записи
числа.
6) Напишите функцию, которая находит количество нулей в двоичной записи
числа (c клавиатуры вводится десятичное число).
7) Найти периметр треугольника, заданного координатами своих вершин.
(Определить функцию для расчета длины отрезка по координатам его
вершин.)
8) Найти все трехзначные простые числа. (Определить функцию, позволяющую
распознавать простые числа.)
Найти все трехзначные простые числа
Задачи
9) Получить все шестизначные счастливые номера. Счастливым называют такое
шестизначное число, в котором сумма его первых трёх цифр равна сумме его
последних трёх цифр. (Определить функцию для расчета суммы цифр
трёхзначного числа.)
10) Даны шесть различных чисел. Определить максимальное из них.
(Определить функцию, находящую максимум из двух различных чисел.)
11) Составить программу, в результате которой величина а меняется значением
с величиной b, а величина c – с величиной d. (Определить процедуру,
осуществляющую обмен значениями двух переменных величин.)
Задачи
12) Даны стороны двух треугольников. Найти сумму их периметров и сумму их
площадей. (Определить процедуру для расчета периметра и площади
треугольника по его сторонам.)
13) Даны основания и высоты двух равнобедренных трапеций. Найти сумму их
периметров и сумму их площадей. (Определить процедуру для расчета
периметра и площади равнобедренной трапеции по ее основаниям и высоте.)
14) В зависимости от выбора пользователя вычислить площадь круга,
прямоугольника или треугольника. Для вычисления площади каждой фигуры
должна быть написана отдельная функция.
15) Напишите функцию, которая возвращает количество цифр в восьмеричной
записи числа.
Задачи
16) Напишите процедуру с параметрами n и s, которая выводит квадрат размером
nxn из символа, который вводится с клавиатуры. Используя эту процедуру,
напишите программу, которая запрашивает два значения – строну квадрата и
символ, и вызывает процедуру рисования требуемого квадрата
17) Напишите процедуру, которая выводит на экран все делители числа N в одну
строку через пробел. Используя данную процедуру, составьте программу, которая
для всех введенных натуральных чисел (числа вводятся до 0, 0 - признак окончания
ввода) выводит делители текущего числа.
18) Напишите логическую функцию isByte, которая возвращает значение True, если
переданное ей число помещается в 8-битную ячейку памяти (вспомните, какое
минимальное и какое максимальное числа можно записать с помощью 8 бит).
Задачи
19) Напишите логическую функцию pointInRect, которая возвращает значение True,
если точка с заданными координатами находится внутри прямоугольника, для
которого заданы координаты верхнего левого и правого нижнего углов. Стороны
прямоугольника параллельны осям координат.
20) Напишите логическую функцию pointInTriangle, которая возвращает значение
True, если точка с заданными координатами находится внутри треугольника,
заданного координатами трёх своих вершин.
21) На соревнованиях выступление спортсменов оценивают пять экспертов, каждый
из них выставляет оценку в баллах ( целое число от 0 до 100). Для получения итоговой
оценки лучшая и худшая из оценок экспертов отбрасываются, а для остальных трёх
находится среднее арифметическое. Напишите функцию, которая принимает пять
оценок экспертов и возвращает итоговую оценку спортсмена.
Рекурсия
Рекурсия – это определение объекта через такой же объект (или объекты),
но с другими параметрами.
Рекурсивная подпрограмма вызывает саму себя напрямую или через
другие подпрограммы.
Количество вложенных вызовов функции или процедуры
называется глубиной рекурсии. По умолчанию глубина рекурсии в языке Питон
ограничена 1000 вызовов.
Рекурсивная программа позволяет описать повторяющееся или даже
потенциально бесконечное вычисление, причем без явных повторений частей
программы и использования циклов.
Рекурсия
Рассмотрим рекурсию на примере: