Vývojové diagramy - 6. díl
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama

Vývojové diagramy - 6. dílVývojové diagramy - 6. díl

 

Vývojové diagramy - 6. díl

Google       Google       29. 7. 2011       34 820×

V tomto dílu zakončíme téma podmínky složitějšími příklady, na kterých si ukážeme, že podmínek může být ve vývojové diagramu více.

Reklama
Reklama

Podmínky se používají na řízení toku programu, určujeme jimi, kudy se bude program ubírat dále. Ukázky, které jsou v předchozím dílu, by snadno mohly vést k mylnému dojmu, že ve vývojovém diagramu může být pouze jedna podmínka. Ve vývojovém diagramu není žádné omezení na počet a kombinace podmínek. Složitější programy obsahují destíky, stovky, tisíce,… podmínek. A stejně tak složitější vývojové diagramy mohou obsahovat více podmínek. V tomto dílu už nebudou u vývojových diagramů tabulky na průchody – můžete si je zkusit vytvořit sami.

Hledání minima

Prvním příkladem je hledání minima ze tří zadaných čísel. Zadání tohoto příkladu zní: najděte minimální číslo ze tří zadaných. Na vstupu tedy budou tři čísla, která zadá uživatel. Výstupem bude vypsané číslo, které je nejmenší (zadá-li uživatel 1, 2, 3, tak výsledkem algoritmu musí být vypsání čísla 1). Je více způsobů, jak zadanou úlohu řešit. Vzhledem k tomu, že nehledáme optimální nebo nejrychlejší řešení, ale pouze si demonstrujeme algoritmy s použitím podmínek, tak použijeme metodu „porovnání každý s každým“. Z těchto porovnání je samozřejmě možné některá vynechat. Pokud bude platit, že A < B, tak již víme, že A je menší než B. Dále tedy stačí A porovnat s C a B již s C porovnávat nemusíme, protože víme, že A je menší (jenom připomínám, že hledáme nejmenší číslo).

Výsledný vývojový diagram je na obrázku. Nejprve se tedy porovná A s B. Podle výsledku tohoto porovnáví se buď C porovnává s A (pokud předchozí podmínka byla splněna, neboli A je opravdu menší než B), nebo se C porovnává s B (v opačném případě). Pokud bychom stejnou metodu použili i pro více vstupních hodnot, tak by nám strom vývojového diagramu utěšeně rostl. Proto se častěji používá metoda s uloženým lokálním minimem (maximem), kterou si ukážeme  některém z následujícíh dílů.

Kvadratická funkce

Druhý příklad je na výpočet reálných kořenů kvadratické rovnice. Zadání úlohy je následující: vytvořte algoritmus pro výpočet reálných kořenů kvadratické rovnice, která je zadaná koeficienty A, B, C (dle vzorce Ax2 + Bx + C = 0). Na vstupu od uživatele dostaneme tři hodnoty (A, B, C) a výsledkem budou vypočtené kořeny.

Toto je první úloha, ve které se zmíním o kontrole vstupu od uživatele. V reálných programech je nutné vstup od uživatele kontrolovat vždy. Tam, kde váš program bude očekávat číslo, uživatel jistě zadá slovo „pokus" apod. Kvadratická rovnice je kvadratická pouze v případě, že A je nenulové. V případě, že A je nulové, pak se jedná o lineární rovnici a tu neřešíme. Při zadání A = 0 musí být výsledkem algoritmu hlášení, že zadané koeficienty netvoří kvadratickou rovnici.

Dále postupujeme přes výpočet diskriminantu. Vzorec pro výpočet diskriminantu je: D = B2 - 4AC. Řešení kvadratické rovnice v oboru reálných čísel je pouze v případě, že vypočtený diskriminant není záporný. To bude druhá podmínka v algoritmu. V případě záporného algoritmu nemá kvadratická rovnice řešení (v oboru reálných čísel). Pokud není diskriminant záporný, pak je možné vypočítat kořeny a vypsat je.

Jednoduchá kalkulačka

Posledním příkladem je jednoduchá kalkulačka. Zadání je následující: vytvořte algoritmus pro jednoduchou kalkulačku, která bude umět načíst 2 operandy a operátor (+, -, ×, ÷), vypočítat výsledek a vypsat ho. Na vstupu od uživatele tedy budou 2 čísla a operátor (znak), který bude signalizovat operaci, která se má provést. Musíme tedy vytvořit rozhodovací strom, kde budeme kontrolovat, jestli se jedná o jednu z podporovaných operací, a pokud ano, tak provedeme výpočet. V případě, že zadaný operátor nebude mezi podporovanými, vypíšeme hlášení, že se nejedná o podporovanou operaci (kontrola vstupu od uživatele).

Vzhledem k tomu, že mezi vybranými operátory je i dělení, tak musíme (stejně jako ve 4. dílu) kontrolovat, jestli by nedošlo k dělení nulou. Před samotným dělením tak musí být podmínka, která této variantě zabrání, a místo chyby programu (tak by dělení nulou v programu končilo) zobrazíme uživateli hlášení, že nulou nelze dělit. Nakonec vypíšeme výsledek, který jsme vypočítali.

Krátká poznámka na konec. V této úloze by se dala s výhodou použít podmínka s více větvemi (switch), kde se každá větev prochází pro přesně danou hodnotu proměnné v podmínce. V našem případě by v podmínce bylo pouze oper a jednotlivé větve by byly označené +, -, ×, ÷. V tomto seriálu takto zapsanou podmínku používat nebudeme.

Tím tento díl zakončíme a příště na nás čekají cykly.

×Odeslání článku na tvůj Kindle

Zadej svůj Kindle e-mail a my ti pošleme článek na tvůj Kindle.
Musíš mít povolený příjem obsahu do svého Kindle z naší e-mailové adresy kindle@programujte.com.

E-mailová adresa (např. novak@kindle.com):

TIP: Pokud chceš dostávat naše články každé ráno do svého Kindle, koukni do sekce Články do Kindle.

Hlasování bylo ukončeno    
8 hlasů
Google
Autor se věnuje programování za peníze :)

Nové články

Reklama
Reklama
Obrázek ke článku Blockchain & Bitcoin konference

Blockchain & Bitcoin konference

V pátek 19. 5. 2017 se v pražském konferenčním centru Andel’s konala Blockchain & Bitcoin konference. Řada odborníků a podnikatelů v oboru blockchainu a kryptoměn představila možnosti budoucího směřování tohoto oboru. Speakeři většinou rusky mluvící provenience prezentovali řešení svých firem založená na technologii blockchainu.

Obrázek ke článku Malware KONNI se úspěšně skrýval 3 roky. Odhalil ho bezpečnostní tým Cisco Talos

Malware KONNI se úspěšně skrýval 3 roky. Odhalil ho bezpečnostní tým Cisco Talos

Bezpečnostní tým Cisco Talos odhalil celkem 4 kampaně dosud neobjeveného malwaru, který dostal jméno KONNI. Ten se dokázal úspěšně maskovat od roku 2014. Zpočátku se malware zaměřoval pouze na krádeže citlivých dat. Za 3 roky se ale několikrát vyvinul, přičemž jeho současná verze umožňuje útočníkovi z infikovaného počítače nejenom krást data, ale i mapovat stisky na klávesnici, pořizovat screenshoty obrazovky či v zařízení spustit libovolný kód. Pro odvedení pozornosti oběti zasílali útočníci v příloze také obrázek, zprávu a výhružkách severokorejského režimu či kontakty na členy mezinárodních organizací.

loadingtransparent (function() { var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; po.src = 'https://apis.google.com/js/plusone.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); })();
Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032017 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý