Střední škola stavební Jihlava
Sada 1 - Základy programování 01. Základní pojmy a principy programování Digitální učební materiál projektu: SŠS Jihlava – šablony registrační číslo projektu:CZ.1.09/1.5.00/34.0284 Šablona: III/2 - inovace a zkvalitnění výuky prostřednictvím ICT
Jaromír Železný © 2012
Projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky
Programování • rychle se stalo jedním z nejdůležitějších oborů lidské činnosti. • Důvod? – Počítačem se dnes řídí téměř vše • • • • • • •
od digitálních hodinek, přes mobilní telefony (+ smartphony) automatické pračky požární a zabezpečovací systémy řídící jednotky v automobilech ……… až po letadla nebo kosmické rakety.
Programování • Programy vznikají, abychom si ulehčili a zpříjemnili činnosti, které děláme. • „Lenost základ pokroku.“ • Umět programovat neznamená jen prostě vytvářet programy. • Znamená to vytvářet – – – –
nejefektivnější, nejrychlejší a nejjednodušší, ale zároveň dokonale funkční programy
Postup při programování • • • •
nejprve si rozmyslet, co má program dělat nakreslit vývojový diagram přepsat v programovacím jazyce přemýšlet, zda by to nešlo udělat – Jednodušeji – Lépe – Levněji
• (… otestovat funkčnost, odladit chyby…)
Programátor • člověk, který má analytické a logické myšlení, tzn. přemýšlí o jednotlivých krocích při postupu řešení daného problému • člověk, svým způsobem líný, protože jediné, co ho zajímá, je usnadnit si práci • lenost neznamená nepracovat, ale zaručí, abychom nedělali zbytečnou práci!
Algoritmus • postup řešení určitého problému • posloupnost operací, která pro přípustná vstupní data, vede po konečném počtu kroků k odpovídajícím výsledkům • např.: – recept z kuchařky – pracovní postup
Počítačový program • jednoznačná posloupnost operací, která popisuje realizaci dané úlohy • je vytvořen programátorem zápisem algoritmu v programovacím jazyce • dříve byl často realizován přímo v hardware – zapojením vodičů, děrným štítkem apod. • může být v počítači prováděn interpretem ( = program, který vykonává instrukce zapsané v programovacím jazyce, zpracování zdrojového kódu programu tak dochází přímo k jeho vykonávání – využívá se při ladění programu – postupuje se krok po kroku), nebo může být pomocí překladače (kompilátoru)
nejprve přeložen do strojového kódu a teprve pak přímo prováděn mikroprocesorem.
Programovací jazyk • program pro počítač je algoritmus určitého problému popsaný v programovacím jazyce • programátor obvykle nepíše program přímo v jazyce procesoru, ale v jazyce, který je bližší vyjadřovacím schopnostem a způsobu myšlení člověka. Takovým jazykům se říká vyšší programovací jazyky. • vyšší programovací jazyky by měly mít takové vlastnosti, aby se v nich člověku dobře zapisovaly algoritmy • překlad programu napsaného člověkem do jazyka procesoru zajistí speciální program – překladač (kompilátor) • překladač vytvoří soubor, který lze spustit na počítači (např. muj_program.exe)
Programovací jazyk • vyšší programovací jazyk není určen počítačům, ale lidem, kteří v něm zapisují algoritmy a ty jsou následně kompilovány do strojového kódu, kterému procesor rozumí • přímo ve strojovém kódu se psaly programy pro první samočinné počítače asi do konce 40. let • nejenže to bylo pracné a komplikované, ale programovat počítače mohl jenom odborník na počítače
Programovací jazyky – 3 úrovně • Strojový kód – – – –
hardwarově závislý, nutná znalost „vnitřku počítače“ číselný vzhled jediný jazyk, kterému rozumí počítač program musí být do strojového kódu vždy přeložen.
• Jazyk symbolických adres (assembler) – symbolické zápisy instrukcí (místo čísel zkratkové příkazy) – používá se v kritických místech programů
• Vyšší programovací jazyky – jednoduchý zápis (formalizovaná angličtina) – existuje velké množství jazyků - každý je vhodný k něčemu jinému
Vyšší programovací jazyky • Vyšší programovací jazyky: – – – – – –
Cobol - hromadné zpracování dat Fortran - vědeckotechnické výpočty Algol - předchůdce Pascalu Pascal - výuka, tvorba aplikací (Delphi) C,C++ - profesionální jazyk, blízko HW (operační systém) Basic - pro začátečníky a laiky, má nevýhody, ale dnes také renesance. – Java - programování pro WWW, přesto plnohodnotný jazyk založený na C – Prolog - logické programování
Strukturované programování • algoritmus se rozděluje na dílčí úlohy (procedury či funkce), které se spojují v jeden celek. • lze na něho nahlížet jako na podmnožinu imperativního programování, avšak s jistými omezeními – k implementaci v počítačovém programu se používá vybraných řídicích struktur, ostatní struktury nejsou povoleny • u strukturovaného programování se např. nepoužívá řídící příkaz skoku
Objektově orientované programování • •
OOP je metodika vývoje software, založená na následujících myšlenkách a koncepci: Objekty – –
•
Abstrakce – –
•
–
zaručuje, že objekt nemůže přímo přistupovat k „vnitřnostem“ jiných objektů, což by mohlo vést k nekonzistenci. každý objekt navenek zpřístupňuje rozhraní, pomocí kterého (a nijak jinak) se s objektem pracuje.
Skládání –
•
programátor, potažmo program, který vytváří, může abstrahovat od některých detailů práce jednotlivých objektů. Každý objekt pracuje jako černá skříňka, která dokáže provádět určené činnosti a komunikovat s okolím, aniž by vyžadovala znalost způsobu, kterým vnitřně pracuje.
Zapouzdření –
•
jednotlivé prvky modelované reality (jak data, tak související funkčnost) jsou v programu seskupeny do entit, nazývaných objekty. pamatují si svůj stav a navenek poskytují operace (přístupné jako metody pro volání).
Objekt může obsahovat jiné objekty.
Delegování –
Objekt může využívat služeb jiných objektů tak, že je požádá o provedení operace.
Objektově orientované programování • Dědičnost –
objekty jsou organizovány stromovým způsobem, kdy objekty nějakého druhu mohou dědit z jiného druhu objektů, čímž přebírají jejich schopnosti, ke kterým pouze přidávají svoje vlastní rozšíření. Tato myšlenka se obvykle implementuje pomocí rozdělení objektů do tříd, přičemž každý objekt je instancí nějaké třídy. Každá třída pak může dědit od jiné třídy (v některých programovacích jazycích i z několika jiných tříd).
• Polymorfismus –
odkazovaný objekt se chová podle toho, jaké třídy je instancí. Pokud několik objektů poskytuje stejné rozhraní, pracuje se s nimi stejným způsobem, ale jejich konkrétní chování se liší podle implementace. U polymorfismu podmíněného dědičností to znamená, že na místo, kde je očekávána instance nějaké třídy, můžeme dosadit i instanci libovolné její podtřídy, neboť rozhraní třídy je podmnožinou rozhraní podtřídy. U polymorfismu nepodmíněného dědičností je dostačující, jestliže se rozhraní (nebo jejich požadované části) u různých tříd shodují, pak
• Třída –
je základním obecným pojmem klasifikace, jak při návrhu uspořádávát informace do smysluplné entity. Základním pojmem je objekt, instance třídy, jako konkrétní případ realizace předpisu. Objekt si „pamatuje“ svůj stav (v podobě dat čili atributů) a zveřejněním některých svých operací (nazývaných metody) poskytuje rozhraní, jak s ním pracovat. Při používání objektu nás zajímá, jaké operace (služby) poskytuje, ale ne, jakým způsobem to provádí - to je princip zapouzdření. Jestli to provádí sám nebo využije služeb jiných objektů, je celkem jedno. Vlastní implementaci pak můžeme změnit (např. zefektivnit), aniž by se to dotklo všech, kteří objekt používají. jsou vzájemně polymorfní.
Zdroje: http://objekty.vse.cz/Programovani/ Literatura: Radek HYLMAR: Programování pro úplné začátečníky, Computer Press, Brno, 2009, ISBN 978-80-251-2129-0 Ondřej ČADA: Objektové programování, GRADA, Praha, 2009, ISBN 978-80-247-2745-5
Materiál je určen k bezplatnému používání pro potřeby výuky a vzdělávání na všech typech škol a školských zařízení. Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je : Jaromír Železný Pokud není uvedeno jinak, byly při tvorbě použity volně přístupné internetové zdroje. Autor souhlasí se sdílením vytvořených materiálů a jejich umístěním na www.ssstavji.cz.