|
Prednaska
Premenné v C++
Premenná je vyhradené miesto v pamäti, do ktorého sa počas behu programu zapisujú rozličné údaje.
Slúži na zapamätanie údajov, s ktorými pracuje program.
Deklarácia premennej je príkaz, ktorý definuje meno a typ premennej, prípadne nastavuje aj jej počiatočnú hodnotu.
Niektoré typy premenných v C++:
| celé číslo: | | int |
| desatinné číslo: | | float |
| presnejšie desatinné číslo: | | double |
| text: | | AnsiString |
| znak: | | char |
| farba: | | TColor |
| obrázok: | | TImage |
| tlačidlo: | | TButton |
| grafická plocha: | | TCanvas |
Pravidlá pre pomenovávanie v C++:
- skladá sa z písmen (A, B, ... Z, a, b, ... z), číslic (0, 1, ..., 9) alebo znakou _ (podčiarkovník)
- nesmie začínať číslicou
- musí byť jednoznačné v rámci tela funkcie
- nesmie byť zhodné s kľúčovými slovami
Príklady správnych mien premenných:
- Percento, Neznama
- i, j
- a1, a2
- _nieco
|
|
Príklady nesprávnych mien premenných:
- %mnozstva, neznama?
- int, void
- 1a, 2a, 123
- _niečo
- aaaa, aaaaa, aaaaaa - zle čitateľné
|
Príklady správnych deklarácií:
- int X;
- int CeleCislo, Suma, Priemer;
- int a, b, c, d;
- AnsiString Text;
- TColor Farba;
|
|
Príklady nesprávnych deklarácií:
- int x, y, x;
- int cena!;
- int 333;
- int void;
|
Miesto deklarácie: premennú deklarujeme pred jej použitím. Deklarácia nemá pevne stanovene miesto, kvôli prehľadnosti je ale lepšie zvyknúť si premenné deklarovať na začiatku procedúry.
Príkaz priradenia: priraďuje do premennej jej hodnotu. Najskôr vyhodnotí výraz na pravej strane a jeho hodnotu priradí ľavej strane.
Operátor priradenia v C++: jednoduché =
Výrazom môže byť nie len matematický výpočet, ale aj napríklad vlastnosť komponenty:
x = a * ( b + 5 );
x = Image1->Width/2;
Príklady správnych priradení hodnoty premennej:
- a = 5;
- b = 10;
a = b + 1;
- TCanvas *g;
g=Image1->Canvas;
- TCanvas *g=Image1->Canvas;
|
|
Príklady nesprávnych priradení hodnoty premennej:
- a = int;
- 2+a=5;
- a = b + 1; //ak premenná b nebola deklarovaná
|
Aritmetické operácie v C++
- + (súčet)
- - (rozdiel)
- * (násobenie)
- / (delenie)
- % (modulo)
- Výrazy možno zátvorkovať - mení sa priorita operátorov
V zásade má ale násobenie a delenie vyššiu prioritu ako sčítanie a odčítanie
Príklady skrátených zápisov aritmetických operácií v C++:
- i + + … Inkrementácia premennej i = i + 1
- i - - … Dekrementácia premennej i = i - 1
- x + = 10 … x = x + 10
- x - = 10, x / = 10, x * = 10, x % = 10
Pri inkrementácii a dekrementácii rozlišujeme ešte Pre- a Post- inkrementáciu (dekrementáciu).
Postinkrementácia: x = i + +; najprv priradí hodnotu i do x, potom zvýši i o 1
Preinkrementácia: x = + + i; najprv zvýši hodnotu i o 1, potom túto hodnotu priradí do x
Automatická konverzia je schopnosť kompilátora automaticky zmeniť typ premennej na tú, ktorá je potrebná.
V C++ automatická konverzia existuje pri prevádzaní čísla na text - ak premenná (alebo vlastnosť komponenty) vracia číslo,
ktoré chceme napríklad vypísať do komponenty Label, ktorá požaduje text, C++ automaticky zmení číslo na text.
Konverzia textu na číslo nie je automatická - nie je možné do číselnej premennej (alebo vlastnosti komponenty) priradiť text, ani keby tento obsahoval len čísla - napríklad '12345'.
Musíme ju zabezpečiť napríklad použitím funkcie StrToInt - funkcia, ktorá robí konverziu textu na celé číslo: a = StrToInt ( Edit1 -> Text );
Vieme, že všetky komponenty majú svoje vlastnosti. Tieto môžeme meniť v okne Inšpektora aj za behu programu.
Napríklad keď máme vo formulári tlačidlo a za behu programu mu chceme zmeniť nadpis, môžeme to urobiť jednoduchým príkazom:
Button1->Caption="nadpis tlačidla";
Jeho šírku a výšku určujú vlastnosti Button1->Width, Button1->Height; jeho polohu vo formulári určujú vlastnosti
Button1->Left, Button1->Top;
Šírku a výšku vnútornej časti formulára určujú ClientWidth a ClientHeight;
Preskúmajte si vlastnosti ostatných komponent, mnohé budete často používať.
Príklady:
Do formulára vložíme Image, dva EditBoxy a tlačidlá (pre každú úlohu samostatné tlačidlo).
Všímajte si hlavne použitie premenných.
Ak by sme zadeklarovali premennú g globálne, priradenie g=Image1->Canvas;
by sme mohli napísať do konštruktora formulára
a nemuseli by sme deklarovať a inicializovať túto premennú v každej procedúrke ButtonXClick.
-
Jednoduchý príklad použitia premenných.
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TCanvas *g=Image1->Canvas;
//aby sme skrátili zápis, priradili sme do premennej g typu TCanvas Image1->Canvas
int X, Cislo, Sucet;
X=15; //priradili sme celé číslo
Cislo=(2+3)*2; //priradili sme výraz
Sucet=X+Cislo; //priradili sme výraz zložený z dvoch premenných
g->TextOut(0, 0, Sucet);
}
-
Na slačenie tlačidla sa vykreslí obdĺžnik.
void __fastcall TForm1::Button2Click(TObject *Sender)
{
TCanvas *g=Image1->Canvas;
int StredX, StredY;
StredX=Image1->Width/2; //do premennej StredX priradíme hodnotu polovice šírky Image1
StredY=Image1->Height/2;
g->Rectangle(StredX-25, StredY-25, StredX+25, StredY+25); //nakreslí obdĺžnik
}
-
Táto procedúrka na stlačenie tlačidla nakreslí osový kríž.
void __fastcall TForm1::Button3Click(TObject *Sender)
{
TCanvas *g=Image1->Canvas;
int StredX,StredY;
StredX=Image1->Width/2;
StredY=Image1->Height/2;
g->MoveTo(StredX,0); //MoveTo presunie zdvihnuté pero na danú pozíciu (x,y)
g->LineTo(StredX,Image1->Height); //LineTo presunie položené pero - zároveň kreslí čiaru
g->MoveTo(0,StredY);
g->LineTo(Image1->Width,StredY);
}
-
Po stlačení tlačidla vypíše do Image text zadaný v EditBoxe.
void __fastcall TForm1::Button4Click(TObject *Sender)
{
TCanvas *g=Image1->Canvas;
g->TextOut(30, 0, Edit1->Text);
}
-
Nakreslí elipsu podľa velkostí zadaných v EditBoxoch.
void __fastcall TForm1::Button5Click(TObject *Sender)
{
TCanvas *g=Image1->Canvas;
int a,b;
a=StrToInt(Edit1->Text);
b=StrToInt(Edit2->Text);
g->Ellipse(0, 0, a, b); //alebo výraz, napríklad aj g->Ellipse(a+10,b+10,a*5,b*5);
}
-
Napíšte procedúrku, ktorá po zatlačení tlačidla nakreslí do Image
obdĺžnik (parametre zadávajte cez EditBoxy) a k nemu štvorec a kruh s takým istým obvodom,
ako má zadaný obdĺžnik.
-
Napíšte procedúrku, ktorá po zatlačení tlačidla nakreslí do Image domcek.
Steny nech sú štvorec, strecha rovnostranný trojuholník (dĺžku strany zadávajte cez EditBox).
Vyskúšajte si aj zmeniť hrúbku pera a jeho farbu cez vlastnosti Image1->Canvas->Pen->Width a
Image1->Canvas->Pen->Color.
Referencie
Pri príprave na prednášanie a písaní projektu som čerpala z poznámok pána RNDr. Ľubomíra Salanciho zo stránky
http://www.edi.fmph.uniba.sk/salanci/C/02/index.html.
|