+ All Categories
Home > Documents > Algoritmizace pomocný materiál k...

Algoritmizace pomocný materiál k...

Date post: 05-Aug-2021
Category:
Upload: others
View: 7 times
Download: 0 times
Share this document with a friend
20
Algoritmizace pomocný materiál k výuce Obsah Algoritmus ...........................................................................................................................................................2 Značky vývojových diagramů...............................................................................................................................2 Základní pojmy algoritmizace ..............................................................................................................................4 Úkoly k procvičení: ..............................................................................................................................................6 Vývojové diagramy s podmínkou ........................................................................................................................7 Tvorba algoritmů s použitím cyklů ................................................................................................................... 12 Cyklus s pevným počtem opakování ................................................................................................................ 12 Cyklus řízený podmínku na začátku cyklu ........................................................................................................ 13 Cyklu řízený podmínkou na konci cyklu............................................................................................................ 13 Tvorba algoritmů s použitím cyklů – příklady................................................................................................... 14 Další řešené příklady ........................................................................................................................................ 17 Úkoly k procvičení: ........................................................................................................................................... 20
Transcript
Page 1: Algoritmizace pomocný materiál k výucefiles.iktsos.webnode.cz/200000289-37214381b4/Skripta.pdfAlgoritmizace 2 Algoritmus Algoritmus je přesný postup, který je potřeba k vykonání

Algoritmizace – pomocný materiál k výuce

Obsah

Algoritmus ...........................................................................................................................................................2

Značky vývojových diagramů ...............................................................................................................................2

Základní pojmy algoritmizace ..............................................................................................................................4

Úkoly k procvičení: ..............................................................................................................................................6

Vývojové diagramy s podmínkou ........................................................................................................................7

Tvorba algoritmů s použitím cyklů ................................................................................................................... 12

Cyklus s pevným počtem opakování ................................................................................................................ 12

Cyklus řízený podmínku na začátku cyklu ........................................................................................................ 13

Cyklu řízený podmínkou na konci cyklu............................................................................................................ 13

Tvorba algoritmů s použitím cyklů – příklady ................................................................................................... 14

Další řešené příklady ........................................................................................................................................ 17

Úkoly k procvičení: ........................................................................................................................................... 20

Page 2: Algoritmizace pomocný materiál k výucefiles.iktsos.webnode.cz/200000289-37214381b4/Skripta.pdfAlgoritmizace 2 Algoritmus Algoritmus je přesný postup, který je potřeba k vykonání

Algoritmizace

2

Algoritmus Algoritmus je přesný postup, který je potřeba k vykonání určité činnosti. Přesně definovaná konečná posloupnost operací. Vlastnosti algoritmu: 1. Jednoznačnost (determinovanost) - jednotlivé kroky algoritmu a pořadí, v jakém budou

prováděny, jsou jednoznačně určeny. Při stejných počátečních hodnotách vede algoritmus k témuž výsledku.

2. Konečnost (rezultativnost) - algoritmus vede vždy k určitým výsledkům v konečném čase.

3. Obecnost (hromadnost) - algoritmus lze použít pro řešení obecné úlohy, slouží k řešení libovolné úlohy, která patří do jisté třídy úloh.

4. Opakovatelnost - znamená, že algoritmus vede vždy ke stejným výsledkům, jsou-li zadána stejná data.

5. Srozumitelnost a přehlednost - je podmínkou pro pozdější snadné úpravy. Možnosti zápisu algoritmu

- slovní vyjádření – v přirozeném jazyce - matematický zápis – soustava rovnic, vztah mezi veličinami - graficky - vývojové diagramy - počítačové programy – kódem srozumitelným pro počítač

Značky vývojových diagramů Mezní značky Představují vstup s vnějšího prostředí do programu nebo výstup z programu do vnějšího prostoru (začátek, konec). Používá se i pro začátek nebo konec samostatně zpracované části.

Začátek - použitá na začátku, do značky nesmí vstupovat žádná hrana a musí s ní vystupovat právě jedna hrana z dolního okraje směrem dolů, před touto značkou už nesmí být žádná jiná značka

Konec - používá se na konci, do značky smí vstupovat právě jedna hrana z horního okraje směrem dolů, nesmí z ní vystupovat žádná hrana, za touto značkou nesmí být žádná jiná značka

Sekvenční bloky Vyskytuji se uvnitř vývojových diagramů, označuji sekvenční postup algoritmu, v jejich průběhu nesmí dojít k rozvětvení. Sekvenční blok - musí mít právě jeden vstup a jeden výstup

Vstup nebo Výstup Vstup – načtení dat potřebných pro činnost programu, uvnitř je Čti: Výstup – zobrazení výstupu programu na zobrazovacím zařízení, uvnitř je Zobraz:… (Piš…)

Začátek

Konec

Čti: A, B

Page 3: Algoritmizace pomocný materiál k výucefiles.iktsos.webnode.cz/200000289-37214381b4/Skripta.pdfAlgoritmizace 2 Algoritmus Algoritmus je přesný postup, který je potřeba k vykonání

Algoritmizace

3

Zpracování - znázorňuje část programu, při níž dochází k transformaci dat (mat. operace). V bloku může být zapsána jedna nebo více instrukci.

Větvení V některých případech nelze v algoritmu postupovat sekvenčně, ale ho potřeba rozvětvit. K větvení dochází na základě nějaké podmínky, je-li podmínka splněna, pak program pokračuje jednou cestou, není-li splněna, pokračuje cestou jinou (větví se)

Rozhodovací blok - slouží k rozvětvení programu na základě podmínky. Není rozhodující, zda větev + bude vlevo nebo vpravo. Hrany nemusejí vycházet vždy z bočních vrcholů. V některých publikacích se setkáte s označením větví –

a) ano, ne b) yes, no

Další značky Příprava - přípravná fáze programu, například pro zahájení cyklu o známém počtu opakování. Stejná značka může být i na konci cyklu s textem Konec cyklu

Spojka - spojuje dvě části vývojového diagramu, které nebylo možno zakreslit souvisle. Spojky na konci přerušení a na začátku pokračování musí být označeny stejným číslem Podprogram- samostatná část programu, která může obsahovat větší množství kroků:

a) vyskytuje-li se v programu nějaké část na více místech, je vhodné zpracovat samostatně, označit jako jeden blok a vložit do výsledného algoritmu

b) vyskytuje-li se ve více algoritmech hodně často jednu část, zpracujeme ji jako část samostatnou

Syntaxe a sémantika syntaxe příkazu - popisuje, jak příkaz správně a bezchybně vytvořit sémantika příkazu - popisuje význam tohoto příkazu

v ČJ: syntax (skladba) X sémantika (smysl)

př.: Děti četli knihu. Kniha četla děti. Syntaxi známe z hodin českého jazyka. Popisuje jak správně napsat větu. Pokud spletete i/y nebo písmeno znamená to, že jste udělali syntaktickou chybu. Sémantika hovoří o smyslu informace, kterou nám věta říká. Příklad chyby syntaxe: Dělníci vykopaly tunel. Mám rád hranolki. Hnet příjdu! Příklady chyb sémantiky: Klára prší. Zítra byl jsem včera. Medvěd liška zvítězíme.

A:= A+B

Podmínka + -

Cyklus

I:= 1, N

1

Načíst matici A

Page 4: Algoritmizace pomocný materiál k výucefiles.iktsos.webnode.cz/200000289-37214381b4/Skripta.pdfAlgoritmizace 2 Algoritmus Algoritmus je přesný postup, který je potřeba k vykonání

Algoritmizace

4

Základní pojmy algoritmizace

Algoritmus přesný postup, který vede k vyřešení určitého úkolů a danému výsledku

Proces děj, událost, operace apod., který probíhá u objektů v určitém čase, je dynamický

Cyklus jakýkoliv cyklicky se opakující děj, událost, proces či jev

Spojka značka používající se pro přehlednost a zjednodušení, díky ní můžeme propojit různé bloky vývojového diagramu na kterýchkoli místech v diagramu (z důvodu nekřížení jednotlivých větví v diagramu)

Přiřazovací příkaz slouží pro stručnější vyjádření změn hodnot proměnných, základ všech algoritmů syntaxe: proměnná = výraz sémantika: nejprve se vyhodnotí hodnota výrazu, tato hodnota je pak přiřazena proměnné uvedené na levé straně příkazu

Proměnná (variable) místo v paměti počítače označené identifikátorem, do kterého se ukládá hodnota,velikost tohoto místa je určená datovým typem

objekt, který má pevně stanovené označení a nese určitou hodnotu; hodnota se může během programu měnit

pro označení se používají písmena abecedy a číslice, první musí být písmeno Pozor!

- proměnné potřebné pro výpočty je třeba na začátku nastavit (pro číselné proměnné to obvykle znamená přiřazení 0)

- proměnná, která dosud nezískala žádnou hodnotu, má neidentifikovatelný obsah, nelze spoléhat na to, že obsahuje nulu nebo mezeru, použijeme-li na pravé straně příkazu nedefinovatelnou proměnnou, dojde k chybě v programu

- stejná proměnná se může objevit na pravé i levé straně přiřazovacího příkazu (např. i: = i+1)

- příkaz i=i+1 zvýší hodnotu proměnné o jedničku

Konstanta (constant) objekt určité hodnoty, jež se nemění (např. konstanta pi obsahuje hodnotu 3.14)

Identifikátor jméno proměnné nebo konstanty příklady správných identifikátoru: a, b, i, suma, počet je pojmenovaný

Rozhodovací blok základním prvkem je podmínka (condition) – logický výraz, jehož hodnotou je pravda nebo nepravda syntaxe: proměnná relační operátor výraz,

- relační operátory: >, <, =, >=, <=, <>, - výraz: lze použít proměnné, konstanty, (), - pomocí logických spojek AND, OR lze sestavovat složené

podmínky, - větve plus a minus se na konci musí sbíhat v jednom bodě

sémantika: - pokud podmínka platí, provede se příkaz/-y uvedené ve větvi plus

(+), - pokud podmínka neplatí, provede se příkaz/-y uvedené ve větvi

minus (-), - podmínka v podmínce, složený podmíněný příkaz: - příkazem uvnitř podmínky je další podmíněný příkaz - neúplný podmíněný příkaz: - jedna z větví rozhodovacího bloku je prázdný (větev minus)

Page 5: Algoritmizace pomocný materiál k výucefiles.iktsos.webnode.cz/200000289-37214381b4/Skripta.pdfAlgoritmizace 2 Algoritmus Algoritmus je přesný postup, který je potřeba k vykonání

Algoritmizace

5

Příklady: Jednoduché vývojové diagramy se sekvenčními bloky

1. Sestav vývojový diagram pro výpočet obvodu a obsahu čtverce. 2. Sestav vývojový diagram pro výpočet obvodu a obsahu kruhu. 3. Sestavte vývojový diagram pro výpočet průměru ze dvou čísel.

Page 6: Algoritmizace pomocný materiál k výucefiles.iktsos.webnode.cz/200000289-37214381b4/Skripta.pdfAlgoritmizace 2 Algoritmus Algoritmus je přesný postup, který je potřeba k vykonání

Algoritmizace

6

Úkoly k procvičení:

1. Sestavte vývojový diagram pro výpočet obvodu a obsahu obdélníka. 2. Sestavte vývojový diagram pro výpočet povrchu a objemu krychle. 3. Sestavte vývojový diagram pro výpočet povrchu a objemu kvádru. 4. Sestavte vývojový diagram pro výpočet součtu dvou čísel. 5. Sestavte vývojový diagram, který vymění hodnoty dvou proměnných. 6. Sestavte vývojový diagram, který vytiskne délku přepony pravoúhlého trojúhelníka,

jsou-li dány délky jeho odvěsen. 7. Sestavte vývojový diagram, který pro daný obdélník vytiskne stranu čtverce stejného

obsahu. 8. Sestavte vývojový diagram, který zjistí kořen lineární rovnice ax+b=0 (zjistí x). 9. Sestavte vývojový diagram pro výpočet průměru ze tří celých čísel. 10. Sestavte vývojový diagram pro převod částky v Kč na euro a slovenské koruny. 11. Sestavte vývojový diagram, který zadanou hodnotu v metrech převede na mm, dm i

km. 12. Sestavte vývojový diagram, který zadanou hodnotu v MB převede na kB,B i bity. 13. Sestavte vývojový diagram, který zadanou teplotu v stupních Celsia převede na

Kelviny (Kelviny=stupně Celsia+273,15)a stupně Fahrenheita.(stupně Fahr.=stupně Celsia*9/5+32).

14. Babička má na dvorku k králíku a s slepic. Napište vývojový diagram, který vytiskne jak celkový počet hlav těchto zvířat i celkový počet jejich nohou. Neuvažujte mutace ani neúplná zvířata. Úloha má dvě možná řešení.

15. Délka ocasu klokana velikého činí 30% celkové délky těla. Napište vývojový diagram, který pro danou celkovou délku těla klokana vypíše délku jeho ocasu.

16. DPH činí u nás 5% nebo 19%. Sestavte vývojový diagram, který zadanou cenu zboží včetně DPH vypíše pro obě sazby daně cenu bez daně a daň.

Page 7: Algoritmizace pomocný materiál k výucefiles.iktsos.webnode.cz/200000289-37214381b4/Skripta.pdfAlgoritmizace 2 Algoritmus Algoritmus je přesný postup, který je potřeba k vykonání

Algoritmizace

7

Vývojové diagramy s podmínkou Větvení - slouží k ošetření nežádoucích důsledků, každý algoritmus musí dojít dokonce, pokud by nedošlo k ošetření nežádoucích situací, program by zkolaboval Příklad křižovatka:

- stojíš na neřízené křižovatce a chceš přejít na druhou stran - sestav slovní algoritmus (rozhodnutí, zda je volno nebo ne)

Poznámka:

- při tvorbě algoritmu musíme vždy zvážit všechna nebezpečí, aby nedošlo k havárii - na základě toho můžeme algoritmus rozvětvit, kdy existuje cesta, ve které se krok

neprovede

Úkol: Sestav vývojový diagram pro operaci dělení. Slovní algoritmus Jsou dána čísla A, B o nichž není nic jiného známo a máme provést dělení. Jelikož nelze dělit nulou, provedu testování dělitele. Pokud je roven nule, napíšu dělení nulou a skončím. Pokud číslo ve jmenovateli je rovno C: = A/B Poznámky k řešení - mohou nastat dvě situace:

1. B ≠ 0 ……může nastat dělení 2. B = 0 ……zobrazí se „Dělení nulou“

Začátek

Jede

auto

Přejít na

druhou

stranu

Stůj

Konec

+

-

Začátek

Čti:A, B

B = 0

C: = A/B

Zobraz: „C“

Konec

Zobraz:

„Dělení nulou „

+

-

Page 8: Algoritmizace pomocný materiál k výucefiles.iktsos.webnode.cz/200000289-37214381b4/Skripta.pdfAlgoritmizace 2 Algoritmus Algoritmus je přesný postup, který je potřeba k vykonání

Algoritmizace

8

Úkol: Sestavte vývojový diagram, který vytiskne maximum ze dvou celých čísel. Slovní algoritmus: Přečtu dvě čísla, pokud je první vetší než druhé, vytisknu první číslo, jinak vytisknu druhé číslo.

Poznámky k řešení příkladu: 1. Dvě zadaná čísla se načtou do proměnných a, b. 2. Zkoumá se pravdivostní hodnota podmínky a>b, což je odpověď na otázku: je a vetší než b? 3. Pokud podmínka platí (odpověď je ano), pokračuje se větví + a vytiskne se na výstup číslo a. 4. Pokud podmínka neplatí (odpověď je ne), pokračuje se větví - a vytiskne se na výstup číslo b. Je vidět, že hodnota proměnné a bude vytisknuta právě v tom případě, kdy platí a>b. Bude-li naopak platit a<b, vytiskne se hodnota proměnné b. Co se ale stane, budou-li obě čísla stejná a platí tedy a=b? Ověřovací podmínka a>b nebude platit (protože neplatí třeba 3>3), vytiskne se proto hodnota b. Protože však a=b, je úplně jedno, kterou proměnnou vytiskneme. Obojí je správně.

Úkol: Sestavte vývojový diagram, který zjistí, zda dané číslo je nebo není kladné.

Slovní algoritmus: Přečtu číslo, pokud je vetší než nula vytisknu odpověď je (kladné), jinak tisknu není (kladné).

Poznámky k řešení: 1. Do proměnné n je načteno číslo. 2. Zkoumá se pravdivostní hodnota podmínky n>0, což je odpověď na otázku: je n kladné? 3. Pokud podmínka platí, vytiskne se na výstup odpověď je kladné. 4. Pokud podmínka neplatí, vytiskne se na výstup odpověď není kladné. Je vidět, že kladná odpověď bude vytisknuta právě v tom případě, kdy je číslo n kladné. Bude-li ale zadáno záporné číslo, vytiskne se zpráva, že číslo není kladné. Co se ale stane, bude-li zadána nula? Ověřovací podmínka n>0 nebude platit (protože neplatí 0>0), vytiskne se proto, není kladné. Je to správně, protože nula není kladné číslo.

Page 9: Algoritmizace pomocný materiál k výucefiles.iktsos.webnode.cz/200000289-37214381b4/Skripta.pdfAlgoritmizace 2 Algoritmus Algoritmus je přesný postup, který je potřeba k vykonání

Algoritmizace

9

Úkol: Je dáno celé číslo. Rozhodnete, zda je kladné, záporné nebo nula. Slovní algoritmus: Přečtu číslo, pokud je vetší než nula, vytisknu je kladné a končím, pokud není vetší než nula, muže být záporné nebo nula. Na tuto informaci se tedy zeptám a podle výsledku vytisknu odpověď. Poznámky k řešení: 1. Do proměnné n je načteno číslo. 2. Zkoumá se pravdivostní hodnota podmínky n>0, což je odpověď na otázku: je n kladné? 3. Pokud podmínka platí, vytiskne se je kladné. 4. Pokud podmínka neplatí, ptáme se dále, platí-li n=0. V závislosti na platnosti této podmínky se vytiskne se je záporné nebo je nula. Pro každé celé číslo vždy musí nastat právě jedna z uvedených možností. Tento vývojový diagram ale není řešením jediným. Podmínky n>0, n=0 je možné vzájemné prohodit, samozřejmě též i texty u výstupní zprávy. Podmínky lze zapsat i v negaci (opačné), tedy n<0, n<>0. Vyzkoušejte sami.

Úkol: Je dáno přirozené číslo. Rozhodnete, zda je jednociferné, dvouciferné či víceciferné.

Slovní algoritmus: Přečtu číslo, pokud je menší než deset, vytisknu je jednociferné a kočím, pokud je větší než deset, muže být dvojciferné nebo víceciferné. Zeptám se proto, jestli je menší než 100 a vytisknu odpověď. Poznámky k řešení: 1. Do proměnné n je načteno číslo. 2. Zkoumá se pravdivostní hodnota podmínky n<10, což je odpověď na otázku: je n menší než 10? 3. Pokud podmínka platí, vytiskne se na výstup odpověď je, jednociferné. 4. Pokud podmínka neplatí, ptáme se dále, platí-li n<100. V závislosti na platnosti této podmínky se vytiskne odpověď je dvojciferné či je víceciferné. Pro každé celé číslo vždy musí nastat právě jedna z uvedených možností, tedy musí být kladné, záporné nebo nula.

Page 10: Algoritmizace pomocný materiál k výucefiles.iktsos.webnode.cz/200000289-37214381b4/Skripta.pdfAlgoritmizace 2 Algoritmus Algoritmus je přesný postup, který je potřeba k vykonání

Algoritmizace

10

Úkol 6: Uspořádejte dvě daná čísla vzestupně.

Slovní algoritmus: 1. verze: Přečtu čísla a,b, pokud je první z nich vetší než druhé, vytisknu je v opačném pořadí (b,a), jinak vytisknu v pořadí načtení (a,b). 2. verze: Přečtu čísla a, b pokud je první z nich vetší než druhé, čísla prohodím. Vytisknu pak a, b. Poznámky k řešení: 1. verze: je bez komentáře 2. verze: v případě, že je první číslo větší než druhé, platí podmínka a>b a provede se výměna hodnot a,b. K tomu je třeba pomocná proměnná pom. V závěru se vytisknou hodnoty a,b vždy v tomto pořadí.

Úkoly k procvičení: 1. Sestavte vývojový diagram pro výpočet vzdálenosti dvou celých čísel. 2. Sestavte vývojový diagram, který zjistí, zda je dané číslo záporné. 3. Sestavte vývojový diagram, který vytiskne maximum ze tří čísel. 4. Uspořádejte tři daná čísla vzestupně. 5. Vytisknete maximum ze tří celých čísel. 6. Sestavte vývojový diagram, který zjistí, zda dané číslo muže představovat školní

známku (1-5). 7. Sestavte vývojový diagram, který zjistí, zda dané číslo x leží v uzavřeném intervalu

<a,b>. 8. Sestavte vývojový diagram, který pozdraví podle zadané denní doby vyjádřené v

hodinách. Do 12 hodin pozdraví Dobré dopoledne, do 18 hodin Dobré odpoledne, později Dobrý večer.

9. Sestavte vývojový diagram, který vypíše, kolik minut uplynulo mezi dvěma časovými údaji, např. mezi 9:30 a 11:15 uplynulo 105 minut.

Page 11: Algoritmizace pomocný materiál k výucefiles.iktsos.webnode.cz/200000289-37214381b4/Skripta.pdfAlgoritmizace 2 Algoritmus Algoritmus je přesný postup, který je potřeba k vykonání

Algoritmizace

11

10. Jsou dána tři kladná čísla. Mohou představovat délky stran rovnostranného trojúhelníka?

11. Sestavte vývojový diagram, který přečte tri celá čísla a vypíše to z nich, které je na číselné ose nejvzdálenější od bodu nula.

12. Aby se z Ivánka stal bohatýr, musí setnout 100 dračích hlav. Zatím přemohl s sedmihlavých saní a d devítihlavých draku. Sestavte vývojový diagram, který zjistí, zda už je Ivánek bohatýr.

13. V ZOO mají p papoušku a o opic. Ošetření jednoho papouška trvá 10 minut, zatímco ošetření opice je o 5 minut delší. Sestavte vývojový diagram, který zjistí, zda tuto práci zvládne jedna ošetřovatelka s osmihodinovou pracovní dobou, má-li přestávku na oběd 30 minut a jezdí do práce tramvají z Bohunic. Přestávka na oběd se do pracovní doby nepočítá.

14. Fotbalové utkání oddílu Žraloci Rájec a Klokani Jestřábí skončilo poměrem z:k. Sestavte vývojový diagram, který zjistí, který oddíl vyhrál či zda šlo o remízu. Dále vypište, kolik bodu získaly jednotlivé oddíly, mají-li za výhru 3 body, za remízu 1 bod a za prohru 0 bodu. Jaký byl procentuální poměr vstřelených gólu jednotlivých oddílu?

15. Tomáš si vydělá za hodinu v hypermarketu 160 Kč, za měsíc odpracoval n hodin. Sestavte vývojový diagram, který vypíše jeho hrubý měsíční výdělek v Kč. Kolik zaplatí na dani, činí-li dán se základu do 10000 Kč 15% a ze základu nad 10000 Kč 1500 Kč+25% z částky převyšující 10000 Kč? Jaký bude jeho čistý měsíční výdělek? Nakonec vypište informaci, jestli si už vydělal na nové kolo za 15000Kč.

16. Petr má na úctu n Kč. Převeďte tuto částku na eura. Jakou nejdražší dovolenou si muže dovolit, jestliže musí nejprve zaplatit bance 10% z částky na úctu? Možnosti jsou tyto: Chorvatsko-bus-240 Euro, Kréta-letecky-11500Kč, Norsko-bus, kolo-21300Kč, Maledivy-letecky-2050 Euro. Kolik mu na účtu po dovolené zbude?

17. Karel v závěti odkázal svým trem dcerám částku n Kč, kterou si mají rozdělit v poměru 2:3:4. Největší část případně nejstarší, nejméně získá nejmladší. Kolik dostane každá z nich? Muže si z tohoto dědictví nejstarší dcera zaplatit lyžařský zájezd do francouzského střediska Mottaret za 1500 eur?

18. Velitel se nazývá vojevůdce, pokud velel alespoň pěti bitvám, ať už dopadly jakkoliv. Velitel je taktik, pokud vyhrál alespoň tri bitvy. Velitel je stratég, pokud vyhrál více než 16 bitev a prohrál maximálně jednu. Sestavte vývojový diagram, který přečte počet vyhraných a prohraných bitev určitého velitele a rozhodne, zda je vojevůdce, taktik či stratég.

19. Jako chovatel s slepic máte vyřídit objednávku na k kuřecích křídel. Vypište informaci, kolik slepic vám zůstane či kolik jich urychleně musíte dokoupit. Nápověda: běžná slepice má dvě křídla.

20. Jirka je majitelem dvou obdélníkových pozemku stejných rozměru. Napište vývojový diagram, který odpoví na následující otázky: Jaká je celková plocha pozemku? Kolik metru pletiva potřebuje k jejich oplocení? Zemědělec se nazývá velkostatkář, vlastní-li více než 10000 m2 pozemku; má-li alespoň 1000 m2 pozemku, nazývá se statkář. Je Jirka zemědělec, statkář nebo velkostatkář?

Page 12: Algoritmizace pomocný materiál k výucefiles.iktsos.webnode.cz/200000289-37214381b4/Skripta.pdfAlgoritmizace 2 Algoritmus Algoritmus je přesný postup, který je potřeba k vykonání

Algoritmizace

12

Vývojové diagramy s cyklem

Tvorba algoritmů s použitím cyklů

Ve skutečných algoritmech se často setkáváme s cykly. Cyklus lze chápat jako určitý počet opakování. Protože u každého algoritmu musí platit podmínka konečnosti, musí být i u cyklu přesně stanoveno, počet opakování, určení, kdy musí algoritmus skončit. Opakování se ve vývojovém diagramu projeví zpětnou šipkou, která se vrací o několik příkazu nahoru. Příkazy, které se mají opakovaně vykonávat, tvoří tzv. tělo cyklu. Podle způsobu opakování rozeznáváme tři typy cyklů:

1. s pevným počtem opakování 2. řízené podmínkou - s podmínkou na začátku cyklu 3. řízené podmínkou - s podmínkou na konci cyklu

Značení cyklu:

Cyklus s pevným počtem opakování

Umožňuje provádět příkazy třeba desetkrát, stokrát i obecně n krát, kde n je proměnná načtená na začátku diagramu. Chod tohoto cyklu řídí jeho počítadlo. Je to proměnná, nejčastěji označovaná i, která automaticky při každém průchodu cyklem zvýší svoji hodnotu o jedničku. Její počáteční hodnota je dána dolní mezí (často je to 1), konečná hodnota je dána horní mezí (10,100, n). Po dosažení horní meze cyklus končí. Máme pro něj speciální značku.

Tělo cyklu

Page 13: Algoritmizace pomocný materiál k výucefiles.iktsos.webnode.cz/200000289-37214381b4/Skripta.pdfAlgoritmizace 2 Algoritmus Algoritmus je přesný postup, který je potřeba k vykonání

Algoritmizace

13

Výhoda tohoto cyklu je ta, že programátor nemusí psát ukončovací podmínku cyklu ani zvyšovat počítadlo. Presto je ukončovací podmínka implementována uvnitř cyklu, jedná se vlastně o cyklus s podmínkou na začátku. Pokud je horní mez menší než dolní mez, cyklus se neprovede ani jednou.

Cyklus řízený podmínku na začátku cyklu

V tomto cyklu nevíme kolikrát proběhne, ale jeho průběh bude záviset na tom, zda je nebo není splněná určitá podmínka řídicího cyklu. Není – li podmínka splněna hned na začátku před prvním vstupem do cyklu, pak se do cyklu vůbec nevstoupí.

Cyklu řízený podmínkou na konci cyklu

V tomto cyklu opět nevíme kolikrát proběhne, ale s určitosti můžeme říct, že proběhne nejméně jedenkrát. Další průběh bude záviset na tom, zda je nebo není splněná určitá podmínka. Není – li podmínka splněna, cyklus se po prvním opakování ukončí. Pokud bude probíhat, pokud bude splněna podmínka cyklu. Tělo cyklu

Tělo

cyklu

Page 14: Algoritmizace pomocný materiál k výucefiles.iktsos.webnode.cz/200000289-37214381b4/Skripta.pdfAlgoritmizace 2 Algoritmus Algoritmus je přesný postup, který je potřeba k vykonání

Algoritmizace

14

Tvorba algoritmů s použitím cyklů – příklady

Cyklus s pevným počtem opakování

Úkol: Sestavte vývojový diagram, který vytiskne čísla od 1 do n. Použijte cyklus s pevným počtem opakování. Poznámky k řešení: 1. Do proměnné n se načte vstupní hodnota. 2. Začíná cyklus, hodnota počítadla i je nastavena na 1. 3. Testuje se platnost ukončovací podmínky cyklu i=n. 4. Pokud podmínka platí, cyklus skončí a následuje také konec diagramu. Pokud podmínka neplatí, vypíše se hodnota počítadla a řízení se vrací na začátek těla cyklu, počítadlo se automaticky zvyšuje o jedničku.

Obecně lze říci k cyklu s pevným počtem opakování toto:

- Tělo cyklu nemusí být provedeno ani jednou (je-li počáteční hodnota počítadla vetší než hodnota koncová, např. pro I=1,0).

- Používá se velmi často, známe-li počet opakování. - Zápis tohoto cyklu v Pascalu je velmi přirozený a snadný. - Je oblíbený matematiky i techniky.

Page 15: Algoritmizace pomocný materiál k výucefiles.iktsos.webnode.cz/200000289-37214381b4/Skripta.pdfAlgoritmizace 2 Algoritmus Algoritmus je přesný postup, který je potřeba k vykonání

Algoritmizace

15

Cyklus s podmínkou na konci Úkol: Je dána posloupnost n čísel. Sestavte vývojový diagram, který vytiskne počet kladných čísel v této posloupnost (poznámka: kladné číslo je vetší než nula). Použijte cyklus s podmínkou na konci.

Slovní řešení: Nejprve si problém ujasníme na konkrétních příkladech: pro n=5 a posloupnost 4,10,-2,7,-1 je počet kladných čísel 3 pro n=3 a posloupnost -4, -10, -18 je počet kladných čísel 0 pro n=6 a posloupnost 2,3,2,8,10,5 je počet kladných čísel 6 Počet kladných čísel se pohybuje v intervalu <0,n>. Náš úkol je ho zjistit a vytisknout. Počet kladných čísel bude obsahovat nějaká proměnná, například k. Na začátku ji musíme vynulovat, stejně jako počítadlo cyklu i. Počet čísel v posloupnosti udává tradičně n, tuto hodnotu načteme. Poznámky k řešení: 1. Vynuluje se proměnná k pro výpočet počtu kladných čísel. 2. Vynuluje se počítadlo cyklu i. 3. Do proměnné n se načte vstupní hodnota. 4. Začíná tělo cyklu: do proměnné a se přečte jedno číslo. počítadlo se zvýší o jedničku, testuje se podmínka a>0, ptáme se tedy, je číslo a kladné? Pokud podmínka platí, zvýšíme dosavadní počet kladných čísel o jedničku, pokud podmínka neplatí, neuděláme nic. 5. Testuje se platnost ukončovací podmínky cyklu i=n. Pokud podmínka platí, cyklus skončí, vypíše se výsledný počet kladných čísel a následuje konec diagramu. Pokud podmínka neplatí, vracíme se zpět na začátek těla cyklu. Vyzkoušejte činnost diagramu třeba pro n=5 a řadu pěti čísel 2 -1 5 10 -3. V této řadě jsou tri kladná čísla a hodnotu 3 by měl vytisknout pomocí proměnné k i tento vývojový diagram. V diagramu byl použit neúplný podmíněný příkaz (pro podmínku a>0).

Pokud v řadě čísel budou samé záporné hodnoty, vytiskne se na závěr nula, což je správně. V případě zadání záporné či nulové hodnoty do proměnné n se diagram zacyklí. Argumentem pro správnost uvedeného diagramu je to, že posloupnost - 4 čísel reálně neexistuje. Uživatel, který tento nesmyslný vstup zadá, to asi také nezdůvodní. I když kdyby to byl čistý matematik, kdo ví... Na druhou stranu skutečný program zapsaný v jakémkoliv programovacím jazyku reaguje smysluplně na jakékoliv (i hodně nesmyslné) vstupní hodnoty. Je tedy nad čím přemýšlet.

Page 16: Algoritmizace pomocný materiál k výucefiles.iktsos.webnode.cz/200000289-37214381b4/Skripta.pdfAlgoritmizace 2 Algoritmus Algoritmus je přesný postup, který je potřeba k vykonání

Algoritmizace

16

Cyklus s podmínkou na začátku

Úkol: Je dána posloupnost celých čísel zakončená nulou. Sestavte vývojový diagram, který vytiskne počet kladných čísel v této posloupnosti. Použijte cyklus s podmínkou na začátku.

Poznámky k řešení: 1. Vynuluje se proměnná k pro výpočet počtu kladných čísel. 2. Začíná tělo cyklu: do proměnné a se přečte jedno číslo, testuje se podmínka a>0, ptáme se tedy, je číslo a kladné? Pokud podmínka platí, zvýšíme dosavadní počet kladných čísel k o jedničku podmínka neplatí, neuděláme nic. 3. Testuje se platnost ukončovací podmínky cyklu a=0. Pokud podmínka platí, cyklus skončí, vypíše se výsledný počet kladných čísel a následuje konec diagramu. Pokud podmínka neplatí, vracíme se zpět na začátek těla cyklu. V tomto jednoduchém diagramu je vidět, že trpělivě čte vstupní čísla a každé kladné započítá do celkového počtu kladných čísel. Algoritmus končí, jakmile je načtena nula, v souladu se zadáním. Pokud uživatel nulu nezadá, cyklus se bude opakovat přesně podle zadání. Tento algoritmus je tedy napsán správně, bude se standardně chovat pro všechny vstupní hodnot.

Page 17: Algoritmizace pomocný materiál k výucefiles.iktsos.webnode.cz/200000289-37214381b4/Skripta.pdfAlgoritmizace 2 Algoritmus Algoritmus je přesný postup, který je potřeba k vykonání

Algoritmizace

17

Další řešené příklady

Úkol: Zobrazení čísel od jedničky do desítky. Poznámky k řešení: Použijeme cyklus s pevným počtem opakování. Při prvním průchodů cyklem má proměnná I hodnotu 1, při druhém průchodu cyklem má hodnotu 2, při třetím průchodů cyklem má hodnotu 3 atd…..., při desátém průchodů cyklem má hodnotu 10.

Úkol: Suma čísel od 1 do 10

Poznámky k řešení: Úkolem je součet čísel od 1 do 10 - 1+2+3+4+5+6+7+8+9+10 = Běžíš po ovále, v jednom místě je důlek, při každém proběhnutí budeš vhazovat míčky. Po prvním jeden, po druhém dva…atd.. Kolik jich tam bude na konci (10 x proběhneš okolo) Použité proměnné: SUMA…..proměnná sloužící k postupnému sčítání I…………řídící proměnná cyklu

Page 18: Algoritmizace pomocný materiál k výucefiles.iktsos.webnode.cz/200000289-37214381b4/Skripta.pdfAlgoritmizace 2 Algoritmus Algoritmus je přesný postup, který je potřeba k vykonání

Algoritmizace

18

Úkol: Na vstupu je 100 celých čísel. Vytisknete jejich průměr. Průměrem se myslí klasický aritmetický průměr. Slovní řešení: Průměr se vypočítá podle vzorce součet/počet. Počet čísel je roven 100, vzorec pro výpočet průměru 100 čísel je součet/100. Nejprve proto vypočítáme součet 100 daných čísel. Počet opakování cyklu je zde předem dán, můžeme použít cyklus s pevným počtem opakováním s počítadlem i nebo jakýkoliv cyklus s podmínkou. Pro výpočet součtu použijeme proměnnou součet. Proměnnou součet vynulujeme. Dále 100x opakujeme přečtení čísla a jeho přičtení k proměnné součet. Nakonec vytiskneme průměr jakožto součet/100. ¨ Poznámky k 1. řešení příkladu: 1. V 1. řešení je použit cyklus s podmínkou na konci. Vynuluje se počítadlo cyklu i. 2. Vynuluje se proměnná pro výpočet součtu soucet. 3. Začíná tělo cyklu: počítadlo se zvýší o jedničku, je přečteno číslo a k dosavadnímu součtu se přičte toto číslo a. 4. Testuje se platnost ukončovací podmínky cyklu i=100. Pokud podmínka platí, cyklus skončí, vypíše se výsledný průměr a následuje konec diagramu. Pokud podmínka neplatí, vracíme se zpět na začátek těla cyklu.

Page 19: Algoritmizace pomocný materiál k výucefiles.iktsos.webnode.cz/200000289-37214381b4/Skripta.pdfAlgoritmizace 2 Algoritmus Algoritmus je přesný postup, který je potřeba k vykonání

Algoritmizace

19

Úkol 2: Kalkulačka Použité proměnné:

KOD…kód operace, který je zadán zvenčí A,B ….dvě čísla zadaná zvenčí, se kterými se bude provádět požadovaná operace C……..výsledek operace

Skončit?

Začátek

Zobraz: „ zadej 1. sčítání

2. odčítaní

3. násobení 4. dělení

Čti: KOD

Čti: A, B

KOD =1

KOD = 2

KOD =3

KOD = 4

Zobraz:

„Zadal jsi

špatný

kód“

-

-

-

-

- +

Konec

C : = A + B

C : = A-B

C : = A*B

C : =

A/B

+

+

+

+

B=0

Zobraz: „B

nesmí být

0“

+

-

Zobraz:

„C“

Page 20: Algoritmizace pomocný materiál k výucefiles.iktsos.webnode.cz/200000289-37214381b4/Skripta.pdfAlgoritmizace 2 Algoritmus Algoritmus je přesný postup, který je potřeba k vykonání

Algoritmizace

20

Úkoly k procvičení:

1. Vytisknete sestupně celá čísla od n do 1. 2. Vytisknete součet čísel od 1 do n. 3. Vytisknete všechna celá čísla z intervalu <a,b>. 4. Vytisknete prvních n kladných lichých čísel. 5. Je dána posloupnost čísel zakončená nulou. Vytisknete jejich počet, nulu nepočítejte. 6. Je dána posloupnost čísel zakončená nulou. Vytisknete maximální číslo. 7. Je dána posloupnost celých čísel zakončená nulou. Vytisknete průměr těchto čísel, nulu nepočítejte. 8. Je dána posloupnost n čísel. Vytisknete maximální číslo. 9. Je dána posloupnost celých čísel zakončená nulou. Zjistěte, zda je více kladných nebo záporných čísel. Vytisknete i jejich procentuální poměr. 10. Je dána posloupnost 50 čísel. Zjistěte, kolik z nich je jednociferných a tuto informaci vytisknete i procentuálně. 11. Je dána posloupnost 100 čísel. Zjistěte, zda je více jednociferných nebo víceciferných. 12. Vytisknete prvních deset násobku daného čísla n. 13. Vytisknete vzestupně všechna kladná sudá čísla menší než dané n. 14. Je dána posloupnost kladných čísel představujících známky zakončená nulou. Kolik z nich je jedniček? Kolik je pětek? Kterých známek je víc? 15. Je dána posloupnost 12 kladných čísel představujících známky. Vytisknete průměrnou známku a informaci, zda je jedná o vyznamenání. (Má-li žák nějakou pětku, neprospěl, jinak pokud má průměr do 1,5, získává vyznamenání, jinak prospěl.)


Recommended