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

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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