Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!
Zadejte Vaši e-mailovou adresu:
Kamarád fotí rád?
Přihlas ho k odběru fotomagazínu!
Zadejte e-mailovou adresu kamaráda:
Delphi
Naučte se programovat v Delphi (7. díl) - Řízení toku programu
24. září 2001, 00.00 | V dnešním článku se budu věnovat řízení toku programu. Podmínkám, cyklům apod. Také si vytvoříme pár pokusných prográmků, na kterých si vyzkoušíme probranou látku.
Úvodem
Podkapitolu Úvodem jsem zavedl poprvé v tomto seriálu. Zavedl
jsem ji proto, že bych se chtěl zmínit o distribucích Delphi. Někteří čtenáři
mě bombardují maily, ve kterých se ptají na jedinné: "Kde sehnat Delphi?".
Myslím si, že pro začátečníky nemá smysl kupovat hned ostrou verzi. Doporučoval
bych trial verzi Delphi 5, která je zdarma a je funkční tři měsíce. Tato trial verze
se dá sehnat třeba na serveru www.vypalcd.cz za 109
Kč (prosím, neberte to jako reklamu). Tuto možnost doporučuji zejména modemistům.
Další možnost je stáhnout si Delphi 6 Personal Edition ze stránky ftpd.borland.com/download/delphi/personal/BorlandDelphiPersonalEdition.exe,
které je distribuováno jako freeware. I tato verze je k mání na serveru Vypalcd.cz.
Podmínky
K řízení toku programu se používají podmínky a cykly.
Podmínka je nejčastějším použitím řízení toku programu. V Object Pascalu máme tři typy podmínek. První, jakási základní podmínka je if...then. Dalo by se to přeložit jako když...tak.
|
If bere za argument booleovský výraz. Když je booleovský výraz true, tak se vykoná příkaz nebo blok příkazů za klíčovým slovem then. Možnosti argunentů ukazuje následující tabulka.
|
Velmi často se vyhodnocuje i několik výrazů pro splnění dané podmínky. K tomu se používají operátory OR, AND a XOR, které jsou popsány v předchozím díle seriálu. Další tabulka uvádí příklad použítí podmínky if...then s více argumenty.
|
Všimněte si závorek, ve kterých jsou všechny argumenty uzavřeny. Kdybychom nezávorkovali, tak by nám kompilátor oznámil chybu Operator not applicable to this operand type. V příkladu byla použita fce ShowMessage(), která zobrazí dialogové okno s proměnnou typu string, kterou jsme mu předali.
Další typ podmínky je téměř shodný s předchozím typem, ale je rozšířen o nepovinou klauzuli else. Tato klauzule funguje tak, že když není splněna podmínka, tak jsou vykonány příkazy za klíčovým slovem else. Demonstraci použití najdete v následující tabulce.
|
A nakonec poslední typ podmínky je příkaz case. Tato podmínka je vlastně složení několika podmínek v jedné. Výhoda case spočívá v tom, že když chcete porovnat proměnnou s několika hodnotami, tak se nemusíte piplat se všemi těmi if, then a else.
|
Někdy je výhodnější použít první nebo druhý způsob podmínky a jindy zase ten třetí.
Cykly
Dalším způsobem řízení toku programu je použití cyklů. V Object Pascalu máme na výběr z těchto cyklů: For, Repeat a While. Cykly slouži k opakovanému provádění příkazů.
For
Často nastane situace, kdy potřebujete provést určitý příkaz třeba 20 krát. Samozřejmě, že byste mohli napsat jeden příkaz dvacetkrát, ale co kdybyste ho chtěli provést 1000 krát? Bylo by namáhavé psát příkaz 1000 krát, i kdybyste použili clipboard. Proto je tu cyklus for. Formální deklarace vypadá takto:
|
Jako praktický příklad využití si vytvoříme aplikaci, která při stisku tlačítka "napočítá" do tisíce. Pojem napočítá má vyjadřovat to, že program zobrazí všechny po sobě jdoucí číslice od 0 do 1000 jako vlastnost caption u komponenty Label. Bude to velmi jednoduchá ukázka, tak v ní nehledejte žádný skrytý smysl. Vytvoříme si nový projekt a na hlavní formulář si přidáme jedno tlačítko a jednu komponentu Label. Nemusíme si je nijak zvlášť pojmenovávat, protože se ve jménech komponent určitě neztratíme:-). Celý příklad vlastně závisí na obsluze události OnClick tlačítka Button1.
|
Volání Application.ProcessMessages uvolní řízení pro zpracovávání událostí myši a klávesnice a pro další programy, které zrovna běží a spotřebovávají procesorový čas. Bez tohoto příkazu by náš příklad pouze zobrazil koncové číslo a ne všechna čísla.
Repeat
Cyklus repeat je takový cyklus, ve kterém se provádějí příkazy, dokud není splněna podmínka. Formální deklarace má tvar:
|
Jinak řečeno, příkazy nebo blok příkazů za repeat se provádí tak dlouho, dokud výraz za until není roven true. I pro cyklus repeat si vytvoříme pokusný program, kterým si demonstrujeme použití repeat v praxi. Pro další příklad můžeme použít předchozí projekt, jen upravíme obsluhu události OnClick tlačítka Button1.
|
Tento program má vlatně stejnou funkci jako příklad s cyklem for, napočítá do tisíce. V tomto případě je možná jednoduší použít cyklus for, ale v jiných případech muže být zase na místě použití repeat.
While
Třetím cyklem, který Object Pascal nabízí je cyklus while. Tento cyklus se skláda opět z podmínky a bloku příkazů, podobně jako repeat, ale s tím rozdílem, že u while se nejdříve testuje, zda je výraz za while roven true a pak se vykonávají příkazy. Formální deklarace výpadá následovně:
|
Zásadní rozdíl mezi repeat a while je, že u cyklu repeat se příkazy provedou minimálně jednou, ale u while se nemusejí provést vůbec. Opět si vytvoříme pokusný prográmek na demonstraci použití cyklu while v praxi. Můžeme použít předchozí projekt jen změníme obsluhu události OnClick tlačítka Button1.
|
Řízení cyklů
K řízení cyklů se používají přikazy break a continue. Sice bychom se bez nich mohli při běžném programování klidně obejít, ale i přesto bych se o nich rád zmínil. Tyto příkazy mají společné to, že všechny příkazy, které po nich následují, nebudou provedeny. I přes tuto skutečnost jsou rozdílné. Příkaz break ukončí celý cyklus a continue jen aktuální průchod.
|
Jako vlastnost Caption u komponenty Label1 se zobrazí 1, protože při třetím průchodu se příkazem break cyklus ukončí.
|
U tohoto příkladu se zobrazují číslice od 0 do 5, ale číslice 2 se nezobrazí protože třetí průchod byl příkazem continue ukončen.
Příště
V příštím díle si povíme o typech a záznamech.
Obsah seriálu (více o seriálu):
- Naučte se programovat v Delphi (1. díl) - Trocha historie
- Naučte se programovat v Delphi (2. díl) - Object Pascal
- Naučte se programovat v Delphi (3. díl) - Seznámení s vývojovým prostředím
- Naučte se programovat v Delphi (4. díl) - První program
- Naučte se programovat v Delphi (5. díl) - Datové typy, proměnné a konstanty
- Naučte se programovat v Delphi (6. díl) - Operátory, funkce a procedury
- Naučte se programovat v Delphi (7. díl) - Řízení toku programu
- Naučte se programovat v Delphi (8. díl) - Typy, záznamy a pole
- Naučte se programovat v Delphi (9. díl) - Objekty
- Naučte se programovat v Delphi (11. díl) - Práce se soubory
-
25. listopadu 2012
-
30. srpna 2002
-
10. října 2002
-
4. listopadu 2002
-
12. září 2002
-
25. listopadu 2012
-
28. července 1998
-
31. července 1998
-
28. srpna 1998
-
6. prosince 2000
-
27. prosince 2007
-
4. května 2007