zpro cvicení 2 - cvut.czpeople.fjfi.cvut.cz/flussmar/files/cv2.pdfoutline prom enn e prom enn e -...
TRANSCRIPT
Outline Promenne Promenne - cvicenı Funkce Funkce - cvicenı Domacı ukol
ZPRO – cvicenı 2
Martin Flusser
Faculty of Nuclear Sciences and Physical EngineeringCzech Technical University in Prague
October 17, 2016
Outline Promenne Promenne - cvicenı Funkce Funkce - cvicenı Domacı ukol
Outline I
1 Outline
2 Promenne
3 Promenne - cvicenı
4 Funkce
5 Funkce - cvicenı
6 Domacı ukol
Outline Promenne Promenne - cvicenı Funkce Funkce - cvicenı Domacı ukol
Promenne
• Symbolicke oznacenı mısta v pameti
• Nese hodnotu
• Lze ji vytvaret, cıst a menit
Outline Promenne Promenne - cvicenı Funkce Funkce - cvicenı Domacı ukol
Promenne
• Symbolicke oznacenı mısta v pameti
• Nese hodnotu
• Lze ji vytvaret, cıst a menit
Outline Promenne Promenne - cvicenı Funkce Funkce - cvicenı Domacı ukol
Promenne
• Symbolicke oznacenı mısta v pameti
• Nese hodnotu
• Lze ji vytvaret, cıst a menit
Outline Promenne Promenne - cvicenı Funkce Funkce - cvicenı Domacı ukol
Promenne
• Symbolicke oznacenı mısta v pameti
• Nese hodnotu
• Lze ji vytvaret, cıst a menit
Outline Promenne Promenne - cvicenı Funkce Funkce - cvicenı Domacı ukol
Typy promennych
• char – 8 bitu
• signed char• unsigned char
• int 16 bitu ( -32767 32767)
• unsigned int
• long 32 bitu
• necelociselna float 32
• necelociselna double 64
• bool = { true, false}• string (retezec textu)
Outline Promenne Promenne - cvicenı Funkce Funkce - cvicenı Domacı ukol
Typy promennych
• char – 8 bitu
• signed char• unsigned char
• int 16 bitu ( -32767 32767)
• unsigned int
• long 32 bitu
• necelociselna float 32
• necelociselna double 64
• bool = { true, false}• string (retezec textu)
Outline Promenne Promenne - cvicenı Funkce Funkce - cvicenı Domacı ukol
Typy promennych
• char – 8 bitu• signed char• unsigned char
• int 16 bitu ( -32767 32767)
• unsigned int
• long 32 bitu
• necelociselna float 32
• necelociselna double 64
• bool = { true, false}• string (retezec textu)
Outline Promenne Promenne - cvicenı Funkce Funkce - cvicenı Domacı ukol
Typy promennych
• char – 8 bitu• signed char• unsigned char
• int 16 bitu ( -32767 32767)
• unsigned int
• long 32 bitu
• necelociselna float 32
• necelociselna double 64
• bool = { true, false}• string (retezec textu)
Outline Promenne Promenne - cvicenı Funkce Funkce - cvicenı Domacı ukol
Typy promennych
• char – 8 bitu• signed char• unsigned char
• int 16 bitu ( -32767 32767)• unsigned int
• long 32 bitu
• necelociselna float 32
• necelociselna double 64
• bool = { true, false}• string (retezec textu)
Outline Promenne Promenne - cvicenı Funkce Funkce - cvicenı Domacı ukol
Typy promennych
• char – 8 bitu• signed char• unsigned char
• int 16 bitu ( -32767 32767)• unsigned int
• long 32 bitu
• necelociselna float 32
• necelociselna double 64
• bool = { true, false}• string (retezec textu)
Outline Promenne Promenne - cvicenı Funkce Funkce - cvicenı Domacı ukol
Typy promennych
• char – 8 bitu• signed char• unsigned char
• int 16 bitu ( -32767 32767)• unsigned int
• long 32 bitu
• necelociselna float 32
• necelociselna double 64
• bool = { true, false}• string (retezec textu)
Outline Promenne Promenne - cvicenı Funkce Funkce - cvicenı Domacı ukol
Typy promennych
• char – 8 bitu• signed char• unsigned char
• int 16 bitu ( -32767 32767)• unsigned int
• long 32 bitu
• necelociselna float 32
• necelociselna double 64
• bool = { true, false}• string (retezec textu)
Outline Promenne Promenne - cvicenı Funkce Funkce - cvicenı Domacı ukol
Typy promennych
• char – 8 bitu• signed char• unsigned char
• int 16 bitu ( -32767 32767)• unsigned int
• long 32 bitu
• necelociselna float 32
• necelociselna double 64
• bool = { true, false}
• string (retezec textu)
Outline Promenne Promenne - cvicenı Funkce Funkce - cvicenı Domacı ukol
Typy promennych
• char – 8 bitu• signed char• unsigned char
• int 16 bitu ( -32767 32767)• unsigned int
• long 32 bitu
• necelociselna float 32
• necelociselna double 64
• bool = { true, false}• string (retezec textu)
Outline Promenne Promenne - cvicenı Funkce Funkce - cvicenı Domacı ukol
Deklarace a syntaxe
1 int a;
2 a=3;
3 int b=5;
4 int c=a+b;
5 a=b=c;
Outline Promenne Promenne - cvicenı Funkce Funkce - cvicenı Domacı ukol
Diskuze
• Jak pojmenovavat promenne?
• Jak dlouho promenna vydrzı? Kdy zanika?
• lokalnı• globalnı (const)
Outline Promenne Promenne - cvicenı Funkce Funkce - cvicenı Domacı ukol
Diskuze
• Jak pojmenovavat promenne?
• Jak dlouho promenna vydrzı? Kdy zanika?
• lokalnı• globalnı (const)
Outline Promenne Promenne - cvicenı Funkce Funkce - cvicenı Domacı ukol
Diskuze
• Jak pojmenovavat promenne?
• Jak dlouho promenna vydrzı? Kdy zanika?• lokalnı• globalnı (const)
Outline Promenne Promenne - cvicenı Funkce Funkce - cvicenı Domacı ukol
cvicenı
1 Vytvorte program, ktery nacte cıslo do promenne a pak vypıse
2 Vytvorte program, ktery nacte cıslo (delku strany ctverce) avypıse jeho obsah.
3 Vytvorte program, ktery umı resit kvadratickou rovnici vzakladnım tvaru.
Navod na odmocninu:
1 #include <math.h>
2 int main()
3 {
4 int trojka;
5 trojka = sqrt (9);
6 return;
7 }
Outline Promenne Promenne - cvicenı Funkce Funkce - cvicenı Domacı ukol
cvicenı
1 Vytvorte program, ktery nacte cıslo do promenne a pak vypıse
2 Vytvorte program, ktery nacte cıslo (delku strany ctverce) avypıse jeho obsah.
3 Vytvorte program, ktery umı resit kvadratickou rovnici vzakladnım tvaru.
Navod na odmocninu:
1 #include <math.h>
2 int main()
3 {
4 int trojka;
5 trojka = sqrt (9);
6 return;
7 }
Outline Promenne Promenne - cvicenı Funkce Funkce - cvicenı Domacı ukol
cvicenı
1 Vytvorte program, ktery nacte cıslo do promenne a pak vypıse
2 Vytvorte program, ktery nacte cıslo (delku strany ctverce) avypıse jeho obsah.
3 Vytvorte program, ktery umı resit kvadratickou rovnici vzakladnım tvaru.
Navod na odmocninu:
1 #include <math.h>
2 int main()
3 {
4 int trojka;
5 trojka = sqrt (9);
6 return;
7 }
Outline Promenne Promenne - cvicenı Funkce Funkce - cvicenı Domacı ukol
cvicenı
1 Vytvorte program, ktery nacte cıslo do promenne a pak vypıse
2 Vytvorte program, ktery nacte cıslo (delku strany ctverce) avypıse jeho obsah.
3 Vytvorte program, ktery umı resit kvadratickou rovnici vzakladnım tvaru.
Navod na odmocninu:
1 #include <math.h>
2 int main()
3 {
4 int trojka;
5 trojka = sqrt (9);
6 return;
7 }
Outline Promenne Promenne - cvicenı Funkce Funkce - cvicenı Domacı ukol
cv1 - resenı
Vytvorte program, ktery nacte cıslo do promenne a pak vypıse
1 cout <<"zadejte cislo:" <<endl;
2 int cislo;
3 cin >> cislo;
4 cout <<"vase cislo je:"<<cislo <<endl;
Outline Promenne Promenne - cvicenı Funkce Funkce - cvicenı Domacı ukol
cv2 - resenı
Vytvorte program, ktery nacte cıslo (delku strany ctverce) a vypısejeho obsah.
1 cout <<"zadejte cislo jako delku strany:"
2 <<endl;
3 int cislo;
4 cin >> cislo;
5 int obsah = cislo*cislo;
6 cout <<"obsah je:"<<obsah <<endl;
Outline Promenne Promenne - cvicenı Funkce Funkce - cvicenı Domacı ukol
cv3 - resenı
Vytvorte program, ktery umı resit kvadratickou rovnici v zakladnımtvaru.
1 double a,b,c;
2 // Nacitani koeficientu
3 cout <<"zadejte koeficient a:" <<endl;
4 cin >> a;
5 cout <<"zadejte koeficient b:" <<endl;
6 cin >> b;
7 cout <<"zadejte koeficient c:" <<endl;
8 cin >> c;
9 // Vypocet
10 double diskriminant= b*b-4*a*c;
11 double x1=(-b+sqrt(diskriminant ))/2*a;
12 double x2=(-b-sqrt(diskriminant ))/2*a;
13 cout <<endl <<"koreny jsou: " <<x1 <<" a "
14 <<x2<<endl;
Outline Promenne Promenne - cvicenı Funkce Funkce - cvicenı Domacı ukol
Funkce - Terminologie
• Funkce
• Procedura
• Podprogram
Outline Promenne Promenne - cvicenı Funkce Funkce - cvicenı Domacı ukol
Funkce - Terminologie
• Funkce
• Procedura
• Podprogram
Outline Promenne Promenne - cvicenı Funkce Funkce - cvicenı Domacı ukol
Funkce - Terminologie
• Funkce
• Procedura
• Podprogram
Outline Promenne Promenne - cvicenı Funkce Funkce - cvicenı Domacı ukol
Podprogram
Wikipedia (edited):
Podprogram je v programovanı cast programu, kterou je moznevolat, a to i opakovane a z ruznych mıst kodu. Podprogram muzemıt parametry, ktere udavajı, s jakymi hodnotami ma pracovat, amuze
”vracet“ navratovou hodnotu...
Outline Promenne Promenne - cvicenı Funkce Funkce - cvicenı Domacı ukol
Podprogram
Wikipedia (edited):
Podprogram je v programovanı cast programu, kterou je moznevolat, a to i opakovane a z ruznych mıst kodu. Podprogram muzemıt parametry, ktere udavajı, s jakymi hodnotami ma pracovat, amuze
”vracet“ navratovou hodnotu...
Outline Promenne Promenne - cvicenı Funkce Funkce - cvicenı Domacı ukol
Funkce vs procedura
Wikipedia:
procedura – podprogram, ktery nevracı vyslednou hodnotu a volase jako prıkaz.
Wikipedia:
funkce – podprogram, ktery vracı hodnotu a lze jej volat ve vyrazu.
Outline Promenne Promenne - cvicenı Funkce Funkce - cvicenı Domacı ukol
Funkce vs procedura
Wikipedia:
procedura – podprogram, ktery nevracı vyslednou hodnotu a volase jako prıkaz.
Wikipedia:
funkce – podprogram, ktery vracı hodnotu a lze jej volat ve vyrazu.
Outline Promenne Promenne - cvicenı Funkce Funkce - cvicenı Domacı ukol
Funkce vs procedura
Wikipedia:
procedura – podprogram, ktery nevracı vyslednou hodnotu a volase jako prıkaz.
Wikipedia:
funkce – podprogram, ktery vracı hodnotu a lze jej volat ve vyrazu.
Outline Promenne Promenne - cvicenı Funkce Funkce - cvicenı Domacı ukol
Funkce: matematika vs programovanı
• Jsou nejake rozdıly mezi funkcı v programovanı a vmatematice?
V programovanı:
Neplatı, ze pro jeden vstupnı parametr existuje jedna vystupnıhodnota. Do procesu mohou vstupovat i dalsı data . Casto sepouzıvaji i funkce uplne bez parametru.
V programovanı:
ma funkce i dalsı ucinek krome navratove hodnoty. Naprıklad muzeprovest dalsı operace a nastavenı. (Procedura)
Outline Promenne Promenne - cvicenı Funkce Funkce - cvicenı Domacı ukol
Funkce: matematika vs programovanı
• Jsou nejake rozdıly mezi funkcı v programovanı a vmatematice?
V programovanı:
Neplatı, ze pro jeden vstupnı parametr existuje jedna vystupnıhodnota. Do procesu mohou vstupovat i dalsı data . Casto sepouzıvaji i funkce uplne bez parametru.
V programovanı:
ma funkce i dalsı ucinek krome navratove hodnoty. Naprıklad muzeprovest dalsı operace a nastavenı. (Procedura)
Outline Promenne Promenne - cvicenı Funkce Funkce - cvicenı Domacı ukol
Funkce: matematika vs programovanı
• Jsou nejake rozdıly mezi funkcı v programovanı a vmatematice?
V programovanı:
Neplatı, ze pro jeden vstupnı parametr existuje jedna vystupnıhodnota. Do procesu mohou vstupovat i dalsı data . Casto sepouzıvaji i funkce uplne bez parametru.
V programovanı:
ma funkce i dalsı ucinek krome navratove hodnoty. Naprıklad muzeprovest dalsı operace a nastavenı. (Procedura)
Outline Promenne Promenne - cvicenı Funkce Funkce - cvicenı Domacı ukol
Funkce v jazyce C a C++
• Vyraz podprogram se uzıva zrıdka
• Procedura neexistuje. Pouzıva se funkce bez navratovehodnoty.
• Vse zmınene se v jazyce C a C++ nazyva funkce.
Outline Promenne Promenne - cvicenı Funkce Funkce - cvicenı Domacı ukol
Deklarace a definice funkce
1
2 navratovy_typ jmeno ([parametry , ...])
3 {
4 telo funkce
5 }
• Navratovy typ napr.:{int, bool, float..., void}• K ukoncenı funkce a vracenı hodnoty se pouzije prıkaz return
Outline Promenne Promenne - cvicenı Funkce Funkce - cvicenı Domacı ukol
Deklarace a definice funkce
1 #include <iostream >
2 using namespace std;
3
4 int secti(int a, int b) // Definice
5 {
6 return a + b;
7 }
8
9 int main ()
10 {
11 int vysledek;
12 vysledek = secti (3 ,4);
13 cout << "Vysledek souctu je: " << vysledek << endl;
14 return 0;
15 }
Outline Promenne Promenne - cvicenı Funkce Funkce - cvicenı Domacı ukol
Deklarace a definice funkce
1 #include <iostream >
2 using namespace std;
3 int secti(int a, int b) // Deklarace
4
5 int main ()
6 {
7 int vysledek;
8 vysledek = secti (3 ,4);
9 cout << "Vysledek souctu je: " << vysledek << endl;
10 return 0;
11 }
12
13 int secti(int a, int b) // Definice
14 {
15 return a + b;
16 }
Outline Promenne Promenne - cvicenı Funkce Funkce - cvicenı Domacı ukol
Funkce cvicenı
1 Funkce pro vypis textu do konzole
2 Funkce pro vypocet obsahu kruhu
3 Funkce pro vypocet objemu valce
4 Funkce pro nalezenı korene(u) kvadraticke rovnice• Je nutne se vyporadat s tım, ze funkce vracı pouze jednu
hodnotu
Outline Promenne Promenne - cvicenı Funkce Funkce - cvicenı Domacı ukol
Funkce cvicenı
1 Funkce pro vypis textu do konzole
2 Funkce pro vypocet obsahu kruhu
3 Funkce pro vypocet objemu valce
4 Funkce pro nalezenı korene(u) kvadraticke rovnice• Je nutne se vyporadat s tım, ze funkce vracı pouze jednu
hodnotu
Outline Promenne Promenne - cvicenı Funkce Funkce - cvicenı Domacı ukol
Funkce cvicenı
1 Funkce pro vypis textu do konzole
2 Funkce pro vypocet obsahu kruhu
3 Funkce pro vypocet objemu valce
4 Funkce pro nalezenı korene(u) kvadraticke rovnice• Je nutne se vyporadat s tım, ze funkce vracı pouze jednu
hodnotu
Outline Promenne Promenne - cvicenı Funkce Funkce - cvicenı Domacı ukol
Funkce cvicenı
1 Funkce pro vypis textu do konzole
2 Funkce pro vypocet obsahu kruhu
3 Funkce pro vypocet objemu valce
4 Funkce pro nalezenı korene(u) kvadraticke rovnice
• Je nutne se vyporadat s tım, ze funkce vracı pouze jednuhodnotu
Outline Promenne Promenne - cvicenı Funkce Funkce - cvicenı Domacı ukol
Funkce cvicenı
1 Funkce pro vypis textu do konzole
2 Funkce pro vypocet obsahu kruhu
3 Funkce pro vypocet objemu valce
4 Funkce pro nalezenı korene(u) kvadraticke rovnice• Je nutne se vyporadat s tım, ze funkce vracı pouze jednu
hodnotu
Outline Promenne Promenne - cvicenı Funkce Funkce - cvicenı Domacı ukol
cv1 - resenı
1 void say_hell ()
2 {
3 std::cout <<"Hello"<<std::endl;
4
5 return;
6 }
Outline Promenne Promenne - cvicenı Funkce Funkce - cvicenı Domacı ukol
cv2 - resenı
1 double obsah_kruhu (double radius)
2 {
3 return 3.14* radius*radius;
4 }
Outline Promenne Promenne - cvicenı Funkce Funkce - cvicenı Domacı ukol
cv3 - resenı
1 double objem_valce (double radius , double vyska)
2 {
3 return obsah_kruhu(radius )* vyska;
4 }
Outline Promenne Promenne - cvicenı Funkce Funkce - cvicenı Domacı ukol
Domacı ukol
Vytvorte a pouzijte funkci na hledanı korenu kvadraticke rovnice.Funkce bude mıt 4 vstupnı parametry a vracet promennou typudouble. Parametry budou: a, b, c (jako na cviceni) a parametrznamenko, kam se dosadi bud +1, nebo -1. Parametru znamenkovyuzijete k urceni, zda se jedna o jeden, nebo druhy koren (nezalezına jejich poradı). Funkce bude vyuzivat pomocnou funkcidiskriminant.Napoveda: Diskriminant: D = b2 − 4ac
x =−b+ znamenko×
√D
2a