Z´aklady programov´an´ı Martin Hejtm´anek
[email protected] http://kmlinux.fjfi.cvut.cz/∼hejtmmar ˇ Poˇ c´ıtaˇ cov´ y kurs Univerzity tˇret´ıho vˇ eku na FJFI CVUT Pokroˇ cil´ y
21. kvˇetna 2009
Dneˇsn´ı pˇredn´aˇska 1 2 3 4
Poˇc´atky poˇc´ıtac´ıch stroj˚ u Poˇc´ıtaˇce nult´e generace Myˇslenky vedouc´ı k modern´ım poˇc´ıtaˇc˚ um Programovac´ı jazyky
http://pcu3v.fjfi.cvut.cz
Prvn´ı poˇc´ıtac´ı stroje • Abakus ˇ ına – pˇred 5000 lety • C´ • Mechanick´ a sˇc´ıtaˇcka • Blaise Pascal – 1649 • Vylepˇsen´ı sˇ c´ıtaˇcky • Wilhelm Leibniz – 1694
http://pcu3v.fjfi.cvut.cz
Dˇern´e ˇst´ıtky a jejich vyuˇzit´ı • Nastaven´ı tkalcovsk´ eho stavu • Joseph-Marie Jacquard – 1805 • Sˇ c´ıt´an´ı lidu • Hermann Hollerith – 1889
http://pcu3v.fjfi.cvut.cz
Prvn´ı poˇc´ıtaˇc • Parn´ı poˇ c´ıtaˇc – 1833 • Charles Babbage • Analytick´ y stroj – 1848 • Prvn´ı univerz´ aln´ı stroj • Moˇ znost programov´an´ı
http://pcu3v.fjfi.cvut.cz
Poˇc´ıtaˇce nult´e generace • Mechanick´ e stroje, rel´e • Mohutn´ y rozvoj za v´alky – ˇsifrov´an´ı • Vyluˇstˇ en´ı Enigmy – Alan Turing + Gordon Welchman • 1936 – Konrad Zuse • 1944 – ENIAC • Electronic Numerator, Integrator, Analyzer and Calculator
http://pcu3v.fjfi.cvut.cz
Alan Turing • Zakladatel modern´ı informatiky • V´ yznamn´y vˇedeck´y pˇr´ınos • Teorie vyˇ c´ıslitelnosti • Turing˚ uv stroj • Turing˚ uv test
http://pcu3v.fjfi.cvut.cz
John von Neumann • Tv˚ urce teorie her • S A. Einsteinem zaloˇ zil Univerzitu v Princetonu • Zab´ yval se jadernou fyzikou • Von Neumannova koncepce
http://pcu3v.fjfi.cvut.cz
ENIAC – Electronic Numerator, Integrator, Analyzer and Calculator • Pro potˇreby arm´ ady • Zaloˇ zen na Turingov´ych myˇslenk´ach • Velk´ a spotˇreba a rozmˇery
http://pcu3v.fjfi.cvut.cz
Modern´ı programovac´ı jazyky • S pˇr´ıchodem tranzistor˚ u a diod, vylepˇsen´ı pamˇeti • Soubory element´ arn´ıch instrukc´ı • Fortran, Algol, Lisp, Basic • Pascal • Navrˇ zen pro v´yukov´e u ´ˇcely – 1970
http://pcu3v.fjfi.cvut.cz
Modern´ı programovac´ı jazyky Tvorba programu
• Pˇremˇ ena vstupn´ıch dat na v´ystupn´ı • Snaha o obecnost • Prvky, zkter´ ych je program sloˇzen • Element´ arn´ı instrukce a pˇr´ıkazy • Logick´ e v´yrazy • Promˇ enn´e ˇ ıd´ıc´ı struktury • R´
http://pcu3v.fjfi.cvut.cz
Modern´ı programovac´ı jazyky Promˇenn´e
ˇ ıˇcky” na data • ”Supl´ • Z´ astupn´e symboly • Zajiˇst’uj´ı obecnost • Typy – co se vkl´ ad´a do ˇsupl´ıˇcku • Cel´ a ˇc´ısla (Integer) • Desetinn´ a ˇc´ısla (Real, Float) • P´ısmena (Char) ˇ ezce (String) • Retˇ • Logick´ e hodnoty (Boolean) • V Pascalu nutno promˇ enn´e nejdˇr´ıv deklarovat
(ˇr´ıct poˇc´ıtaˇci, jak se jmenuj´ı a jak´eho jsou typu)
http://pcu3v.fjfi.cvut.cz
Modern´ı programovac´ı jazyky Pˇr´ıkazy, funkce
• D´ avaj´ı povel k vykon´an´ı operace • Napˇr. ”do promˇ enn´e x uloˇz trojku” • Funkce = podprogram • Z´ apis: n´ azev funkce(vstupn´ ı parametry);
http://pcu3v.fjfi.cvut.cz
Modern´ı programovac´ı jazyky Logick´e v´yrazy
• Matematick´ e v´yroky, pravdiv´e nebo nepravdiv´e • Napˇr. ”Je v promˇ enn´e x uloˇzena hodnota vˇetˇs´ı neˇz 3?” • Pravda = true, Nepravda = false • D˚ uleˇzit´e pro vˇetven´ı program˚ u • V Pascalu rozd´ıl mezi pˇriˇrazen´ım a porovn´ an´ım • a := 3 ”Do a uloˇ z trojku” • a = 3 ”Je v a uloˇ zena trojka?”
http://pcu3v.fjfi.cvut.cz
Modern´ı programovac´ı jazyky ˇ ıd´ıc´ı struktury R´
• Ovlivˇ nuj´ı chod programu • Urˇ cuj´ı, kter´e pˇr´ıkazy a kdy se vykonaj´ı • Podm´ınˇ en´e pˇr´ıkazy • ”Jestli je v x trojka, vypiˇs na obrazovku AHOJ” • if x = 3 then write(’AHOJ’);
http://pcu3v.fjfi.cvut.cz
Modern´ı programovac´ı jazyky ˇ ıd´ıc´ı struktury R´
• Cyklus ”for” – opakuje skupinu pˇr´ıkaz˚ u n-kr´at • ”Desetkr´ at za sebou napiˇs MARTIN” • for i := 1 to 10 do write(’MARTIN’); • Cyklus ”while” – opakuje skupinu pˇr´ıkaz˚ u dokud je splnˇena podm´ınka • ”Dokud je x menˇs´ı neˇ z 5, zvyˇsuj x o jedniˇcku” • while x < 5 do x := x + 1;
http://pcu3v.fjfi.cvut.cz
Algoritmus, vlastnosti algoritmu • N´ avod, jak prov´est urˇcitou operaci • Sloˇ zen z jednoduch´ych a jednoznaˇcn´ych u ´kon˚ u • Vlastnosti algoritmu 1 Je element´ arn´ı 2 Je determinovan´ y 3 Je koneˇ cn´y 4 Je rezultativn´ı 5 Je hromadn´ y (obecn´y)
http://pcu3v.fjfi.cvut.cz
Algoritmus, pˇr´ıklad ˇ sen´ı kvadratick´ Reˇ e rovnice ax 2 + bx + c = 0 1
Naˇcti ˇc´ısla a, b, c
2
Vypoˇcti D = b 2 − 4ac Pokud D ≥ 0 √
3
4
5
1
Spoˇcti x1 =
2
Spoˇcti x2 =
Pokud D < 0 1
Spoˇcti x1 =
2
Spoˇcti x2 =
−b+ D 2a√ −b− D 2a √ −b+i D 2a√ −b−i D 2a
Vypiˇs ˇc´ısla x1 , x2
http://pcu3v.fjfi.cvut.cz