Documente Academic
Documente Profesional
Documente Cultură
Funcţiile sînt elementele de bază ale unui program scris în C; orice program, de orice dimensiune,
constă din una sau mai multe funcţii, care specifică operaţiile care trebuie efectuate.
O funcţie oferă un mod convenabil de încapsulare a anumitor calcule într-o cutie neagră care poate fi
utilizată apoi fără a avea grija conţinutului ei. Funcţiile sînt într-adevăr singurul mod de a face faţă complexităţii
programelor mari. Funcţiile permit desfacerea programelor mari în unele mici şi dau utilizatorului posibilitatea
de a dezvolta programe, folosind ceea ce alţii au făcut deja în loc să o ia de la început.
Limbajul C a fost conceput să permită definirea de funcţii eficiente şi uşor de mînuit. În general e bine
să concepem programe constituite din mai multe funcţii mici decît din puţine funcţii de dimensiuni mari. Un
program poate fi împărţit în mai multe fişiere sursă în mod convenabil, iar fişierele sursă pot fi compilate
separat.
Mai precis, un program C constă dintr-o secvenţă de definiţii externe. Acestea sînt definiţii de funcţii şi
de date. Sintaxa definiţiilor externe este aceeaşi ca şi a tuturor declaraţiilor.
main() {
/* imprimă toate liniile care conţin cuvîntul „the” */
char line [MAXLINE];
while (getline(line, MAXLINE)>0)
if (index(line,"the")>=0)
printf("%s",line);
}
2. Funcţia atof converteşte un şir de cifre din formatul ASCII într-un număr flotant în precizie dublă.
double atof(char s[]) {
/* converteşte şirul s în dublă precizie */
double val, power;
int i, sign;
for (i=0; s[i]==' ' || s[i]=='\n' ||
s[i]=='\t'; i++) ; /* sare peste spaţii albe */
sign = 1;
if (s[i]=='+' || s[i]=='-')
sign = (s[i++]=='+') ? 1 : -1;
for (val=0; s[i]>='0' && s[i]<='9'; i++)
val = 10 * val + s[i] - '0';
if (s[i]== '.') /* punct zecimal */
i++;
for (power=1; s[i]>='0' && s[i]<='9'; i++)
{
val = 10 * val +s[i] - '0':
power *= 10;
}
return sign * val / power;
}
3. Funcţia atoi converteşte un şir de cifre în echivalentul lor numeric întreg.
atoi(char s[]) { /* converteşte şirul s la un întreg */
int i,n;
n = 0;
for (i=0; s[i]>='0' && s[i]<='9'; i++)
n = 10 * n +s[i] - '0';
return n;
}
4. Funcţia lower converteşte literele mari din setul de caractere ASCII în litere mici. Dacă lower
primeşte un caracter care nu este o literă mare atunci îl returnează neschimbat.
lower(int c) {
if (c>='A' && c<='Z')
return c + 'a' - 'A';
else
return c;
}
5. Funcţia binary realizează căutarea valorii x într-un masiv sortat v, care are n elemente.
binary(int x, int v[], int n) {
/* caută x în v0, v1, ..., vn-1 */
int low, high, mid;
low = 0;
high = n - 1;
while (low<=high) {
mid = (low + high) / 2;
if (x < v[mid])
high = mid - 1;
else if (x > v[mid])
low = mid + 1;
else /* s-a găsit o intrare */
return(mid);
}
return -1;
}
Funcţia returnează poziţia lui x (un număr între 0 şi n−1), dacă x apare în v sau −1 altfel.
Exemplul ilustrează o decizie triplă, dacă x este mai mic, mai mare sau egal cu elementul din mijlocul
şirului v[mid].