Základy Funkcie Pointery, Polia, objekty InstallFest 2011 C++ v … · 2011-03-05 · Kompilácia...
Transcript of Základy Funkcie Pointery, Polia, objekty InstallFest 2011 C++ v … · 2011-03-05 · Kompilácia...
![Page 1: Základy Funkcie Pointery, Polia, objekty InstallFest 2011 C++ v … · 2011-03-05 · Kompilácia Základy Funkcie Pointery, Polia, objekty C++ Akademie SH hello.cpp g++ Make le](https://reader033.fdocument.pub/reader033/viewer/2022050505/5f969f9e0f0e1c007e0172cc/html5/thumbnails/1.jpg)
KompiláciaZákladyFunkcie
Pointery, Polia, objektyC++ Akademie SH
InstallFest 2011
C++ v Linuxe
Tomá² Srna
InstallFest 2011
5. b°ezna 2011
Tomá² Srna C++ v Linuxe
![Page 2: Základy Funkcie Pointery, Polia, objekty InstallFest 2011 C++ v … · 2011-03-05 · Kompilácia Základy Funkcie Pointery, Polia, objekty C++ Akademie SH hello.cpp g++ Make le](https://reader033.fdocument.pub/reader033/viewer/2022050505/5f969f9e0f0e1c007e0172cc/html5/thumbnails/2.jpg)
KompiláciaZákladyFunkcie
Pointery, Polia, objektyC++ Akademie SH
Obsah
1 Kompiláciahello.cppg++Make�le
2 ZákladyPremennéPodmienkyCykly
3 Funkcie4 Pointery, Polia, objekty
PointrePoliaTriedy a objekty
5 C++ Akademie SHTomá² Srna C++ v Linuxe
![Page 3: Základy Funkcie Pointery, Polia, objekty InstallFest 2011 C++ v … · 2011-03-05 · Kompilácia Základy Funkcie Pointery, Polia, objekty C++ Akademie SH hello.cpp g++ Make le](https://reader033.fdocument.pub/reader033/viewer/2022050505/5f969f9e0f0e1c007e0172cc/html5/thumbnails/3.jpg)
KompiláciaZákladyFunkcie
Pointery, Polia, objektyC++ Akademie SH
hello.cppg++Make�le
Obsah
1 Kompiláciahello.cppg++Make�le
2 ZákladyPremennéPodmienkyCykly
3 Funkcie4 Pointery, Polia, objekty
PointrePoliaTriedy a objekty
5 C++ Akademie SHTomá² Srna C++ v Linuxe
![Page 4: Základy Funkcie Pointery, Polia, objekty InstallFest 2011 C++ v … · 2011-03-05 · Kompilácia Základy Funkcie Pointery, Polia, objekty C++ Akademie SH hello.cpp g++ Make le](https://reader033.fdocument.pub/reader033/viewer/2022050505/5f969f9e0f0e1c007e0172cc/html5/thumbnails/4.jpg)
KompiláciaZákladyFunkcie
Pointery, Polia, objektyC++ Akademie SH
hello.cppg++Make�le
Hello World!
hello.cpp#include <iostream>
using namespace std;
int main(int argc, char** argv)
{
char hello[] = "Hello World!";
char ahoj[] = "Ahoj svet!";
char* napis = NULL;
napis = hello;
napis = ahoj;
cout << napis << endl;
return 0;
}
Tomá² Srna C++ v Linuxe
![Page 5: Základy Funkcie Pointery, Polia, objekty InstallFest 2011 C++ v … · 2011-03-05 · Kompilácia Základy Funkcie Pointery, Polia, objekty C++ Akademie SH hello.cpp g++ Make le](https://reader033.fdocument.pub/reader033/viewer/2022050505/5f969f9e0f0e1c007e0172cc/html5/thumbnails/5.jpg)
KompiláciaZákladyFunkcie
Pointery, Polia, objektyC++ Akademie SH
hello.cppg++Make�le
Kompilácia
g++g++ -Wall -ggdb -pedantic -ohello hello.cpp
Tomá² Srna C++ v Linuxe
![Page 6: Základy Funkcie Pointery, Polia, objekty InstallFest 2011 C++ v … · 2011-03-05 · Kompilácia Základy Funkcie Pointery, Polia, objekty C++ Akademie SH hello.cpp g++ Make le](https://reader033.fdocument.pub/reader033/viewer/2022050505/5f969f9e0f0e1c007e0172cc/html5/thumbnails/6.jpg)
KompiláciaZákladyFunkcie
Pointery, Polia, objektyC++ Akademie SH
hello.cppg++Make�le
Hello World!
Make�leall: hello
hello:
g++ -Wall -ggdb -pedantic hello.cpp -ohello
clean:
rm hello
Pozor! Pod xyz: musí príkaz za£ína´ tabulátorom. Aj prázdny.
makemake all; make hello; make clean
make
make bez parametra "makne"prvý cie©.Tomá² Srna C++ v Linuxe
![Page 7: Základy Funkcie Pointery, Polia, objekty InstallFest 2011 C++ v … · 2011-03-05 · Kompilácia Základy Funkcie Pointery, Polia, objekty C++ Akademie SH hello.cpp g++ Make le](https://reader033.fdocument.pub/reader033/viewer/2022050505/5f969f9e0f0e1c007e0172cc/html5/thumbnails/7.jpg)
KompiláciaZákladyFunkcie
Pointery, Polia, objektyC++ Akademie SH
PremennéPodmienkyCykly
Obsah
1 Kompiláciahello.cppg++Make�le
2 ZákladyPremennéPodmienkyCykly
3 Funkcie4 Pointery, Polia, objekty
PointrePoliaTriedy a objekty
5 C++ Akademie SHTomá² Srna C++ v Linuxe
![Page 8: Základy Funkcie Pointery, Polia, objekty InstallFest 2011 C++ v … · 2011-03-05 · Kompilácia Základy Funkcie Pointery, Polia, objekty C++ Akademie SH hello.cpp g++ Make le](https://reader033.fdocument.pub/reader033/viewer/2022050505/5f969f9e0f0e1c007e0172cc/html5/thumbnails/8.jpg)
KompiláciaZákladyFunkcie
Pointery, Polia, objektyC++ Akademie SH
PremennéPodmienkyCykly
Celé £ísla
Nemajú desatinnú £as´.V²etky existuju aj v neznamienkovéj - unsigned verzii
Ich typy
char: má velkos´ 8 bitovshort: minimálne 16 bitov
int: minimálne tak velké ako short
long: minimálne tak velké ako int, a minimálne 32 bitov
Pozor
Pri delení týchto typov, dochádza k celo£íselnému deleniu.
Tomá² Srna C++ v Linuxe
![Page 9: Základy Funkcie Pointery, Polia, objekty InstallFest 2011 C++ v … · 2011-03-05 · Kompilácia Základy Funkcie Pointery, Polia, objekty C++ Akademie SH hello.cpp g++ Make le](https://reader033.fdocument.pub/reader033/viewer/2022050505/5f969f9e0f0e1c007e0172cc/html5/thumbnails/9.jpg)
KompiláciaZákladyFunkcie
Pointery, Polia, objektyC++ Akademie SH
PremennéPodmienkyCykly
�ísla s pohyblivou desatinnou £iarkou
Ich typy
�oat
double
long double
bool
Typ pre logické hodnoty. 0 je false, v²etko iné je true.
char
Znak. Môºe ma´ 256 hodnôt - reprezentuje znak.
Tomá² Srna C++ v Linuxe
![Page 10: Základy Funkcie Pointery, Polia, objekty InstallFest 2011 C++ v … · 2011-03-05 · Kompilácia Základy Funkcie Pointery, Polia, objekty C++ Akademie SH hello.cpp g++ Make le](https://reader033.fdocument.pub/reader033/viewer/2022050505/5f969f9e0f0e1c007e0172cc/html5/thumbnails/10.jpg)
KompiláciaZákladyFunkcie
Pointery, Polia, objektyC++ Akademie SH
PremennéPodmienkyCykly
Podmienka if-else
Syntax
if (podmienka)
telo bloku
else if (podmienka)
telo bloku
else if (podmienka)
telo bloku
else
telo bloku
Tomá² Srna C++ v Linuxe
![Page 11: Základy Funkcie Pointery, Polia, objekty InstallFest 2011 C++ v … · 2011-03-05 · Kompilácia Základy Funkcie Pointery, Polia, objekty C++ Akademie SH hello.cpp g++ Make le](https://reader033.fdocument.pub/reader033/viewer/2022050505/5f969f9e0f0e1c007e0172cc/html5/thumbnails/11.jpg)
KompiláciaZákladyFunkcie
Pointery, Polia, objektyC++ Akademie SH
PremennéPodmienkyCykly
Podmienka if-else
Príklad:#include <iostream>
using namespace std;
int main(void){
a=5;
if (a==5) cout << "Cislo sa rovna 5" <<endl;
else if (a==6)
{cout << "Cislo sa rovna 6"; cout<<endl;}
else if (a<5) cout << "Cislo mensie nez 5" <<endl;
else cout << "Cislo vacsie nez 6" <<endl;
return 0;
}
Tomá² Srna C++ v Linuxe
![Page 12: Základy Funkcie Pointery, Polia, objekty InstallFest 2011 C++ v … · 2011-03-05 · Kompilácia Základy Funkcie Pointery, Polia, objekty C++ Akademie SH hello.cpp g++ Make le](https://reader033.fdocument.pub/reader033/viewer/2022050505/5f969f9e0f0e1c007e0172cc/html5/thumbnails/12.jpg)
KompiláciaZákladyFunkcie
Pointery, Polia, objektyC++ Akademie SH
PremennéPodmienkyCykly
Prepína£ switch
Syntax:
switch (vyraz)
{
case hodnota:
prikazy;
break;
case hodnota:
prikazy;
break;
default:
prikazy;
break;
}
Tomá² Srna C++ v Linuxe
![Page 13: Základy Funkcie Pointery, Polia, objekty InstallFest 2011 C++ v … · 2011-03-05 · Kompilácia Základy Funkcie Pointery, Polia, objekty C++ Akademie SH hello.cpp g++ Make le](https://reader033.fdocument.pub/reader033/viewer/2022050505/5f969f9e0f0e1c007e0172cc/html5/thumbnails/13.jpg)
KompiláciaZákladyFunkcie
Pointery, Polia, objektyC++ Akademie SH
PremennéPodmienkyCykly
Prepína£ switch
Príklad:#include <iostream>
using namespace std;
int main(void){
cout<<"Zadaj A alebo B. "<<endl;
char c;
cin>>c;
switch (c)
{
case 'a':
case 'A': cout<<"Zadal si A."<<endl; break;
case 'b':
case 'B': cout<<"Zadal si B."<<endl; break;
default : cout<<"Nauc sa citat."<<endl; break;
}
return 0;
}
Tomá² Srna C++ v Linuxe
![Page 14: Základy Funkcie Pointery, Polia, objekty InstallFest 2011 C++ v … · 2011-03-05 · Kompilácia Základy Funkcie Pointery, Polia, objekty C++ Akademie SH hello.cpp g++ Make le](https://reader033.fdocument.pub/reader033/viewer/2022050505/5f969f9e0f0e1c007e0172cc/html5/thumbnails/14.jpg)
KompiláciaZákladyFunkcie
Pointery, Polia, objektyC++ Akademie SH
PremennéPodmienkyCykly
Podmienený výraz (ternárny operátor ?:)
Syntax:vyraz ? b : c
Príklad:
O²etrenie delenia nulou:
vysledok = i ? 128 / i : 0;
Tomá² Srna C++ v Linuxe
![Page 15: Základy Funkcie Pointery, Polia, objekty InstallFest 2011 C++ v … · 2011-03-05 · Kompilácia Základy Funkcie Pointery, Polia, objekty C++ Akademie SH hello.cpp g++ Make le](https://reader033.fdocument.pub/reader033/viewer/2022050505/5f969f9e0f0e1c007e0172cc/html5/thumbnails/15.jpg)
KompiláciaZákladyFunkcie
Pointery, Polia, objektyC++ Akademie SH
PremennéPodmienkyCykly
Cyklus for
Syntax:
for (inicializacia; podmienka; vyraz)
telo cyklu
Inicializace môºe obsahova´ deklaráciu
V podmienke treba dáva´ pozor na operátory = a ==
Pozor!
Ke¤ chcete da´ viac neº jeden príkaz do cyklu, treba pouºi´ lomenézátvorky.
Tomá² Srna C++ v Linuxe
![Page 16: Základy Funkcie Pointery, Polia, objekty InstallFest 2011 C++ v … · 2011-03-05 · Kompilácia Základy Funkcie Pointery, Polia, objekty C++ Akademie SH hello.cpp g++ Make le](https://reader033.fdocument.pub/reader033/viewer/2022050505/5f969f9e0f0e1c007e0172cc/html5/thumbnails/16.jpg)
KompiláciaZákladyFunkcie
Pointery, Polia, objektyC++ Akademie SH
PremennéPodmienkyCykly
Cyklus for
Príklad:#include <iostream>
using namespace std;
int main(void){
cout<<"Zadaj pocet cyklov. "<<endl;
int pocet;
cin>>pocet;
for(int i=0;i<pocet;i++){
cout<<"Hodnota i je: "<<i;
cout<<endl;
}
return 0;
}
Tomá² Srna C++ v Linuxe
![Page 17: Základy Funkcie Pointery, Polia, objekty InstallFest 2011 C++ v … · 2011-03-05 · Kompilácia Základy Funkcie Pointery, Polia, objekty C++ Akademie SH hello.cpp g++ Make le](https://reader033.fdocument.pub/reader033/viewer/2022050505/5f969f9e0f0e1c007e0172cc/html5/thumbnails/17.jpg)
KompiláciaZákladyFunkcie
Pointery, Polia, objektyC++ Akademie SH
Obsah
1 Kompiláciahello.cppg++Make�le
2 ZákladyPremennéPodmienkyCykly
3 Funkcie4 Pointery, Polia, objekty
PointrePoliaTriedy a objekty
5 C++ Akademie SHTomá² Srna C++ v Linuxe
![Page 18: Základy Funkcie Pointery, Polia, objekty InstallFest 2011 C++ v … · 2011-03-05 · Kompilácia Základy Funkcie Pointery, Polia, objekty C++ Akademie SH hello.cpp g++ Make le](https://reader033.fdocument.pub/reader033/viewer/2022050505/5f969f9e0f0e1c007e0172cc/html5/thumbnails/18.jpg)
KompiláciaZákladyFunkcie
Pointery, Polia, objektyC++ Akademie SH
Funkcie
Funkcie sú základným stavebným kame¬om jazyka C++.
De�nícia funkcienavratovy_typ nazov ([parametre])
{
telo funkcie
}
Názov funkcie slúºi na jej identi�káciu.
Parametre funkcie sú o£akávané dáta.
Funkcia má vºdy jednu návratovú hodnotu. Pokia© ich chcemeviac, pouºijeme tzv. výstupné parametre (pointre aleboreferencie).
Tomá² Srna C++ v Linuxe
![Page 19: Základy Funkcie Pointery, Polia, objekty InstallFest 2011 C++ v … · 2011-03-05 · Kompilácia Základy Funkcie Pointery, Polia, objekty C++ Akademie SH hello.cpp g++ Make le](https://reader033.fdocument.pub/reader033/viewer/2022050505/5f969f9e0f0e1c007e0172cc/html5/thumbnails/19.jpg)
KompiláciaZákladyFunkcie
Pointery, Polia, objektyC++ Akademie SH
PointrePoliaTriedy a objekty
Obsah
1 Kompiláciahello.cppg++Make�le
2 ZákladyPremennéPodmienkyCykly
3 Funkcie4 Pointery, Polia, objekty
PointrePoliaTriedy a objekty
5 C++ Akademie SHTomá² Srna C++ v Linuxe
![Page 20: Základy Funkcie Pointery, Polia, objekty InstallFest 2011 C++ v … · 2011-03-05 · Kompilácia Základy Funkcie Pointery, Polia, objekty C++ Akademie SH hello.cpp g++ Make le](https://reader033.fdocument.pub/reader033/viewer/2022050505/5f969f9e0f0e1c007e0172cc/html5/thumbnails/20.jpg)
KompiláciaZákladyFunkcie
Pointery, Polia, objektyC++ Akademie SH
PointrePoliaTriedy a objekty
Pointre
�o je to pointer?
Pointer je v podstate odkaz na pamä´.
Deklaráciaint* a;
char* b;
Operácie s pointrami* - dereference
& - adress of
Ukáºeme si £o smieme a £o nesmieme s pointrami.(NULL pointer, mimo alokovanej pamäti, neinicializovaný pointer)
Tomá² Srna C++ v Linuxe
![Page 21: Základy Funkcie Pointery, Polia, objekty InstallFest 2011 C++ v … · 2011-03-05 · Kompilácia Základy Funkcie Pointery, Polia, objekty C++ Akademie SH hello.cpp g++ Make le](https://reader033.fdocument.pub/reader033/viewer/2022050505/5f969f9e0f0e1c007e0172cc/html5/thumbnails/21.jpg)
KompiláciaZákladyFunkcie
Pointery, Polia, objektyC++ Akademie SH
PointrePoliaTriedy a objekty
Polia
Alokácia
Statická
Dynamická
Statická alokáciaint a[5];
Dynamická alokácia
int* a = new int[5];
�o s viacrozmernými poliami?
Tomá² Srna C++ v Linuxe
![Page 22: Základy Funkcie Pointery, Polia, objekty InstallFest 2011 C++ v … · 2011-03-05 · Kompilácia Základy Funkcie Pointery, Polia, objekty C++ Akademie SH hello.cpp g++ Make le](https://reader033.fdocument.pub/reader033/viewer/2022050505/5f969f9e0f0e1c007e0172cc/html5/thumbnails/22.jpg)
KompiláciaZákladyFunkcie
Pointery, Polia, objektyC++ Akademie SH
PointrePoliaTriedy a objekty
Viacrozmerné polia
Statická alokáciaint a[5][25];
Dynamická alokáciaint i;
int* a = new int*[5];
for (i=0;i<5;++i)
a[i] = new int[25];
Tomá² Srna C++ v Linuxe
![Page 23: Základy Funkcie Pointery, Polia, objekty InstallFest 2011 C++ v … · 2011-03-05 · Kompilácia Základy Funkcie Pointery, Polia, objekty C++ Akademie SH hello.cpp g++ Make le](https://reader033.fdocument.pub/reader033/viewer/2022050505/5f969f9e0f0e1c007e0172cc/html5/thumbnails/23.jpg)
KompiláciaZákladyFunkcie
Pointery, Polia, objektyC++ Akademie SH
PointrePoliaTriedy a objekty
Triedy
Základná triedaclass CRectangle {
int x, y;
public:
void set_values (int,int);
int area (void);
};
Objekty
Objekt je instanciou triedy.
CRectangle rect;
Tomá² Srna C++ v Linuxe
![Page 24: Základy Funkcie Pointery, Polia, objekty InstallFest 2011 C++ v … · 2011-03-05 · Kompilácia Základy Funkcie Pointery, Polia, objekty C++ Akademie SH hello.cpp g++ Make le](https://reader033.fdocument.pub/reader033/viewer/2022050505/5f969f9e0f0e1c007e0172cc/html5/thumbnails/24.jpg)
KompiláciaZákladyFunkcie
Pointery, Polia, objektyC++ Akademie SH
Obsah
1 Kompiláciahello.cppg++Make�le
2 ZákladyPremennéPodmienkyCykly
3 Funkcie4 Pointery, Polia, objekty
PointrePoliaTriedy a objekty
5 C++ Akademie SHTomá² Srna C++ v Linuxe
![Page 25: Základy Funkcie Pointery, Polia, objekty InstallFest 2011 C++ v … · 2011-03-05 · Kompilácia Základy Funkcie Pointery, Polia, objekty C++ Akademie SH hello.cpp g++ Make le](https://reader033.fdocument.pub/reader033/viewer/2022050505/5f969f9e0f0e1c007e0172cc/html5/thumbnails/25.jpg)
KompiláciaZákladyFunkcie
Pointery, Polia, objektyC++ Akademie SH
C++ Akademie SH
Pokia© ´a programovanie v C++ zaujalo, zapí² sa na C++Akademiu SH
Info na http://c.siliconhill.cz
Tomá² Srna C++ v Linuxe