Подпрограммы
Скачать 1.36 Mb.
|
ПРОЦЕДУРЫ И ФУНКЦИИ ПодпрограммыПодпрограмма – это отдельная функционально независимая часть программы, имеющая имя и решающая отдельную задачу. Подпрограммы:
последствиям при модификациях программы. Два типа подпрограммПроцедуры Функции Подпрограммы выполняют действия выполняют действия, возвращают некоторый результат В Python нет формального разделения функции и подпрограмм на процедуры (как, например, в Паскале или Си), и процедурой можно считать функцию, возвращающую пустое в основном единственный значение – используется термин – функция. Общий вид процедурыdef name_procedury(параметры): тело процедуры define – определить имя процедуры, даётся тем, кто пишет программу если параметры не нужны ставят пустые скобки () пишут в скобках имена одной или нескольких переменных через запятую: (n) или (a,b,c,d) Параметр – это переменная, от значения которой зависит работа подпрограммы. Вызов процедурыПри вызове процедуры нужно в скобках передать ей фактические значения параметров. Аргумент – это значение параметра, которое передаётся подпрограмме при её вызове. Аргументом может быть не только постоянное значение (число, символ), но также переменная, и даже арифметическое выражение. name_procedury() или name_procedury(n) или name_procedury(a,b,c,d) Простая процедуравызов процедуры процедура основная часть программы
сколько угодно раз Процедура с параметрамисимвольная строка Общий вид функцииdef name_function(параметры): тело функции return (результат) define – определить имя функции, даётся тем, кто пишет программу Выражение, стоящее после ключевого слова return будет возвращаться в качестве результата вызова функции. Результат вызова функции можно:
Функция – это вспомогательный алгоритм, который возвращает результат (число, строку символов и др.). ФункцияПример. которая Написать вычисляет функцию, среднее целых арифметическое двух чисел. исходные данные результат функции def Avg(a, b): return (a+b)/2 a = 2; b = 5 print(Avg(a,b)) Что делает программа? Ещё пример. ФункцияПример. Написать функцию, которая вычисляет наименьший общий делитель двух целых чисел. Переменные, которые введены в основной программе, называются глобальными (общими). Их могут использовать все подпрограммы (процедуры и функции). Переменные, которые используются только внутри процедуры или функции, называются локальными (местными). К ним можно обращаться только внутри этой подпрограммы, остальные подпрограммы и основная программа их не видят. Такой прием называется инкапсуляцией (от латинского «помещение в капсулу»). Локальная переменная создается только при вызове процедуры или функции. Как только работа подпрограммы будет закончена, все локальные переменные будут удаляться из памяти. Имена локальных переменных в каждой подпрограмме можно выбирать независимо от имён локальных переменных других подпрограмм.
Нужно стараться писать подпрограммы, которые не обращаются к глобальным переменным. В данном коде переменная b в функции локальная или глобальная? Не запуская код, ответьте на вопрос: что выведет на экран данная программа? Не запуская код, выберите, какие из программ во время запуска получат ошибку выполнения. Не запуская код, ответьте на вопрос: что выведет на экран данная программа? ФункцияПример. Функция перевода десятичного числа в двоичное. В основной ветке программы будем выполнять бесконечный цикл, в котором
выводится результат работы функции на экран, ФункцияПример. Вам даны 4 отрезка. Выведите YES, если среди них найдутся 3, из которых можно составить треугольник, и NO в противном случае. Для решения напишите функцию triangle(a, b, c), которая будет возвращать True, если из трёх заданных отрезков можно составить треугольник, и False иначе. Задачи1) Напишите процедуру, которая принимает параметр – натуральное число N – и выводит на экран две линии из N символов "–". 2) Напишите процедуру, которая принимает один параметр – натуральное число N, – на экран прямоугольник длиной N и выводит и высотой 3 символа. 3) Напишите процедуру, которая выводит на экран треугольник со стороной N символов. При запуске программы N нужно ввести с клавиатуры. Пример: Длина цепочки: 7 ------- ------- Пример: Длина прямоугольника: 7 ooooooo o o ooooooo Пример: Сторона: 5 o oo ooo oooo ooooo Задачи
Найти все трехзначные простые числаЗадачи
Задачи12) Даны стороны двух треугольников. Найти сумму их периметров и сумму их площадей. (Определить процедуру для расчета периметра и площади треугольника по его сторонам.) 13) Даны основания и высоты двух равнобедренных трапеций. Найти сумму их периметров и сумму их площадей. (Определить процедуру для расчета периметра и площади равнобедренной трапеции по ее основаниям и высоте.)
Задачи
Задачи
True, если точка с заданными координатами находится внутри треугольника, заданного координатами трёх своих вершин. 21) На соревнованиях выступление спортсменов оценивают пять экспертов, каждый из них выставляет оценку в баллах ( целое число от 0 до 100). Для получения итоговой оценки лучшая и худшая из оценок экспертов отбрасываются, а для остальных трёх находится среднее арифметическое. Напишите функцию, которая принимает пять оценок экспертов и возвращает итоговую оценку спортсмена. РекурсияРекурсия – это определение объекта через такой же объект (или объекты), но с другими параметрами. Рекурсивная подпрограмма вызывает саму себя напрямую или через другие подпрограммы. Количество вложенных вызовов функции или процедуры называется глубиной рекурсии. По умолчанию глубина рекурсии в языке Питон ограничена 1000 вызовов. Рекурсивная программа позволяет описать повторяющееся или даже потенциально бесконечное вычисление, причем без явных повторений частей программы и использования циклов. Рекурсияdef F(n): if n > 2: return F(n-1)+ F(n-2) else: return 1 n=int(input()) print(F(n)) F(4) F(3) F(5) + F(2) + F(1) 1 1 F(3) F(2) F(1) 1 1 F(2) + 1 + Рассмотрим рекурсию на примере: ПримерыРассмотрим пример функции вычисления факториала.Программирование рекурсии выглядиттак:
параметров простым (крайним) функция случаем. В этом случае должна вернуть значение (или выполнить действия), соответствую- щие простому случаю.
ПримерыВычисление суммы натуральных чисел от 1 до n.def sum(n):if n == 1:return 1 else:return n + sum(n-1)Быстрое возведение в степень def power(a, n): if n == 0: return 1 elif n % 2 == 1: return power(a, n - 1) * a else: return power(a, n // 2) ** 2 ЗадачиЧему равна сумма всех на чисел, напечатанных экране при выполнении вызова F(1)? def F(n): print(n) if n < 5: F(n + 1) F(n + 3) def F(n): print(n) if n > 1: F(n - 1) F(n - 3) def F(n): if n > 2: return F(n-1) + G(n-2) else: return n def G(n): if n > 2: return G(n-1) + F(n-2) else: return n+1 Чему будет равно значение, вычисленное при выполнении вызова F(6)? |