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

Vývojové diagramy – 10. dílVývojové diagramy – 10. díl

 
Hledat
Vybavení pro Laser Game
Spuštěn Filmový magazín
Laser Game Brno
Laser Game Ostrava

Vývojové diagramy – 10. díl

Google       Google       2. 9. 2011       14 994×

Doposud jsme se zabývali cykly, u nichž byl přesně dán počet opakování. Rozměry nebo rozsahy pro ně bývají dobře známy. Existují ale případy cyklů, kdy nevíme, kolik opakování budeme muset projít, abychom se dobrali cíle. O těch je tento díl seriálu.

Reklama
Reklama

Řekněme, že děláme program pro pračku. V jedné fázi programu budeme čekat na to, až se ohřeje voda na určitou teplotu, a toto čekání budeme provádět v cyklu. Možná někoho napadne, že bychom mohli čekat daný počet vteřin (daný čas). To bohužel nejde, protože jednak nevíme, jak studená voda bude na začátku, a také nevíme, jak rychle se bude voda ohřívat, takže se nedá určit, jak dlouhou dobu to bude trvat. Jediný opravdový konec čekacího cyklu může nastat ve chvíli, kdy teplota vody dosáhne požadované nebo vyšší hodnoty.

Možná vám to připadá jako podmínka, protože ona to podmínka je. Cykly, které si dnes ukážeme, se řídí takovou podmínkou a platí pro ni stejná pravidla jako pro „normální" podmínku.

Cykly, které se řídí podmínkou, jsou dva, a to s podmínkou na začátku a s podmínkou na konci. Obě varianty mají společné, ale i odlišné vlastnosti, které je předurčují k různým oblastem použití. Oproti cyklu s daným počtem opakování nemají index, který by automaticky měnil svou hodnotu.

Fragment vývojového diagramu pro první typ vidíte na obrázku. Jak je již patrné z názvu „cyklus s podmínku na začátku", tak vyhodnocovací podmínka je před samotným tělem. Cyklus má tyto vlastnosti:

  • nejprve se vyhodnocuje podmínka a až pak se provádí tělo,
  • tělo se vykonává, dokud je podmínka splněna,
  • tělo se nemusí vykonat ani jednou (pokud není podmínka splněna hned při prvním vstupu),
  • počet opakování je omezen pouze podmínkou a může jich být 0 až nekonečno.

Druhý typ (s podmínkou na konci) má dvě varianty. V některých programovacích jazycích se tělo vykonává, dokud není podmínka splněna (např. Pascal), a v jiných, dokud splněna je (např. C). Vzhledem k tomu, že pro výuku programování je vhodný více Pascal než C, tak budeme používat první variantu.

Fragment vývojového diagramu pro tento cyklus vidíte na obrázku, a protože existují dvě varianty, tak budeme důsledně označovat větve, tj. kdy cyklus končí a kdy pokračuje (a to i pro cyklus s podmínkou na začátku). Z názvu „cyklus s podmínkou na konci" jasně plyne, že vyhodnocovací podmínka je až za tělem. Cyklus má tyto vlastnosti:

  • nejprve se provede tělo a až pak se vyhodnocuje podmínka,
  • tělo se vykonává, dokud není podmínka splněna,
  • tělo se vykoná minimálně jednou,
  • počet opakování je omezen pouze podmínkou a může jich být v rozmezí 1 až nekonečno.

Možná někoho napadne: a co v případě, že podmínka je neustále splněná (pro cykus s podmínkou na začátku) nebo nebude nikdy splněná (pro cyklus s podmínkou na konci)? Odpověď je jednoduchá – jedná se o nekonečný cyklus. Jedná se o speciální typ algoritmu, který se používá pouze ve výjimečných případech (např. program v jednočipovém procesoru pro nějaké řízení, který běží neustále). Jinak musí platit, že výsledek algoritmu musí být znám v konečném počtu kroků.

Konečnost – výsledek algortimu musí být znám v konečném počtu kroků.

Než přejdeme na praktické ukázky, tak je potřeba zmínit, že jakákoliv úloha na cykly je řešitelná jakýmkoliv z těchto cyklů. Vždy je možné úlohu řešit jak s podmínkou na začátku, tak s podmínkou na konci. Dokonce mohou tyto cykly nahradit i předchozí typ, tj. s daným počtem opakování – jeden takový příklad si ukážeme. A i další příklady budeme nejprve řešit pro oba typy cyklů.

Možná se ptáte, proč jsou dva typy, když jsou v podstatě záměnitelné. Odpověď už tu byla naznačena – každý cyklus je vhodný na jiný typ úloh. Někdy je výhodnější použít podmínku na začátku, někdy na konci a v některých případech je to jedno. Uvedené příklady by to měly demonstrovat.

Login

Jediný dnešní příklad bude všem důvěrně známý, protože přihlašování (login) do nějakého systému (e-mail, Facebook, IM a mnoho dalších) je na denním pořádku (ač se často děje již automaticky). Zadání úlohy by mohlo být následující: vytvořte algoritmus pro přihlášení uživatele do systému. Přihlašování se děje zadáním jména a hesla. Vstupem algoritmu tedy bude jméno a heslo, které zadá uživatel. Výstupem bude hlášení, že jsou nebo nejsou zadané údaje správně a že již případně došlo k úspěšnému přihlášení.

Jak jsem slíbil, úlohu budeme řešit oběma typy cyklů. Nejprve je nutné zadat přihlašovací údaje a pak je teprve možné rozhodnout, jestli jsou správně a povolit další přístup. V tomto případě má výhodu cyklus s podmínkou na konci, neboť se nejprve vykoná tělo cyklu, kde uživatel zadá jméno a heslo, a pak dojde k vyhodnocení. Výsledný algoritmus je na obrázku. Cyklus s podmínkou na konci je pro tento typ úloh ten vhodnější.

Naproti tomu cyklus s podmínkou na začátku je na tento typ úloh méně vhodný. Před prvním vyhodnocením je nutné zadat přihlašovací údaje, ale následně v těle cyklu také (pro případ, že by je uživatel nezadal správně). V algoritmu tak dochází k opakování části diagramu (programu) a výsledný vývojový diagram není již tak přehledný. Volbou nevhodného typu cyklu si zbytečně přiděláváme práci a algoritmus se stává složitějším.

Všimněte si také rozdílnosti podmínek. Cyklus s podmínkou na začátku končí, pokud není podmínka splněna, takže se musíme ptát, jestli není jméno a heslo platné. V případě, že je podmínka splněna (tedy nejsou platné), tak je potřeba, aby je uživatel zadal znovu. V případě, že není splněna (neboli údaje jsou platné), tak se uživatel úspěšně přihlásil. U druhého cyklu je to vyhodnocení podmínky obráceně, takže se ptáme tak, jak bychom očekávali.

Jedinou výhodou cyklu s podmínkou na začátku je to, že se u něj přirozeně rozlišuje první zadání a následná zadání. To umožňuje vypsat hlášení o tom, že se přihlášení nezdařilo. U cyklu s podmínkou na konci bychom tohoto dosáhli přidáním podmínky na počet pokusů, které bychom si museli počítat. V případě, že by se nejednalo o první pokus, tak by se vypsalo hlášení o chybném přihlášení.

Možná to teď vypadá jako velká výhoda, ale pokud bychom dělali algoritmus pro login nejenom pro ukázkové účely, ale pro praktické použití, tak bychom v něm počítadlo pokusů stejně měli. Při nějakém počtu neúspěšných přihlášení se další přihlášení znemožní nebo se zařízení zablokuje (např. mobil po třech špatně zadaných PINech). Komplexnější vývojový diagram pro zadávání PINu s maximálním počtem opakování (i s podmínkou na hlášení) si ukážeme příště.

To je pro tentokráte vše. V příštím díle budeme s cykly pokračovat. Ukážeme si na jednom příkladu řešení pomocí všech tří cyklů a také si ukážeme příklad, ve kterém bude výhodnější použít cyklus s podmínkou na začátku.

×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

Obrázek ke článku Konference: Moderní informační systémy podporují automatizaci

Konference: Moderní informační systémy podporují automatizaci

Současná situace v šíření onemocnění Covid-19 klade na řadu firem nové nároky a mnohé z nich jsou nyní více než kdy jindy závislé na nejmodernějších informačních technologiích. Proto i v oblasti podnikových informačních systémů vidíme rostoucí důraz na automatizaci nebo na důslednou integraci. Také o těchto trendech se bude mluvit na konferenci Firemní informační systémy, která se koná 24.9.2020 v pražském Kongresovém centru Vavruška na Karlově náměstí.

Reklama
Reklama
Obrázek ke článku Nebezpečí ukrytá v USB: z nuly na škvarek za pět sekund

Nebezpečí ukrytá v USB: z nuly na škvarek za pět sekund

Za cenu šesti dolarů lze celkem bez obtíží koupit nový, líbivě vyhlížející flash disk. Přidaná hodnota, které se vám spolu s ním dostane, už tak moc líbivá není. To, co se před pár sekundami tvářilo jako externí disk, se po připojení k počítači změní v důmyslné elektrické křeslo, které vaše zařízení v onen příslovečný škvarek promění za pár sekund. Cílovou skupinou pro koupi takových zařízení by mohli být záškodníci, kteří by tímto způsobem osnovali pomstu třeba vůči záletnému partnerovi. 

Obrázek ke článku Znalosti, dovednosti i prestižní titul MBA: Jde to i moderně a online

Znalosti, dovednosti i prestižní titul MBA: Jde to i moderně a online

Snad nikdy není špatná příležitost na investici do hodnotného vzdělání. Obzvlášť v případě, že absolvent dovede teoretické poznatky přetavit v praktické dovednosti, využitelné při řešení problémů i v komunikaci. Právě na to se specializuje studijní program MBA Řízení informačních technologií, vyučovaný na Business Institutu.

Obrázek ke článku Coding Bootcamp Praha: Obor IT krize nepoznamenala, žádaní jsou weboví vývojáři

Coding Bootcamp Praha: Obor IT krize nepoznamenala, žádaní jsou weboví vývojáři

Pandemie Covid-19 otřásla trhem práce v základech. Dopady krize pocítilo celkově až 45 % zaměstnanců. Není divu, že čím dál větší jistotu přináší obor IT. Ten zůstal krizí téměř nepoznamenán a při nutnosti začít dělat věci na dálku se ještě více ukázalo, jak moc mnohé firmy kvalitní IT potřebují. Do IT nyní přicházejí začátečníci, kteří v něm vidí lukrativní budoucnost a jistotu, ale i freelanceři a zaměstnanci z oborů zasažených krizí

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032020 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý