It tells about functions in C++,Types,Use,prototype,declaration,Arguments etc
function with
A function with no parameter and no return value
A function with parameter and no return value
A function with parameter and return value
A function without parameter and return value
Call by value and address
This document discusses functions in C++. It defines what a function is and explains that functions are the building blocks of C++ programs. Functions allow code to be reused, making programs easier to code, modify and maintain. The document covers function definitions, declarations, calls, parameters, return types, scope, and overloading. It also discusses local and global variables as well as pass by value and pass by reference.
The document contains information about Tarandeep Kaur, including her name, section, and roll number. It then lists and describes various topics related to functions in C++, including definition of functions, function calling, function prototypes, void functions, local vs global variables, function overloading, and recursion. Examples are provided to illustrate function calling, passing arguments, return values, and differences between call by value and call by reference.
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.