Florian Moraru PROGRAMAREA CALCULATOARELOR în limbajul C
Florian Moraru PROGRAMAREA CALCULATOARELOR în limbajul C
Florian Moraru PROGRAMAREA CALCULATOARELOR în limbajul C
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Utilizarea de pointeri pentru prelucrarea sirurilor de caractere, cu incrementare<br />
adresei din sir dupã fiecare caracter prelucrat este un alt caz:<br />
int strlen ( char * str) { // lungime sir terminat cu zero<br />
int len=0;<br />
while ( *str++)<br />
len++;<br />
return len;<br />
}<br />
Utilizarea de pointeri ca argumente si rezultat al functiilor pe siruri (strcpy, strcat,<br />
s.a.), <strong>în</strong> functiile de citire-scriere (scanf, gets, read, write) si <strong>în</strong> functiile generice (qsort,<br />
lsearch, bsearch) este o caracteristicã a <strong>limbajul</strong>ui C si necesitã stãpânirea utilizãrii<br />
corecte a tipurilor pointer (principala sursã de erori <strong>în</strong> programare).<br />
Un alt exemplu de sablon de programare este citirea unor nume dintr-un fisier de<br />
date sau de la consolã, alocarea dinamicã de memorie pentru siruri si memorarea<br />
adreselor acestor siruri <strong>în</strong>tr-un vector:<br />
char buf[80], *a[1000]; int i=0;<br />
while ( (scanf ("%s", buf) > 0)) // citire in zona “buf”<br />
a[i++]= strdup( buf); // duplicare sir din buf la alta adresa<br />
Alocarea dinamicã de memorie <strong>în</strong> C este o constructie idiomaticã, care foloseste<br />
operatorii sizeof si pentru conversie de tip (“cast”):<br />
char** a = (char**) calloc (n, sizeof(char*)); // vector de n pointeri<br />
Conversia de tip pentru variabile numerice si variabile pointer printr-un numãr<br />
nelimitat de operatori (un operator “cast” pentru fiecare tip) este de asemenea specificã<br />
<strong>limbajul</strong>ui C.<br />
In scrierea programelor cu interfatã graficã sub Windows se folosesc multe<br />
sabloane de cod, unele chiar generate automat de cãtre mediul de dezvoltare.<br />
Portabilitatea programelor<br />
Un program C este portabil atunci când poate fi folosit (“portat”) pe orice<br />
calculator si sub orice sistem de operare, fãrã modificarea textului sursã.<br />
Un program este portabil dacã :<br />
- nu foloseste extensii ale standardului <strong>limbajul</strong>ui C, specifice unei anumite<br />
implementãri a <strong>limbajul</strong>ui (unui anumit compilator) si nici elemente de C++.<br />
- nu foloseste functii specifice unui sistem de operare sau unui mediu de dezvoltare<br />
(functii nestandard).<br />
- nu foloseste adrese de memorie sau alte particularitãti ale calculatorului.<br />
- nu foloseste particularitãti ale mediului de dezvoltare (o anumitã lungime pentru<br />
numere <strong>în</strong>tregi sau pentru pointeri, anumite tipuri de biblioteci etc.).