Commit 81fca84e authored by cermak's avatar cermak
Browse files

Prepare slides for the first lecture

parent d6f63dc3
Pipeline #12760 failed with stage
in 1 minute and 5 seconds
...@@ -282,3 +282,7 @@ TSWLatexianTemp* ...@@ -282,3 +282,7 @@ TSWLatexianTemp*
# option is specified. Footnotes are the stored in a file with suffix Notes.bib. # option is specified. Footnotes are the stored in a file with suffix Notes.bib.
# Uncomment the next line to have this generated file ignored. # Uncomment the next line to have this generated file ignored.
#*Notes.bib #*Notes.bib
_markdown_*
*.markdown.*
.ipynb_checkpoints/*
*.ipynb_checkpoints*
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
"name": "lualatexmk", "name": "lualatexmk",
"command": "latexmk", "command": "latexmk",
"args": [ "args": [
"-shell-escape",
"-synctex=1", "-synctex=1",
"-interaction=nonstopmode", "-interaction=nonstopmode",
"-file-line-error", "-file-line-error",
...@@ -83,5 +84,9 @@ ...@@ -83,5 +84,9 @@
], ],
"env": {} "env": {}
} }
],
"emmet.excludeLanguages": [
"markdown"
] ]
} }
\ No newline at end of file
{
"cells": [
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# %load first.py\n",
"i = 1\n",
"while i <= 10:\n",
" print(i)\n",
" i += 1"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# %load first-even.py\n",
"i = 1\n",
"while i <= 10:\n",
" if i%2 == 0:\n",
" print(i)\n",
" i += 1\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# %load first-input.py\n",
"n = int(input(\"Do kolika chceš počítat? \"))\n",
"\n",
"i = 1\n",
"\n",
"while i <= n:\n",
" if i%2 == 0:\n",
" print(i)\n",
" i += 1\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# %load first-comments.py\n",
"#!/usr/bin/env python3\n",
"\n",
"# Nejprve zjistíme, do kolika počítat\n",
"n = int(input(\"Do kolika chceš počítat? \"))\n",
"\n",
"# Aktuální číslo\n",
"i = 1\n",
"\n",
"while i <= n: # Ještě pokračovat?\n",
" if i%2 == 0: # Je číslo sudé?\n",
" print(i)\n",
" i += 1 # Další, prosím!\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# %load euclid.py\n",
"a = 10\n",
"b = 15\n",
"while a != b:\n",
" if b > a:\n",
" b = b - a\n",
" else:\n",
" a = a - b\n",
"print(a)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# %load euclid-fast.py\n",
"while b:\n",
" a, b = b, a % b\n",
"print(a)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# %load ciferny-soucet.py\n",
"#!/usr/bin/env python3\n",
"# Počítání ciferného součtu\n",
"\n",
"n = int(input())\n",
"soucet = 0\n",
"\n",
"while n > 0:\n",
" cislice = n % 10\n",
" soucet += cislice\n",
" n = n // 10\n",
"\n",
"print(soucet)\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# %load zadavani-cislic.py\n",
"#!/usr/bin/env python3\n",
"# Skládáme číslo po číslicích\n",
"\n",
"print(\"Zadávej číslice, ukonči -1:\")\n",
"n = 0\n",
"\n",
"while True:\n",
" cislice = int(input())\n",
" if cislice < 0:\n",
" break # Vyskočíme z cyklu\n",
" n = 10*n + cislice\n",
"\n",
"print(n)\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.6"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
\documentclass{beamer} \documentclass{beamer}
\input ../slidemac.tex \input ../slidemac.tex
\title[NMIN111]{Programování 1: Úvod do Pythonu} \title[NMIN111]{Programování 1: Úvod do Pythonu}
\begin{document} \begin{document}
\begin{frame} \maketitle
\titlepage
% ----------------------------------------------------------------------
\begin{markdown}
%%begin novalidate
### Úvodní informace
- Web cvičení: [cermak.science/teaching/p1m/](https://cermak.science/teaching/p1m/)
- Podmínky zápočtu: 70/120 bodů v ReCodExu \pause
- Konzultace:
- slack (nejrychlejší)
- mail (klasika)
- zoom (možno si domluvit konzultaci),
- osobní setkání (max 2 naráz, kancelář mám v Troji)
\end{frame}
### Programování = psaní algoritmů
- *Co je Algoritmus?* **Návod na dosažení výsledku.**
- Příklad: Euklidův algoritmus (=nalezení **N**ějvětšího **S**polečného **D**ělitele)
- Vychází z tvrzení $NSD(u, v) = NSD(v, u – qv)$ \pause
- **Návod pro matfyzáka**: *Největší společný dělitel dvou přirozených čísel nalezneme tak, že dokud jsou obě různá, odečítáme menší od většího.* \pause
- **Návod pro opice**: *Vidíš 2 hromady kamenů. Vezmi z té větší tolik, kolik je v té menší a zahoď je. Opakuj dokud není v obou stejně.* \pause
- **Návod pro procesor Z80**: *B8C83803 9018F94F 78914779 18F2* \pause
\setkeys{Gin}{width=.75\linewidth}
![exampleimage](asm-z80.png)
\end{frame}
### Programovací jazyky
- Strojový kód je pro člověka nečitelný
- Závisí na procesoru
- Programovací jazyk je čitelný, *překladač* ho zkompiluje do zdrojového kódu
- Dynamické programovací jazyky - překládají se za běhu \pause
**Python**
- Snadno čitelný kód
- Populární ve vědě, AI, statistice
- Mnoho dostupných knihoven
\end{frame}
%%novalidate
\end{markdown}
% ----------------------------------------------------------------------
\begin{frame}{Euklidův algoritmus v Pythonu}
\py{from math import gcd\\gcd(15,10)}{5}
\={Na konci dnešní hodiny to budete umět naprogramovat bez vestavěné funkce.}
\end{frame} \end{frame}
% ---------------------------------------------------------------------- % ----------------------------------------------------------------------
...@@ -161,6 +219,19 @@ Prvni řádek pod Linuxem říká, čím se má soubor spustit. ...@@ -161,6 +219,19 @@ Prvni řádek pod Linuxem říká, čím se má soubor spustit.
\end{frame} \end{frame}
% ----------------------------------------------------------------------
\begin{frame}{Náš druhý program: Euklidův algoritmus}
\pycode{euclid.py}
Trocha Python magic:
\pycode{euclid-fast.py}
\end{frame}
% ---------------------------------------------------------------------- % ----------------------------------------------------------------------
\end{document} \end{document}
while b:
a, b = b, a % b
print(a)
\ No newline at end of file
a = 10
b = 15
while a != b:
if b > a:
b = b - a
else:
a = a - b
print(a)
\ No newline at end of file
...@@ -3,7 +3,18 @@ ...@@ -3,7 +3,18 @@
\usepackage{palatino} \usepackage{palatino}
\usepackage{verbatim} \usepackage{verbatim}
\usepackage{minted} \usepackage{minted}
%% Load the markdown package
\usepackage[citations,footnotes,definitionLists,hashEnumerators,smartEllipses,tightLists=false,pipeTables,tableCaptions,hybrid]{markdown}
%%begin novalidate
\markdownSetup{rendererPrototypes={
link = {\href{#2}{#1}},
headingOne = {\section{#1}},
headingTwo = {\subsection{#1}},
headingThree = {\begin{frame}\frametitle{#1}},
headingFour = {\begin{block}{#1}},
horizontalRule = {\end{block}}
}}
%%end novalidate
\usetheme{CambridgeUS} \usetheme{CambridgeUS}
\usecolortheme{seagull} \usecolortheme{seagull}
......
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