Підпрограми (функції) в Python

Підпрограма – це логічно незалежна спеціальним чином оформлена частина програми для розв’язування певної задачі. • До підпрограм можна багаторазово звертатися з інших частин програми. Таке звернення називають викликом підпрограми.

У Python усі підпрограми називають функціями. Кожна функція це «держава в державі», мініпрограма в програмі. В ній діють всі закони, що притаманні будь-якій програмі. Функція являє собою набір команд, як і сама програма, але вона розв'язує менш складне завдання.

Рекурсивною називається підпрограма, яка прямо або непрямо викликає сама себе.

Інколи функції групуються у модулі. Ми вже розглядали модуль підключення графічних можливостей turtle. В модулях зберігається опис його функції, які можна підключати і використовувати в будь-якій частині проекту або навіть в інших проектах. Про те, як підключати модулі ми вже говорили, пам'ятаєте стрічку from turtle import *.

Існують вбудовані функції і функції, створені користувачем. Вбудовані функції є частиною мови і можуть викликатися за іменем без попереднього оголошення. Наприклад, forward(30) це ні що інше, як виклик вбудованої функції, яка прописана в стандартному модулі turtle і промальовує відрізок довжиною у 30 пікселів у напрямку руху.


Функції визначаються за допомогою ключового слова def.

def sayHello(): опис та ім'я функції (ім'я можете давати довільне)

print('Hello world!') далі йдуть рядки програми, що будуть виконуватися в функції

sayHello() виклик функції у програмі

Отже, бачимо, що пишемо маленьку програмку в нашій програмі та викликаємо її будь-яку кількість разів в будь-якому місці програми.

Якщо на потрібно, щоб функція виконувалася кожного разу з іншим параметром, то в дужках після назви функції ми пишемо так:

def vitannia(k):

print("hellow",k)

vitannia("my frend")

vitannia("my love")

Тобто, в нас виконається функція, де замість букви(параметра) буде підставлено значення в дужках.

Приклад1. Створити функцію для обчислення квадратів чисел.

def kvadrat(x):

print(x,"*",x,"=",x*x)

kvadrat(4)

kvadrat(16)

Приклад2. Створити функцію для множення трьох чисел.

def mnog(a,b,c):

print(a,'*',b,'*',c,'=',a*b*c)

mnog(2,3,4)

mnog(100,3,41)

Якщо ми використовуємо функцію таким чином, то ми отримуємо результат, але основна програма не може скористатися результатом роботи цієї функції(вона його не бачить), просто виводить результат. Для того, щоб програма побачила результат користуються командою return(), яка повертає(показує) результат програмі. Ця команда також спричиняє до виходу з функції, тобто, всі команди , що стоять після return виконуватися не будуть. Насправді, коли ми в попередніх прикладах не писали цю команду, то функція сприймала, що останнім рядком функції є рядок return None , тобто нічого не повертати.

Перепишемо Приклад1 так, щоб можна було використовувати обчислення функції в основній програмі:

def kvadrat(x):

return x*x

a=kvadrat(6)

print(a)

Як бачимо в самій функції команда print вже непотрібна. Функція виконалася, а результат виконання вже виводимо на екран.

Це дає змогу використовувати вкладені функції. Наприклад виведемо:

a=kvadrat(kvadrat(6))

print(a).

Функції можна використовувати в циклах та в розгалуженні. А також цикли та розгалуження можна використовувати при створенні функції.

Приклад3. Створити функцію, що виводить парне число чи не парне з використанням функції.


Приклад4. Створити функцію, що рахує добуток чисел від 1 до 10 . З використанням цієї функції створити програму, що рахує степені отриманих добутків, тобто 1*2*3*4*5*...*10 піднести до квадрату, три рази.


Завдання1. Створити функцію , що виводить вітання " Hellow my frend","Hellow my love" , а також програму, що виводить цю функцію десять разів будь-яким відомим вам способом.

Завдання2. Створити функцію для створення кубів чисел, та програму, яка виводить число та куб числа на екран.

Завданння3. Створити функцію, що виводить куб числа, піднесений до кубу.

Розглянемо один з способів використання рекурсії на прикладі сніжинки Коха:


Елементи сніжинки називаються фракталами. Фракта́л — нерегулярна, самоподібна структура. В широкому розумінні фрактал означає фігуру, малі частини якої в довільному збільшенні є подібними до неї самої.

Як бачимо на малюнку, сніжинка Коха, це рівносторонній трикуткик. Його можна вважати сніжинкою Коха нульового порядку.

Сніжинка більш високого порядку народжується з попередньої більш низького порядку шляхом заміни кожного ребра на чотири, з'єднаним ніби складені долоньки (_/\_).

Тобто сторона замінюється на чотири долоньки втроє менші, а кожна сторона долоньки також замінюється 4-ма долоньками втроє меншими і т.д.

Приклад 5. Побудуємо сніжинку Коха другого порядку ітерацій. Тут кожна насупна сторона в 3 рази менша за попередню. А також є два кути повороту: 60 та 120 градусів.

Цю програму можна реалізувати різними способами, в прикладі розглянемо один з них.

змінна size -це довжина сторони, а змінна n- це деякий параметр, що показує рівень фігури.


Завдання. Для гігантів програмування. Попробуйте побудувати сніжинку третього рівня.