Commit 1458798f authored by Mareš Martin's avatar Mareš Martin
Browse files

01: První program

parent e598b583
\documentclass{beamer}
\usepackage[utf8]{inputenc}
\usepackage[czech]{babel}
\usepackage{palatino}
\usepackage{verbatim}
\usetheme{Warsaw}
\title{Programování 1: Úvod do Pythonu}
\author[Martin Mareš]{Martin Mareš\\\texttt{mj@ucw.cz}}
......@@ -15,12 +17,16 @@
\titlepage
\end{frame}
\def\py#1#2#3{%
{\tt\color{black}>>> \color{blue}#1}\\%
\def\>{\color{black}>>> \color{blue}}
\def\=#1{{\color{teal}#1}\endgraf\smallskip}
\def\py#1#2{%
\def\tmp{#1}\ifx\tmp\empty\else
{\tt\def\\{\hfil\break\>}\>#1}\\%
\fi
\def\tmp{#2}\ifx\tmp\empty\else
{\tt\color{red}#2}\\%
\def\tmp{#3}\ifx\tmp\empty\else
\smallskip
{\color{teal}#3}\\%
\fi
\medskip
}
......@@ -29,17 +35,17 @@
\begin{frame}{Python jako kalkulačka}
\py{1+1}{2}{}
\py{1+1}{2}
\py{2+3*4+1}{15}{}
\py{2+3*4+1}{15}
\py{2+3 * 4+1}{15}{}
\py{2+3 * 4+1}{15}
\py{(2+3)*(4+1)}{25}{}
\py{(2+3)*(4+1)}{25}
\py{2**10}{1024}{}
\py{2**10}{1024}
\py{2**100}{1267650600228229401496703205376}{}
\py{2**100}{1267650600228229401496703205376}
\end{frame}
......@@ -47,13 +53,17 @@
\begin{frame}{Desetinná čísla}
\py{1/3}{0.3333333333333333}{Výsledek je spočítán s omezenou přesností}
\={Dělení vytváří \uv{desetinná} čísla s~omezenou přesností:}
\py{1/3}{0.3333333333333333}
\py{1/3*3}{1.0}{Pozor, tohle není přesná jednička.}
\={Pozor, ne každá \uv{jednička} je rovna jedné:}
\py{1/3*3}{1.0}
\py{1/3*3 > 0}{True}{Vskutku, je o kousek větší.}
\={Vskutku, je o kousek větší:}
\py{1/3*3 > 0}{True}
\py{1/(2**100)}{7.888609052210118e-31}{Notace s mantisou a exponentem: $m\cdot10^e$.}
\={Notace s mantisou a exponentem: $m\cdot10^e$.}
\py{1/(2**100)}{7.888609052210118e-31}
\end{frame}
......@@ -61,13 +71,18 @@
\begin{frame}{Celočíselné dělení}
\py{7//3}{2}{}
\={Celočíselné dělení:}
\py{7//3}{2}
\py{7\%3}{1}{Zbytek po dělení}
\={Zbytek po dělení (modulo):}
\py{7\%3}{1}
\py{-7//3}{-3}{Zaokrouhlujeme dolů, nikoliv k nule}
\={Dělení záporného čísla zaokrouhluje dolů, nikoliv k nule:}
\py{-7//3}{-3}
\py{-(7//3)}{-2}
\py{-7\%3}{2}{Vždy platí {\tt (a//b)*b + (a\%b) = a}}
\={Vždy platí {\tt (a//b)*b + (a\%b) = a}}
\py{-7\%3}{2}
\end{frame}
......@@ -75,7 +90,100 @@
\begin{frame}{Proměnné}
\py{a=1\\b=1\\a+b}{2}{}
\={Hodnotu výrazu si můžeme pojmenovat:}
\py{a=100\\b=23\\a+b}{23}
\={Obsah proměnné jde měnit:}
\py{soucet=0\\soucet=soucet+10\\soucet=soucet+3\\soucet}{13}
\={Zkrácený zápis:}
\py{soucet+=1\\soucet}{14}
\end{frame}
% ----------------------------------------------------------------------
\begin{frame}{Matematické funkce}
\={Matematická knihovna:}
\py{import math\\math.pi}{3.141592653589793}
\py{math.sin(math.pi / 3)}{0.8660254037844386}
\={Voláme o pomoc:}
\py{help(math.sin)\\help(math)}{}
\={Místo {\tt math.sin} můžeme psát prostě {\tt sin}:}
\py{from math import *\\sin(0)}{}
\end{frame}
% ----------------------------------------------------------------------
\begin{frame}{Klademe Pythonu otázky}
\py{5**7 > 7**5}{True}
\py{cos(0) < 0}{False}
\py{0.8 <= sin(pi/3) <= 0.9}{True}
\py{pi>3 and pi<4}{True}
\py{x>0 or not x>0}{True}
\py{1 == 1}{True}
\py{1 != 2}{True}
\end{frame}
% ----------------------------------------------------------------------
\begin{frame}{Náš první program: počítáme od 1 do 10}
\verbatiminput{first.py}
\bigskip
Odsazování je povinné, udává blokovou strukturu programu.
Pak je jasné, které příkazy jsou uvnitř cyklu, a~které už za ním.
\end{frame}
% ----------------------------------------------------------------------
\begin{frame}{Náš první program: vypisujeme jen sudá čísla}
\verbatiminput{first-even.py}
\end{frame}
% ----------------------------------------------------------------------
\begin{frame}{Náš první program: zeptáme se, do kolika počítat}
\verbatiminput{first-input.py}
\bigskip
V~uvozovkách se zapisují řetězce (o~nich později).
Funkce {\tt input()} načte řetězec, {\tt int()} ho převede na číslo.
\end{frame}
% ----------------------------------------------------------------------
\begin{frame}{Náš první program: ještě trocha komentářů}
\verbatiminput{first-comments.py}
\bigskip
Od {\tt\#} do konce řádku se vše ignoruje.
Prvni řádek pod Linuxem říká, čím se má soubor spustit.
\end{frame}
......
#!/usr/bin/env python3
# Nejprve zjistíme, do kolika počítat
print("Do kolika chceš počítat?")
n = int(input())
# Aktuální číslo
i = 1
while i <= n: # Ještě pokračovat?
if i%2 == 0: # Je číslo sudé?
print(i)
i += 1 # Další, prosím!
i = 1
while i <= 10:
if i%2 == 0:
print(i)
i += 1
print("Do kolika chceš počítat?")
n = int(input())
i = 1
while i <= n:
if i%2 == 0:
print(i)
i += 1
i = 1
while i <= 10:
print(i)
i += 1
export SHELL=/bin/bash
%.pdf: %.tex
%.pdf: %.tex $(wildcard *.py)
pdflatex $<
clean::
......
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