17.04.2013 Views

Florian Moraru PROGRAMAREA CALCULATOARELOR în limbajul C

Florian Moraru PROGRAMAREA CALCULATOARELOR în limbajul C

Florian Moraru PROGRAMAREA CALCULATOARELOR în limbajul C

SHOW MORE
SHOW LESS

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.).

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!