Vyšší odborná škola, Obchodní akademie a Střední odborná škola EKONOM, o. p. s. Litoměřice, Palackého 730/1
DUM Téma: Kombinované úlohy – cvičení Varianta: A
Algoritmy
DUM III/2-T1-1-16 PRG-01A-var1
Střední škola
Rok: 2012 – 2013
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řkrok 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.
Operační program CZ.1.07 Vzděláním pro konkurenceschopnost Registrační číslo projektu CZ.1.07/1.5.00/34.0553 Název projektu Elektronická podpora zkvalitnění výuky Projekt je realizován v rámci Operačního programu Vzdělávání pro konkurence schopnost, který je spolufinancován z Evropského sociálního fondu a ze státního rozpočtu České republiky DUM-III2-T1-1-16_cviceni_ferda-kombinovane_ulohystránka 1 1.docx
Vyšší odborná škola, Obchodní akademie a Střední odborná škola EKONOM, o. p. s. Litoměřice, Palackého 730/1 program CTVEREC4x4 var. 1 rem uložen v adresáři EXAPML jako soubor CVTR4x4.frd rekni Jdu na místo cyklus 5 krok konec cyklus vlevo vbok cyklus 5 krok konec cyklus vpravo vbok rekni Jsem na místě, kreslím čtverec cyklus 4 cyklus 4 poloz krok konec cyklus vlevo vbok konec cyklus domu rekni Hotovo konec programu
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_5krok vlevo vbok proc_5krok vpravo vbok rekni Jsem na místě, kreslím čtverec cyklus 4 proc_4krokpoloz vlevo vbok konec cyklus domu rekni Hotovo konec programu rem definice procedur df_5krok cyklus 5 krok konec cyklus konecproc df_4krokpoloz cyklus 4 poloz krok konec cyklus konecproc
Operační program CZ.1.07 Vzděláním pro konkurenceschopnost Registrační číslo projektu CZ.1.07/1.5.00/34.0553 Název projektu Elektronická podpora zkvalitnění výuky Projekt je realizován v rámci Operačního programu Vzdělávání pro konkurence schopnost, který je spolufinancován z Evropského sociálního fondu a ze státního rozpočtu České republiky DUM-III2-T1-1-16_cviceni_ferda-kombinovane_ulohystránka 2 1.docx
Vyšší odborná škola, Obchodní akademie a Střední odborná škola EKONOM, o. p. s. Litoměřice, Palackého 730/1
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 domu rekni Hotovo konec programu rem definice procedur df_namisto proc_5krok vlevo vbok proc_5krok vpravo vbok konecproc df_ctverec cyklus 4 proc_4krokpoloz vlevo vbok konec cyklus konecproc df_5krok cyklus 5 krok konec cyklus konecproc df_4krokpoloz cyklus 4 poloz krok konec cyklus konecproc 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.
Operační program CZ.1.07 Vzděláním pro konkurenceschopnost Registrační číslo projektu CZ.1.07/1.5.00/34.0553 Název projektu Elektronická podpora zkvalitnění výuky Projekt je realizován v rámci Operačního programu Vzdělávání pro konkurence schopnost, který je spolufinancován z Evropského sociálního fondu a ze státního rozpočtu České republiky DUM-III2-T1-1-16_cviceni_ferda-kombinovane_ulohystránka 3 1.docx
Vyšší odborná škola, Obchodní akademie a Střední odborná škola EKONOM, o. p. s. Litoměřice, Palackého 730/1
Ř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 kroků 1. Ferda dojde na místo 2. Ferda nakreslí trojúhelník 3. Ferda se vrátí domů Pro první krok můžeme využít proceduru proc_namisto z předcházejícího příkladu. Třetí krok je přímo základní příkaz. Druhý krok ovšem si musíme rozepsat na tři kroky, kdy Ferda kreslí jednotlivé strany trojúhelníka. Rozepsání druhého kroku 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_8krokpoloz cyklus 8 poloz krok konecproc
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 kroku musí Ferda udělat krok šikmo. (Proč je zde číslo 4 a ne 8 ?) DF_4krokpoloz cyklus 4 poloz sikmokrok konecproc
Krok šikmo vyřešíme pak také procedurou DF_sikmokrok, která bude složena z elementárních příkazů. DF_sikmokrok krok vlevo vbok krok vpravo vbok krok konecproc
Celý program bude poté zapsán takto:
Operační program CZ.1.07 Vzděláním pro konkurenceschopnost Registrační číslo projektu CZ.1.07/1.5.00/34.0553 Název projektu Elektronická podpora zkvalitnění výuky Projekt je realizován v rámci Operačního programu Vzdělávání pro konkurence schopnost, který je spolufinancován z Evropského sociálního fondu a ze státního rozpočtu České republiky DUM-III2-T1-1-16_cviceni_ferda-kombinovane_ulohystránka 4 1.docx
Vyšší odborná škola, Obchodní akademie a Střední odborná škola EKONOM, o. p. s. Litoměřice, Palackého 730/1 program TROJUHELNIK8 var. 1 rem uložen v adresáři EXAPML jako soubor TROJ8.frd rem hlavni program - main program proc_namisto proc_trojuhelnik domu konec programu rem definice procedur DF_trojuhelnik proc_8krokpoloz vlevo vbok proc_4sikmokrokpoloz vlevo vbok proc_4sikmokrokpoloz konecproc DF_namisto proc_5krok vlevo vbok proc_5krok vpravo vbok konecproc DF_5krok cyklus 5 krok konec cyklus konecproc DF_8krokpoloz cyklus 8 poloz krok konec cyklus konecproc DF_4sikmokrokpoloz cyklus 4 poloz proc_sikmokrok konec cyklus konecproc DF_sikmokrok krok vlevo vbok krok vpravo vbok konecproc 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:
Operační program CZ.1.07 Vzděláním pro konkurenceschopnost Registrační číslo projektu CZ.1.07/1.5.00/34.0553 Název projektu Elektronická podpora zkvalitnění výuky Projekt je realizován v rámci Operačního programu Vzdělávání pro konkurence schopnost, který je spolufinancován z Evropského sociálního fondu a ze státního rozpočtu České republiky DUM-III2-T1-1-16_cviceni_ferda-kombinovane_ulohystránka 5 1.docx
Vyšší odborná škola, Obchodní akademie a Střední odborná škola EKONOM, o. p. s. Litoměřice, Palackého 730/1
Zdroje a odkazy Wikipedie: Otevřená encyklopedie: Algoritmus [online]. c2012 [citováno 7. 8. 2012]. Dostupný z WWW:
Operační program CZ.1.07 Vzděláním pro konkurenceschopnost Registrační číslo projektu CZ.1.07/1.5.00/34.0553 Název projektu Elektronická podpora zkvalitnění výuky Projekt je realizován v rámci Operačního programu Vzdělávání pro konkurence schopnost, který je spolufinancován z Evropského sociálního fondu a ze státního rozpočtu České republiky DUM-III2-T1-1-16_cviceni_ferda-kombinovane_ulohystránka 6 1.docx