Delphi II - 4. lekce
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Delphi II - 4. lekceDelphi II - 4. lekce

 

Delphi II - 4. lekce

Google       Google       31. 1. 2007       30 344×

V tomto díle si povíme něco o tom, jak lze ovládat průběh naší aplikace a také se podíváme na základy OOP.

V asi každém programu je zapotřebí nějak ovládat jeho průběh a v závislosti na určitých věcech provádět věci jiné. Zaměříme se na podmíněné příkazycykly.

Podmíněné příkazy spočívají, jak již název napovídá, v podmínkách. Pokud je splněna určitá vstupní logická podmínka (tedy návratová hodnota podmínky bude TRUE), tak se vykoná určitý kód. Pokud podmínka splněna není (FALSE), tak se ten kód nevykoná a program pokračuje dál.


If…then

Příkaz typu if…then je vám asi známý z ostatních programovacích jazyků. Jeho syntaxe je skoro všude stejná, ale radši všechno rozeberu. Hned pro začátek je zde snad dost názorná ukázka:


..	
if Button1.Caption='Ahoj' then ShowMessage('Čau!'); 
..

Nyní, když tlačítko Button1 bude mít popisku Ahoj, zobrazí se dialog se zprávou Čau!.

Pokud potřebujeme, aby se provedl blok 2 a více příkazů, musíme tento blok ohraničit klíčovými slovy beginend:


  if Button1.Caption='Ahoj' then
    begin
      ShowMessage('Čau');
      Button1.Caption:='Čau';
    end;

Další možností je, že budeme potřebovat ošetřit i případ, kdyby podmínka splněna nebyla. K tomu slouží klíčové slovo else

Pozn.: Poslední příkaz před slovem else nesmí končit znakem „;“ (středník)


  if Button1.Caption='Ahoj' then
    begin
      ShowMessage('Čau');
      Button1.Caption:='Čau';
    end
  else
    begin
       ShowMessage('Nazdar');
    end;

Nyní se v případě, že je splněna podmínka, zobrazí zpráva Čau a změní se popiska tlačítka. V případě, že podmínka splněna nebude, tak se pouze zobrazí zpráva Nazdar.

Podmínky lze spojovat i pomocí logických operátorů:


  if (Button1.Caption='Ahoj') and (Button2.Caption='Nazdar') then
      ShowMessage('Čau');


  if (Button1.Caption='Ahoj') or (Button2.Caption='Nazdar') then
      ShowMessage('Čau');

Rozdíl mezi těmito dvěmi podmínkami je zřejmý. V prvním případě je nutné, aby byly splněny obě podmínky. Pokud je splněna jen jedna z nich, pak je celá podmínka nepravdivá. Ve druhém případě musí být splněna alespoň jedna podmínka (první, druhá, nebo obě), aby celý výraz byl pravdivý.

Zde je tabulka logických operátorů:

A B A and B A or B A xor B not A not B
true true true true false false false
true false false true true false true
false true false true true true false
false false false false false true true

Case

Druhým podmíněným příkazem je příkaz case. Má pouze jedinou nevýhodu, a tou je, že ho lze použít pouze ve spojení s ordiálními typy (datové typy integer, character, Boolean a ještě další, ale s těmi se asi nikdy nesetkáte). Zde je ukázka:


case vek of
  1: ShowMessage('Je ti 1 rok');
  2: ShowMessage('Jsou ti 2 roky');
  3: ShowMessage('Jsou ti 3 roky');
  ...
  18: begin
    ShowMessage('Je ti 18 let');
    dospely:=true;
    end;
  19: ShowMessage('Je ti 19 let');
  ...
  90: ShowMessage('Je to 90 let')
  else
    ShowMessage('Je ti hodně let');
end;

Myslím, že vše je jasné. Když proměnná vek má hodnotu 1, zobrazí se zpráva Je ti 1 rok atd… Když je proměnná vek rovna 18ti, tak budu kromě zobrazení zprávy chtít ještě nastavit proměnnou dospely na true, takže je nutné uzavřít blok příkazů mezi klíčová slova beginend. Nakonec je tu ještě klíčové slovo else. Příkazy uvedené za else se provedou, pokud žádná z výše uvedených podmínek splněna nebude.


For…to…do

Příkaz typu for…to…do je cyklický příkaz s pevným počtem opakování. Pro názornost nejprve uvedu ukázku:


for i:=10 to 150 do begin
 ShowMessage('Proměnná i má hodnotu '+IntToStr(i));
end;

Při každém průchodu cyklem se hodnota proměnné i zvětší o 1. Cyklus se bude opakovat tak dlouho, dokud i nenabude konečné hodnoty.

Pokud potřebujeme odpočítávat shora dolů, musíte slovo to nahradit slovem downto. Pak si ale dejte pozor, aby počáteční hodnota nebyla větší než koncová.


While…do

Pokud však předem nevíte, kolikrát se má cyklus zopakovat, lze použít příkaz typu while…do:


while x<50 do begin
  x:=x+1;
  ShowMessage('Proměnná x má hodnotu '+IntToStr(x));
end;

Místo takovéto čítací podmínky lze použít například podmínku booleanovskou, tedy:


splneno:=false;
while splneno=false do begin
  x:=x+1;
  if x=50 then spleno:=true;
end;

V tomto případě se cyklus bude opakovat, dokud proměnná splneno nenabude hodnoty true.


Repeat…until

Podobný jako cyklus typu while…do. Liší se tím, že podmínka je zde až na konci cyklu, nikoliv na začátku. Pokud u while…do není na začátku splněna podmínka, tak se celý blok příkazů v cyklu vůbec neprovede, zatímco u repeat…until proběhne vždy, pouze se pak rozhodne, jestli se má zopakovat:


repeat
 x:=x+1;
until x>50;

Také si musíte dávat pozor na to, že podmínka je zde obrácená! Zde se příkazy opakují, dokud podmínka není splněna (zatímco u while je provádí, dokud je podmínka platná).

Také jste si určitě všimli, že klíčová slova beginend jsou zde nahrazena slovy repeatuntil.


Řízení cyklů

Někdy je třeba běh cyklu trochu ovlivnit. K tomu slouží klíčová slova continuebreak.

  • continue – Příkaz continue způsobí, že dojde k okamžitému ukončení iterace. Program přeskočí všechny příkazy, které v cyklu po tomto slově následují a program se zase vrátí na 1. příkaz
  • break – Break slouží k přerušení aktuálního cyklu s tím, že další iterace už nenásledují, program automaticky skočí na první příkaz za cyklem.

Základy OOP

Problematika objektově orientovaného programování je obrovská a je to opravdu velmi komplikované. Pro naše potřeby bude stačit, když si vysvětlíme základy:

Pokud se o OOP chcete dozvědět něco víc, odkazuji vás na některé internetové stránky – odkaz 1, odkaz 2 – nebo si trošku zagooglete :)

OOP spočívá v seskupení objektů s definovaným rozhraním, přes něž komponenty vzájemně komunikují.

Zde je uvedeno několik základních typů OOP:

  • Objekty – jednotlivé prvky modelované reality (jak data, tak související funkčnost) jsou v programu seskupeny do entit nazývaných objekty. Objekty si pamatují svůj stav a navenek poskytují operace (přístupné jako metody pro volání).
  • Abstrakce – programátor (potažmo program, který vytváří) může abstrahovat od některých detailů práce jednotlivých objektů. Každý objekt pracuje jako černá skříňka, která dokáže provádět určené činnosti a komunikovat s okolím, aniž by vyžadovala znalost způsobu, kterým vnitřně pracuje.
  • Zapouzdření – zaručuje, že objekt nemůže přímo přistupovat k „vnitřnostem“ jiných objektů, což by mohlo vést k nekonzistenci. Každý objekt navenek zpřístupňuje rozhraní, pomocí kterého (a nijak jinak) se s objektem pracuje.
  • Skládání – Objekt může využívat služeb jiných objektů tak, že je požádá o provedení operace.
  • Dědičnost – objekty jsou organizovány stromovým způsobem, kdy objekty nějakého druhu mohou dědit z jiného druhu objektů, čímž přebírají jejich schopnosti, ke kterým pouze přidávají svoje vlastní rozšíření. Tato myšlenka se obvykle implementuje pomocí rozdělení objektů do tříd, přičemž každý objekt je instancí nějaké třídy. Každá třída pak může dědit od jiné třídy (v některých programovacích jazycích i z několika jiných tříd).
  • Polymorfismus – odkazovaný objekt se chová podle toho, jaký je jeho skutečný typ. Pokud několik objektů poskytuje stejné rozhraní, pracuje se s nimi stejným způsobem, ale jejich konkrétní chování se liší. V praxi se tato vlastnost projevuje např. tak, že na místo, kde je očekávána instance nějaké třídy, můžeme dosadit i instanci libovolné její podtřídy (třídy, která přímo či nepřímo z této třídy dědí), která se může chovat jinak, než by se chovala instance rodičovské třídy, ovšem v rámci mantinelů daných popisem rozhraní.

(Tato část byla převzata ze serveru Wikipedia.cz v souladu s pravidly GNU FDL a pravidel uvedených na webu Wikipedia.cz)

Pozn.: Napsal bych to sám, ale tohle se mi zdálo srozumitelnější a přesnější.

Myslím, že pro dnešek to stačí.


Závěrem

A je tu konec (už zase :). Příště budeme pokračovat v OOP. Na nějakých praktičtějších příkladech si vysvětlíme zapouzdření, dědičnostpolymorfismus – tři nejdůležitější věci v OOP.

Úkol

Dnes budou opět klasické úkoly:

  1. Pochopit a naučit se podmíněné a nepodmíněné příkazy a cykly
  2. Aspoň trošku zkusit pochopit OOP
  3. Vytvořit program, kam uživatel pomocí komponenty Edit zadá libovolné číslo a program pak provede následující kroky: napočítá od nuly do čísla, které uživatel zadal (pomocí jednoho z cyklů) a pokud číslo bude větší než 50, tak zobrazí jednu hlášku, pokud bude menší, zobrazí jinou hlášku (příkaz ShowMessage(zprava), kde zprava je typu string). Hodnota zadaná v komponentě Edit je uložena v Edit1.Text a je typu string (i když je to číslo). Pro přetypování na číselnou proměnnou použijte funkci StrToInt.

×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    
0 hlasů
Google
Autor se zabývá tvorbou webových stránek na zakázku, dále programujte v Delphi a zajímá se o Linux a open source
Web    

Nové články

Obrázek ke článku Stavebnice umělé inteligence 1

Stavebnice umělé inteligence 1

Článek popisuje první část stavebnice umělé inteligence. Obsahuje lineární a plošnou optimalizaci.  Demo verzi je možné použít pro výuku i zájmovou činnost. Profesionální verze je určena pro vývojáře, kteří chtějí integrovat popsané moduly do svých systémů.

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ý