際際滷

際際滷Share a Scribd company logo
SADR貼AJ
1.1 Potprogrami (funkcije) u C++
1.1.1 Koncept globalnih i lokalnih podataka
1.1.2 Statiki lanovi
1.1.3 Pokazivai i reference kao argumenti
1.1.4 Preoptereenje funkcija
1.1.5 Rekurzivna funkcija
1.1.6 Pretprocesorska naredba #include
1.1.7 Standardne biblioteke funkcija
1.1.1.1 iostream.h
1.1.1.1.1 Predefinirani objekti tokova C++ :
1.1.1.2 string.h
1.1.1.2.1 Funkcije za kopiranje
1.1.1.2.2 Funkcije spajanja polja znakova
1.1.1.2.3 Funkcije usporeivanja
1.1.1.2.4 Funkcije za pretra転ivanje
1.1.1.2.5 Razne funkcije
1.1.1.3 math.h
1.1.1.3.1 Trigonometrijske funkcije
1.1.1.3.2 Eksponencijalne i logaritamske funkcije
1.1.1.3.3 Funkcije za potenciranje
1.1.1.3.4 Najbli転i cijeli broj, apsolutna vrijednost, i funkcije ostatka dijeljenja
1.1.1.4 ctype.h
1.1.1.4.1 Funkcije testiranja znakova
1.1.1.4.2 Funkcije za promjenu malih/velikih slova
7.4. Potprogrami (funkcije) u C++
Potprogrami su izdvojene logike cjeline unutar programa. Za razliku od Pascala, koji
razlikuje procedure i funkcije, C/C++ poznaje samo funkcije. Funkcija je zami邸ljena tako da
vrati vrijednost koja odgovara njenom tipu (pomou naredbe return). Ako funkcija umjesto
tipa ima oznaku void, tada ne vraa vrijednost, odnosno, predstavlja pandan proceduri.
Opi oblik funkcije :
<povratni tip ili void> ime_funkcije (<tip> par1, <tip> par2, ... ,<tip> par N)
{
.
.
<blok instrukcija>
.
.
return <povratna vrijednost>; // izostavlja se ako je funkcija tipa void
}
Razlikujemo formalne parametre (navode se u zaglavlju funkcije) i stvarne parametre (navode
se kod poziva funkcije). Prilikom poziva funkcije formalni parametri poprime vrijednosti
odgovarajuih stvarnih parametara.
Primjer :
#include <iostream.h>
float kvadrat (float x){
return x * x;
}
void main () { // main je rezervirano ime
float broj;
float kvad = kvadrat (broj);
cout << broj <<  na kvadrat iznosi  << kvad << endl;
}
7.4.1. Koncept globalnih i lokalnih podataka
Globalni podaci dostupni su u svim dijelovima programa (osim u funkcijama gdje su
definirani istoimeni lokalni podaci), dok su lokalni dostupni iskljuivo u okviru funkcije gdje
su definirani.
Primjer :
#include <iostream.h>
int a,b;
float c,d; // a,b,c,d su globalne varijable
void main () {
int e,f; //varijable e,f lokalne su za funkciju main
char a,c // varijable a,c lokalne su za funkciju main i prekrivaju
// istoimene globalne varijable
a = A;
c = B;
b = 5; // globalne varijable b,d dostupne su unutar funkcije main
d = 3.14;
}
7.4.2. Statiki lanovi
Statiki lanovi oznaavaju se pomou kljune rijei static.
Statika lokalna varijabla ima doseg lokalne, a trajanje globalne varijable :
Primjer :
#include <iostream.h>
void funkcija_stat () {
int a; static
int b;
cout << "a = " << a << endl;
cout << "b = " << b << endl;
a = 5;
b = 10;
}
void main () {
cout << "1. poziv funkcije :" << endl;
funkcija_stat();
cout << "2. poziv funkcije :" << endl;
funkcija_stat();
}
Daje slijedei ispis kao rezultat :
1. poziv funkcije :
a = 6618616
b = 0
2. poziv funkcije :
a = 6618616
b = 10
Vrijednost statike lokalne varijable b ostala je sauvana do slijedeeg poziva funkcije.
7.4.3. Pokazivai i reference kao argumenti
Osim prijenosa argumenata po vrijednosti, mogue je koristiti pokazivae i reference kao
argumente. U tom sluaju funkcija ne vr邸i obradu nad kopijama podataka nego nad
originalnim podacima.
Primjer (pokazivai kao argumenti) :
#include <iostream h>
void zamjena (int *prvi, int *drugi){
int pom = *prvi;
*prvi = *drugi;
*drugi = pom;
}
void main (){
int a=5;
int b=10;
zamjena (&a,&b);
cout << a =  << a << endl; // 10
cout << b =  << b << endl; // 5
}
Primjer (reference kao argumenti) :
#include <iostream.h>
void zamjena (int &prvi, int &drugi) {
int pom = prvi;
prvi = drugi;
drugi = pom;
}
void main (){
int a=5; int
b=10;
zamjena (a,b);
cout << a =  << a << endl; // 10
cout << b =  << b << endl; // 5
}
7.4.4. Preoptereenje funkcija
Preoptereenje omoguuje kori邸tenje istog imena za razliite funkcije, pri emu se te funkcije
meusobno razlikuju po tipu argumenata u svom zaglavlju.
Primjer:
#include <iostream.h>
void funkcija (int n){
cout << n (int) =  << n << endl;
}
void funkcija (float n){
cout << n (float) =  << n << endl;
}
void main () {
int a=5;
float b=3.125;
funkcija (a); //cjelobrojni parametar
funkcija (b); //realni parametar
}
7.4.5. Rekurzivna funkcija
Rekurzija je svojstvo potprograma (funkcije) da mo転e pozivati sam sebe.
Primjer (raunanje n!) :
#include <iostream.h>
int fakto (int n){
if (n ==1) //sidreni uvjet
return 1;
else
}
return n*fakto (n  1); //pojednostavljenje
void main () {
cout << fakto (5) << endl;
}
Za realizaciju rekurzivne funkcije potrebno je osigurati slijedee :
Sidreni izraz : 1! = 1
Rekurzivnu formulu ili postupak : n! = n * (n  1)!
Sidreni izraz omoguuje izlazak iz rekurzivne funkcije (tj. sprijeava beskonano pozivanje
funkcije), a rekurzivna formula ili postupak trebaju pojednostaviti zadatak, odnosno, pribli転iti
ga rje邸enju zadanom kao sidreni izraz.
7.4.6. Pretprocesorska naredba #include
#include ka転e kompilatoru da na njeno mjesto ubaci sadr転aj zadane datoteke.
Sintaksa :
#include "naziv datoteke"
ili
#include <naziv datoteke>
Primjer :
Sadr転aj datoteke vanjska.cpp ukljuujemo u program, iji izvorni kod se nalazi u datoteci
Ukljuci.cpp .
Datoteka Ukljuci.cpp :
#include <iostream.h>
#include "vanjska.cpp"
void main () {
v_var = 10; // Globalna varijabla
f_vanjska();
}
DatotekaVanjska.cpp:
int v_var;
void f_vanjska (){
cout <<"Vanjska funkcija" << endl;
}
Funkcija f_vanjska poziva se na isti nain kao da je ukljuena u glavnu datoteku.
7.4.7. Standardne biblioteke funkcija
7.4.7.1. iostream.h
Biblioteka iostream definira razrede (klase) koje podr転avaju rad s ulaznim i izlaznim
tokovima.
7.4.7.1.1. Predefinirani objekti tokova C++ :
Ime Tip razreda Opis
cin ulazni tok Pridru転en standardnom ulazu (tipkovnica)
cout izlazni tok Pridru転en standardnom izlazu (ekran)
cerr izlazni tok Pridru転en standardnom izlazu u sluaju
pogre邸ke (ekran) s izlazom bez kori邸tenja
meuspremnika
clog izlazni tok Pridru転en standardnom izlazu u sluaju
pogre邸ke (ekran) s izlazom uz kori邸tenje
meuspremnika
7.4.7.2. string.h
7.4.7.2.1. Funkcije za kopiranje
void *memcpy(void *s1, const void *s2, size_t n);
Kopira n znakova s memorijskog podruja s2 u s1. Radi kao strncpy ali ne stane kod null
znakova. Ne radi ako se memorijska podruja preklapaju.
void *memmove(void *s1, const void *s2, size_t n);
Slino memcpy() ali radi ak i ako se memorijska podruja preklapaju.
char *strcpy(char *s1, const char *s2);
Kopira s1 u s2 tako dugo dok se ne iskopira null znak.
char *strncpy(char *s1, const char *s2, size_t n);
Kao strcpy(), ali kopira najvi邸e n znakova.
7.4.7.2.2. Funkcije spajanja polja znakova
char *strcat(char *s1, const char *s2);
Dodaje kopiju s2 na kraj polja s1.
char *strncat(char *s1, const char *s2, size_t n);
Kao strcat(), ali dodaje najvi邸e n znakova.
7.4.7.2.3. Funkcije usporeivanja
int memcmp(const void *s1, const void* s2, size_t n);
Kao strncmp() ali ne stane kod null znakova.
int strcmp(const char *s1, const char* s2);
Usporeuje argumente i vraa cijeli broj kao rezultat (0 ako je s1 jednak s2).
int strcoll(const char *s1, const char* s2);
Slino strcmp() ali koristi lokalno definiran poredak znakova umjesto originalnog.
int strncmp(const char *s1, const char* s2, size_t n);
Kao strcmp(), ali usporeuje najvi邸e n znakova.
size_t strxfrm(char *s1, const char *s2, size_t n);
Transformacija polja znakova. Transformira s2 u prostor jednak onom kojeg zauzima s1
tako da se rezultat mo転e usporeivati s strcmp().
7.4.7.2.4. Funkcije za pretra転ivanje
void *memchr(const void *s, int c, size_t n);
Kao strchr(), ali stane nakon prvih n znakova umjesto nakon null znaka.
char *strchr(const char *s, int c);
Vraa pokaziva na prvo pojavljivanje znaka c u polju znakova s, ili NULL pokaziva ako
se c ne pojavljuje u polju znakova.
size_t strcspn(const char *s1, const char *s2);
Vraa du転inu poetnog segmenta polja znakova s1 koje se u potpunosti sastoji od znakova
koji nisu iz s2.
char *strpbrk(const char *s1, const char *s2);
Vraa pokaziva na prvo pojavljivanje polja znakova s1, na bilo koji znak iz polja znakova
s2, ili na NULL pokaziva ako nema znakova iz s2 koji postoje u s1.
char *strrchr(const char *s, int c);
Vraa pokaziva na zadnje pojavljivanje znaka c u polju znakova s, ili NULL pokaziva
ako c ne postoji u polju znakova.
size_t strspn(const char *s1, const char *s2);
Vraa du転inu poetnog segmenta polja znakova s1 koja se u potpunosti sastoji od znakova
iz polja znakova s2.
char *strstr(const char *s, const char *pat);
Vraa pokaziva na prvo pojavljivanje uzorka polja znakova pat u s.
7.4.7.2.5. Razne funkcije
void *memset(void *s, int c, size_t n);
Postavlja prvih n znakova u memorijskom podruju s na vrijednost znaka c.
char *strerror(int errnum);
Vraa pokaziva na tekst poruke za zadani broj pogre邸ke.
size_t strlen(const char *s);
Vraa broj znakova u s, ne raunajui null znak za prekidanje polja znakova.
7.4.7.3. math.h
7.4.7.3.1. Trigonometrijske funkcije
double acos(double x);
Daje arkus arc cos od x. Domena: -1 do +1. Raspon: 0 do pi.
double asin(double x);
Daje arc sin od x. Domena: -1 do +1. Raspon: -pi/2 do pi/2.
double atan(double x);
Daje arc tan od x. Domena: nedefinirana. Raspon: -pi/2 do pi/2.
double atan2(double x, double y);
Vrijednost arc tan od y/x, koristi predznak oba argumenta za odreivanje kvadranta
povratne vrijednosti.
Bilo x ili y mogu biti nula, ali ne oba.
double cos(double x);
Kosinus od x, gdje je x u radijanima.
double sin(double x);
Sinus x, gdje je x u radijanima.
double tan(double x);
Tangens od x, gdje je x u radijanima.
7.4.7.3.2. Eksponencijalne i logaritamske funkcije
double exp(double x);
Eksponencijalna funkcija od x.
double frexp(double x, int *eksponent);
Rastavlja broj x na mantisu i eksponent na bazu 2, tako da je rezultat funkcije mantisa,
a eksponent se pohranjuje na mjesto drugog argumenta funkcije.
double ldexp(double x, int eksponent);
Rauna broj na temelju zadane mantise i eksponenta; inverzna funkcija je frexp.
double log(double);
Prirodni logaritam.
double log10(double);
Logaritam po bazi 10.
double modf(double x, double *cijeliDio);
Rastavlja x na njegov cijeli i decimalni dio.
7.4.7.3.3. Funkcije za potenciranje
double pow(double baza, double eksponent);
Potenciranje; argumenti su baza i eksponent.
double sqrt(double x);
Kvadratni korijen od x.
7.4.7.3.4. Najbli転i cijeli broj, apsolutna vrijednost, i funkcije ostatka
dijeljenja
double ceil(double x);
Najbli転i vei cijeli broj od x.
double fabs(double x);
Apsolutna vrijednost realnog broja x.
double floor(double x);
Najbli転i manji cijeli broj od x.
double fmod(double x, double y);
Ostatak dijeljenja realnih brojeva x i y.
7.4.7.4. ctype.h
7.4.7.4.1. Funkcije testiranja znakova
int isalnum(int ch);
ch je alfanumeriki znak.
int isalpha(int ch);
ch je slovo.
int iscntrl(int ch);
Provjerava je li znak neki kontrolni znak (ASCII kodovi 0..31 i 127).
int isdigit(int ch);
Provjerava je li ch znamenka (0..9).
int isgraph(int ch);
ch je znak za ispis; kao isprint osim 邸to vraa false za razmak.
int islower(int ch);
ch je malo slovo.
int isprint(int ch);
Provjerava je li ch znak za ispis (ASCII kod izmeu 32 i 126).
int isspace(int ch);
Je li znak praznina (razmak, tab, znak CR, znak za novi red, ili prijelaz na novu stranicu).
int isupper(int ch);
Provjerava da li je ch veliko slovo.
int isxdigit(int ch);
Provjerava da li je ch heksadecimalni broj, 0 - F.
7.4.7.4.2. Funkcije za promjenu malih/velikih slova
int tolower(int ch);
Ako ch predstavlja veliko slovo, rezultat je odgovarajue malo slovo.
int toupper(int ch);
Ako ch predstavlja malo slovo, rezultat je odgovarajue veliko slovo.
C++ funkcije

More Related Content

What's hot (20)

Vuk S. Karad転i kao pisac,istoriar i biograf
Vuk S. Karad転i kao pisac,istoriar i biografVuk S. Karad転i kao pisac,istoriar i biograf
Vuk S. Karad転i kao pisac,istoriar i biograf
Marko Plavic
Predstavljanje zvuka u raunaru
Predstavljanje zvuka u raunaruPredstavljanje zvuka u raunaru
Predstavljanje zvuka u raunaru
suzanainformatika
Hladni rat
Hladni ratHladni rat
Hladni rat
Vale Shau
舒仍仆舒 从仆亳亢从仂于舒 于亳舒于从舒 束丱舒亶 亢亠 仍舒于仆舒 弍亟亠 亟仂于从 从仂亰舒从舒 亰亠仄仍!損
舒仍仆舒 从仆亳亢从仂于舒 于亳舒于从舒 束丱舒亶 亢亠 仍舒于仆舒 弍亟亠 亟仂于从 从仂亰舒从舒 亰亠仄仍!損舒仍仆舒 从仆亳亢从仂于舒 于亳舒于从舒 束丱舒亶 亢亠 仍舒于仆舒 弍亟亠 亟仂于从 从仂亰舒从舒 亰亠仄仍!損
舒仍仆舒 从仆亳亢从仂于舒 于亳舒于从舒 束丱舒亶 亢亠 仍舒于仆舒 弍亟亠 亟仂于从 从仂亰舒从舒 亰亠仄仍!損
Sumylib
05 vrste-memorija
05 vrste-memorija05 vrste-memorija
05 vrste-memorija
JecaNemica
亠亢舒于仆 丕从舒仆亳: 仆亠仍亠亞从亳亶 仍 舒仆仂于仍亠仆仆
亠亢舒于仆 丕从舒仆亳: 仆亠仍亠亞从亳亶 仍 舒仆仂于仍亠仆仆亠亢舒于仆 丕从舒仆亳: 仆亠仍亠亞从亳亶 仍 舒仆仂于仍亠仆仆
亠亢舒于仆 丕从舒仆亳: 仆亠仍亠亞从亳亶 仍 舒仆仂于仍亠仆仆
Savua
Kri転arski ratovi
Kri転arski ratoviKri転arski ratovi
Kri転arski ratovi
Vale Shau
Domovinski rat
Domovinski ratDomovinski rat
Domovinski rat
Strukovnaskola
Kolubarska bitka
Kolubarska bitkaKolubarska bitka
Kolubarska bitka
zoricahelac
从仂 仗亠亳从亳 舒仂于亳.亠仍仂仗仂仆亠从亳 舒.
从仂 仗亠亳从亳 舒仂于亳.亠仍仂仗仂仆亠从亳 舒.从仂 仗亠亳从亳 舒仂于亳.亠仍仂仗仂仆亠从亳 舒.
从仂 仗亠亳从亳 舒仂于亳.亠仍仂仗仂仆亠从亳 舒.
仆仂于仆舒 从仂仍舒 "仍亞舒 亳仍仂亠于亳" 弌仄亠亟. 舒仍舒仆从舒
Elektronika
ElektronikaElektronika
Elektronika
Ana Todorovic
Auto cad lt-ivana-penezic
Auto cad lt-ivana-penezicAuto cad lt-ivana-penezic
Auto cad lt-ivana-penezic
Kristina Goranovic
Hrvatska poslije drugog svjetskog rata
Hrvatska poslije drugog svjetskog rataHrvatska poslije drugog svjetskog rata
Hrvatska poslije drugog svjetskog rata
batica1
Uzroci, povod i izbijanje Prvog svjetskog rata
Uzroci, povod i izbijanje Prvog svjetskog rataUzroci, povod i izbijanje Prvog svjetskog rata
Uzroci, povod i izbijanje Prvog svjetskog rata
Vale Shau
61072752 tehnicko-crtanje-u-slici
61072752 tehnicko-crtanje-u-slici61072752 tehnicko-crtanje-u-slici
61072752 tehnicko-crtanje-u-slici
Jaca jacic
从亠亶仍亠 舒仆亳亶 仗仂弍 仗仂于舒仆仆 从仆亳亞亳 于 弍弍仍仂亠
从亠亶仍亠   舒仆亳亶 仗仂弍 仗仂于舒仆仆 从仆亳亞亳  于 弍弍仍仂亠从亠亶仍亠   舒仆亳亶 仗仂弍 仗仂于舒仆仆 从仆亳亞亳  于 弍弍仍仂亠
从亠亶仍亠 舒仆亳亶 仗仂弍 仗仂于舒仆仆 从仆亳亞亳 于 弍弍仍仂亠
舒舒仍 Slavbibl4
Tastatura
TastaturaTastatura
Tastatura
NatashaBN
1941 1943
1941 19431941 1943
1941 1943
batica1
Vuk S. Karad転i kao pisac,istoriar i biograf
Vuk S. Karad転i kao pisac,istoriar i biografVuk S. Karad転i kao pisac,istoriar i biograf
Vuk S. Karad転i kao pisac,istoriar i biograf
Marko Plavic
Predstavljanje zvuka u raunaru
Predstavljanje zvuka u raunaruPredstavljanje zvuka u raunaru
Predstavljanje zvuka u raunaru
suzanainformatika
Hladni rat
Hladni ratHladni rat
Hladni rat
Vale Shau
舒仍仆舒 从仆亳亢从仂于舒 于亳舒于从舒 束丱舒亶 亢亠 仍舒于仆舒 弍亟亠 亟仂于从 从仂亰舒从舒 亰亠仄仍!損
舒仍仆舒 从仆亳亢从仂于舒 于亳舒于从舒 束丱舒亶 亢亠 仍舒于仆舒 弍亟亠 亟仂于从 从仂亰舒从舒 亰亠仄仍!損舒仍仆舒 从仆亳亢从仂于舒 于亳舒于从舒 束丱舒亶 亢亠 仍舒于仆舒 弍亟亠 亟仂于从 从仂亰舒从舒 亰亠仄仍!損
舒仍仆舒 从仆亳亢从仂于舒 于亳舒于从舒 束丱舒亶 亢亠 仍舒于仆舒 弍亟亠 亟仂于从 从仂亰舒从舒 亰亠仄仍!損
Sumylib
05 vrste-memorija
05 vrste-memorija05 vrste-memorija
05 vrste-memorija
JecaNemica
亠亢舒于仆 丕从舒仆亳: 仆亠仍亠亞从亳亶 仍 舒仆仂于仍亠仆仆
亠亢舒于仆 丕从舒仆亳: 仆亠仍亠亞从亳亶 仍 舒仆仂于仍亠仆仆亠亢舒于仆 丕从舒仆亳: 仆亠仍亠亞从亳亶 仍 舒仆仂于仍亠仆仆
亠亢舒于仆 丕从舒仆亳: 仆亠仍亠亞从亳亶 仍 舒仆仂于仍亠仆仆
Savua
Kri転arski ratovi
Kri転arski ratoviKri転arski ratovi
Kri転arski ratovi
Vale Shau
Kolubarska bitka
Kolubarska bitkaKolubarska bitka
Kolubarska bitka
zoricahelac
Hrvatska poslije drugog svjetskog rata
Hrvatska poslije drugog svjetskog rataHrvatska poslije drugog svjetskog rata
Hrvatska poslije drugog svjetskog rata
batica1
Uzroci, povod i izbijanje Prvog svjetskog rata
Uzroci, povod i izbijanje Prvog svjetskog rataUzroci, povod i izbijanje Prvog svjetskog rata
Uzroci, povod i izbijanje Prvog svjetskog rata
Vale Shau
61072752 tehnicko-crtanje-u-slici
61072752 tehnicko-crtanje-u-slici61072752 tehnicko-crtanje-u-slici
61072752 tehnicko-crtanje-u-slici
Jaca jacic
从亠亶仍亠 舒仆亳亶 仗仂弍 仗仂于舒仆仆 从仆亳亞亳 于 弍弍仍仂亠
从亠亶仍亠   舒仆亳亶 仗仂弍 仗仂于舒仆仆 从仆亳亞亳  于 弍弍仍仂亠从亠亶仍亠   舒仆亳亶 仗仂弍 仗仂于舒仆仆 从仆亳亞亳  于 弍弍仍仂亠
从亠亶仍亠 舒仆亳亶 仗仂弍 仗仂于舒仆仆 从仆亳亞亳 于 弍弍仍仂亠
舒舒仍 Slavbibl4
Tastatura
TastaturaTastatura
Tastatura
NatashaBN
1941 1943
1941 19431941 1943
1941 1943
batica1

Viewers also liked (7)

Algoritmi sortiranja u C++
Algoritmi sortiranja u C++Algoritmi sortiranja u C++
Algoritmi sortiranja u C++
Adnan Goreti
Informatika 2 god_stucen
Informatika 2 god_stucenInformatika 2 god_stucen
Informatika 2 god_stucen
Zivko Boskov
Globalne i lokalne varijable
Globalne i lokalne varijableGlobalne i lokalne varijable
Globalne i lokalne varijable
Adriana Padovan
16717 functions in C++
16717 functions in C++16717 functions in C++
16717 functions in C++
LPU
FUNCTIONS IN c++ PPT
FUNCTIONS IN c++ PPTFUNCTIONS IN c++ PPT
FUNCTIONS IN c++ PPT
03062679929
functions of C++
functions of C++functions of C++
functions of C++
tarandeep_kaur
Algoritmi sortiranja u C++
Algoritmi sortiranja u C++Algoritmi sortiranja u C++
Algoritmi sortiranja u C++
Adnan Goreti
Informatika 2 god_stucen
Informatika 2 god_stucenInformatika 2 god_stucen
Informatika 2 god_stucen
Zivko Boskov
Globalne i lokalne varijable
Globalne i lokalne varijableGlobalne i lokalne varijable
Globalne i lokalne varijable
Adriana Padovan
16717 functions in C++
16717 functions in C++16717 functions in C++
16717 functions in C++
LPU
FUNCTIONS IN c++ PPT
FUNCTIONS IN c++ PPTFUNCTIONS IN c++ PPT
FUNCTIONS IN c++ PPT
03062679929

Similar to C++ funkcije (14)

Asp audit01
Asp audit01Asp audit01
Asp audit01
Aleksandar Micic
C++ radna skripta
C++ radna skriptaC++ radna skripta
C++ radna skripta
jelicastevanovic
3.
3.3.
3.
Brankica Joki
3. for petlja
3. for petlja3. for petlja
3. for petlja
Brankica Joki
RP1 - Funkcije za rad s dinamikim poljem. Funkcije lanice
RP1 - Funkcije za rad s dinamikim poljem. Funkcije laniceRP1 - Funkcije za rad s dinamikim poljem. Funkcije lanice
RP1 - Funkcije za rad s dinamikim poljem. Funkcije lanice
Goran Igaly
Raunarski praktikum 1 - Konstruktor kopiranja
Raunarski praktikum 1 - Konstruktor kopiranjaRaunarski praktikum 1 - Konstruktor kopiranja
Raunarski praktikum 1 - Konstruktor kopiranja
Goran Igaly
11_itanje, ispisivanje i ispitivanje znakova.ppsx
11_itanje, ispisivanje i ispitivanje znakova.ppsx11_itanje, ispisivanje i ispitivanje znakova.ppsx
11_itanje, ispisivanje i ispitivanje znakova.ppsx
Dzoja
GIS AS-2009-auto-cad map
GIS AS-2009-auto-cad mapGIS AS-2009-auto-cad map
GIS AS-2009-auto-cad map
slavicek
Rp1 predavanja 02 - Koncepti objektno orijentiranog programiranja
Rp1 predavanja 02 - Koncepti objektno orijentiranog programiranjaRp1 predavanja 02 - Koncepti objektno orijentiranog programiranja
Rp1 predavanja 02 - Koncepti objektno orijentiranog programiranja
Goran Igaly
Vb script
Vb scriptVb script
Vb script
marijaaaa
Csharp08
Csharp08Csharp08
Csharp08
admira_versace
RP1 - Funkcije za rad s dinamikim poljem. Funkcije lanice
RP1 - Funkcije za rad s dinamikim poljem. Funkcije laniceRP1 - Funkcije za rad s dinamikim poljem. Funkcije lanice
RP1 - Funkcije za rad s dinamikim poljem. Funkcije lanice
Goran Igaly
Raunarski praktikum 1 - Konstruktor kopiranja
Raunarski praktikum 1 - Konstruktor kopiranjaRaunarski praktikum 1 - Konstruktor kopiranja
Raunarski praktikum 1 - Konstruktor kopiranja
Goran Igaly
11_itanje, ispisivanje i ispitivanje znakova.ppsx
11_itanje, ispisivanje i ispitivanje znakova.ppsx11_itanje, ispisivanje i ispitivanje znakova.ppsx
11_itanje, ispisivanje i ispitivanje znakova.ppsx
Dzoja
GIS AS-2009-auto-cad map
GIS AS-2009-auto-cad mapGIS AS-2009-auto-cad map
GIS AS-2009-auto-cad map
slavicek
Rp1 predavanja 02 - Koncepti objektno orijentiranog programiranja
Rp1 predavanja 02 - Koncepti objektno orijentiranog programiranjaRp1 predavanja 02 - Koncepti objektno orijentiranog programiranja
Rp1 predavanja 02 - Koncepti objektno orijentiranog programiranja
Goran Igaly
Vb script
Vb scriptVb script
Vb script
marijaaaa

C++ funkcije

  • 1. SADR貼AJ 1.1 Potprogrami (funkcije) u C++ 1.1.1 Koncept globalnih i lokalnih podataka 1.1.2 Statiki lanovi 1.1.3 Pokazivai i reference kao argumenti 1.1.4 Preoptereenje funkcija 1.1.5 Rekurzivna funkcija 1.1.6 Pretprocesorska naredba #include 1.1.7 Standardne biblioteke funkcija 1.1.1.1 iostream.h 1.1.1.1.1 Predefinirani objekti tokova C++ : 1.1.1.2 string.h 1.1.1.2.1 Funkcije za kopiranje 1.1.1.2.2 Funkcije spajanja polja znakova 1.1.1.2.3 Funkcije usporeivanja 1.1.1.2.4 Funkcije za pretra転ivanje 1.1.1.2.5 Razne funkcije 1.1.1.3 math.h 1.1.1.3.1 Trigonometrijske funkcije 1.1.1.3.2 Eksponencijalne i logaritamske funkcije 1.1.1.3.3 Funkcije za potenciranje 1.1.1.3.4 Najbli転i cijeli broj, apsolutna vrijednost, i funkcije ostatka dijeljenja 1.1.1.4 ctype.h 1.1.1.4.1 Funkcije testiranja znakova 1.1.1.4.2 Funkcije za promjenu malih/velikih slova
  • 2. 7.4. Potprogrami (funkcije) u C++ Potprogrami su izdvojene logike cjeline unutar programa. Za razliku od Pascala, koji razlikuje procedure i funkcije, C/C++ poznaje samo funkcije. Funkcija je zami邸ljena tako da vrati vrijednost koja odgovara njenom tipu (pomou naredbe return). Ako funkcija umjesto tipa ima oznaku void, tada ne vraa vrijednost, odnosno, predstavlja pandan proceduri. Opi oblik funkcije : <povratni tip ili void> ime_funkcije (<tip> par1, <tip> par2, ... ,<tip> par N) { . . <blok instrukcija> . . return <povratna vrijednost>; // izostavlja se ako je funkcija tipa void } Razlikujemo formalne parametre (navode se u zaglavlju funkcije) i stvarne parametre (navode se kod poziva funkcije). Prilikom poziva funkcije formalni parametri poprime vrijednosti odgovarajuih stvarnih parametara. Primjer : #include <iostream.h> float kvadrat (float x){ return x * x; } void main () { // main je rezervirano ime float broj; float kvad = kvadrat (broj); cout << broj << na kvadrat iznosi << kvad << endl; } 7.4.1. Koncept globalnih i lokalnih podataka Globalni podaci dostupni su u svim dijelovima programa (osim u funkcijama gdje su definirani istoimeni lokalni podaci), dok su lokalni dostupni iskljuivo u okviru funkcije gdje su definirani. Primjer : #include <iostream.h> int a,b; float c,d; // a,b,c,d su globalne varijable
  • 3. void main () { int e,f; //varijable e,f lokalne su za funkciju main char a,c // varijable a,c lokalne su za funkciju main i prekrivaju // istoimene globalne varijable a = A; c = B; b = 5; // globalne varijable b,d dostupne su unutar funkcije main d = 3.14; } 7.4.2. Statiki lanovi Statiki lanovi oznaavaju se pomou kljune rijei static. Statika lokalna varijabla ima doseg lokalne, a trajanje globalne varijable : Primjer : #include <iostream.h> void funkcija_stat () { int a; static int b; cout << "a = " << a << endl; cout << "b = " << b << endl; a = 5; b = 10; } void main () { cout << "1. poziv funkcije :" << endl; funkcija_stat(); cout << "2. poziv funkcije :" << endl; funkcija_stat(); } Daje slijedei ispis kao rezultat : 1. poziv funkcije : a = 6618616 b = 0 2. poziv funkcije : a = 6618616 b = 10 Vrijednost statike lokalne varijable b ostala je sauvana do slijedeeg poziva funkcije. 7.4.3. Pokazivai i reference kao argumenti Osim prijenosa argumenata po vrijednosti, mogue je koristiti pokazivae i reference kao argumente. U tom sluaju funkcija ne vr邸i obradu nad kopijama podataka nego nad originalnim podacima.
  • 4. Primjer (pokazivai kao argumenti) : #include <iostream h> void zamjena (int *prvi, int *drugi){ int pom = *prvi; *prvi = *drugi; *drugi = pom; } void main (){ int a=5; int b=10; zamjena (&a,&b); cout << a = << a << endl; // 10 cout << b = << b << endl; // 5 } Primjer (reference kao argumenti) : #include <iostream.h> void zamjena (int &prvi, int &drugi) { int pom = prvi; prvi = drugi; drugi = pom; } void main (){ int a=5; int b=10; zamjena (a,b); cout << a = << a << endl; // 10 cout << b = << b << endl; // 5 } 7.4.4. Preoptereenje funkcija Preoptereenje omoguuje kori邸tenje istog imena za razliite funkcije, pri emu se te funkcije meusobno razlikuju po tipu argumenata u svom zaglavlju. Primjer: #include <iostream.h> void funkcija (int n){ cout << n (int) = << n << endl; } void funkcija (float n){ cout << n (float) = << n << endl; } void main () { int a=5;
  • 5. float b=3.125; funkcija (a); //cjelobrojni parametar funkcija (b); //realni parametar } 7.4.5. Rekurzivna funkcija Rekurzija je svojstvo potprograma (funkcije) da mo転e pozivati sam sebe. Primjer (raunanje n!) : #include <iostream.h> int fakto (int n){ if (n ==1) //sidreni uvjet return 1; else } return n*fakto (n 1); //pojednostavljenje void main () { cout << fakto (5) << endl; } Za realizaciju rekurzivne funkcije potrebno je osigurati slijedee : Sidreni izraz : 1! = 1 Rekurzivnu formulu ili postupak : n! = n * (n 1)! Sidreni izraz omoguuje izlazak iz rekurzivne funkcije (tj. sprijeava beskonano pozivanje funkcije), a rekurzivna formula ili postupak trebaju pojednostaviti zadatak, odnosno, pribli転iti ga rje邸enju zadanom kao sidreni izraz. 7.4.6. Pretprocesorska naredba #include #include ka転e kompilatoru da na njeno mjesto ubaci sadr転aj zadane datoteke. Sintaksa : #include "naziv datoteke" ili #include <naziv datoteke> Primjer : Sadr転aj datoteke vanjska.cpp ukljuujemo u program, iji izvorni kod se nalazi u datoteci Ukljuci.cpp . Datoteka Ukljuci.cpp :
  • 6. #include <iostream.h> #include "vanjska.cpp" void main () { v_var = 10; // Globalna varijabla f_vanjska(); } DatotekaVanjska.cpp: int v_var; void f_vanjska (){ cout <<"Vanjska funkcija" << endl; } Funkcija f_vanjska poziva se na isti nain kao da je ukljuena u glavnu datoteku. 7.4.7. Standardne biblioteke funkcija 7.4.7.1. iostream.h Biblioteka iostream definira razrede (klase) koje podr転avaju rad s ulaznim i izlaznim tokovima. 7.4.7.1.1. Predefinirani objekti tokova C++ : Ime Tip razreda Opis cin ulazni tok Pridru転en standardnom ulazu (tipkovnica) cout izlazni tok Pridru転en standardnom izlazu (ekran) cerr izlazni tok Pridru転en standardnom izlazu u sluaju pogre邸ke (ekran) s izlazom bez kori邸tenja meuspremnika clog izlazni tok Pridru転en standardnom izlazu u sluaju pogre邸ke (ekran) s izlazom uz kori邸tenje meuspremnika 7.4.7.2. string.h 7.4.7.2.1. Funkcije za kopiranje void *memcpy(void *s1, const void *s2, size_t n); Kopira n znakova s memorijskog podruja s2 u s1. Radi kao strncpy ali ne stane kod null znakova. Ne radi ako se memorijska podruja preklapaju.
  • 7. void *memmove(void *s1, const void *s2, size_t n); Slino memcpy() ali radi ak i ako se memorijska podruja preklapaju. char *strcpy(char *s1, const char *s2); Kopira s1 u s2 tako dugo dok se ne iskopira null znak. char *strncpy(char *s1, const char *s2, size_t n); Kao strcpy(), ali kopira najvi邸e n znakova. 7.4.7.2.2. Funkcije spajanja polja znakova char *strcat(char *s1, const char *s2); Dodaje kopiju s2 na kraj polja s1. char *strncat(char *s1, const char *s2, size_t n); Kao strcat(), ali dodaje najvi邸e n znakova. 7.4.7.2.3. Funkcije usporeivanja int memcmp(const void *s1, const void* s2, size_t n); Kao strncmp() ali ne stane kod null znakova. int strcmp(const char *s1, const char* s2); Usporeuje argumente i vraa cijeli broj kao rezultat (0 ako je s1 jednak s2). int strcoll(const char *s1, const char* s2); Slino strcmp() ali koristi lokalno definiran poredak znakova umjesto originalnog. int strncmp(const char *s1, const char* s2, size_t n); Kao strcmp(), ali usporeuje najvi邸e n znakova. size_t strxfrm(char *s1, const char *s2, size_t n); Transformacija polja znakova. Transformira s2 u prostor jednak onom kojeg zauzima s1 tako da se rezultat mo転e usporeivati s strcmp(). 7.4.7.2.4. Funkcije za pretra転ivanje void *memchr(const void *s, int c, size_t n); Kao strchr(), ali stane nakon prvih n znakova umjesto nakon null znaka. char *strchr(const char *s, int c); Vraa pokaziva na prvo pojavljivanje znaka c u polju znakova s, ili NULL pokaziva ako se c ne pojavljuje u polju znakova. size_t strcspn(const char *s1, const char *s2); Vraa du転inu poetnog segmenta polja znakova s1 koje se u potpunosti sastoji od znakova koji nisu iz s2.
  • 8. char *strpbrk(const char *s1, const char *s2); Vraa pokaziva na prvo pojavljivanje polja znakova s1, na bilo koji znak iz polja znakova s2, ili na NULL pokaziva ako nema znakova iz s2 koji postoje u s1. char *strrchr(const char *s, int c); Vraa pokaziva na zadnje pojavljivanje znaka c u polju znakova s, ili NULL pokaziva ako c ne postoji u polju znakova. size_t strspn(const char *s1, const char *s2); Vraa du転inu poetnog segmenta polja znakova s1 koja se u potpunosti sastoji od znakova iz polja znakova s2. char *strstr(const char *s, const char *pat); Vraa pokaziva na prvo pojavljivanje uzorka polja znakova pat u s. 7.4.7.2.5. Razne funkcije void *memset(void *s, int c, size_t n); Postavlja prvih n znakova u memorijskom podruju s na vrijednost znaka c. char *strerror(int errnum); Vraa pokaziva na tekst poruke za zadani broj pogre邸ke. size_t strlen(const char *s); Vraa broj znakova u s, ne raunajui null znak za prekidanje polja znakova. 7.4.7.3. math.h 7.4.7.3.1. Trigonometrijske funkcije double acos(double x); Daje arkus arc cos od x. Domena: -1 do +1. Raspon: 0 do pi. double asin(double x); Daje arc sin od x. Domena: -1 do +1. Raspon: -pi/2 do pi/2. double atan(double x); Daje arc tan od x. Domena: nedefinirana. Raspon: -pi/2 do pi/2. double atan2(double x, double y); Vrijednost arc tan od y/x, koristi predznak oba argumenta za odreivanje kvadranta povratne vrijednosti. Bilo x ili y mogu biti nula, ali ne oba. double cos(double x); Kosinus od x, gdje je x u radijanima.
  • 9. double sin(double x); Sinus x, gdje je x u radijanima. double tan(double x); Tangens od x, gdje je x u radijanima. 7.4.7.3.2. Eksponencijalne i logaritamske funkcije double exp(double x); Eksponencijalna funkcija od x. double frexp(double x, int *eksponent); Rastavlja broj x na mantisu i eksponent na bazu 2, tako da je rezultat funkcije mantisa, a eksponent se pohranjuje na mjesto drugog argumenta funkcije. double ldexp(double x, int eksponent); Rauna broj na temelju zadane mantise i eksponenta; inverzna funkcija je frexp. double log(double); Prirodni logaritam. double log10(double); Logaritam po bazi 10. double modf(double x, double *cijeliDio); Rastavlja x na njegov cijeli i decimalni dio. 7.4.7.3.3. Funkcije za potenciranje double pow(double baza, double eksponent); Potenciranje; argumenti su baza i eksponent. double sqrt(double x); Kvadratni korijen od x. 7.4.7.3.4. Najbli転i cijeli broj, apsolutna vrijednost, i funkcije ostatka dijeljenja double ceil(double x); Najbli転i vei cijeli broj od x. double fabs(double x); Apsolutna vrijednost realnog broja x. double floor(double x); Najbli転i manji cijeli broj od x. double fmod(double x, double y); Ostatak dijeljenja realnih brojeva x i y.
  • 10. 7.4.7.4. ctype.h 7.4.7.4.1. Funkcije testiranja znakova int isalnum(int ch); ch je alfanumeriki znak. int isalpha(int ch); ch je slovo. int iscntrl(int ch); Provjerava je li znak neki kontrolni znak (ASCII kodovi 0..31 i 127). int isdigit(int ch); Provjerava je li ch znamenka (0..9). int isgraph(int ch); ch je znak za ispis; kao isprint osim 邸to vraa false za razmak. int islower(int ch); ch je malo slovo. int isprint(int ch); Provjerava je li ch znak za ispis (ASCII kod izmeu 32 i 126). int isspace(int ch); Je li znak praznina (razmak, tab, znak CR, znak za novi red, ili prijelaz na novu stranicu). int isupper(int ch); Provjerava da li je ch veliko slovo. int isxdigit(int ch); Provjerava da li je ch heksadecimalni broj, 0 - F. 7.4.7.4.2. Funkcije za promjenu malih/velikih slova int tolower(int ch); Ako ch predstavlja veliko slovo, rezultat je odgovarajue malo slovo. int toupper(int ch); Ako ch predstavlja malo slovo, rezultat je odgovarajue veliko slovo.