Commit 93bdf297 authored by cermak's avatar cermak
Browse files

Lesson 4

parent afeb6f66
Pipeline #16200 failed with stage
in 3 minutes and 5 seconds
\documentclass{beamer} \documentclass{beamer}
\title{Programování 1: Funkce}
\input ../slidemac.tex \input ../slidemac.tex
\title[NMIN111]{Programování 1: Funkce}
\begin{document} \begin{document}
\maketitle
\shorthandoff{"}
% ----------------------------------------------------------------------
\begin{markdown}
%%begin novalidate
### Domácí úkol
*Vypsat prvočísla do N*
U většiny z vás selhali testy 4 a 5 (5-6 ciferná čísla)
Proč?
- cyklus 1-N není problém
- vnořený cyklus 1-N už je problém
Jak optimalizovat řešení?
\begin{frame}
\titlepage
\end{frame} \end{frame}
%%novalidate
\end{markdown}
\shorthandoff{"}
% ----------------------------------------------------------------------
\begin{frame}{Nejčastější kód}
\pycode{prvocisla.py}
\end{frame}
% ----------------------------------------------------------------------
\begin{markdown}
%%begin novalidate
### Erastothenovo síto
Jak optimalizovat řešení?
\setkeys{Gin}{width=.7\linewidth}
![sieve](sieve1.png)
\end{frame}
### Erastothenovo síto
Jak optimalizovat řešení?
\setkeys{Gin}{width=.7\linewidth}
![sieve](sieve2.png)
\end{frame}
### Erastothenovo síto
Jak optimalizovat řešení?
\setkeys{Gin}{width=.7\linewidth}
![sieve](sieve3.png)
\end{frame}
### Erastothenovo síto
Jak optimalizovat řešení?
\setkeys{Gin}{width=.7\linewidth}
![sieve](sieve4.png)
\end{frame}
### Erastothenovo síto
Jak optimalizovat řešení?
\setkeys{Gin}{width=.7\linewidth}
![sieve](sieve5.png)
\end{frame}
%%novalidate
\end{markdown}
% ---------------------------------------------------------------------- % ----------------------------------------------------------------------
\begin{frame}{Definice funkce} \begin{frame}{Definice funkce}
{\tt \pycode{fce1.py}
def stekej(): \\
~~~~print("Haf!") \\
~ \\
stekej() \\
stekej()
}
\bigskip \bigskip
...@@ -40,13 +118,7 @@ stekej() ...@@ -40,13 +118,7 @@ stekej()
\begin{frame}{Funkce s parametrem} \begin{frame}{Funkce s parametrem}
{\tt \pycode{fce2.py}
def stekej(n): \\
~~~~for i in range(n): \\
~~~~~~~~print("Haf!") \\
~ \\
stekej(5)
}
\bigskip \bigskip
...@@ -64,15 +136,7 @@ stekej(5) ...@@ -64,15 +136,7 @@ stekej(5)
\begin{frame}{Funkce s výsledkem} \begin{frame}{Funkce s výsledkem}
{\tt \pycode{fce3.py}
def minimum(a, b): \\
~~~~if a < b: \\
~~~~~~~~return a \\
~~~~else: \\
~~~~~~~~return b \\
~ \\
print(minimum(3, 5))
}
\bigskip \bigskip
\bigskip \bigskip
...@@ -89,29 +153,7 @@ print(minimum(3, 5)) ...@@ -89,29 +153,7 @@ print(minimum(3, 5))
\begin{frame}{Ještě o~parametrech} \begin{frame}{Ještě o~parametrech}
{\bf Nepovinné parametry:} \pycode{fce4.py}
\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} \end{frame}
...@@ -119,14 +161,7 @@ stekej(zvuk="HAF!") ...@@ -119,14 +161,7 @@ stekej(zvuk="HAF!")
\begin{frame}{Viditelnost proměnných: chyták} \begin{frame}{Viditelnost proměnných: chyták}
{\tt \pycode{fce5.py}
zvuk = "Kuku!" \\
kolik\_hodin = 0 \\
~ \\
def zakukej(): \\
~~~~print(zvuk) \\
~~~~kolik\_hodin += 1
}
\bigskip \bigskip
...@@ -142,18 +177,28 @@ def zakukej(): \\ ...@@ -142,18 +177,28 @@ def zakukej(): \\
\begin{frame}{Viditelnost proměnných: řešení} \begin{frame}{Viditelnost proměnných: řešení}
{\tt \pycode{fce6.py}
zvuk = "Kuku!" \\
kolik\_hodin = 0 \\
~ \\
def zakukej(): \\
~~~~{\color{blue}global kolik\_hodin} \\
~~~~print(zvuk) \\
~~~~kolik\_hodin += 1
}
\end{frame} \end{frame}
% ---------------------------------------------------------------------- % ----------------------------------------------------------------------
\begin{frame}{Úkoly na hodinu}
Napište funkci {\tt je\_sude(n)}, která vrátí True - False
\bigskip
Napište funkci {\tt kolik\_sudych(list)}, která vrátí počet sudých čísel (použijte předchozí funkci)
\bigskip
Napište funkci {\tt vyber\_suda(list)}, která list jen se sudými čísly
\bigskip
Napište funkci {\tt kvadraticka(a, b, c)}, která vrací list (0-2) reálných řešení.
\end{frame}
\end{document} \end{document}
def stekej():
print("Haf!")
stekej()
stekej()
\ No newline at end of file
def stekej(n):
for i in range(n):
print("Haf!")
stekej(5)
\ No newline at end of file
def minimum(a, b):
if a < b:
return a
else:
return b
print(minimum(3, 5))
\ No newline at end of file
# Nepovinné parametry
def stekej(n=1, zvuk="Haf!"):
for i in range(n):
print(zvuk)
# Různé způsoby volání:
stekej()
stekej(5)
stekej(5, "HAF!")
stekej(5, zvuk="HAF!")
stekej(zvuk="HAF!")
\ No newline at end of file
zvuk = "Kuku!"
kolik_hodin = 0
def zakukej():
print(zvuk)
kolik_hodin += 1
zvuk = "Kuku!"
kolik_hodin = 0
def zakukej():
global kolik_hodin
print(zvuk)
kolik_hodin += 1
\ No newline at end of file
#!/usr/bin/env python3 #!/usr/bin/env python3
def je_sude(x:int):
return x % 2 == 0
def kolik_sudych(seznam): def kolik_sudych(seznam):
c = 0 c = 0
for x in seznam: for x in seznam:
if x % 2 == 0: if je_sude(x):
c += 1 c += 1
return c return c
def vyber_suda(seznam): def vyber_suda(seznam):
vystup = [] vystup = []
for x in seznam: for x in seznam:
if x % 2 == 0: if je_sude(x):
vystup.append(x) vystup.append(x)
return vystup return vystup
# triková řešení
def vyber_suda2(seznam):
return [x for x in seznam if je_sude(x)]
def kolik_sudych2(seznam):
return len(vyber_suda(seznam))
\ No newline at end of file
#!/usr/bin/env python3
# Eratosthenovo síto: najde prvočísla mezi 1 a N
N = int(input())
A = [True] * (N+1)
for i in range(2, N+1):
if A[i]:
print(i)
for j in range(2*i, N+1, i):
A[j] = False
#!/usr/bin/env python3
def fibonacci(n):
if n <= 1:
return n
a, b = 0, 1
for i in range(2, n+1):
a, b = b, a+b
return b
#!/usr/bin/env python3
def min2(x, y):
if x < y:
return x
else:
return y
def min3(x, y, z):
return min2(min2(x, y), z)
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