Documente Academic
Documente Profesional
Documente Cultură
#include <iostream>
using namespace std;
void main()
{
double x[] = {1., 2., 1., 0., 1.};
double rez = suma(x, 5);
cout << "Suma val. din sirul x este : " << rez <<
endl;
double mx = maxim(x, 5);
cout << "Max. val. din sirul x este : " << mx << endl;
}
void main()
{
double x[] = {1., 2., 1., 0., 1.};
double rez = suma(x, 5);
cout << "Suma val. din sirul x este : " << rez <<
endl;
double mx = maxim(x, 5);
61
cout << "Max. val. din sirul x este : " << mx << endl;
}
Se observ c numele fiierului Operaii.h este plasat ntre ghilimele.
Spre deosebire de Operatii.h, fiierele antet care conin declaraiile funciilor din
bibliotecile limbajului se includ folosind < ... > :
#include <iostream>
#include <ctype.h>
#include <math.h>
Notaia diferit folosit pentru cele dou categorii de fiiere provine din
faptul c fiierele antet create de programator (asemenea fiierului Operatii.h)
vor fi pstrate pe disc n directorul coninnd celelalte fiiere surs ale acesteia.
Vizibilitatea variabilelor
Vizibilitatea unei variabile se refer la zona dintr-un program n care
variabila este cunoscut i poate fi folosit. Din punct de vedere al locului
declarrii, o variabil poate fi global (declarat n afara oricrei funcii) sau
local (declarat n interiorul unei funcii, la nceputul acesteia sau ntr-un bloc
din cadrul acesteia.
Variabilele locale aparinnd unor module distincte (funcii sau blocuri)
sunt diferite, chiar dac poart acelai nume.
Unei variabile globale i se aloc spaiu n memorie n momentul definirii.
Dup linia de definire ea poate fi folosit. Dac variabila global este definit
ntr-un alt fiier aparinnd aceleiai aplicaii sau ntr-o alt poziie, spre sfritul
fiierului n care este folosit, ea trebuie declarat. Pentru a nu i se aloca
memorie nc o dat, numele tipului va fi precedat de cuvntul extern :
Fiier 1 Fiier 2
Variabilele statice
Variabilele declarate n interiorul unei funcii exist numai pe durata
executrii acesteia. Variabilele declarate n interiorul unui bloc din cadrul unei
funcii exist numai pe durata execuiei instruciunilor blocului n care au fost
definite. nainte de a fi folosite, ele trebuie s primeasc o valoare, aceast
iniializare repetndu-se la fiecare executare a funciei (blocului).
Dac o variabil trebuie s nu-i schimbe valoarea ntre dou apeluri ale
funciei n care este definit ea trebuie declarat ca variabil static :
void calcul( )
{
static int contor ;
static int num=1000 ;
63
...
}
naintea nceperii execuiei programului variabila contor va primi valoarea
0 iar variabila num va primi valoarea 1000. Valoarile rmase n contor i num
dup execuia funciei calcul() vor fi regsite la reintrarea n funcie, dup o nou
apelare.
Recursivitatea
n C o funcie se poate apela pe sine nsi. O astfel de funcie poart
numele de funcie recursiv. Prin recursivitate se pot realiza structuri de cod
repetitive similare celor realizate folosind instruciunile de ciclare.
Exemple :
void main()
{
long f;
double s;
double a[5]={10., 33., -12.,1., 10.};
f=factorial(6);
s=suma(5, a);
}
long factorial(int n)
{
if(n == 1)
return 1;
else
return n * factorial(n-1);
}
La reapelarea funciei este necesar schimbarea cel puin a unei valori din
lista parametrilor formali i anume a valorii variabilei care este testat n vederea
opririi reapelrii.
Date structurate
Exemplu fundamental :
Pentru pstrarea coordonatelor punctelor de pe ecranul calculatorului se
folosesc dou variabile ntregi, x i y. Dac un program opereaz mult cu puncte
este bine s se defineasc un nou tip de dat denumit punct, astfel:
y
struct punct { p1
int x, y ;
};
x
#include <iostream>
#include <math.h>
using namespace std;
struct punct {
int x, y ;
};
void main()
{
punct p1, p2;
double dist;
p1.x = 0;
p2.x = 10;
p1.y = 40;
p2.y = 99;
dist = distanta(p1, p2);
cout << "Distanta este: " << dist << endl;
}
struct cerc {
punct centru;
int raza;
};
. . .
cerc c;
. . .