Transcript Document

Visual C++
Základy tvorby aplikácií
Osnova prednášky




Vývojové prostredia pre C++
Microsoft Visual C++
Základy tvorby užívateľského rozhrania
Jednoduchý príklad
Vývojové prostredia pre C++





Microsoft Visual C++ - komerčný softvér pre MS Windows, veľmi
rozšírený v softvérových spoločnostiach, je stavaný na tvorbu rôznych typov
aplikácií, má veľmi široké možnosti a je vhodný aj na tvorbu rozsiahlych
projektov. Má prepracovaný systém debugovania (hľadania chýb),
automatického dopĺňania kódu a orientácie v programe a tiež dobrú
dokumentáciu. Jeho obmedzená verzia Express Edition je voľne šíriteľná.
Borland C++ Builder – komerčný softvér pre MS Windows, ktorý je
užívateľsky príjemný a tvorba aplikácií v ňom je jednoduchá a intuitívna,
vďaka čomu je populárny. Má veľké množstvo komponentov. Má voľne
šíriteľnú obmedzenú verziu Borland Turbo C++ Explorer.
Dev-C++ - voľne šíriteľný populárny softvér pre Windows, svojím
usporiadaním pripomína MS Visual C++.
KDevelop – voľne šíriteľný softvér pre Linux, takisto pripomína MS Visual
C++ a má podobnú funkčnosť.
QT Designer – softvér schopný pracovať na viacerých platformách,
podobne ako Borland C++ sa vyznačuje jednoduchosťou a intuitívnosťou.
Má dobrú dokumentáciu a systém automatického dopĺňania kódu. Má voľne
šíriteľnú verziu.
Microsoft Visual C++


História:
MS Visual C++
MS Visual C++
MS Visual C++
aj dnes
MS Visual C++
framework
MS Visual C++
MS Visual C++
MS Visual C++
1.0 – 1992 – prvá verzia
2.0 – 1995 – rozšírená oproti 1.0, ale málo používaná
6.0 – 1998 – široko rozšírená verzia, ktorá sa používa ešte
.NET 2003 – rozšírená verzia s podporou pre .NET
2005
2008
2010 – posledná stabilná verzia
Aktuálne verzie VC++ 2010:
Express Edition – voľne šíriteľná verzia
Professional – pre profesionálne aplikácie, pre individuálnych programátorov
Premium – pre teamové projekty
Ultimate – pre rozsiahle teamové projekty, s podpornými prostriedkami pre
správu rozsiahleho kódu
.NET Framework


.NET Framework je softvérový komponent, ktorý je priamo súčasťou
Windows (Windows Server 2003, Windows Vista), alebo môže byť k
Windows doinštalovaný (väčšina starších verzií). Jeho úlohou je poskytovať
nové prostriedky pre tvorbu windowsovských aplikácií a efektívne riadiť
chod programov, ktoré boli preň vyvinuté.
.NET Framework sa skladá z dvoch častí:
1. Knižnica tried – obsahuje množstvo tried, ktoré uľahčujú tvorbu
aplikácií pre Windows, napr. triedy pre vytváranie užívateľského rozhrania,
prácu s databázami, tvorbu webovských aplikácií, sieťovú komunikáciu,
grafiku, šifrovanie a podobne.
2. Common Language Runtime (CLR) – je to jednotný prostriedok na
spúšťanie a riadenie programov napísaných v rôznych programovacích
jazykoch. Pri kompilácii sa kód z nejakého jazyka preloží do pomocného
jazyka (Microsoft Intermediate Language) a až pri spúšťaní sa kód preloží
do strojového kódu. Umožňuje to lepšiu prenosnosť kódu na rôzne
počítače. CLR sa takisto stará o správu pamäti, spracovanie výnimiek,
paralelné spúšťanie programov a bezpečnosť.
Managed C++





Managed C++ je modifikácia C++ realizovaná firmou Microsoft. Je
špeciálne navrhnutá tak, aby spolupracovala s .NET Framework. Dá sa
využiť len vo Windows a v prostrediach, ktoré .NET Framework podporujú.
Managed C++ zavádza množstvo nových funkcií, ktoré sa nevyskytujú v
štandardnom C++, a ktoré umožňujú zahrnúť do kódu prvky knižníc .NET
Framework.
Managed C++ tiež umožňuje, aby program podliehal riadeniu pomocou
.NET Framework, teda aby .NET Framework spravoval pamäť, ktorú
program využíva, spracovával jeho výnimky a podobne. Ak je kód riadený
pomocou .NET Framework, nemusíme napr. ručne robiť dealokácie, pamäť
je dealokovaná automaticky bez nebezpečenstva memory leakov.
Nevýhodou je menšia rýchlosť programu.
Kód napísaný v MS Visual C++ (.NET a vyššie) sa teda delí na dva typy:
1. Manažovaný (managed) – riadi ho .NET Framework
2. Prirodzený (native) – neriadi ho .NET Framework
Manažovaný a prirodzený kód sa dajú kombinovať, ale len do istej miery.
Tvorba aplikácií v MS Visual C++


V MS Visual C++ je nasledujúca organizácia programov:
1. Súbor so zdrojovým kódom – obsahuje nejakú časť kódu alebo celý
program
2. Projekt – vznikne združením viacerých súborov so zdrojovým kódom, je
to už samostatná časť softvéru
3. Solution – kompletný softvér, ktorý sa môže skladať z viacerých projektov
Niektoré typy projektov, ktoré sa dajú vytvoriť vo VC++:
1. Console application – program s minimálnym užívateľským rozhraním
2. Windows forms application – program so štandardným windowsovským
rozhraním
3. MFC application – aplikácia využívajúca prvky MFC (Microsoft Foundation
Class), pomocou ktorých sa dá vytvoriť aj komplikovanejšie užívateľské
rozhranie
4. DLL – dynamická knižnica
5. MFC ActiveX Control – nový ovládací prvok typu ActiveX
...
Tvorba aplikácií v MS Visual C++


Vytvorenie jednoduchej aplikácie si názorne ukážeme na príklade.
Príklad: Objednávka limuzíny
Vytvoríme program so štandardným windowsovským rozhraním, ktorý bude
užívateľovi umožnovať objednať si limuzínu na určené miesto a čas.
Užívateľské rozhranie bude obsahovať načítanie dátumu a hodiny, počtu
hodín, voľbu typu limuzíny, zadanie mena a adresy zákazníka, voľbu
občerstvenia počas cesty, obrázok zvoleného auta a výpočet ceny.
Tvorba aplikácií v MS Visual C++

Najskôr si musíme zvoliť typ projektu. Vyberieme si Windows forms
application:
Tvorba aplikácií v MS Visual C++

Po vytvorení nového projektu vyzerá naša pracovná plocha približne takto:
Tvorba aplikácií v MS Visual C++


Aplikácia typu Windows forms application pozostáva z komponentov,
ktoré vytvárajú interface medzi užívateľom a programom a riadia priebeh
programu. Komponenty sú teda všetky okná, textové a ovládacie prvky,
ktoré vidíme a pomocou ktorých komunikujeme s programom.
Tvorba aplikácie pozostáva z troch častí:
1. Analýza a návrh štruktúry programu – predtým, ako začneme
programovať, premyslíme si a navrhneme štruktúru kódu – triedy a objekty,
ich vzájomnú komunikáciu, dedičnosť a polymorfizmus a podobne.
2. Návrh užívateľského rozhrania – najskôr si premyslíme, ako bude
program komunikovať s užívateľom a aké ovládacie prvky bude potrebovať.
Potom navrhneme interface. Visual C++ ponúka nástroje na dizajn
rozhrania, vzhľad aplikácie môžeme navrhnúť jednoducho technikou drag
and drop, vlastnosti každého komponentu nastavíme v špeciálnom panele
vlastností.
3. Vytvorenie kódu, spracovanie udalostí – napíšeme samotný
program. Program bude vlastne reagovať na jednotlivé udalosti vyvolané
komponentami – stlačenie tlačítka, kliknutie alebo pohyb myšou, zmena
obsahu a podobne.
Tvorba aplikácií v MS Visual C++


1. Návrh štruktúry
Naša aplikácia je jednoduchá. V podstate len načíta objednávku a uloží ju
do zoznamu objednávok. Budeme potrebovať len triedu Objednávka na
uchovanie príslušných údajov a potom dynamické pole na uloženie
objednávok. Vytvoríme si tiež triedu ČasovýÚdaj na uchovanie informácie o
dátume a čase.
Triedy môžeme vytvárať manuálne, ale Visual C++ nám ponúka aj
prostriedky, pomocou ktorých môžeme vytváranie tried čiastočne
zautomatizovať. Pridajme do programu dve nové triedy – ČasovýÚdaj a
Objednávka.
Tvorba aplikácií v MS Visual C++

Vo Visual C++ môžeme vytvoriť množstvo typov tried, vyberieme si typ
Generic C++ Class:
Tvorba aplikácií v MS Visual C++

Zadáme názov novej triedy: CasovyUdaj. Visual C++ automaticky vytvorí
hlavičkový súbor CasovyUdaj.h s definíciou triedy a zdrojový súbor
CasovyUdaj.cpp, v ktorom budú definované jednotlivé metódy. Takto je
zabezpečená prehľadnosť programu.
Tvorba aplikácií v MS Visual C++


V hlavičkovom súbore CasovyUdaj.h je trieda ČasovýÚdaj preddefinovaná
takto:
class CasovyUdaj
{
public:
CasovyUdaj(void);
~CasovyUdaj(void);
};
Doplníme do nej súkromné dáta:
class CasovyUdaj
{
private:
int rok,mesiac,den,hodina,minuta;
public:
CasovyUdaj(void);
~CasovyUdaj(void);
};
Tvorba aplikácií v MS Visual C++

Teraz do triedy ČasovýÚdaj doplníme aj metódy na nastavenie času a
dátumu. Na to opäť môžeme využiť prostriedky Visual C++.
Tvorba aplikácií v MS Visual C++

Doplníme metódu NastavČas(...) s parametrami h a m (hodina a minúta):
Tvorba aplikácií v MS Visual C++

Rovnakým spôsobom potom doplníme metódu NastavDátum(...) s
parametrami r, m, d (rok, mesiac, deň). Trieda ČasovýÚdaj bude nakoniec
vyzerať takto:
class CasovyUdaj
{
private:
int rok,mesiac,den,hodina,minuta;
public:
CasovyUdaj(void);
~CasovyUdaj(void);
void NastavDatum(int r, int m, int d);
void NastavCas(int h, int m);
};
Tvorba aplikácií v MS Visual C++

Metódy NastavČas a NastavDátum definujeme v súbore CasovyUdaj.cpp:
void CasovyUdaj::NastavDatum(int r, int m, int d)
{
rok=r;
mesiac=m;
den=d;
}
void CasovyUdaj::NastavCas(int h, int m)
{
hodina=h;
minuta=m;
}
Tvorba aplikácií v MS Visual C++

Podobným spôsobom definujeme triedu Objednávka, ktorá bude vyzerať
takto:
class Objednavka
{
private:
string meno, adresa;
int typ, pocet_hodin, cena;
bool obcerstvenie;
CasovyUdaj cas;
public:
Objednavka(void);
~Objednavka(void);
void NastavHodnoty(string m, string a, int t, int ph, int cn, bool o,
CasovyUdaj cs);
};
Tvorba aplikácií v MS Visual C++

V súbore Objednavka.cpp definujeme metódu NastavHodnoty:
void Objednavka::NastavHodnoty(string m, string a, int t, int ph, int cn,
bool o, CasovyUdaj cs)
{
meno=m;
adresa=a;
typ=t;
pocet_hodin=ph;
cena=cn;
obcerstvenie=o;
cas=cs;
}
Tvorba aplikácií v MS Visual C++

Ešte potrebujeme dynamické pole pre uchovávanie objednávok a údaj o počte
už prijatých objednávok. Tie definujeme ako súkromné dáta triedy Form1, ktorá
predstavuje hlavné okno programu, teda samotnú aplikáciu. V hlavičkovom
súbore Form1.h bude potom trieda Form1 definovaná takto:
public __gc class Form1 : public System::Windows::Forms::Form
//__gc znamená, že trieda je manažovaná
{
public:
Form1(void) ...
protected:
void Dispose(Boolean disposing) ...
private:
System::ComponentModel::Container * components;
void InitializeComponent(void) ..
Objednavka *objednavky; //manažovaná trieda prijme len smerník
int pocet_objednavok;
//na objekt nemanažovanej triedy
};
Tvorba aplikácií v MS Visual C++


2. Návrh užívateľského rozhrania
Teraz navrhneme, ako bude aplikácia vyzerať a ako bude komunikovať s
užívateľom.
Súčasťou prostredia Visual C++ je tzv. Toolbox, ktorý obsahuje množstvo
preddefinovaných riadiacich prvkov (tlačítka, textové polia, menu atď.) My
budeme pre náš program potrebovať tieto prvky:
1. Label – popisný text, ktorý budeme používať na opísanie funkcie
niektorých prvkov
2. Button – tlačítko
3. TextBox – na zadávanie údajov
Tvorba aplikácií v MS Visual C++

4. DateTimePicker – prvok na zadávanie času a dátumu
5. CheckBox – na voľbu občerstvenia
6. ComboBox – na výber typu limuzíny z viacerých dostupných typov
Tvorba aplikácií v MS Visual C++

7. PictureBox – na zobrazenie vybranej limuzíny

8. GroupBox – na zoskupenie prvkov do skupiny
Tvorba aplikácií v MS Visual C++

Náš program bude mať len jedno okno, ktoré bude vyzerať takto:
Tvorba aplikácií v MS Visual C++

Tu je popis jednotlivých prvkov:
GroupBox
Label
TextBox
ComboBox
DateTimePicker
Label
PictureBox
Label
CheckBox
Button
Tvorba aplikácií v MS Visual C++

Ku každému prvku, aj k samotnému hlavnému oknu (Form1), patrí tzv.
panel vlastností. Tu nastavíme rôzne vlastnosti daného prvku, napr. jeho
meno, text, ktorý má byť na ňom vypísaný, vzhľad a podobne. Štandardne
by mal byť viditeľný, ak ho nevidíme, zobrazíme si ho cez View/Properties
Window. Sú na ňom zobrazené vlastnosti prvku, ktorý je práve označený.
Tvorba aplikácií v MS Visual C++

V prípade našej aplikácie nastavíme vlastnosti jednotlivých prvkov takto
(uvedené sú len tie ktoré sa zmenia oproti štandardnému nastaveniu):
1. Form Form1:
Text : Najlepšie limuzíny s.r.o.
2. GroupBox GroupZakaznik:
Text : Zákazník
3. GroupBox GroupLimuzina:
Text : Limuzína
4. Label LabelMeno:
Text : Meno
5. TextBox TextMeno:
Text :
6. Label LabelAdresa:
Text : Adresa
7. TextBox TextAdresa:
Text:
Tvorba aplikácií v MS Visual C++

8. Label LabelTyp:
Text : Typ
9. ComboBox ComboTyp:
Text :
Items: Town Car Limo
Chrysler 300
Navigator
Rolls Royce Silver Cloud
Bentley Touring Sedan
10. Label LabelDatum:
Text : Dátum
11. DateTimePicker PickerDatum:
12. Label LabelCas:
Text : Čas
Tvorba aplikácií v MS Visual C++

13. DateTimePicker PickerCas:
Format : Time
ShowUpDown : True
14. Label LabelPocetHodin:
Text : Počet hodín
15. TextBox TextPocetHodin:
Text : 0
TextAlign : Right
16. CheckBox CheckObcerstvenie:
Text : Občerstvenie
17. PictureBox PictureLimuzina:
18. Label LabelCena:
Text : Cena/Skk
19. TextBox TextCena:
Text : 0
TextAlign : Right
Tvorba aplikácií v MS Visual C++

20. Button ButtonVypocitajCenu:
Text : Vypočítaj cenu
21. Button ButtonPotvrdObjednavku:
Text : Potvrď objednávku
22. Button ButtonNovaObjednavka:
Text : Nová objednávka
23. Button ButtonKoniec:
Text : Koniec
Tvorba aplikácií v MS Visual C++


Posledná úprava vzhľadu nášho programu bude zmena ikony. Urobíme to v
panele vlastností okna Form1:
Nová ikona sa volá Red.ico:
Tvorba aplikácií v MS Visual C++

V hlavičkovom súbore Form1.h sa nové prvky automaticky objavia v triede Form1
private:
private:
private:
private:
private:
private:
private:
private:
private:
private:
private:
private:
private:
private:
private:
private:
private:
private:
private:
private:
private:
private:
System::Windows::Forms::GroupBox * GroupZakaznik;
System::Windows::Forms::Label * LabelMeno;
System::Windows::Forms::Label * LabelAdresa;
System::Windows::Forms::GroupBox * GroupLimuzina;
System::Windows::Forms::ComboBox * ComboTyp;
System::Windows::Forms::DateTimePicker * PickerDatum;
System::Windows::Forms::DateTimePicker * PickerCas;
System::Windows::Forms::TextBox * TextPocetHodin;
System::Windows::Forms::CheckBox * CheckObcerstvenie;
System::Windows::Forms::Label * LabelTyp;
System::Windows::Forms::Label * LabelDatum;
System::Windows::Forms::Label * LabelCas;
System::Windows::Forms::Label * LabelPocetHodin;
System::Windows::Forms::PictureBox * PictureLimuzina;
System::Windows::Forms::TextBox * TextCena;
System::Windows::Forms::Label * LabelCena;
System::Windows::Forms::Button * ButtonPotvrdObjednavku;
System::Windows::Forms::Button * ButtonNovaObjednavka;
System::Windows::Forms::Button * ButtonKoniec;
System::Windows::Forms::TextBox * TextMeno;
System::Windows::Forms::TextBox * TextAdresa;
System::Windows::Forms::Button * ButtonVypocitajCenu;
Tvorba aplikácií v MS Visual C++



3. Spracovanie udalostí
Teraz dopíšeme chýbajúcu časť kódu, teda to, ako bude program reagovať
na udalosti, ktoré nastanú počas jeho behu. Vytvoríme teda celú hlavnú
funkčnosť programu.
Jediné udalosti, na ktoré musí tento program reagovať, sú stlačenia tlačítiek
a výber typu limuzíny pomocou combo boxu(vtedy sa zjaví jej obrázok).
Funkcia, ktorá spracúva stlačenie tlačítka, sa automaticky vytvorí, ak pri
dizajnovaní okna dvakrát klikneme na tlačítko. Táto funkcia sa objaví ako
súkromná metóda triedy Form1:
private: System::Void ButtonVypocitajCenu_Click(System::Object * sender,
System::EventArgs * e)
{
}
Tvorba aplikácií v MS Visual C++


Napíšme teda funkciu ButtonVypocitajCenu_Click :
private: System::Void ButtonVypocitajCenu_Click(System::Object * sender,
System::EventArgs * e)
{
int cena;
int ceny[5]={2000, 3000, 5000, 4000, 3500};
cena=TextPocetHodin->Text->ToInt32(0)*ceny[ComboTyp->SelectedIndex];
if (CheckObcerstvenie->Checked==1) cena+=1000;
TextCena->Text=cena.ToString("D");
}
TextBox->Text – text, ktorý sa objaví v text boxe
ToInt32(0) – funkcia, ktorá prevedie premennú na 32-bitový int. Parameter 0
znamená, že výsledok sa neformátuje.
ComboBox->SelectedIndex – index prvku, ktorý bol zvolený v combo boxe
CheckBox->Checked – parameter, ktorý udáva, či bolo políčko v check boxe
zaškrtnuté (0 alebo 1)
ToString("D") – funkcia, ktorá prevedie premennú na String. „D" znamená formát
“decimal”, t.j. číslo v desiatkovej sústave.
Tvorba aplikácií v MS Visual C++



Teraz napíšeme funkciu ButtonPotvrdObjednavku_Click. Úlohou tejto funkcie
bude uložiť údaje zadané v okne do objektu triedy Objednávka a potom
uložiť vytvorený objekt do poľa objednávok.
Aby sme mohli robiť operácie s poľom objednávok, musíme ho najprv
alokovať, keďže zatiaľ máme vytvorený len smerník. Urobíme to v
konštruktore triedy Form1:
Form1(void)
{
objednavky=new Objednavka[100];
pocet_objednavok=0;
InitializeComponent();
}
Ďalej budeme potrebovať ešte jednu novú triedu. Údaj, ktorý načítame z
prvku TextBox, je typu String, čo je špeciálny typ Managed C++. My máme
v našej triede Objednávka údaje typu string štandardného C++, preto
budeme potrebovať funkciu na prevod Stringu na string. Vytvoríme si novú
triedu Pomôcky a v nej bude zatiaľ jediná metóda – StringNastring.
Tvorba aplikácií v MS Visual C++

Takto bude vyzerať trieda Pomôcky:
class Pomocky
{
public:
Pomocky(void);
~Pomocky(void);
string StringNastring(String __gc *s);
};
string Pomocky::StringNastring(String __gc *s)
{
using namespace Runtime::InteropServices;
const char* chars=(const char *)
(Marshal::StringToHGlobalAnsi(s)).ToPointer();
string s1=chars;
Marshal::FreeHGlobal(IntPtr((void*)chars));
return s1;
}
Tvorba aplikácií v MS Visual C++

Teraz môžeme napísať funkciu ButtonPotvrdObjednavku_Click :
private: System::Void ButtonPotvrdObjednavku_Click(System::Object * sender,
System::EventArgs * e)
{
Objednavka o;
CasovyUdaj c;
Pomocky pom;
c.NastavCas(PickerCas->Value.Hour,PickerCas->Value.Minute);
c.NastavDatum(PickerDatum->Value.Year,PickerDatum-> Value.Month,
PickerDatum->Value.Day);
o.NastavHodnoty(pom.StringNastring(TextMeno->Text),
pom.StringNastring(TextAdresa->Text),
ComboTyp->SelectedIndex,
TextPocetHodin->Text->ToInt32(0),
TextCena->Text->ToInt32(0),
CheckObcerstvenie->Checked,
c);
objednavky[pocet_objednavok]=o;
pocet_objednavok++;
}
Tvorba aplikácií v MS Visual C++

Teraz si vysvetlíme neznáme príkazy a názvy:
DateTimePicker->Value – táto štruktúra (objekt) obsahuje údaje o čase,
ktorý je nastavený v prvku DateTimePicker. Sú v nej údaje ako napr.
Year - nastavený rok
Month – mesiac
Day - deň v mesiaci
Hour – hodina
Minute – minúta
Second – sekunda
a ďalšie.
Tvorba aplikácií v MS Visual C++


Ďalšou funkciou, ktorú napíšeme, bude funkcia ButtonNovaObjednavka_Click.
Tu ide len o to, aby sa vynulovali všetky hodnoty, prípadne nastavili na nejaké
počiatočné hodnoty.
private: System::Void ButtonNovaObjednavka_Click(System::Object *
sender, System::EventArgs * e)
{
TextMeno->Text="";
TextAdresa->Text="";
ComboTyp->SelectedIndex=-1;
PickerDatum->Value=DateTime::Today;
PickerCas->Value=DateTime::Now;
TextPocetHodin->Text="";
CheckObcerstvenie->set_Checked(0);
TextCena->Text="";
}
DateTime::Today – obsahuje dnešný dátum
DateTime::Now – obsahuje aktuálny čas
CheckBox->set_Checked(0) – nastaví políčko tak, aby nebolo zaškrtnuté
Tvorba aplikácií v MS Visual C++



Nakoniec napíšeme funkciu ButtonKoniec_Click. Tá len ukončí program.
private: System::Void ButtonKoniec_Click(System::Object * sender,
System::EventArgs * e)
{
Close();
}
Zostáva nám spracovať prípad, keď sa v combo boxe zvolí nejaký typ
limuzíny. Vtedy by sa mal v picture boxe zobraziť obrázok vybraného auta.
Tento raz nebude program reagovať na kliknutie myšou, ale na zmenu
vybranej položky. V paneli vlastností combo boxu klikneme na udalosť
SelectedIndexChanged:
Tvorba aplikácií v MS Visual C++

Teraz napíšeme funkciu ComboTyp_SelectionIndexChanged :
private: System::Void ComboTyp_SelectedIndexChanged(System::Object *
sender, System::EventArgs * e)
{
Bitmap __gc *image; //bitmapový obrázok
switch (ComboTyp->SelectedIndex)
{
case 0:
image=new Bitmap("TownCarLimo.jpg",true); break;
case 1:
image=new Bitmap("Chrysler300Limo.jpg",true); break;
case 2:
image=new Bitmap("Navigator.jpg",true); break;
case 3:
image=new Bitmap("RollsRoyceSilverCloud.jpg",true); break;
case 4:
image=new Bitmap("BentleyTouringSedan.jpg",true); break;
}
this->PictureLimuzina->set_Image(image); //zobrazenie obrázku
}
Tvorba aplikácií v MS Visual C++

Nakoniec nám už len zostáva náš program spustiť a vyskúšať: