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ě. 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: 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. 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. 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. 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. 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. OR 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. 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. Ve skutečnosti funkci deklarujeme bez háčků a čárek. Předchozí tabulka by nebyla funkční. Funkci použijeme takto. 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. 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. V tomto případě se z fce f1 volá lokální fce f2. Lokální znamená to, že neni vyditelný z venčí. 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. Příště Příšte si něco povíme o řízení toku programu.
...
i:=4;
i:=4+5;
i:=(4+5)*8
...
...
i:=4/2+5;
i:=4+5*10;
i:=(4+5)*8+(x-1);
...
...
i:=10 div 3; // výsledek bude 3
i:=10 mod 3; // výsledek bude 1
...
...
var a, b, c:integer;
e:boolean;
begin
e:=a=b;
e:=a<=b;
e:=c>=a;
e:=a>b;
e:=c end;
...
Button1.Visible AND Button2.Visible
výraz 1
AND
výraz 2
součet
true
true
true
true
false
false
false
true
false
false
false
true
true
true
true
true
false
true
false
true
true
false
false
false
výraz 1
XOR
výraz 2
součet
true
true
false
true
false
true
false
true
true
false
false
false
function Jménofce (Argument1:Typ):Typ návratové hodnoty;
begin
Jménofce:=Argument1*5; // zde mohou být jakékoliv příkazy
end;
...
var c, b:Integer;
begin
b:=2;
c:=Jmenofce(b);
end;
...
procedure Someproc;
var s1, s2:String;
begin
s1:=('Muj nejoblibenejsi jazyk je ');
s2:=('Delphi');
ShowMessage(s1+s2);
end;
function f1(i:Integer):integer;
function f2(a:Integer):Integer;
begin
f2:=a*10;
end;
begin
f1:=f2(i);
end;
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;
function testRekurze(i:Integer):integer;
begin
i:=i+1;
if i<10 then testRekurze(i) else
ShowMessage('i je rovno 10');
end;
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