diff --git a/03-seznamy/03-seznamy.tex b/03-seznamy/03-seznamy.tex new file mode 100644 index 0000000000000000000000000000000000000000..b7cae73af6ebd6db234aabbc563c988587824ae9 --- /dev/null +++ b/03-seznamy/03-seznamy.tex @@ -0,0 +1,203 @@ +\documentclass{beamer} +\usepackage[utf8]{inputenc} +\usepackage[czech]{babel} +\usepackage{palatino} +\usepackage{verbatim} +\usetheme{Warsaw} +\title{Programování 1: Seznamy} +\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} + +\begin{frame} +\titlepage +\end{frame} + +\input ../slidemac.tex + +% ---------------------------------------------------------------------- + +\begin{frame}{Seznamy a jejich indexování} + +\py{% +cisla = [11, 22, 33, 44, 55] +}{% +} + +\py{% +cisla[0] +}{% +11 +} + +\py{% +cisla[2] +}{% +33 +} + +\py{% +cisla[-1] +}{% +55 +} + +\py{% +len(cisla) +}{% +5 +} + +\end{frame} + +% ---------------------------------------------------------------------- + +\begin{frame}{Vnořené seznamy} + +\py{% +matice = [[11, 12, 13], [21, 22, 23]] +}{% +} + +\py{% +matice[0] +}{% +[11, 12, 13] +} + +\py{% +matice[0][2] +}{% +13 +} + +\end{frame} + +% ---------------------------------------------------------------------- + +% \begin{frame}{Řetězec se také chová jako seznam} +% +% \py{% +% slovo = "mňau"\\ +% len(slovo) +% }{% +% 4 +% } +% +% \py{% +% slovo[1] +% }{% +% 'ň' +% } +% +% \py{% +% slova = ["mňau", "haf", "kvák"]\\ +% slova[1] +% }{% +% 'haf' +% } +% +% \end{frame} + +% ---------------------------------------------------------------------- + +\begin{frame}{Cyklus for} + +\py{% +slova = ["mňau", "haf", "kvák"]\\ +for x in slova:\. +\>print(x) +}{% +mňau\\ +haf\\ +kvák +} + +\py{% +for x in range(1, 5):\. +\>print(x) +}{% +1\\ +2\\ +3\\ +4 +} + +\py{% +for i in range(len(x)):\. +\>print(x[i]) +}{% +} + +\end{frame} + +% ---------------------------------------------------------------------- + +\begin{frame}{Operace se seznamy} + +\py{% +slova = ["mňau", "haf", "kvák"]\\ +slova.append("íá")\\ +slova +}{% +['mňau', 'haf', 'kvák', 'íá'] +} + +\py{% +[1, 2] + [3, 4, 5] +}{% +[1, 2, 3, 4, 5] +} + +\py{% +[0] * 5 +}{% +[0, 0, 0, 0, 0] +} + +\end{frame} + +% ---------------------------------------------------------------------- + +\begin{frame}{Chyták: proměnné na seznamy jen odkazují!} + +\py{% +x = [1, 2, 3]\\ +y = x\\ +x[2] = 9\\ +y +}{% +[1, 2, 9] +} + +\py{% +m = [[0] * 4] * 3\\ +m +}{% +[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]] +} + +\py{% +m[0][0] = 1\\ +m +}{% +[[1, 0, 0, 0], [1, 0, 0, 0], [1, 0, 0, 0]] +} + +\end{frame} + +% ---------------------------------------------------------------------- + +\begin{frame}{Vypsání čísel pozpátku} + +\verbatiminput{seznam-pozpatku.py} + +\end{frame} + +% ---------------------------------------------------------------------- + +\end{document} diff --git a/03-seznamy/Makefile b/03-seznamy/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..b2afdc50c66ea0d28a9ee42a40f0d96d19298996 --- /dev/null +++ b/03-seznamy/Makefile @@ -0,0 +1,3 @@ +SLIDES=03-seznamy.pdf + +include ../Makerules diff --git a/03-seznamy/fibonacci.py b/03-seznamy/fibonacci.py new file mode 100755 index 0000000000000000000000000000000000000000..cc585bdffb98c70264671e9a3859e2eb61bbc647 --- /dev/null +++ b/03-seznamy/fibonacci.py @@ -0,0 +1,10 @@ +#!/usr/bin/env python3 +# Spočítá prvních N Fibonacciho čísel (N>=2) + +N = int(input()) +fib = [0, 1] + +for i in range(N-2): + fib.append(fib[-1] + fib[-2]) + +print(fib) diff --git a/03-seznamy/seznam-pozpatku.py b/03-seznamy/seznam-pozpatku.py new file mode 100755 index 0000000000000000000000000000000000000000..5cf5a32b1836043cb47781646c694a59a4426dee --- /dev/null +++ b/03-seznamy/seznam-pozpatku.py @@ -0,0 +1,14 @@ +#!/usr/bin/env python3 +# Načítá čísla ze vstupu ukončená -1, +# vypíše je pozpátku + +seznam = [] + +while True: + x = int(input()) + if x == -1: + break + seznam.append(x) + +for i in range(len(seznam)): + print(seznam[-i-1]) diff --git a/03-seznamy/sito.py b/03-seznamy/sito.py new file mode 100755 index 0000000000000000000000000000000000000000..07bcea69525e3a8095267b1b91bdc7bb47d613a3 --- /dev/null +++ b/03-seznamy/sito.py @@ -0,0 +1,11 @@ +#!/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