diff --git a/04-trideni/04-trideni.tex b/04-trideni/04-trideni.tex
new file mode 100644
index 0000000000000000000000000000000000000000..7abef0ca4933a6c05625e8282f2b4109d853d6ad
--- /dev/null
+++ b/04-trideni/04-trideni.tex
@@ -0,0 +1,74 @@
+\documentclass{beamer}
+\usepackage[utf8]{inputenc}
+\usepackage[czech]{babel}
+\usepackage{palatino}
+\usepackage{verbatim}
+\usetheme{Warsaw}
+\title{Programování 1: Třídění a vyhledávání}
+\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}{Binární vyhledávání v setříděném seznamu}
+
+\verbatiminput{binarni-hledani-raw.py}
+
+\end{frame}
+
+% ----------------------------------------------------------------------
+
+\begin{frame}{Intermezzo: Formátovací řetězce}
+
+\py{%
+x=1\\
+y=2\\
+f"\{x\},\{y\}"
+}{%
+'1,2'
+}
+
+\py{%
+f"\{x:5\} \{y:05\}"
+}{%
+'~~~~1 00002'
+}
+
+\py{%
+z=1/3\\
+f"\{z:.6\}"
+}{%
+'0.333333'
+}
+
+\py{%
+f"\{1/3\}"
+}{%
+'0.3333333333333333'
+}
+
+\end{frame}
+
+% ----------------------------------------------------------------------
+
+\begin{frame}{Třídění výběrem}
+
+\verbatiminput{trideni-vyberem.py}
+
+\end{frame}
+
+% ----------------------------------------------------------------------
+
+\end{document}
diff --git a/04-trideni/Makefile b/04-trideni/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..afa399dd833d5242d033bd2f1fae826e6a0f0cd0
--- /dev/null
+++ b/04-trideni/Makefile
@@ -0,0 +1,3 @@
+SLIDES=04-trideni.pdf
+
+include ../Makerules
diff --git a/04-trideni/binarni-hledani-print.py b/04-trideni/binarni-hledani-print.py
new file mode 100644
index 0000000000000000000000000000000000000000..36708512a422ee8d903ebd54abd817cad91d5a7c
--- /dev/null
+++ b/04-trideni/binarni-hledani-print.py
@@ -0,0 +1,12 @@
+while l <= p:
+    stred = (l+p) // 2
+    print(f"[{l},{p}] {kde[stred]}")
+    if kde[stred] == co:   # Našli jsme
+        print(f"Nalezeno na pozici {stred}")
+        break
+    elif kde[stred] < co:
+        l = stred + 1      # Jdeme doprava
+    else:
+        p = stred - 1      # Jdeme doleva
+else:
+    print("Kde nic, tu nic")
diff --git a/04-trideni/binarni-hledani-raw.py b/04-trideni/binarni-hledani-raw.py
new file mode 100644
index 0000000000000000000000000000000000000000..a656a6fe6892dcc3e791a64a4c7c4e0ddc142f75
--- /dev/null
+++ b/04-trideni/binarni-hledani-raw.py
@@ -0,0 +1,17 @@
+kde = [11, 22, 33, 44, 55, 66, 77, 88]
+co = int(input())
+
+l = 0              # Hledáme v intervalu [l,p]
+p = len(kde) - 1
+
+while l <= p:
+    stred = (l+p) // 2
+    if kde[stred] == co:   # Našli jsme
+        print("Nalezeno na pozici", stred)
+        break
+    elif kde[stred] < co:
+        l = stred + 1      # Jdeme doprava
+    else:
+        p = stred - 1      # Jdeme doleva
+else:
+    print("Kde nic, tu nic")
diff --git a/04-trideni/binarni-hledani.py b/04-trideni/binarni-hledani.py
new file mode 100755
index 0000000000000000000000000000000000000000..41d118e39b2fe65af7ce668ec418ffc873f96dd8
--- /dev/null
+++ b/04-trideni/binarni-hledani.py
@@ -0,0 +1,21 @@
+#!/usr/bin/env python3
+# Binární vyhledávání v setříděném seznamu
+
+kde = [11, 22, 33, 44, 55, 66, 77, 88]
+co = int(input())
+
+# Hledané číslo se nachazí v intervalu [l, p]
+l = 0
+p = len(kde) - 1
+
+while l <= p:
+    stred = (l+p) // 2
+    if kde[stred] == co:   # Našli jsme
+        print("Nalezeno na pozici", stred)
+        break
+    elif kde[stred] < co:
+        l = stred + 1      # Jdeme doprava
+    else:
+        p = stred - 1      # Jdeme doleva
+else:
+    print("Kde nic, tu nic")
diff --git a/04-trideni/trideni-vyberem.py b/04-trideni/trideni-vyberem.py
new file mode 100755
index 0000000000000000000000000000000000000000..6fb51340bb1dbe1e40894533219ef52a3f93471d
--- /dev/null
+++ b/04-trideni/trideni-vyberem.py
@@ -0,0 +1,14 @@
+#!/usr/bin/env python3
+# Třídění opakovaným výběrem minima
+
+x = [31, 41, 59, 26, 53, 58, 97]
+
+n = len(x)
+for i in range(n):
+    pmin = i
+    for j in range(i+1, n):
+        if x[j] < x[pmin]:
+            pmin = j
+    x[i], x[pmin] = x[pmin], x[i]
+
+print(x)
diff --git a/SYLLABUS b/SYLLABUS
index 38ff9729f0b0cd56ad29f97889bbaaf32ea714f4..85aa0d82818a07acce8a3bcc110cdd8c2c183ee4 100644
--- a/SYLLABUS
+++ b/SYLLABUS
@@ -62,6 +62,7 @@ Značení:
 - řezy
 - list comprehension
 - stringy
+- formátování
 # slévání setříděných posloupností
 
 ## Datové struktury (1)