.. _przyklad5:
Funkcje
#################
.. note::
W tym przykładzie poznasz i zastosujesz **funkcje**.
Zadanie
********
Wypisz ciąg Fibonacciego aż do ``n``-tego wyrazu podanego przez użytkownika.
Ciąg Fibonacciego to ciąg liczb naturalnych, którego każdy wyraz poza dwoma
pierwszymi jest sumą dwóch wyrazów poprzednich.
Początkowe wyrazy tego ciągu to: ``0 1 1 2 3 5 8 13 21``.
**Dane**:
- ``n`` – wyraz, na którym kończymy wypisywanie ciągu, liczba całkowita.
.. raw:: html
Plik fibonacci.pyKod nr
.. literalinclude:: przyklad05.py
:linenos:
Funkcje pozwalają grupować instrukcje realizujące jedno zadanie w nazwanym blok kodu,
dzięki czemu można je wielokrotnie wywoływać. Funkcję definiujemy za pomocą słowa kluczowego ``def``:
.. code::
def nazwa_funkcji(parametry):
pass
Parametry to przekazywane do funkcji wartości i/lub dane. Parametry są opcjonalne.
Po dwukropku od nowego wiersza umieszczamy odpowiednio wcięte instrukcje,
które tworzą ciało funkcji. Funkcja może zwracać jakąś wartość za pomocą
polecenia ``return``.
Zapis ``a, b = 1, 2`` jest przykładem przypisania wielokrotnego, tzn. zmienne ``a`` i ``b``
przyjmują wartości kolejnych elementów rozpakowanych z krotki (tupli) po prawej stronie.
W taki sam sposób przypisujemy wartości w kodzie ``a, b = b, b + a``.
Jak widać, liczba zmiennych z lewej strony musi odpowiadać liczbie wartości rozpakowywanych z krotki.
Algorytmy iteracyjne można implementować za pomocą różnych instrukcji sterujących,
w tym wypadku pętli ``while`` i ``for``, a także z wykorzystaniem rekurencji.
Ćwiczenie
----------
Przyjmij, że dwa pierwsze wyrazy ciągu równe są 1 i zmień funkcje tak,
aby wypisywały lub zwracały poprawne wartości.
.. admonition:: Pojęcia
:term:`funkcja`, :term:`krotka`