Commit 53d980c3 authored by Mareš Martin's avatar Mareš Martin
Browse files

05: Funkce

parent 06661aec
\documentclass{beamer}
\usepackage[utf8]{inputenc}
\usepackage[czech]{babel}
\usepackage{palatino}
\usepackage{verbatim}
\usetheme{Warsaw}
\title{Programování 1: Funkce}
\author[Martin Mareš]{Martin Mareš\\\texttt{mj@ucw.cz}}
\institute{Katedra Aplikované Matematiky\\MFF UK Praha}
\date{2019}
\begin{document}
\setbeamertemplate{navigation symbols}{}
\setbeamertemplate{footline}{}
\setbeamerfont{title page}{family=\rmfamily}
\shorthandoff{"}
\begin{frame}
\titlepage
\end{frame}
\input ../slidemac.tex
% ----------------------------------------------------------------------
\begin{frame}{Definice funkce}
{\tt
def stekej(): \\
~~~~print("Haf!") \\
~ \\
stekej() \\
stekej()
}
\bigskip
\begin{itemize}
\item Opakující se část programu stačí napsat jednou \\
a spustit vícekrát.
\item Také jsme tím část programu pojmenovali, \\
takže je při čtení jasné, co má dělat.
\end{itemize}
\end{frame}
% ----------------------------------------------------------------------
\begin{frame}{Funkce s parametrem}
{\tt
def stekej(n): \\
~~~~for i in range(n): \\
~~~~~~~~print("Haf!") \\
~ \\
stekej(5)
}
\bigskip
\begin{itemize}
\item Funkci můžeme předat parametr.
\item Když zavoláme {\tt stekej(5)}, funkce se spustí s~proměnnou~{\tt n}
nastavenou na~{\tt 5}.
\item Proměnné {\tt n} a~{\tt i} existují jen lokálně uvnitř funkce, \\
zvenčí nejsou vidět.
\end{itemize}
\end{frame}
% ----------------------------------------------------------------------
\begin{frame}{Funkce s výsledkem}
{\tt
def minimum(a, b): \\
~~~~if a < b: \\
~~~~~~~~return a \\
~~~~else: \\
~~~~~~~~return b \\
~ \\
print(minimum(3, 5))
}
\bigskip
\begin{itemize}
\item Příkaz {\bf return} ukončí vykonávání funkce a vrátí výsledek.
\item Můžeme použít i {\bf return} bez výsledku (vrátí {\bf None}).
\end{itemize}
\end{frame}
% ----------------------------------------------------------------------
\begin{frame}{Ještě o~parametrech}
{\bf Nepovinné parametry:}
\bigskip
{\tt
def stekej(n=1, zvuk="Haf!"): \\
~~~~for i in range(n): \\
~~~~~~~~print(zvuk)
}
\bigskip
{\bf Různé způsoby volání:}
\bigskip
{\tt
stekej() \\
stekej(5) \\
stekej(5, "HAF!") \\
stekej(5, zvuk="HAF!") \\
stekej(zvuk="HAF!")
}
\end{frame}
% ----------------------------------------------------------------------
\begin{frame}{Viditelnost proměnných: chyták}
{\tt
zvuk = "Kuku!" \\
kolik\_hodin = 0 \\
~ \\
def zakukej(): \\
~~~~print(zvuk) \\
~~~~kolik\_hodin += 1
}
\bigskip
\begin{itemize}
\item Funkce vidí globální proměnnou {\bf zvuk}
\item Proměnná {\bf kolik\_hodin} je ale lokální, \\
protože funkce do ní přiřazuje.
\end{itemize}
\end{frame}
% ----------------------------------------------------------------------
\begin{frame}{Viditelnost proměnných: řešení}
{\tt
zvuk = "Kuku!" \\
kolik\_hodin = 0 \\
~ \\
def zakukej(): \\
~~~~{\color{blue}global kolik\_hodin} \\
~~~~print(zvuk) \\
~~~~kolik\_hodin += 1
}
\end{frame}
% ----------------------------------------------------------------------
\end{document}
SLIDES=05-funkce.pdf
include ../Makerules
......@@ -46,10 +46,10 @@ Značení:
## Funkce (1)
- definice a volání funkcí
- nepovinné parametry
- abstrakce a modularita programů
* abstrakce a modularita programů
- lokální identifikátory a jejich viditelnost
- princip rekurze
- předávání funkcí jiným funkcím
* princip rekurze
* předávání funkcí jiným funkcím
## Knihovny I a grafika (1)
- používání knihoven, import
......@@ -59,7 +59,7 @@ Značení:
- seznamy a operace s nimi
- fronta a zásobník
- iterování přes seznam
- řezy
- řezy a přiřazování do nich
- list comprehension
- stringy
- formátování
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment