Naučte se programovat v Delphi (6. díl) - Operátory, funkce a procedury - Builder.cz - Informacni server o programovani

Odběr fotomagazínu

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 (6. díl) - Operátory, funkce a procedury

28. srpna 2001, 00.00 | Operátory, procedury a funkce jsou základní kameny Object Pascalu. Dnes si nejdříve vysvětlíme operátory a potom funkce a procedury a rozdíl mezi nimi.

    Operátory, procedury a funkce jsou základní kameny Object Pascalu. Dnes si nejdříve vysvětlíme operátory a potom funkce a procedury a rozdíl mezi nimi.

Operátory   

    Operátory jsem již v některých příkladech použil a teď bych je rád vysvětlil. Operátory se používají k přiřazování, porovnávání, sčítání, násobení ... výrazů. Výraz je proměnná, záporná hodnota promněnné, ale i tento sled promněnných (4+5)*8. Pokud operátor pracuje s jedinnou hodnotou, nazívá se unární.

Přiřazení  

    Operátor přiřazení jsme poznali v předchozím díle. Tento operátor přiřazuje (Assign) hodnotu určité promněnné. Operátor přiřazení se skládá ze dvou znaků : a =. Pozor! Ne opačně.

...
i:=4;
i:=4+5;
i:=(4+5)*8
...

    Předchozí tabulka demonstruje použití operátoru přiřazení. K proměnné můžeme přiřadit jen hodnotu jejího typu. Tzn. že k proměnné typu integer můžeme přiřadit jen celé číslo. Kdybychom chtěli k proměnné typu string přiřadit číslo 123456, museli bychom ho přetypovat. V tomto případě fcí IntToStr().

Matematické operátory 

    Matematické, neboli početní výrazy, jsou výrazy, ve kterých se deje nějaká početní operace. Např. dělení, násobení, sčítání, odčítání apod. Matematické operátory jsou tyto:

  • +   sčítání
  • -   odčítání
  • *   násobení
  • /  dělení
  • div  celočíselné dělení
  • mod  dělení modulo

    Funkce prvních čtyř operátorů je jasná. Pozor ale na prioritu, ta je stejná jako v matematice, ale pokud si jí nejste jisti,  používejte závorky.

...
i:=4/2+5;
i:=4+5*10;
i:=(4+5)*8+(x-1);
...

Ještě existuje operátor div a mod. Používají se stejně jako obyčejné dělení (/), ale operátor div vrací výsledek delení beze zbytku a operátor mod vrací ten zbytek.

...
i:=10 div 3;  // výsledek bude 3
i:=10 mod 3;  // výsledek bude 1
...

Logické operátory 

    Logické operátory jsou operátory, které při součtu dvou výrazů vrací hodnotu true nebo false. Tyto typy operátorů se nejčastěji používají při řízení toku programu (v cyklech, podmínkách....). Mezi tyto operátory patří =, <, >, <=, >= a operátory exkluzivniho bitového součtu AND, OR a XOR. Následující tabuka ukazuje možnosti logických operátorů mimo AND, OR a XOR, o těch až později.

...
var a, b, c:integer;
      e:boolean;
begin
  e:=a=b;
  e:=a<=b;
  e:=c>=a;
  e:=a>b;
  e:=c end;
...

    Zdá se vám to složité? První tři příkazy zapíší do proměnné e typu boolean hodnotu true a poslední dva false. Jak už jsem zmiňoval, logické operátory se používají také při řízení toku programu. Jedním z nejčastějčích mít použití logických operátorů jsou bezesporu podmínky. Ale o tom až přístě.

    Operátory AND a OR berou za argumenty jen booleovské výrazy a vrací booleovské hodnoty true nebo false.

  Button1.Visible AND Button2.Visible

    Tento výraz by vrátil hodnotu true pokud by tlačítka Button1 a Button2 byly viditelné. Kdybychom použili operátor OR, tak by nám stačilo, aby bylo viditelné jen jediné tlačítko. Funkci operátorů AND a OR asi nejlépe pochopíte z následující tabulky.

výraz 1 AND výraz 2 součet
true true true
true false false
false true false
false false true

OR

true true true
true false true
false true true
false false false

    Operátor OR vrací hodnotu false jen tehdy, když jsou oba dva výrazy false. Existuje jestě jeden operátor - XOR. To je vlastně "exkluzivní" OR, protože při rovnosti dvou výrazů vrací vždy hodnotu false.

výraz 1 XOR výraz 2 součet
true true false
true false true
false true true
false false false

Funkce

    Funkce je vlastně blok příkazů uzavřených mezi begin a end; + proměnné. Funkce může mí jeden, ale i několik argumentů a její tělo deklarujeme v sekci implementation. Delkarace funkce vypadá takto.   

function Jménofce (Argument1:Typ):Typ návratové hodnoty;
begin
  Jménofce:=Argument1*5;  // zde mohou být jakékoliv příkazy
end;

Ve skutečnosti funkci deklarujeme bez háčků a čárek. Předchozí tabulka by nebyla funkční. Funkci použijeme takto.

...
var c, b:Integer;
begin
  b:=2;
  c:=Jmenofce(b);
end;
...

    Jsou dva typy fcí. Fce může být volána hodnotou (call by value) a neovlivní se tak původní proměnná, nebo valána odkazem (call by reference) a to se může změnit původní proměnná.

Procedura

    Co je procedura? Procedura je vlastně funkce bez návratové hodnoty. Proč ještě procedury? Proč nestačí jen funkce? Procedura slouží k tomu, abyste mohli jedním příkazem vykonat celý blok příkazů uzavřených v proceduře. Procedura se deklaruje skoro stejně jako funkce, ale nemá návratovou hodnotu a místo klíčového slova function se používá slovo procedure. Procedury se hodně používají pro obsluhy událostí komponent. Příklad jedné procedury najdete v následující tabulce.

procedure Someproc;
var s1, s2:String;
begin
  s1:=('Muj nejoblibenejsi jazyk je ');
  s2:=('Delphi');
  ShowMessage(s1+s2);
end;

    Mezi delkarací procedury (procedure Someproc;) a klíčovým slovem begin se deklarují lokální proměnné, konstanty, funkce a procedury. Lokální proměnné a konstanty jsme již poznali. I když není použití lokální procedury/funkce tak časté měli bysme si ho zmínit.

function f1(i:Integer):integer;
  function f2(a:Integer):Integer;
begin
    f2:=a*10;
end;
begin
  f1:=f2(i);
end;

    V tomto případě se z fce f1 volá lokální fce f2. Lokální znamená to, že neni vyditelný z venčí.

function f1(i:Integer):integer;
  function f2(a:Integer):Integer;
begin
    f2:=a*10;
end;
begin
  f1:=f2(i);
end;
function f3(t:Integer):Integer;
begin
  //f3:=f2(t);způsobí chybu při překladu
end;

    Posledním pojmem, který bych zde chtěl zmínit je rekurze. Rekurze je volání sebe samého. Při rekurzi je nutné použít alespoň podmínku, aby bylo možné ukončit cyklus, jinak by jsme mohli vytvořit nekonečnou smyčku.

function testRekurze(i:Integer):integer;
begin
  i:=i+1;
  if i<10 then testRekurze(i) else
    ShowMessage('i je rovno 10');
end; 

Příště

    Příšte si něco povíme o řízení toku programu.

 

 

Obsah seriálu (více o seriálu):

Tématické zařazení:

 » Rubriky  » Delphi  

 » Rubriky  » Windows  

 

 

 

Nejčtenější články
Nejlépe hodnocené články

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: