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 (5. díl) - Datové typy, proměnné a konstanty
31. července 2001, 00.00 | Téměř v každém programu pracujeme s určitými hodnotami, které ukládáme do proměnných. Tyto hodnoty mohou být např. texty, čísla nebo logické hodnoty. Dnešní díl seriálu se bude zabývat datovými typy, proměnnými a konstantami.
Téměř v každém programu pracujeme s učitými hodnotami, které ukládáme do proměnných. Tyto hodnoty mohou být např. texty, čísla nebo logické hodnoty. Dnešní díl seriálu se bude zabývat datovými typy, proměnnými a konstantami.
Proměnná
Z technického hlediska je to určitý kus paměti. Každá proměnná má určený svůj identifikátor (jméno), pomocí kterého k ní přistupujeme a typ, který určuje jaká data jsou v ní obsažená. Každá proměnná se musí dekladovat ještě před tím než se použije!
K deklaraci promměnné slouží rezervované slovo var. Za var následuje identifikátor proměnné, dvojtečka a její typ. Např. celočíselnou proměnnou i deklarujeme takto:
|
Lokální proměnnou, tedy proměnnou viditelnou jen v určitém objektu, deklarujeme ve funkcích a procedurách ještě před blokem příkazů uzavřeným mezi begin a end;.
Celočíselný typ
Celočíselný typ, tedy číslo bez desetinné čárky, se nazývá integer. Integer není neomezený! Má rozsah -32 768 až 32 767 v 16-ti bitovém Delphi ( tzn. v Delphi 1) a -2 147 483 648 až 2 147 483 647 v Delphi 32- bitovém a to už je rozdíl!
Hodnotu do proměnné zadáváme operátorem :=. Nejprve uvedeme identifikátor proměnné, potom operátor a nakonec hodnotu, kterou chceme, aby proměnná nabyla. Přiřazení čísla 1 k proměnné i by mohlo vypadat asi takto:
|
Abychom si demonstovali práci s proměnnou vytvoříme si pokusný projekt. Na formulář umístíme komponenty Label a Timer. Do části interface deklarujeme proměnnou i typu integer.
|
A proceduru OnTimer u komponenty Timer upravíme takto:
|
A co náš program vlastně dělá? Každou vteřinu přičítá k proměnné i hodnotu 1 a její obsah zobrazuje jako vlastnost Caption na komponentě Label. V příkladu jsem použil fci IntToStr() (Integer to String). Tato fce převede celočíselnou hodnotu na řetězec znaků. Opak fce IntToStr() je fce StrToInt(), která převede, resp. se pokusí převést, řetězec znaků na celočíselnou hodnotu.
Celočíselý typ má více možností. Např. když potřebujeme proměnnou, do které budeme ukládat čísla od jedné do desíti, nemusíme zabírat paměť typem integet, ale bohatě nám postačí typ byte. Následující tabulka ukazuje všechny celočíselné typy (tedy kromě již známého integer).
|
Ještě by bylo možná vhodné zmínit fce Dec() a Inc(), které snižují resp. zvyšují proměnnou o zadanou hodnotu.
Logický typ
Logický (Booleovský) typ se uvozuje slovem boolean. Je to nejjednodušší datový typ užívaný v Object Pascalu. Booleovskou hodnotu můžete uložit do jednoho bitu, ale v praxi tento typ stejně zabírá celý jeden bajt paměti. Většina komponent má některé vlastnosti založené na tomto datovém typu. Např vlastnosti enabled, visible atd. V souvislosti s booleovskými hodnotami se také používá operátor not. Což je vlastně negace nějakého tvrzení.
|
Tento úsek kódu zjišťuje jestli je tlačítko Button1 viditelné a jestli ne, tak ho ukáže.
Reálný datový typ
Reálný datový typ je opět číselný typ a hodí se tam, kde už integer svou funkčností nedostačuje. Např při počítání s desetinnou čárkou. Následující tabulka vám ukazuje rozsah a přesnost reálných datových typů.
|
pozn. Přesností se rozumí přesnost desetinných míst.
Generický typ Real je v této implementaci ekvivalentní k Double. Typ Currency je speciálně určen pro práci s měnami.
Znakový typ
Znakový datový typ je reprezentován jedním jediným znakem, který zabírá jeden bajt paměti a nazývá se Char. Znaky můžeme k proměnné tohoto typu přiřazovat dvěma způsoby. Prvním způsobem uzavřeme tento znak mezi apostrofy (' ' (na české klávesnici podržte alt a na numerické napište 39) ). Druhý způsob je ten, že k proměnné přiřadíme ASCII hodnotu. ASCI tabulka by měla být k dispozici na internetu a bylo by plýtvání prostorem uvádět jí zde. A proto bych zde rád zmínil jeden příklad z mé oblíbené knihy Naučte se programovat v Delphi (Thomas Binziger, Grada), který vrací ASCII hodnotu stisknutéhé klávesy.
Na formulář si umístěte jednu komponentu Label a jako obsluhu události OnKeyPress formuláře napište následující kód.
|
Možná už jste si všimli, že každý blok příkazů mezi begin a end; odděluji od kraje dvěma mezerami. V Object Pascalu (nejspíš i v jiných programovacích jazycích) je to nepsané pravidlo. Zvýší se tím přehlednost zdrojového kódu. V tomto příkladu byla použita fce Ord(), která převede ordinální typ na odpovídající číslo. Ordinální typ je spočetná množina hodnot, které jdou všechny seřadit za sebe (např. pondělí, úterý, středa... nebo 2, 3, 4, 5 apod.).
Znakový řetězec
Málokdy vystačíme jen se znakovým typem a proto je tu typ String. String je řetězec znaků, které můžeme zapsat jak kalsickým způsobem, tak řadou ASCII kódů. Také znakové řetězce uzavíráme do apostrofů ('').
|
Když chceme spojit více řetězců používáme operátoru +.
|
Je velice důležité, aby oba řetězce byly uzavřené v apostrofech, tím kompilátoru "říkáme", že jde o řetězec znaků.
|
V tomto případě se vlastnost Caption neuzavírá do apostrofů, protože Delphi pozná, že jde o řetězec znaků.
|
Tento příklad demonstruje použití ASCII kódů při sestavovní řetězců.
Konstanty
Konstanta je neměnná hodnota, která se uvozuje slovem const. U konstant neoznačujeme typ hodnoty, to by pak byla typyzovaná konstanta, ale o tom až později. Konstantou může být také výraz. Např. tato definice konstanty nebude překladači činit žádné problémy.
|
K přiřazování hodnoty konstantě používáme operátoru =. Kontanta může být všech výše uvedených typů. Pokud u konstanty uvedeme typ, např takto:
|
Jedná se o tzv. typyzovanou konstantu. To je vlastně konstanta, u které můžeme její hodnotu při běhu programu změnit, nebo proměnná u které máme danou počáteční hodnotu:-).
V Object Pascalu existují ještě tzv. globální proměnné. To jsou promněnné, které jsou dostupné v celém programu.
Když vám proměnná nevyhovuje typem, je možné jí přetypovat (typecasting). Už jsme si řekli jak přetypovat celé číslo na řetězec znaků a naopak. Ale v Object Pascalu je možné přetypovat i např celočíselnou hodnotu integer na reálné číslo real.
|
Pak je použita fce s indentifikátorem stejným jako je identifikátor typu.
Příště
Náplní příštího dílu bude seznámení s operátory, funkcemi a procedurami.
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
Diskuse k článku
-
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