DUM Vyšší odborná škola, Obchodní akademie a Střední odborná škola EKONOM, o. p. s. Algoritmy DUM III/2-T1-1-19 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.8 - téma průchod souvislým bludištěm... 1 Zadání 1.9 - téma průchod souvislým bludištěm s návratem... 3 Zadání 1.10 - téma generátor náhodných čísel... 4 Zdroje a odkazy... 5 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 jiném programovacím prostředí. Zadání 1.8 - téma průchod souvislým bludištěm Město je tvořeno souvislým bludištěm, t.j. každá zeď navazuje na jinou zeď nebo na okraj města. Ve městě je umístěna značka. Ferda tuto značku nalezne a program ukončí. Jedna z možností řešení tohoto úkolu je znázorněna na následujícím vývojovém diagramu. stránka 1
Řešení: rem program bludiste rekni Tak odcházím hledat ten poklad. dokud neni znacka rychle kdyz nebude zed kdyz nebude zed pomalu rekni Tak ho mám. Přepis vývojového diagramu do programu pro Ferdu je nepřesný a má dvě změny. Naleznete je? Proč jsou v programu použity příkazy RYCHLE a POMALU? stránka 2
Při studiu tohoto algoritmu zjistíte, že je zbytečně dlouhý a opakují se dvakrát tytéž algoritmické struktury. Zkuste napsat algoritmus jednodušší, přesnější a rychlejší. Zadání 1.9 - téma průchod souvislým bludištěm s návratem Město je tvořeno souvislým bludištěm, t.j. každá zeď navazuje na jinou zeď nebo na okraj města. Ve městě je umístěna 3 - značka. Ferda tuto 3 - značku nalezne a vrátí se nejkratší cestou zpět. Poté program ukončí. Konečný stav programu je na obrázku. program bludiste s návratem rem program je uložen v souboru BLUD2.FRD rem soubor mesta je uložen v souboru BLUD1.MST rekni Tak odcházím hledat ten poklad. dokud nebude 3 kdyz neni znacka kdyz bude znacka dokud bude zed rekni Tak ho mám. dokud nebude znacka opakuj stránka 3
kdyz bude znacka kdyz nebude znacka celem vzad kdyz nebude znacka celem vzad az do je 2 Zadání 1.10 - téma generátor náhodných čísel Ferda položí náhodně do prvního řádku značky. Jediná možnost, kterou Ferda má ke generování náhodných hodnot je příkaz RANDOM VBOK. Na tento příkaz provede Ferda náhodně buď vlevo nebo. Procedura, která převede náhodný pohyb na položení značky je uvedena v programu. Řešení: program Náhodný generátor rem program je uložen v souboru GENE0.FRD rem v adresáři EXAMPL opakuj proc_nahzn az do bude zed rem definice procedur DF_nahzn random vbok kdyz je sever kdyz neni 2 proc_navychod konecproc DF_navychod kdyz je sever kdyz je jih stránka 4
konecproc rem konec algoritmu Pokuste se modifikovat tento program tak aby Ferda pokládal náhodně 1 až tři značky do první řady, do více řad. Pokud si představíte tiket sportky (7x7 políček), je možné napsat program, v kterém Ferda náhodně položí na různá místa právě šest značek? Zkuste to. 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 5