+ All Categories
Home > Documents > C++ Akademie SH 3. Standardní vstup, výstup, pole, ukazatele · C++ Akademie SH 3. Standardní...

C++ Akademie SH 3. Standardní vstup, výstup, pole, ukazatele · C++ Akademie SH 3. Standardní...

Date post: 01-Nov-2019
Category:
Upload: others
View: 2 times
Download: 0 times
Share this document with a friend
21
Transcript
Page 1: C++ Akademie SH 3. Standardní vstup, výstup, pole, ukazatele · C++ Akademie SH 3. Standardní vstup, výstup, pole, ukazatele Michal Kvasni£ka Za£áte£níci C++ 28. b°ezna

Standardní vstup a výstupPole

Platnost prom¥nnýchUkazatele

C++ Akademie SH

3. Standardní vstup, výstup, pole, ukazatele

Michal Kvasni£ka

Za£áte£níci C++

28. b°ezna 2011

Michal Kvasni£ka 3. Standardní vstup, výstup, pole, ukazatele

Page 2: C++ Akademie SH 3. Standardní vstup, výstup, pole, ukazatele · C++ Akademie SH 3. Standardní vstup, výstup, pole, ukazatele Michal Kvasni£ka Za£áte£níci C++ 28. b°ezna

Standardní vstup a výstupPole

Platnost prom¥nnýchUkazatele

Obsah

1 Standardní vstup a výstupStandardní vstupStandardní výstup - manipulátory

2 PolePouºití a syntaxeVyuºití pole I.Vyuºití pole II.Vícerozm¥rné pole

3 Platnost prom¥nnýchP°ehled typ· prom¥nnýchP°íkladP°edávání prom¥nných hodnotou

4 UkazateleP°edávání prom¥nných odkazemP°íklad pouºitíVýstupní parametr funkceP°edání pole jako parametr funkce

Michal Kvasni£ka 3. Standardní vstup, výstup, pole, ukazatele

Page 3: C++ Akademie SH 3. Standardní vstup, výstup, pole, ukazatele · C++ Akademie SH 3. Standardní vstup, výstup, pole, ukazatele Michal Kvasni£ka Za£áte£níci C++ 28. b°ezna

Standardní vstup a výstupPole

Platnost prom¥nnýchUkazatele

Standardní vstupStandardní výstup - manipulátory

Obsah

1 Standardní vstup a výstupStandardní vstupStandardní výstup - manipulátory

2 PolePouºití a syntaxeVyuºití pole I.Vyuºití pole II.Vícerozm¥rné pole

3 Platnost prom¥nnýchP°ehled typ· prom¥nnýchP°íkladP°edávání prom¥nných hodnotou

4 UkazateleP°edávání prom¥nných odkazemP°íklad pouºitíVýstupní parametr funkceP°edání pole jako parametr funkce

Michal Kvasni£ka 3. Standardní vstup, výstup, pole, ukazatele

Page 4: C++ Akademie SH 3. Standardní vstup, výstup, pole, ukazatele · C++ Akademie SH 3. Standardní vstup, výstup, pole, ukazatele Michal Kvasni£ka Za£áte£níci C++ 28. b°ezna

Standardní vstup a výstupPole

Platnost prom¥nnýchUkazatele

Standardní vstupStandardní výstup - manipulátory

Standardní vstup

Syntaxe:

typ promenna;

cin >> promenna;

O²et°ení vstupu - 01.cpp:

#include <iostream>

using namespace std;

int main(void){

int cislo;

cout << "Zadej cislo: ";

cin >> cislo;

if(cin.fail()){

cout << "Nespravny vstup." << endl;

return 1;

}

cout << "Cislo je: " << cislo << endl;

return 0;

}Michal Kvasni£ka 3. Standardní vstup, výstup, pole, ukazatele

Page 5: C++ Akademie SH 3. Standardní vstup, výstup, pole, ukazatele · C++ Akademie SH 3. Standardní vstup, výstup, pole, ukazatele Michal Kvasni£ka Za£áte£níci C++ 28. b°ezna

Standardní vstup a výstupPole

Platnost prom¥nnýchUkazatele

Standardní vstupStandardní výstup - manipulátory

Standardní výstup - manipulátory

Knihovna:

#include <iomanip>

Syntaxe - 02.cpp:

cout � manipulator� promenna � endl;

P°ehled n¥kolika manipulátor·:

setw(int n) ²í°ka poloºky 'n' znak·set�ll(char c) plnící znak 'c'

�xed zobrazení £ísla na 6 des. místdec dekadická konverzehex ²estnáctková konverze

Michal Kvasni£ka 3. Standardní vstup, výstup, pole, ukazatele

Page 6: C++ Akademie SH 3. Standardní vstup, výstup, pole, ukazatele · C++ Akademie SH 3. Standardní vstup, výstup, pole, ukazatele Michal Kvasni£ka Za£áte£níci C++ 28. b°ezna

Standardní vstup a výstupPole

Platnost prom¥nnýchUkazatele

Pouºití a syntaxeVyuºití pole I.Vyuºití pole II.Vícerozm¥rné pole

Obsah

1 Standardní vstup a výstupStandardní vstupStandardní výstup - manipulátory

2 PolePouºití a syntaxeVyuºití pole I.Vyuºití pole II.Vícerozm¥rné pole

3 Platnost prom¥nnýchP°ehled typ· prom¥nnýchP°íkladP°edávání prom¥nných hodnotou

4 UkazateleP°edávání prom¥nných odkazemP°íklad pouºitíVýstupní parametr funkceP°edání pole jako parametr funkce

Michal Kvasni£ka 3. Standardní vstup, výstup, pole, ukazatele

Page 7: C++ Akademie SH 3. Standardní vstup, výstup, pole, ukazatele · C++ Akademie SH 3. Standardní vstup, výstup, pole, ukazatele Michal Kvasni£ka Za£áte£níci C++ 28. b°ezna

Standardní vstup a výstupPole

Platnost prom¥nnýchUkazatele

Pouºití a syntaxeVyuºití pole I.Vyuºití pole II.Vícerozm¥rné pole

Pole - pouºití a syntaxe

Pouºití

Jednoduchá datová struktura, která nám dovoluje sjednotitprom¥nné stejného typu pod jeden identi�kátor

Syntaxe:

typ promenna[velikost_pole];

P°íklad:

int pole[10];

vytvo°ení pole o deseti prvcích

k prvk·m p°istupujeme p°es indexy 0 � 9 (pole[0])

Michal Kvasni£ka 3. Standardní vstup, výstup, pole, ukazatele

Page 8: C++ Akademie SH 3. Standardní vstup, výstup, pole, ukazatele · C++ Akademie SH 3. Standardní vstup, výstup, pole, ukazatele Michal Kvasni£ka Za£áte£níci C++ 28. b°ezna

Standardní vstup a výstupPole

Platnost prom¥nnýchUkazatele

Pouºití a syntaxeVyuºití pole I.Vyuºití pole II.Vícerozm¥rné pole

Vyuºití pole I.

Program teploty - bez pouºití pole

Zadání: Program, který p°e£te teploty nam¥°ené v jednotlivých dnech v týdnu,

vypo£ítá pr·m¥rnou teplotu a pro kaºdý den vypí²e odchylku od pr·m¥rné

teploty.

Zdrojový kód - 03.cpp:

#include <iostream>

using namespace std;

int main(void){

int t1, t2, t3, t4, t5, t6, t7, p;

cout << "Zadejte teploty v sedmi dnech v týdnu: " << endl;

cin >> t1 >> t2 >> t3 >> t4 >> t5 >> t6 >> t7;

p = (t1+t2+t3+t4+t5+t6+t7)/7;

cout << p << "->" << t1-p<<","<< t2-p <<","<< t3-p <<",";

cout << t4-p <<","<< t5-p <<","<< t6-p <<","<< t7-p << endl;

return 0;

}Michal Kvasni£ka 3. Standardní vstup, výstup, pole, ukazatele

Page 9: C++ Akademie SH 3. Standardní vstup, výstup, pole, ukazatele · C++ Akademie SH 3. Standardní vstup, výstup, pole, ukazatele Michal Kvasni£ka Za£áte£níci C++ 28. b°ezna

Standardní vstup a výstupPole

Platnost prom¥nnýchUkazatele

Pouºití a syntaxeVyuºití pole I.Vyuºití pole II.Vícerozm¥rné pole

Vyuºití pole II.

Program teploty - s pouºitím pole - 04.cpp

#include <iostream>

using namespace std;

int main(void){

int t[6], p = 0;

cout << "Zadejte teploty v sedmi dnech v týdnu: " << endl;

for(int i = 0; i < 7; i++){

cin >> t[i];

p += t[i];

}

p = p/7; cout << p << "->";

for(int i = 0; i < 7; i++){

cout << t[i]-p;

if(i < 6) cout << ",";

else cout << endl;

}

return 0;

}Michal Kvasni£ka 3. Standardní vstup, výstup, pole, ukazatele

Page 10: C++ Akademie SH 3. Standardní vstup, výstup, pole, ukazatele · C++ Akademie SH 3. Standardní vstup, výstup, pole, ukazatele Michal Kvasni£ka Za£áte£níci C++ 28. b°ezna

Standardní vstup a výstupPole

Platnost prom¥nnýchUkazatele

Pouºití a syntaxeVyuºití pole I.Vyuºití pole II.Vícerozm¥rné pole

Vícerozm¥rné pole

De�nice

Vícerozm¥rným polem se obecn¥ rozumí takové pole, k jehoºprvk·m se p°istupuje pomocí více neº jednoho indexu.

V jazyce C++ se s vícerozm¥rnými poli pracuje jako s poli,jejichº prvky jsou op¥t pole.

P°íklad - dvourozm¥rné pole

Deklarace dvourozm¥rného pole (3 °ádky, 4 sloupce) prvk· typu int a napln¥nív²ech jeho hodnot:

int matice[3][4];

for(int i = 0; i < 3; i++)

for(int j = 0; j < 4; j++)

cin >> matice[i][j];

Michal Kvasni£ka 3. Standardní vstup, výstup, pole, ukazatele

Page 11: C++ Akademie SH 3. Standardní vstup, výstup, pole, ukazatele · C++ Akademie SH 3. Standardní vstup, výstup, pole, ukazatele Michal Kvasni£ka Za£áte£níci C++ 28. b°ezna

Standardní vstup a výstupPole

Platnost prom¥nnýchUkazatele

P°ehled typ· prom¥nnýchP°íkladP°edávání prom¥nných hodnotou

Obsah

1 Standardní vstup a výstupStandardní vstupStandardní výstup - manipulátory

2 PolePouºití a syntaxeVyuºití pole I.Vyuºití pole II.Vícerozm¥rné pole

3 Platnost prom¥nnýchP°ehled typ· prom¥nnýchP°íkladP°edávání prom¥nných hodnotou

4 UkazateleP°edávání prom¥nných odkazemP°íklad pouºitíVýstupní parametr funkceP°edání pole jako parametr funkce

Michal Kvasni£ka 3. Standardní vstup, výstup, pole, ukazatele

Page 12: C++ Akademie SH 3. Standardní vstup, výstup, pole, ukazatele · C++ Akademie SH 3. Standardní vstup, výstup, pole, ukazatele Michal Kvasni£ka Za£áte£níci C++ 28. b°ezna

Standardní vstup a výstupPole

Platnost prom¥nnýchUkazatele

P°ehled typ· prom¥nnýchP°íkladP°edávání prom¥nných hodnotou

P°ehled typ· prom¥nných

Lokální prom¥nné

Lokální prom¥nné mají svou platnost omezenou vºdy jen nablok, v kterém jsou de�novány a v blocích vno°ených.

Globální prom¥nné

Jsou de�novány mimo t¥lo jakékoli funkce, proto jsou viditelnév²em funkcím, které jsou deklarované po nich.

Nepsané pravidlo - snaºit se globální prom¥nné pouºívat, comoºná nejmén¥ - nejlépe v·bec.

Michal Kvasni£ka 3. Standardní vstup, výstup, pole, ukazatele

Page 13: C++ Akademie SH 3. Standardní vstup, výstup, pole, ukazatele · C++ Akademie SH 3. Standardní vstup, výstup, pole, ukazatele Michal Kvasni£ka Za£áte£níci C++ 28. b°ezna

Standardní vstup a výstupPole

Platnost prom¥nnýchUkazatele

P°ehled typ· prom¥nnýchP°íkladP°edávání prom¥nných hodnotou

Platnost prom¥nných - p°íklad

P°íklad:#include <iostream>

using namespace std;

int g_cislo1 = 5; //globalni promenna

int main(void){

int cislo2 = 10; //lokalni promenna

for(int i = 0; i < 10; i++)

cout << i;

//lokalni promenna 'i' platna pouze uvnitr toho cyklu

if(g_cislo1 == 5){

int cislo3 = 10;

//lokalni promenna platna pouze uvnitr teto podminky

}

return 0;

}

Michal Kvasni£ka 3. Standardní vstup, výstup, pole, ukazatele

Page 14: C++ Akademie SH 3. Standardní vstup, výstup, pole, ukazatele · C++ Akademie SH 3. Standardní vstup, výstup, pole, ukazatele Michal Kvasni£ka Za£áte£níci C++ 28. b°ezna

Standardní vstup a výstupPole

Platnost prom¥nnýchUkazatele

P°ehled typ· prom¥nnýchP°íkladP°edávání prom¥nných hodnotou

P°edávání prom¥nných hodnotou

Popis:

Pokud voláme funkci, která o£ekává oby£ejné hodnoty, ozna£ujeme toto

p°edání parametru jako p°edání hodnotou. V tomto zp·sobu se p°i volání

funkce se místo prom¥nných dosadí dané hodnoty a ty se ode²lou funkci

(zkopíruji se), která si je p°i°adí do svých lokálních prom¥nných.

P°íklad - 05.cpp:

void fce(int a){//a je lokalni promenna plati pouze v teto fci

cout << a << endl;

a = 5;

}

int main(void){

int cislo = 10;

fce(cislo); // pri tomto volani se dosadi za cislo hodnota 10

return 0; //-> provede se volani fce(10);

}

Michal Kvasni£ka 3. Standardní vstup, výstup, pole, ukazatele

Page 15: C++ Akademie SH 3. Standardní vstup, výstup, pole, ukazatele · C++ Akademie SH 3. Standardní vstup, výstup, pole, ukazatele Michal Kvasni£ka Za£áte£níci C++ 28. b°ezna

Standardní vstup a výstupPole

Platnost prom¥nnýchUkazatele

P°edávání prom¥nných odkazemP°íklad pouºitíVýstupní parametr funkceP°edání pole jako parametr funkce

Obsah

1 Standardní vstup a výstupStandardní vstupStandardní výstup - manipulátory

2 PolePouºití a syntaxeVyuºití pole I.Vyuºití pole II.Vícerozm¥rné pole

3 Platnost prom¥nnýchP°ehled typ· prom¥nnýchP°íkladP°edávání prom¥nných hodnotou

4 UkazateleP°edávání prom¥nných odkazemP°íklad pouºitíVýstupní parametr funkceP°edání pole jako parametr funkce

Michal Kvasni£ka 3. Standardní vstup, výstup, pole, ukazatele

Page 16: C++ Akademie SH 3. Standardní vstup, výstup, pole, ukazatele · C++ Akademie SH 3. Standardní vstup, výstup, pole, ukazatele Michal Kvasni£ka Za£áte£níci C++ 28. b°ezna

Standardní vstup a výstupPole

Platnost prom¥nnýchUkazatele

P°edávání prom¥nných odkazemP°íklad pouºitíVýstupní parametr funkceP°edání pole jako parametr funkce

P°edávání prom¥nných odkazem

Popis:

N¥kdy se ov²em hodí, aby funkce mohla m¥nit prom¥nné funkce, která ji

zavolala. K tomuto ú£elu se pouºívá takzvaný výstupní parametr. Funkci se

ode²le jako parametr pouze adresa dané prom¥nné a né její hodnota, díky tomu

se daná funkce m·ºe podívat na toto místo v pam¥ti a p°epsat ho novou

hodnotou. Tento zp·sob se realizuje pomocí ukazatel·.

Ukazatel

Speciální prom¥nná, která má v sob¥ uloºenou adresu n¥jaké prom¥nné.

Syntaxe

typ * jmeno;

int * p_cislo; // Ukazatel na prom¥nnou typu int

Michal Kvasni£ka 3. Standardní vstup, výstup, pole, ukazatele

Page 17: C++ Akademie SH 3. Standardní vstup, výstup, pole, ukazatele · C++ Akademie SH 3. Standardní vstup, výstup, pole, ukazatele Michal Kvasni£ka Za£áte£níci C++ 28. b°ezna

Standardní vstup a výstupPole

Platnost prom¥nnýchUkazatele

P°edávání prom¥nných odkazemP°íklad pouºitíVýstupní parametr funkceP°edání pole jako parametr funkce

P°íklad pouºití

Získání adresy n¥jaké prom¥nné:

Pouºitím operátoru reference - &

P°íklad - 06.cpp:

int * p_cislo;

int hodnota = 10;

p_cislo = &cislo;

//Nyni je v promene 'p_cislo' ulozena adresa promenne hodnota

Pokud bychom nyní cht¥li zm¥nit hodnotu v prom¥nné 'hodnota', muºeme taku£init normáln¥, jak jsme zvyklí pomocí hodnota = 20. Nebo m·ºeme pouºítnový zp·sob a to zm¥nu p°es ukazatel pomocí operátoru dereference *.

*p_cislo = 20;

cout << hodnota; // hodnota = 20

Michal Kvasni£ka 3. Standardní vstup, výstup, pole, ukazatele

Page 18: C++ Akademie SH 3. Standardní vstup, výstup, pole, ukazatele · C++ Akademie SH 3. Standardní vstup, výstup, pole, ukazatele Michal Kvasni£ka Za£áte£níci C++ 28. b°ezna

Standardní vstup a výstupPole

Platnost prom¥nnýchUkazatele

P°edávání prom¥nných odkazemP°íklad pouºitíVýstupní parametr funkceP°edání pole jako parametr funkce

Výstupní parametr funkce

P°íklad - 07.cpp:

void fce(int * p_a){ //ukazatel na promennou 'cislo'

cout << "Deref. 'p_a' ve fci pred zmenou: " << *p_a << endl;

*p_a = 5;

cout << "Deref. 'p_a' ve fci po zmene: " << *p_a << endl;

}

int main(void){

int cislo = 10;

cout << "Promenna 'cislo' v main pred fci: " << cislo << endl;

fce(&cislo);

cout << "Promenna 'cislo' v main po fci: " << cislo << endl;

//Po provedeni fce se hodnota promenne 'cislo' zmeni

return 0;

}

Michal Kvasni£ka 3. Standardní vstup, výstup, pole, ukazatele

Page 19: C++ Akademie SH 3. Standardní vstup, výstup, pole, ukazatele · C++ Akademie SH 3. Standardní vstup, výstup, pole, ukazatele Michal Kvasni£ka Za£áte£níci C++ 28. b°ezna

Standardní vstup a výstupPole

Platnost prom¥nnýchUkazatele

P°edávání prom¥nných odkazemP°íklad pouºitíVýstupní parametr funkceP°edání pole jako parametr funkce

P°edání pole jako parametr funkce

Pouºívá se práv¥ p°edání pomocí ukazatele - 08.cpp:

#include <iostream>

using namespace std;

void fce(int * pole){ //totozne s pole[]

cout << "Hodnota pole[2]: " << pole[2] << endl;

pole[2] = 10;

}

int main(void){

int pole[5] = {1,2,3,4,5};

fce(pole); //totoºne s &pole[0] - adresa prvniho prvku pole

cout<< "Hodnota pole[2] po skonceni fce: " << pole[2] << endl;

return 0;

}

Michal Kvasni£ka 3. Standardní vstup, výstup, pole, ukazatele

Page 20: C++ Akademie SH 3. Standardní vstup, výstup, pole, ukazatele · C++ Akademie SH 3. Standardní vstup, výstup, pole, ukazatele Michal Kvasni£ka Za£áte£níci C++ 28. b°ezna

Standardní vstup a výstupPole

Platnost prom¥nnýchUkazatele

P°edávání prom¥nných odkazemP°íklad pouºitíVýstupní parametr funkceP°edání pole jako parametr funkce

P°edání vícerozm¥rného pole jako parametr funkce

P°íklad - 09.cpp, 10.cpp:

#include <iostream>

using namespace std;

void fce(int pole[][4]){ //prvni rozmer muzeme preskocit, ale

// ostatni musime specifikovat

cout << "Hodnota pole[2][3]: " << pole[2][3] << endl;

pole[2][3] = 10;

}

int main(void){

int pole[3][4] //staticka alokace

pole[2][3] = 5;

fce(pole); //totoºne s &pole[0] - adresa prvniho prvku pole

cout << "Hodnota pole[2][3] po skonceni fce: " << pole[2][3];

return 0;

}

Michal Kvasni£ka 3. Standardní vstup, výstup, pole, ukazatele

Page 21: C++ Akademie SH 3. Standardní vstup, výstup, pole, ukazatele · C++ Akademie SH 3. Standardní vstup, výstup, pole, ukazatele Michal Kvasni£ka Za£áte£níci C++ 28. b°ezna

Standardní vstup a výstupPole

Platnost prom¥nnýchUkazatele

P°edávání prom¥nných odkazemP°íklad pouºitíVýstupní parametr funkceP°edání pole jako parametr funkce

Konec

Konec

D¥kuji za pozornost!

Michal Kvasni£ka 3. Standardní vstup, výstup, pole, ukazatele


Recommended