Naučte se programovat v Delphi (5. díl) - Datové typy, proměnné a konstanty - 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:

Soutěž

Sponzorem soutěže je:

IDIF

 

Kdo je autorem výstavy obrazových fotografií „Očima Hanse Christiana Andersena“?

V dnešní soutěži hrajeme o:



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:

procedure TForm1.Button1Click(Sender: TObject);
var i:integer;  // deklarace celočíselné promněnné
begin
  ...
end;

    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:

procedure TForm1.Button1Click(Sender: TObject);
var i:integer;  // deklarace celočíselné proměnné
begin
 i:=1;  // přiřazení hodnoty
end;

    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.

...
var
Form1: TForm1;
i:integer;

implementation

{$R *.DFM}
...

    A proceduru OnTimer u komponenty Timer upravíme takto:

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  i:=i+1;
  Label1.Caption:=IntToStr(i);
end;

    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).

Typ Rozsah bitů
ShortInt
SmallInt
LongInt
Int64
Byte
Word
LongWord
–128..127
–32768..32767
–2147483648..2147483647
–2^63..2^63–1
0..255
0..65535
0..4294967295
8
16
32
64
8
16
32

    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í.

...
  if not
Button1.Visible then Button1.Visible:=True;
...

    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ů.

Typ Rozsah Přesnost bitů
Real48
Single
Double
Real
Extended
Comp
Currency
2.9 x 10^–39 .. 1.7 x 10^38
1.5 x 10^–45 .. 3.4 x 10^38
5.0 x 10^–324 .. 1.7 x 10^308
5.0 x 10^–324 .. 1.7 x 10^308
3.6 x 10^–4951 .. 1.1 x 10^4932
–2^63+1 .. 2^63 –1
–922337203685477.5808..922337203685477.5807
11-12
7-8
15-16
15-16
19-20
19-20
19-20
6
4
8
8
10
8
8

   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.

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
  Label1.Caption:=IntToStr(ord(key));
end;

    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ů ('').

var s: string;
...
s:='Naučte se programovat v Delphi';

    Když chceme spojit více řetězců používáme operátoru +.

s:='jeden text'+'druhý text';

    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ů.

s:='Titulek formuláře:'+MainForm.Caption;

    V tomto případě se vlastnost Caption neuzavírá do apostrofů, protože Delphi pozná, že jde o řetězec znaků.

Form1.Caption:=#100+#101+#108+#112+#104+#105;

    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.

const
  c=4*5;

    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:

const
  c : integer = 4*5;

    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.

var i: integer;
      r:real;
...
i:=1
r:=real(i);

    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):

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: