DUM Vyšší odborná škola, Obchodní akademie a Střední odborná škola EKONOM, o. p. s. Algoritmy DUM III/2-T1-1-16 PRG-01A-var1 Téma: Kombinované úlohy cvičení Střední škola Rok: 2012 2013 Varianta: A Zpracoval: Mgr. Pavel Hrubý VÝKLAD Kombinované úlohy - cvičení Obsah Zadání 1.1 - téma kreslení značek - čtverec... 1 Zadání 1.2 - téma kreslení značek - trojúhelník... 3 Zdroje a odkazy... 4 Anotace kapitoly V této kapitole se seznámíte s obecnými postupy, které programátor potřebuje nutně znát a to na řešených příkladech. Příklady podobného typu, ale neřešené naleznete v kapitole ÚLOHY. Po prostudování této kapitoly byste měli řešit běžné úlohy s využitím programu FERDA. Jednotlivé typy úloh se vám objeví opět a znovu při řešení algoritmů v kapitole o základech programování v prostředí Pascal. Zadání 1.1 - téma kreslení značek - čtverec Ferda v prázdném městě nakreslí ze značek čtverec 4x4. Řešení: Aby výsledek byl visuálně příjemný, necháme Ferdu odejít kousek do města a tam vytvoříme čtverec. Vlastní počáteční pochod Ferdy složíme ze dvou příkazů, které bez použití procedur napíšeme jako cykly s pevným počtem opakování a pak zopakujeme čtyřikrát složený příkaz, kde Ferda provede čtyř a pokládá značku. V druhé variantě využijeme procedur, které sestavíme a pak použijeme v programu. Programy opatříme potřebnými komentáři. Více než slovní popis vždy pomůže prostudovat si jak je program utvořen. stránka 1
program CTVEREC4x4 var. 1 rem uložen v adresáři EXAPML jako soubor CVTR4x4.frd rekni Jdu na místo rekni Jsem na místě, kreslím čtverec rekni Hotovo Takto zapsán, je i tento jednoduchý program dosti nepřehledný. Zkusme zápis programu zjednodušit s tím, že opakující se příkazy převedeme na příkazy typu procedura. program CTVEREC4x4 var. 2 rem uložen v adresáři EXAPML jako soubor CVTR4x4P.frd rekni Jdu na místo proc_5 proc_5 rekni Jsem na místě, kreslím čtverec proc_4 rekni Hotovo rem definice procedur df_5 df_4 stránka 2
Pro konečný tvar programu zvolíme ještě zápis, který využívá možnosti psát v tělě procedur volání jiných procedur a funkcí a tak poté napsat vlastní tělo programu velmi stručně a ostatní příkazy zapsat pouze v procedurách. program CTVEREC4x4 var. 3 rem uložen v adresáři EXAPML jako soubor CVTR4x4U.frd rekni Jdu na místo proc_namisto rekni Jsem na místě, kreslím čtverec proc_ctverec rekni Hotovo rem definice procedur df_namisto proc_5 proc_5 df_ctverec proc_4 df_5 df_4 rem konec zápisu programu Postup, kterým jsme došli od první až ke třetí variantě programu se nazývá konstrukce algoritmu zezdola (od nejsloľitějąí varianty) nahoru - po nejjednodušší variantu. V praxi se používá pro zpřehlednění zápisu celého algoritmu poté, co byl program napsán bez procedur. Pro návrh řešení úloh se běžně používá i postup opačný, postup shora dolů. Tento postup si ukážeme na následující úloze. Zadání 1.2 - téma kreslení značek - trojúhelník Ferda v prázdném městě nakreslí ze značek rovnoramenný trojúhelník se základnou o velikosti 8 značek. stránka 3
Řešení této úlohy budeme provádět metodou konstrukce shora. Celkový rozvrh řešení této úlohy si můžeme rozepsat do tří hlavních ů 1. Ferda dojde na místo 2. Ferda nakreslí trojúhelník 3. Ferda se vrátí domů Pro první můžeme využít proceduru proc_namisto z předcházejícího příkladu. Třetí je přímo základní příkaz. Druhý ovšem si musíme rozepsat na tři y, kdy Ferda kreslí jednotlivé strany trojúhelníka. Rozepsání druhého u bude tedy vypadat takto: 1. kreslím základnu 2. otáčím se do vhodného směru 3. kreslím šikmou stranu 4. otáčím se do vhodného směru 5. kreslím šikmou stranu Řešení bodu 1 je jasná procedura s cyklem s pevným počtem osmi opakování, kde v těle procedury budou již základní příkazy: DF_8 cyklus 8 Po vhodném otočení Ferdy je možné, aby i jeho šikmá chůze byla řešena cyklem s pevným počtem 4 opakování, ale s tím, že místo jednoduchého u musí Ferda udělat šikmo. (Proč je zde číslo 4 a ne 8?) DF_4 sikmo Krok šikmo vyřešíme pak také procedurou DF_sikmo, která bude složena z elementárních příkazů. DF_sikmo Celý program bude poté zapsán takto: stránka 4
program TROJUHELNIK8 var. 1 rem uložen v adresáři EXAPML jako soubor TROJ8.frd rem hlavni program - main program proc_namisto proc_trojuhelnik rem definice procedur DF_trojuhelnik proc_8 proc_4sikmo proc_4sikmo DF_namisto proc_5 proc_5 DF_5 DF_8 cyklus 8 DF_4sikmo proc_sikmo DF_sikmo rem konec celého programu Program si nahrajte a spusťte. Zkuste kreslit trojúhelníky i větší a třeba i jinak natočené. Jak může město vypadat po ukončení úkolu je na obrázku: stránka 5
Zdroje a odkazy Wikipedie: Otevřená encyklopedie: Algoritmus [online]. c2012 [citováno 7. 8. 2012]. Dostupný z WWW: <http://cs.wikipedia.org/w/index.php?title=algoritmus&oldid=9117438> stránka 6