Vlastnosti a premenné

Vlastnosti

Vlastnosti komponentov nastavujeme v okne Inšpektora. Vlastnosti môžeme meniť aj počas behu programu. Ukážka:

Na formulár sme položili tlačidlo. Pri jeho stlačení (udalosť OnClick) sa vykoná funkcia:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Button1->Left=0;
Button1->Caption="Nový nadpis";
}

Button1->Left ... Button1 má vlastnosť vlastnosť Left (poznáme z Inšpektora) - určuje polohu
Button1->Caption ... aj vlastnosť Caption poznáme - určuje nadpis tlačidla
= ... znamienko rovná sa je operátor priradenia.

Príkaz priradenia najčastejšie používame v tvare:
Ľavá_strana = Pravá_strana;
Ľavej strane sa nastaví hodnota Pravej strany, inak povedané, Ľavej strane sa priradí hodnota Pravej strany.

Príkazy programu vykonajú nasledovné:

* Button1->Left=0; ... tlačidlo sa "presťahuje" k ľavému okraju formulára
* Button1->Caption="Nový nadpis"; ... zmení sa nápis na tlačidle


Aritmetické výrazy

Na pravej strane príkazu priradenia môže byť aj aritmetický výraz:
Button1->Left=(50+100)*2;
Zapamätajme si pravidlo, že:
Príkaz priradenia najskôr vyhodnotí výraz na pravej strane a jeho hodnotu priradí ľavej strane.

V našom príklade je hodnota výrazu 300 - ľavý okraj tlačidla sa nastaví na 300.

Ďalšie informácie o aritmetických výrazoch:

* v aritmetických výrazoch môžeme používať operácie + (súčet), - (rozdiel), * (násobenie), / (delenie) a iné
* násobenie a delenie má vyššiu prioritu ako sčítanie a odčítanie
* výrazy môžeme zátvorkovať (pomocou jednoduchých zátvoriek)

Vo výrazoch sa nemusia nachádzať iba konštanty - vo výrazoch sa môžeme odvolávať aj vlastnosti rôznych komponentov.

Na formulár položíme ešte jedno tlačidlo:

Aj tlačidlo Button2 bude reagovať na udalosť OnClick a po stlačení sa zavolala funkcia Button2Click:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Button1->Left=0;
Button1->Caption="Nový nadpis";
}

void __fastcall TForm1::Button2Click(TObject *Sender)
{
Button2->Left=Button2->Left+20;
}

Najskôr sa vyhodnotí pravá strana, až potom sa vykoná samotné priradenie. Preto má predchádzajúci zápis v C++ význam, ktorý spôsobí, že druhé tlačidlo bude "skackať" smerom vpravo.


Čísla, texty a farby - rôzne typy údajov

Všimnime si:

* číselné hodnoty: Button1->Left=(50+100)*2; ... priradili sme číslo
* textové hodnoty: Button1->Caption="Nový nadpis"; ... priradili sme text
* farby: g->Font->Color=clRed; ... priradili sme farbu
*

g->TextOut(0, 0, "Ahoj!"); ... parametre sú číslo, číslo a text

Pri programovaní v C++ pracujeme s rôznymi typmi údajov - čísla, texty, farby a veľa ďalších.

V C++ majú rôzne typy údajov svoje mená:

celé číslo: int
desatinné číslo: float
presnejšie desatinné číslo: double
text: AnsiString
farba: TColor
obrázok: TImage
tlačidlo: TButton
grafická plocha: TCanvas

Vidíme, že aj obrázok, tlačidlo alebo grafická plocha sú pre počítač údaje rôznych typov.

Otázka: môžeme ľubovoľne zamieňať texty za čísla?

* Napríklad, priradenie:
Button1->Caption=(50+100)*2;
môžeme vykonať. Najskôr sa vyhodnotí výraz na pravej strane - číslo 300. Caption je však textová vlastnosť, ale C++ dokáže automaticky zmeniť číslo 300 na text "300", podľa ktorého sa nastaví nápis tlačidla. Hovoríme tomu automatická konverzia
* Pozor, priradenie:
Button1->Left="Nový nadpis";
nebude fungovať. Vlastnosť Left je číselného typu, avšak teraz C++ nevie automaticky konvertovať text "Nový nadpis" na číslo. Nedá sa to ani v prípade, keby text na pravej strane obsahoval iba cifry - t.j. nedá sa priradiť:
Button1->Left="123";
Konvertovanie textu na číslo musíme zabezpečiť sami.

Z predchádzajúceho si odnesme skúsenosť, že kompilátor C++ niekedy robí automatickú konverziu typov a niekedy nie.


Premenné

Z matematiky poznáte pojem premenná - je to symbol označujúci neznámu hodnou, napríklad:

* úsečka má dĺžku d
* obsah štvorca S=a2
* ... atď.

V programovaní sa premennou rozumieme miesto v pamäti počítača. Do premennej (pamäťového miesta) sa údaje zapisujú. Počítač si zapamätá poslednú zapísanú hodnotu, ktorú môžeme neskôr využiť. Zvyknime si na to, že programy obsahujú množstvo premenných.

Skôr, ako premennú prvý krát použijeme, musíme ju zadeklarovať. Deklarácia premennej je príkaz, ktorým oznámime kompilátoru:

* typ premennej - aké hodnoty môže premenná nadobúdať
* meno premennej - ako chceme premennú pomenovať (aký má mať názov)

Deklaráciou sa kompilátor dozvie, koľko miesta premenná zaberie a aké operácie s ňou môžeme vykonávať

Deklarácia jednej premennej:

typ meno_premennej;

Deklarácia viacerých premenných rovnakého typu:

typ meno1, meno2, meno3;

Príklad deklarácie premenných:

int X;
int CeleCislo, Suma;

V pamäti vzniknú 3 celočíselné premenné:
meno premennej: X CeleCislo Suma
pamäť:






Ukážka práce s premennou:

X=10;
CeleCislo=2+3;
Suma=X+CeleCislo;
g->TextOut(0, 0, Suma);

Obsah premenných po priradeniach:
meno premennej X CeleCislo Suma
pamäť:

10


5


15

Príkaz g->TextOut(0, 0, Suma); vypíše do grafickej plochy hodnotu premennej Suma (15).


Ďalšie informácie o premenných

Meno premennej je identifikátor - t.j. jednoznačne identifikuje premennú. Identifikátor musí spĺňať nasledovné kritériá:

* skladá sa z písmen (A, B, ... Z, a, b, ... z), číslic (0, 1, ..., 9) alebo znakov _ (podčiarkovník)
* nesmie začínať číslicou
* musí byť jednoznačné v rámci tela funkcie
* nesmie byť zhodné s názvami niektorých príkazov (sú to tzv. kľúčové slová, zvýrazňujú sa širším písmom)

Príklady zle pomenovaných premenných:

* 1a ... začína číslicou (správne by bolo: a1, alebo _1a)
* pocet% ... znak % (správne by bolo: PocetPercent)
* čosi ... mäkčeň na č (správne by bolo: cosi)
* void ... je kľúčové slovo - vyskytuje sa v hlavičkách funkcií (treba iný názov)

Príklady nevhodne pomenovaných premenných:

* aaa, aaaa, aaaaaa ... názov je korektný, ale program sa zle číta
* O0, O0O0000O0 ... písmeno O a číslica