Základy programování Martin Hejtmánek hejtmmar@fjfi.cvut.cz http://kmlinux.fjfi.cvut.cz/ hejtmmar Počítačový kurs Univerzity třetího věku na FJFI ČVUT Pokročilý 21. května 2009
Dnešní přednáška 1 Počátky počítacích strojů 2 Počítače nulté generace 3 Myšlenky vedoucí k moderním počítačům 4 Programovací jazyky
První počítací stroje Abakus Čína před 5000 lety Mechanická sčítačka Blaise Pascal 1649 Vylepšení sčítačky Wilhelm Leibniz 1694
Děrné štítky a jejich využití Nastavení tkalcovského stavu Joseph-Marie Jacquard 1805 Sčítání lidu Hermann Hollerith 1889
První počítač Parní počítač 1833 Charles Babbage Analytický stroj 1848 První univerzální stroj Možnost programování
Počítače nulté generace Mechanické stroje, relé Mohutný rozvoj za války šifrování Vyluštění Enigmy Alan Turing + Gordon Welchman 1936 Konrad Zuse 1944 ENIAC Electronic Numerator, Integrator, Analyzer and Calculator
Alan Turing Zakladatel moderní informatiky Významný vědecký přínos Teorie vyčíslitelnosti Turingův stroj Turingův test
John von Neumann Tvůrce teorie her S A. Einsteinem založil Univerzitu v Princetonu Zabýval se jadernou fyzikou Von Neumannova koncepce
ENIAC Electronic Numerator, Integrator, Analyzer and Calculator Pro potřeby armády Založen na Turingových myšlenkách Velká spotřeba a rozměry
Moderní programovací jazyky S příchodem tranzistorů a diod, vylepšení paměti Soubory elementárních instrukcí Fortran, Algol, Lisp, Basic Pascal Navržen pro výukové účely 1970
Moderní programovací jazyky Tvorba programu Přeměna vstupních dat na výstupní Snaha o obecnost Prvky, zkterých je program složen Elementární instrukce a příkazy Logické výrazy Proměnné Řídící struktury
Moderní programovací jazyky Proměnné Šupĺıčky na data Zástupné symboly Zajišt ují obecnost Typy co se vkládá do šupĺıčku Celá čísla (Integer) Desetinná čísla (Real, Float) Písmena (Char) Řetězce (String) Logické hodnoty (Boolean) V Pascalu nutno proměnné nejdřív deklarovat (říct počítači, jak se jmenují a jakého jsou typu)
Moderní programovací jazyky Příkazy, funkce Dávají povel k vykonání operace Např. do proměnné x ulož trojku Funkce = podprogram Zápis: název funkce(vstupní parametry);
Moderní programovací jazyky Logické výrazy Matematické výroky, pravdivé nebo nepravdivé Např. Je v proměnné x uložena hodnota větší než 3? Pravda = true, Nepravda = false Důležité pro větvení programů V Pascalu rozdíl mezi přiřazením a porovnáním a := 3 Do a ulož trojku a = 3 Je v a uložena trojka?
Moderní programovací jazyky Řídící struktury Ovlivňují chod programu Určují, které příkazy a kdy se vykonají Podmíněné příkazy Jestli je v x trojka, vypiš na obrazovku AHOJ if x = 3 then write( AHOJ );
Moderní programovací jazyky Řídící struktury Cyklus for opakuje skupinu příkazů n-krát Desetkrát za sebou napiš MARTIN for i := 1 to 10 do write( MARTIN ); Cyklus while opakuje skupinu příkazů dokud je splněna podmínka Dokud je x menší než 5, zvyšuj x o jedničku while x < 5 do x := x + 1;
Algoritmus, vlastnosti algoritmu Návod, jak provést určitou operaci Složen z jednoduchých a jednoznačných úkonů Vlastnosti algoritmu 1 Je elementární 2 Je determinovaný 3 Je konečný 4 Je rezultativní 5 Je hromadný (obecný)
Algoritmus, příklad Řešení kvadratické rovnice ax 2 + bx + c = 0 1 Načti čísla a, b, c 2 Vypočti D = b 2 4ac 3 Pokud D 0 1 Spočti x 1 = b+ D 2a 2 Spočti x 2 = b D 2a 4 Pokud D < 0 1 Spočti x 1 = b+i D 2a 2 Spočti x 2 = b i D 2a 5 Vypiš čísla x 1, x 2