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

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

 

Vývojové diagramy – 7. díl

Google       Google       8. 8. 2011       21 888×

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.

Reklama
Reklama

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 Delphi 10.1.2 (Berlin Update 2) – na co se můžeme těšit

Delphi 10.1.2 (Berlin Update 2) – na co se můžeme těšit

Touto roční dobou, kdy je zem pokrytá barevným listím a prsty křehnou v mrazivých ránech, se obvykle těšíme na zbrusu novou verzi RAD Studia. Letos si však ale budeme muset počkat na Godzillu a Linux až do jara. Vezměme tedy za vděk alespoň updatem 2 a jelikož dle vyjádření pánů z Embarcadero se budou nové věci objevovat průběžně, pojďme se na to tedy podívat.

Reklama
Reklama
Obrázek ke článku Konference: Moderní datová centra pro byznys dneška se koná už 24. 11.

Konference: Moderní datová centra pro byznys dneška se koná už 24. 11.

Stále rostoucí zájem o cloudové služby i maximální důraz na pružnost, spolehlivost a bezpečnost IT vedou k výrazným inovacím v datových centrech. V infrastruktuře datových center hraje stále významnější roli software a stále častěji se lze setkat s hybridními přístupy k jejich budování i provozu.

Obrázek ke článku Konference: Mobilní technologie mají velký potenciál pro byznys

Konference: Mobilní technologie mají velký potenciál pro byznys

Firmy by se podle analytiků společnosti Gartner měly  rychle přizpůsobit skutečnosti, že mobilní technologie už zdaleka nejsou horkou novinkou, ale standardní součástí byznysu. I přesto - nebo možná právě proto - tu nabízejí velký potenciál. Kde tedy jsou ty největší příležitosti? I tomu se bude věnovat již čtvrtý ročník úspěšné konference Mobilní řešení pro business.

Obrázek ke článku Hackerský kongres přiveze v září do Prahy špičky světové kryptoanarchie

Hackerský kongres přiveze v září do Prahy špičky světové kryptoanarchie

Hackerský kongres HCPP16 pořádá od 30. září do 2. října nezisková organizace Paralelní Polis již potřetí, a to ve stejnojmenném bitcoinovém prostoru v pražských Holešovicích. Letos přiveze na třídenní konferenci přes 40 většinou zahraničních speakerů – lídrů z oblastí technologií, decentralizované ekonomiky, politických umění a aktivismu. Náměty jejich přednášek budou také hacking, kryptoměny, věda, svoboda nebo kryptoanarchie.

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 © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý