Rikujtim: Funksioni është një bllok i parametrizuar i urdhërave i cili mund të kthejë rezultat.
int mbledh(int a, int b) {
return a + b;
}
Variablat hyrëse i quajmë parametra, ndërsa vlerat konkrete gjatë thirrjes së funksionit i quajmë argumente.
// mbledh merr parametrat a dhe b
int mbledh(int a, int b) {
return a + b;
}
...
// mbledh eshte thirrur me argumentet 2 dhe 3
mbledh(2, 3);
Variablat lokale
Gjatë kryerjes së llogaritjeve brenda funksionit mund të përdorim variabla, psh. int S = 0
.
Këto variabla shihen vetëm nga blloku aktual i funksionit, prandaj quhen variabla lokale.
Shembull:
int shuma(int n) {
int S = 0; // variabel lokale
for (int i = 1; i <= n; i++) {
S += i;
}
return S;
}
int main() {
cout << S; // gabim!
return 0;
}
Detyrë: Çfarë shfaqet kur ekzekutohet ky kod?
#include <iostream>
int f1() {
int a = 25;
return 13;
}
int f2(int b) {
int a = 13;
return b;
}
int f3(int a) {
return a + 1;
}
int main() {
int a = -3;
std::cout << f2(f3(a));
}
–
-2
Variablat globale
Variablat që shihen nga të gjitha funksionet quhen variabla globale.
Shembull: cout
është variabël globale që i referohet daljes standarde.
Shembull:
int S = 0;
void rrit_shumen(int v) {
S += v;
}
int main() {
rrit_shumen(4);
cout << S << endl; // shfaqet 4
rrit_shumen(3);
cout << S << endl; // shfaqet 7
return 0;
}
Variablat globale janë të rrezikshme pasi që gjithkush ka qasje që t’i ndryshojë.
Ndryshimi i papritur i ndonjë variable mund të shkaktojë defekte në program.
Detyrë: Të llogaritet shprehja e mëposhtme duke definuar dhe përdorur funksionin shuma
.
–
#include <iostream>
using namespace std;
int shuma(int a, int b) {
int S = 0;
for (int i = a; i <= b; i++) {
S += i;
}
return S;
}
int main() {
int S = shuma(3, 8) + shuma(2, 6);
cout << "S = " << S << endl;
return 0;
}
Detyrë: Të krijohet libraria funksionet.h
e cila ofron funksionet shuma(v,n)
, mesatarja(v,n)
, max(v,n)
, dhe min(v,n)
.
Nga fajlli main.cpp
të thirren këto funksione me vektorin $v=\lbrace 4, 2, 6, 7, 1 \rbrace$
–
funksionet.h
:
int shuma(int v[], int n);
double mesatarja(int v[], int n);
int max(int v[], int n);
int min(int v[], int n);
–
funksionet.cpp
:
int shuma(int v[], int n) {
int s = 0;
for (int i = 0; i < n; i++) {
s += v[i];
}
return s;
}
double mesatarja(int v[], int n) {
return (double)shuma(v, n) / n;
}
int max(int v[], int n) {
int m = v[0];
for (int i = 1; i < n; i++) {
if (v[i] > m) {
m = v[i];
}
}
return m;
}
int min(int v[], int n) {
int m = v[0];
for (int i = 1; i < n; i++) {
if (v[i] < m) {
m = v[i];
}
}
return m;
}
–
main.cpp
:
#include <iostream>
#include "funksionet.h"
using namespace std;
int main() {
const int n = 6;
int v[n] = { 4, 2, 6, 7, 1 };
cout << "Shuma: " << shuma(v, n) << endl;
cout << "Mesatarja: " << mesatarja(v, n) << endl;
cout << "Maksimumi: " << max(v, n) << endl;
cout << "Minimumi: " << min(v, n) << endl;
return 0;
}