Počítač za mě počítá

Z Základy informatiky pro střední školy
Přejít na: navigace, hledání

Programovací jazyk Python · Počítač si za mě pamatuje

ikona boxu
Co se naučíš:
  • Použít interaktivní konzoli Pythonu k základním výpočtům.

Počítač je prostě taková (mnohem) chytřejší kalkulačka. Pomocí Pythonu (stejně jako všech ostatních plnohodnotných programovacích jazyků) můžeme tuhle kalkulačku ovládat. Pojďme to vyzkoušet.

ikona boxu
Úloha: Python jako kalkulačka

Zadej do interaktivní konzole číselný výraz (třeba 7*6) a potvrď klávesou Enter. Co vidíš?

Aha! Python umí počítat.

Složitější výpočet

Zkusme něco složitějšího. Index tělesné hmotnosti (body mass index, BMI) má pomáhat při určování váhové kategorie. Počítá se jako podíl tělesné hmotnosti (v kilogramech) a druhé mocniny tělesné výšky (v metrech), vychází tedy v jednotkách [kg/m2].

ikona boxu
Úloha: Výpočet BMI

Vypočti v interaktivní konzoli svůj BMI. Pokud neznáš svou váhu nebo výšku, hodnotu odhadni.

ikona boxu
Nápověda
  • Desetinnou čárku v Pythonu zapisujeme tečkou, stejně jako většině dalších programovacích jazyků.
  • Máš potíž s výpočtem druhé mocniny? Uvědom si, co to je (a jak se počítá „ručně“).
  • Dej pozor na správné použití závorek (v programování se určení pořadí používají jen kulaté závorky, podle potřeby i několikanásobně vnořené).
  • Výsledek srovnej s vlastním hrubým odhademPříklad: když měřím skoro dva metry, bude BMI o něco vyšší, než čtvrtina hmotnosti..

Řešení

Zadej do konzole vzorec pro výpočet BMI s dosazenými hodnotami, např. 73/(1.82*1.82) a potvrď klávesou Enter.


V tabulce se můžeš podívat, do jaké kategorie tě BMI řadí. Zatím nejásej ani nepanikař, podrobněji se na výsledky podíváme později.

Kategorie Rozsah BMI (v kg/m2)
těžká podvýživa ≤ 16,5
podváha 16,5 – 18,5
ideální váha 18,5 – 25
nadváha 25 – 30
mírná obezita 30 – 35
střední obezita 35 – 40
morbidní obezita > 40

Historie příkazů

Jak by se hodnota BMI změnila, kdyby tvoje hmotnost o 5 kg klesla? Nebo vzrostla? Mohli bychom vzorec zadat znova. Lepší bude stisknout šipku nahoru . To do konzole vloží naposledy zadaný příkaz, podobně jako na mnoha kalkulačkách. Příkaz můžeš následně upravit a nechat znovu provést — zkus to! Opakovaným stiskem šipky nahoru či dolů se můžeš v historii příkazů volně pohybovat.


Chyba!

Replit error 5 div 0.png

Ukázka chyby: dělení nulou. Všimni si anglického popisu chyby na posledním řádku.

Počítač není ani vševědoucí, ani všemocný. Občas asi zadáš příkaz, který nedává smysl. V takovém případě se Python bude bránit. Zkus to! Zadej třeba výpočet 5/0. Co se stalo? Všimni si posledního řádku chybové hlášky. Napoví ti, co se Pythonu nelíbí, a v čem je tedy asi chyba. Napadnou tě další zápisy, které vyvolají chybu?

Z chybových hlášek není třeba propadat trudomyslnosti, a už vůbec není třeba si je brát osobně. Jsou prostě způsobem komunikace programátora s počítačem a často obsahují užitečné informace.

Další operace

Viděli jsme, že Python umí počítat. Můžeš si vyzkoušet i další příklady.

ikona boxu
Težší otázky
  • Jak dlouhé výrazy lze Pythonu zadat?
  • S jak vysokými čísly zvládne Python počítat?
  • S jakou přesností zvládne Python počítat?
  • Umí Python pracovat s reálnými čísly? Umí to aspoň s některými? To jistě ano, třeba s přirozenými. Umí to ale se všemi, aspoň v nějakém rozsahu?

Jak by to šlo zjistit?

ikona boxu
Poznámky pro učitele

Smyslem následujících aktivit není „naučit se operátory“. Studenti je pravděpodobně ještě využijí, takže se hodí, aby o nich věděli. Zkoumáním operátorů v interaktivní konzoli si studenti mají navyknout na práci s tím prostředím a na použití systematického analytického postupu v situaci, s jakou se běžně ve škole nesetkávají.

ikona boxu
Úloha: Co dělá operátor dvojitá hvězdička (**)?

Prozradíme, že jde o číselný operátor. Zkoumáš tedy zápisy typu 568**812.

ikona boxu
Nápověda

Promysli si systematický postup. Postupně odhaluj vlastnosti operátoru:

  • Je komutativní? Tedy, je např. 5**6 totéž co 6**5?
  • Jak se snáší s nulou, jedničkou, minus jedničkou, dalšími zápornými čísly, desetinnými čísly?
  • Když se zvětšuje první operand(číslo vlevo od operátoru), co se děje s výsledkem? Jak je to s druhým operandem(číslo vpravo od operátoru; operand je to, s čím pracuje operátor)?
  • Když tě napadne, co je operátor zač, svou myšlenku ověř.
  • Výsledky pokusů shromažďuj do přehledné tabulky, ať si děláš celkový přehled.

Řešení

Dvojitá hvězdička (**) je operátorem mocnění. Např. 34 se zapíše jako 3**4 a dá výsledek 81.
S pomocí dvojité hvězdičky můžeš upravit zadání výpočtu BMI (např. na 73/(1.82**2)). Výhoda je, že při změně výšky stačí upravit jedno místo ve zdrojovém kódu, čímž se snižuje pravděpodobnost chyby.

ikona boxu
Úloha: Co dělá operátor procento (%)?

Opět se jedná o číselný operátor. Zkoumáš tedy zápisy typu 812%568.

ikona boxu
Nápověda

Postupuj obdobně jako v předchozím případě.


Řešení

Procento (%) je operátor zbytku po celočíselném dělení, tzv. modulo. Dělení je totiž operace, která dává dvě výsledné hodnoty: podíl a zbytek.


ikona boxu
Ještě víc operátorů

Baví tě zkoumání neznámých operátorů? Podívej se také na operátory <<, >>, |, & a ^. Je to o něco lehčí, když se zaměříš na nezáporná celá čísla. Pak se můžeš podívat i na operátor ~, který pracuje s jediným číslem, zadej tedy třeba ~12. Co vlnka dělá zjistíš snadno — ale dokážeš vysvětlit, k čemu je takový operátor dobrý? Nápověda je, že vlnka patří do stejné skupiny jako předchozí operátory, a že souvisí s reprezentací záporných celých čísel v počítači.

Jestli myslíš, že se ti tyto operátory budou ještě hodit, někam si to poznamenej, ať si je nemusíš pamatovat.


Další funkce

Zatím jsme si ukázali jen základní operátory. Počítat už se ale učíš aspoň desátým rokem, takže se může stát, že se základem nevystačíš. Můžeš potřebovat například goniometrické funkce. Pokročilejší matematické výpočty umožňuje modul math. Modul si představ jako hotovou sadu nástrojů připravenou k použití. Stačí si o ně říct.

Postupně do konzole zadej tyto řádky:

import math
math.cos(0)
math.sqrt(1024)
math.sqrt(3**2 + 4**2)

První řádek Pythonu říká, že budeme chtít používat složitější matematiku. Pak už můžeme používat konkrétní funkce. Před jejich názvem je vždy math., aby Python věděl, že je má hledat právě v modulu math. Můžeme tedy ověřit, že i v Pythonu platí cos(0) = 1. Zjistíš, co počítá funkce math.sqrt? Poradíme, že její zkratka pochází z anglického square root.

Moduly(nazývané někdy také balíčky nebo knihovny atp.) jsou velmi praktické. Umožňují opakovaně využít výsledky už jednou vynaložené práce. Díky nim není třeba psát programy pokaždé znovu „od nuly“. S některými dalšími zajímavými moduly se ještě seznámíme.

Proč je to tolik matematiky?

Připomeňme, že ten přístroj se jmenuje počítač. Kromě toho je počítání v konzoli někdy praktické - můžeš to v životě uplatnit, i když jsi v programování teprve na začátku. Někdy je sice praktičtější třeba tabulkový procesor, ale čím je výpočet složitější, tím víc potřebujeme možnost jeho automatizace, a tím větší je také pravděpodobnost, že tabulkovému procesoru dojde dech.


Shrnutí

ikona boxu
  • Konzoli Pythonu lze využít k pohodlnému počítání.
  • Python umí základní čtyři operace (+,-, *, /).
  • Priority operací lze určit kulatými závorkami.
  • Desetinná místa oddělujeme tečkou.
  • Operátor % počítá zbytek po dělení, výsledkem 32%15 je 2.
  • K pokročilejším výpočtům využijeme modul math. Načteme jej příkazem import math. Poté můžeme používat konkrétní funkce, např. math.sqrt().
  • V historii příkazů se pohybujeme šipkami.