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

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

 

Vývojové diagramy – 7. díl

Google       Google       8. 8. 2011       42 456×

Dnešním dílem začneme cykly. Nejprve si ukážeme, k čemu jsou dobré, a následně si vysvětlíme první typ, tj. cyklus s daným počtem opakování. A článek zakončíme krátkým příkladem.

Co to vlastně takový cyklus je a k čemu je dobrý? Cyklus je určitá část algoritmu, která se provádí opakovaně (nejlépe tolikrát, kolikrát jsme chtěli :)). Sebelepší vysvětlování nenahradí příklad, takže si jeden postupný uděláme. V minulém díle jsme hledali minimum ze tří čísel. Kdybychom chtěli najít minimum z pěti čísel, z deseti čísel, z tisíce čísel atd., tak by se nám vývojový diagram neúměrně rozkošatil. A smyslem vývojových diagramů je zápis programů, nikoliv popsání všech dostupných papírů.

Když začínáme „ty cykly", tak vás asi napadne, že k řešení použijeme cyklus. Ale kde je tam opakující se kód? Jsou tam sice podmínky, ale každá je jiná, resp. v každé se porovnávají jiné dvě proměnné. Řešením problému opravdu bude cyklus, ale také trochu jiný pohled na daný problém.

Začneme od zjištění minima ze dvou zadaných hodnot (obrázek 7.1 (1)). Výsledkem bude menší z obou hodnot. Kdybychom chtěli tento algoritmus rozšířit na tři, tak můžeme postupovat stejně jako v předchozím díle   nalezené menší číslo porovnáme se třetím zadaným. Můžeme to ovšem udělat i tak, že si nalezené minimum uložíme a další porovnání provedeme pouze s tímto minimem (obrázek 7.1 (2)).

Pokud bychom přidali další porovnání, tak bychom ho opět mohli dělat pouze s uloženým minimem (obrázek 7.1 (3)). Tím dostáváme opakující se kód. Jsou zde ovšem ještě dvě věci, které by bylo potřeba změnit. Načtení provádím do proměnné, která se pokaždé jmenuje jinak, a za druhé by bylo vhodné (pokud to půjde) upravit počátek tak, aby jeho zápis vypadal stejně jako následně přidávané sekvence.

Nejprve upravíme počáteční sekvenci, tj. vývojový diagram z obrázku 7.1 (1). Je několik možností a my si tu ukážeme dvě hlavní. V první jde o to, že první načtené číslo se stane počáteční inicializací hledaného minima, které si průběžně ukládáme do proměnné MIN (obrázek 7.2 (4)). Druhou možností, která je mému srdci bližší (a kterou budu v seriálu používat), je počáteční inicializaci proměnné MIN udělat na nějakou strašně velkou hodnotu. Nejlépe na tu maximální, kterou si označíme +nekonečno. Kdybychom hledali maximum, tak by počáteční inicializace byla na -nekonečno.

V principu jde o to, aby z prvního porovnání vyšlo menší (resp. větší při hledání maxima) námi zadané číslo, ať je jakékoliv. To nám zajistí pouze a jenom nějaká maximální hodnota při hledání minima (resp. minimální hodnota při hledání maxima), protože cokoliv je menší než +nekonečno. Výsledkem je vývojový diagram na obrázku 7.2 (5).

Inicializace je důležitá i z jiného hlediska. Každý algoritmus musí totiž splňovat podmínku opakovatelnosti, tj. pro stejná vstupní data musí dávat stejný výsledek. Kdybychom proměnnou MIN neinicializovali, tak by se nedalo minimálně při prvním porovnání určit, jakou má hodnotu, a výsledek takového porovnání by byl nejistý. Každá proměnná musí mít známou hodnotu před svým prvním použitím.

Opakovatelnost – algoritmus musí pro stejná vstupní data dávat stejný výsledek.

A jako poslední se zbavíme měnících se jmen proměnných. Když se podíváme, kde se načtená proměnná (třeba A) používá, tak zjistíme, že po načtení se s ní provede porovnání a případně se její hodnota uloží do proměnné MIN. Dále se již nepoužívá. Z toho vyplývá, že při dalším načítání nemusíme používat jinou proměnnou, ale můžeme využít tuto proměnnou opakovaně.

Výsledkem tedy bude vývojový diagram, který je na obrázku 7.2 (6) – výsledek diagramu pro nalezení maxima ze tří hodnot. Na tomto obrázku je vidět, že zde máme část, která se stále opakuje, a to včetně jmen proměnných. Nyní můžeme přistoupit k zápisu takového algoritmu s pomocí cyklu.

Nejprve si ukážeme, jak se takový cyklus zapisuje do vývojového diagramu. Pro cyklus s daným počtem opakování se uvádí mnoho zápisů. Mým favoritem se stal zápis z obrázku 7.3, neboť v něm je nejlépe graficky znázorněný cyklus a následný kód po jeho ukončení je oddělen od těla cyklu. Tělo je část kódu, která se má cyklicky opakovat. Počet opakování je dán rozsahem, který je zapsán ve značce pro cyklus. V něm se zadává rozmezí od - do, např. rozmezí od 1 do 100 znamená, že se cyklus provede stokrát.

Hodnota cyklu se mění každým průchodem automaticky a ukládáme si ji do nějaké pomocné proměnné (nejčastěji i od slova index). Stává se, že tuto hodnotu k ničemu nepotřebujeme, ale i tak ji ukládáme do proměnné. Asi častější případ je, že hodnotu použijeme. Jednoduché použití si ukážeme v příštím díle a až se dostaneme k polím a indexaci (odtud označení index), tak si ukážeme další velmi částé použití cyklů s daným počtem opakování, kde se nám uložená hodnota indexu bude hodit.

Hledání minima

Dnešní díl uzavřeme dokončením toho, co jsme na začátku rozpracovali, tj. vytvoření vývojového diagramu pro zjištení minima ze zadaných čísel pomocí cyklu. Zadání úlohy je následující: najděte minimum ze 100 zadaných čísel. Úlohu jsme si podrobně rozebrali, takže už jenom ve zkratce. Hodnotu hledaného minima uložíme do proměnné MIN, kterou si musíme inicializaovat na nějaké velmi vysoké číslo (v našem případě je to +nekonečno). Inicializace se provádí na začátku, tj. před cyklem. Od uživatele musíme získat 100 čísel, takže načítání a následné porovnání bude tělem cyklu (tak, jak jsme si to ukázali výše). Po skončení cyklu nalezené minimum už jen vypíšeme.

Jak vidíte, tak zápis je přehledný a velmi nám zjednodušil úlohu, která by bez cyklu zabrala několik stránek. Další velkou výhodou zápisu v cyklu je snadná změna počtu opakování, tj. rozsahu, pro který se má cyklus vykonávat. Pokud bychom chtěli místo hledání minima ze 100 udělat příklad pro hledání minima ze 389 450 čísel, tak ve vývojovém diagramu (a potažmo i programu) změníme pouze jedno číslo (100 na 389 450).

Následující tabulka obsahuje jednotlivé kroky pro průchod vývojovým diagramem. Vzhledem k opakování v cyklu se zde některé kroky (2, 3, 4, 5) cyklicky opakují. Pro všech 100 průchodů by tabulka byla velmi dlouhá, proto je její výpis zkrácen na několik průchodů. Podstatné je v ní uvedeno, tj. první průchod a hlavně poslední.

V příštím díle si ukážeme další příklady, kde použijeme 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    
4 hlasy
Google
Autor se věnuje programování za peníze :)

Nové články

Obrázek ke článku Hybridní inteligentní systémy 2

Hybridní inteligentní systémy 2

V technické praxi využíváme často kombinaci různých disciplín umělé inteligence a klasických výpočtů. Takovým systémům říkáme hybridní systémy. V tomto článku se zmíním o určitém typu hybridního systému, který je užitečný ve velmi složitých výrobních procesech.

Obrázek ke článku Jak vést kvalitně tým v IT oboru: Naprogramujte si ty správné manažerské kvality

Jak vést kvalitně tým v IT oboru: Naprogramujte si ty správné manažerské kvality

Vedení týmu v oboru informačních technologií se nijak zvlášť neliší od jiných oborů. Přesto však IT manažeři čelí výzvě v podobě velmi rychlého rozvoje a tím i rostoucími nároky na své lidi. Udržet pozornost, motivaci a efektivitu týmu vyžaduje opravdu pevné manažerské základy a zároveň otevřenost a flexibilitu pro stále nové výzvy.

Obrázek ke článku Síla týmů se na home office může vytrácet. Odborníci radí, jak z pracovních omezení vytěžit maximum

Síla týmů se na home office může vytrácet. Odborníci radí, jak z pracovních omezení vytěžit maximum

Za poslední rok se podoba práce zaměstnanců změnila k nepoznání. Především plošné zavedení home office, které mělo být zpočátku jen dočasným opatřením, je pro mnohé už více než rok každodenní realitou. Co ale dělat, když se při práci z domova ztrácí motivace, zaměstnanci přestávají komunikovat a dříve fungující tým se rozpadá na skupinu solitérů? Odborníci na personalistiku dali dohromady několik rad, jak udržet tým v chodu, i když pracovní podmínky nejsou ideální.

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