Sunteți pe pagina 1din 26

GYŐRÖDI CORNELIA GYŐRÖDI ROBERT PECHERLE GEORGE

PROGRAMAREA ÎN LIMBAJUL C
Lucrări de laborator

UNIVERSITATEA DIN ORADEA


- 2015 -
Programarea în limbajul C – Lucrări de laborator

PREFAȚĂ

Limbajul C este un limbaj de programare implementat pe majoritatea


platformelor de calcul existente azi, fiind apreciat pentru eficienţa codului obiect
pe care îl poate genera şi pentru portabilitatea sa. A fost dezvoltat la începutul
anilor 1970 de Ken Thompson şi Dennis Ritchie, care aveau nevoie de un limbaj
simplu şi portabil pentru scrierea nucleului sistemului de operare UNIX. În anul
1978 a fost publicată prima ediţie a cărţii “Limbajul de programare C”, avându-i
ca autori pe Brian W. Kernighan şi Dennis M. Richie. În 1983, Institutul Naţional
pentru Standarde din America (the American National Standards Institute –
ANSI) a înfiinţat o comisie care să creeze “o definiţie lipsită de ambiguităţi şi
independentă de maşină a limbajului C”, menţinându-i în acelaşi timp stilul iar
rezultatul a fost apariția standardului ANSI pentru limbajul C.
Limbajul C este un limbaj structurat de nivel mediu ce permite
programarea la nivel scăzut, acces la reprezentarea binară a datelor, mare libertate
în lucrul cu memoria, fiind cel mai popular limbaj de programare pentru scrierea
de software de sistem, foarte folosit în interfața cu hardware, producând un cod
eficient, compact în dimensiune și rapid la rulare, apropiat de eficiența limbajului
de asamblare. Este folosit la fel de bine şi la scrierea altor programe de importanţă
deosebită în diverse domenii..
Lucrarea conţine un număr mare de exemple în format sursă, pornind de
la exemple simple, şi mergând până la aplicaţii rezolvate cu un grad mai ridicat
de complexitate, având astfel un caracter aplicativ. Totodată însă, şi partea
teoretică aferentă este detaliat prezentată, lucrarea constituindu-se într-un
material de referinţă pentru studiul conceptelor programării în limbajul C.

-2-
Programarea în limbajul C – Lucrări de laborator

Această lucrare vine în sprijinul studenţilor anului I de la specializările:


Calculatoare, Tehnologia Informației și Ingineria Sistemelor precum şi a
persoanelor interesate de programarea în limbajul C.
Cu speranța că lucrarea de față servește interesul cititorilor apreciem
opiniile menite să contribuie la îmbunătățirea ei.

Martie, 2015 Autorii.

-3-
Programarea în limbajul C – Lucrări de laborator

1. PREZENTAREA MEDIULUI DE
DEZVOLTARE Dev-C++. PRINCIPIILE
LIMBAJULUI C

Scopul lucrării este prezentarea mediului de programare Dev-C++ precum


și a unor noţiuni introductive ale limbajului C, incluzând declararea și
inițializarea variabilelor, operatorii aritmetici, componentele unui program C,
tipuri de date predefinite, operațiile de intrare/ieșire.

1.1 Mediul de dezvoltare Dev-C++

Mediul Dev-C++ este un software gratuit ce rulează exclusiv pe Microsoft


Windows fiind compus dintr-un editor și un compilator, astfel permite editarea,
compilarea și programarea în cod sursa C și C++ pentru a crea un software
propriu. Pagina web de unde se poate descărca acest software este:
http://orwelldevcpp.blogspot.com/ (valabil la momentul editării).
Ecranul principal al mediului Dev-C++ este împărţit în:
 meniul principal - se selectează prin tasta Alt sau prin Alt și litera
subliniată din meniu, caz în care se va deschide direct acel meniu.
 fereastra de editare - conține codul sursă al programului ce va fi
scris.
 fereastra de mesaje - afişează mesaje de eroare sau atenţionare.
 toolbar - conține butoane pentru acțiuni mai frecvente,
cum ar fi deschiderea de fișiere noi sau existente, operații de editare de
text, de căutare în text, opțiuni de compilare și rulare a programelor, etc.
Meniul principal conţine următoarele: File, Edit, Search, View, Project,
Execute, Tools, CSV, Window și Help. Selectarea unui meniu se face prin:
-4-
Programarea în limbajul C – Lucrări de laborator

- Alt, tastele <- , -> şi tasta ENTER.


- Alt + prima literă a meniului dorit (ex: Alt+O = Options).
 Meniul File - operează cu fişiere, directoare şi permite ieşirea din
Dev-C++, are opțiunile :
 New - crează un fișier sau proiect nou; la început se va
lucra doar cu fișiere individuale, fără proiecte, dar la aplicații
mai complexe, se preferă lucrul cu proiecte
 Open - deschide un fișier sau proiect existent; se va
deschide o fereastră de unde se poate face Browse și se poate
alege fișierul sau proiectul care se va deschide
 Save - salvează fișierul curent cu același nume ca și cel
original (va suprascrie fișierul original); este recomandabilă
salvarea cât mai frecventă, pentru a nu pierde modificările
 Save As - salvează fișierul curent cu alt nume; se va
deschide o fereastră de unde se poate alege directorul unde se
va salva fișierul și noul nume
 Save Project As - salvează proiectul curent cu alt nume; se
va deschide o fereastră de unde se poate alege directorul unde
se va salva proiectul și noul nume
 Save All - salvează toate fișierele din proiect; este o
comandă utilă când se lucrează pe mai multe fișiere din proiect
și nu se dorește să se uite salvarea unuia sau mai multor fișiere
 Close - închide fișierul curent
 Close Project - închide proiectul curent
 Close All - închide toate fișierele deschise

-5-
Programarea în limbajul C – Lucrări de laborator

 Properties - afișează proprietățile proiectului curent sau ale


fișierul deschis, cum ar fi calea către proiect/fișier, numărul de
linii de cod, dimensiunea fișierelor, etc.
 Import - importă proiecte; se pot importa proiecte din MS
Visual C++, putându-se alege și importarea de anumite
opțiuni salvate anterior
 Export - exportă proiecte în formatele HTML, RTF, TEX

 Meniul Edit - conține următoarele opțiuni:


 Undo - revine înainte de ultima modificare; se folosește
atunci când s-a greșit ceva în cod și se dorește revenirea la o
versiune anterioară
 Redo - anulează ultima comandă de Undo
 Cut/Copy/Paste - comenzi pentru lucru cu text
 Insert Snippet - inserează bucăți de cod salvate anterior
sau venite predefinite în Dev-C++, cum ar fi de exemplu
instrucțiuni FOR, IF, WHILE, etc. gata făcute
 Toggle Bookmark- inserează un marcaj la linia curentă, pentru
a reveni ulterior asupra acelei linii
 Goto Bookmarks - merge la un marcaj salvat anterior, salvat
anterior folosind Toggle Bookmark
 Comment - comentează liniile selectate; un comentariu este
ignorat de compilator și se folosește pentru a descrie porțiuni
de cod; este util când se vrea comentarea rapidă a mai multor
linii de cod
 Uncomment - decomentează liniile selectate, este util când se
vrea o decomentare rapidă a liniilor
-6-
Programarea în limbajul C – Lucrări de laborator

 Toggle Comment - decomentează liniile selectate dacă sunt


comentate, altfel le comentează
 Indent - indentează cu un tab liniile selectate; indentarea este
foarte importantă pentru a alinia codul, instrucțiunile care sunt
incluse în alte instrucțiuni trebuie puse mai spre dreapta
 Unindent - dezindentează liniile selectate, face operația
inversă indentării și aduce spre stânga codul.

 Meniul Search – conține următoarele opțiuni:


 Find - deschide fereastra de căutare de unde se poate
căuta în fișierul curent; se vor căuta toate aparițiile șirului
introdus
 Find in Files - permite căutarea în mai multe fișiere;
acest lucru este util când se lucrează pe proiecte care conțin
multe fișiere
 Replace - înlocuiește text în fișierul curent, acest lucru fiind
de exemplu util când se schimbă nume de variabile,
instrucțiuni, etc.
 Replace in Files - înlocuiește text în mai multe fișiere, acest
lucru fiind util când se lucrează pe proiecte care conțin mai
multe fișiere și trebuie înlocuite nume de variabile,
instrucțiuni, etc.
 Search Again - repetă comanda precedentă de Find sau Find
in Files, pentru a evita re-introducerea textului de căutat
 Search Again Backwards - repetă comanda precedentă de Find
sau Find in Files în ordine inversă, de la poziția curentă a
cursorului spre începutul fișierului
-7-
Programarea în limbajul C – Lucrări de laborator

 Incremental Search - deschide un text box care face o căutare


pe măsură ce scrieți text, ca în browsere. Este utilă când se
caută ceva rapid și nu se știe tot cuvântul căutat
 Goto Function - permite navigarea la o anumită funcție, este
util când sunt multe funcții și nu stiți exact cum se numește
funcția căutată
 Goto Line - merge la o anumită linie din cod, este util când
stiți linia unde vreți să ajungeți (de exemplu știți că acolo este
o eroare)

 Meniul View - conține următoarele opțiuni:


 Project/Class Browser - afișează sau ascunde fereasta cu
tab-uri cu proiectele, clasele și debugger-ul în partea
stângă. Aceste ferestre sunt foarte utile când doriți să
navigați între clase și/sau proiecte
 Statusbar - afișează sau ascunde status bar, unde de obicei
se pun anumite informații de stare sau alte mesaje
 Compiler Output - controlează fereastra cu mesajele de
output de la compilator. Mesajele de la compilator vă arată
ce erori aveți în cod și cum le-ați putea remedia
 Toolbars - ascunde sau afișează diferite toolbar-uri.
Acestea conțin scurtături la anumite opțiuni mai frecvent
folosite din cadrul meniurilor
 TODO List... - afișează toate TODO-urile comentate în
cod. Comentariile de tip TODO sunt foarte utile când aveți
cod neterminat și nu vreți să uitați să reveniți acolo

-8-
Programarea în limbajul C – Lucrări de laborator

 Go to Project Manager - merge la Project Manager de unde


se pot gestiona proiectele create de voi
 Go to Class Browser - merge la Class Browser de unde se
pot gestiona clasele create de voi

 Meniul Project - conține următoarele opțiuni:


 New File - adaugă un fișier nou la proiectul deschis.
 Add to Project - deschide un file browser de unde se poate
alege fișierul care să fie adăugat la proiect. De multe ori
trebuie să importăm în proiectul nostru fișiere care nu
aparțin proiectului.
 Remove from Project - șterge fișierul curent din proiect
 Project Options - afișează opțiuni despre proiect, cum ar fi
numele proiectului, sau alte opțiuni utile pentru gestiunea
proiectului curent

 Meniul Execute - conține următoarele opțiuni:


 Compile - compilează fișierul sau proiectul deschis, pentru
a descoperi erorile
 Run - rulează proiectul, adică veți vedea rezultatul
execuției programului creat
 Compile and Run - realizează compilarea și apoi rularea
programului. Este util când de dorește realizarea acestor
operații printr-un singur click
 Rebuild All - realizează procesul de build al programului
sau proiectului, adică va crea fișierele executabile
-9-
Programarea în limbajul C – Lucrări de laborator

 Syntax Check - verifică sintaxa dacă este corectă, în toate


fișierele proiectului deschis
 Syntax Check Current File - verifică sintaxa dacă este
corectă, doar în fișierul curent
 Parameters - setează parametrii command line pentru
program, care vor fi trimiși ca și intrare a programului
 Go to Breakpoint - merge la un anumit punct de oprire
(breakpoint) setat anterior și începe de acolo execuția pas
cu pas
 Toggle Breakpoint - activează sau dezactivează
breakpoint-uri
 Debug - pornește procesul de depanare (debugging) care
permite rularea pas cu pas a programului și descoperirea
erorilor

 Meniul Tools- conține următoarele opțiuni:


 Compiler Options - afișează opțiuni legate de compilator, cum
ar fi calea unde se găsesc librăriile, fișierele header, unde va
crea binarele (executabilele), etc.
 Environment Options - afișează opțiuni despre mediul de
programare, cum ar fi fontul și culorile folosite, anumite teme
predefinite, asocierile de fișiere (să deschidă fișierele cpp cu
Dev-C++), etc.
 Editor Options - afișează opțiuni despre editorul de cod,
cum ar fi indentări automate, completare automată de cod,
bucăți de cod reutilizabile, etc.
- 10 -
Programarea în limbajul C – Lucrări de laborator

 Package Manager - permite instalarea sau ștergerea de pachete


pentru Dev-C++ care sunt niște suplimente utile pentru mediul
de dezvoltare

1.2 Principiile limbajului C

Limbajul C este un limbaj structurat de nivel mediu ce permite


programarea la nivel scăzut, acces la reprezentarea binară a datelor, mare libertate
în lucrul cu memoria, fiind foarte folosit în programarea de sistem, interfața cu
hardware, producând un cod eficient (compact în dimensiune, rapid la rulare)
apropiat de eficiența limbajului de asamblare. De asemenea oferă tipuri de date
predefinite, operații și instrucțiuni simple fără facilitățile complexe ale limbajelor
de nivel foarte înalt, fiind slab tipizat (spre deosebire de limbajul PASCAL)

1.2.1 Componentele unui program C


Elementele individuale ale limbajului C nu sunt de sine stătătoare, ci în
conjuncţie unele cu altele. De aceea este necesar să înţelegem câteva aspecte
cheie ale limbajului C, înaintea examinării în detaliu a fiecărui element.
Funcţia main () este funcţia cu care începe execuţia programului. Deşi un
program C poate conţine mai multe funcţii, singura funcţie care trebuie neapărat
să existe este funcţia main ( ).
Toate programele C au anumite componente şi trăsături comune. Ele
conţin una sau mai multe funcţii, fiecare dintre ele având una sau mai multe
instrucţiuni. Toate instrucţiunile se termină cu ;.
C nu recunoaşte sfârşitul liniei ca terminator. Cea mai simplă formă de
definire a unei funcţii C este următoarea:
function_name ( )
{
- 11 -
Programarea în limbajul C – Lucrări de laborator

secvenţa instrucţiunilor
}

unde:
function_name - este numele funcţiei.
secvenţa instrucţiunilor - poate conţine una sau mai multe
instrucţiuni.
Un program C cuprinde:
 atomi lexicali (identificatori, constante (numerice, caracter, șir),
operatori, semne de punctuație) și
 separatori ( spații, comentarii, terminator de linie )
Atomii și separatorii se construiesc din simbolurile care constituie
alfabetul limbajului C. Simbolurile se codifică conform codului ASCII (
American Standard Code for Information Interchange), prin câte o configurație
de 8 biți (un octet), astfel rezultă că sunt 256 ( 0 - 255 ) de caractere în codul
ASCII.
Alfabetul limbajului C cuprinde simboluri grafice prezentate în Tabel 1-1
și simboluri fără corespondent grafic prezentate în Tabel 1-2 :

Cod ASCII
Categorie Membri
in zecimal in hexazecimal in octal
A --
ABC 65 41 101
...... Z Z -- 90 5A 132
Litere a-
ab - 97 61 141
c ...... z z --
122 7A 172
0 --
01
Cifre 48 30 060
2 ...... 9
9 -- 57 39 071

- 12 -
Programarea în limbajul C – Lucrări de laborator

Liniuța de
_ 95 5F 137
subliniere
Operatori !"#%&'()*+
și semne ,-./
de :;<=>?[]\^{
punctuație }|~
Tabel 1-1. Simboluri grafice

Secventa Cod ASCII


Simbol Semnificatie
escape in zecimal
SP avans cursor cu o pozitie - space 32
BEL semnal acustic - bell \a 7
revenire cursor cu o pozitie - \b 8
BS back space
FF salt la pagină nouă - form feed \f 12
NL avans cursor cu o linie - new line \n 10
revenire cursor la începutul
CR \r 13
liniei curente- carriage return
salt la următoarea poziție de
HT tabulare orizontală - horizontal \t 9
tab
salt la următoarea poziție de
VT \v 11
tabulare verticală - vertical tab
NULL caracter cu cod 0 0
Tabel 1-2. Simboluri fără corespondent grafic

OBSERVAŢIE: Limbajul C face deosebire între litere mari şi litere


mici.
O componentă comună celor mai multe programe C sunt fişierele header.
În C, informaţiile despre funcţiile din biblioteca standard se găsesc în diferitele
fişiere furnizate împreună cu compilatorul. Acestea au extensia .h. Aceste fişiere
- 13 -
Programarea în limbajul C – Lucrări de laborator

header pot fi adăugate programului folosind directiva preprocesor # include.


Fișierul <stdio.h> permite realizarea de operații de intrare/ieșire standard.
De exemplu:
# include <stdio.h>
Un exemplu de program C:
# include <stdio.h>
main ( )
{
printf ("Acesta este un scurt program C \n ");
}
unde:
printf( ) este funcţie de bibliotecă care afişează pe ecran caracterele care
sunt cuprinse între ghilimele.
Caracterul escape (\) indică faptul că funcția printf trebuie să afișeze un
caracter special. Caracterul \n este caracterul care realizeză trecerea la o linie
nouă.

1.2.2 Declararea variabilelor şi asignarea valorilor

O variabilă este o locaţie de memorie căreia i s-a atribuit un nume şi care


poate conţine diferite valori. Fiecare variabilă are un nume, tip, dimensiune și
valoare. În C, toate variabilele trebuiesc declarate înainte de utilizarea lor. Pentru
declararea unei variabile trebuie specificat tipul de date al acesteia. Limbajul C
oferă 5 tipuri de date predefinite, acestea sunt:
caracter - char
întreg - int
virgulă flotantă - float
dublă precizie - double

- 14 -
Programarea în limbajul C – Lucrări de laborator

vid - void

Pentru declararea unei variabile in limbajul C se foloseşte următoarea


sintaxă generală:
type var_nume;

unde: type - este tipul de dată C


var_nume - este numele variabilei

De exemplu:
int x, y; /*am declarat variabilele x şi y de tip întreg*/

Unei variabile i se poate atribui o valoare iniţială atunci când ea este


declarată. Acest proces se numeşte iniţializarea variabilei. Forma generală de
iniţializare a unei variabile este :
type var_nume = valoare;
unde : var_nume - este numele variabilei
type - tipul variabilei

De exemplu :
int min = 0, i, max = 100 ;

Când se declară o listă de variabile, una sau mai multe dintre ele pot fi
iniţializate. In procesul de iniţializare a variabilelor, în partea dreaptă a semnului
egal se pot folosi numai constante nu şi alte variabile.
Instrucţunile de forma:
var = var op expresie;

- 15 -
Programarea în limbajul C – Lucrări de laborator

pot fi scrise sub forma :


var op = expresie
iar op este unul din operatorii : +, -, * , /, <<, >>, &., |, ^

De exemplu :
int i = 10; / * iniţializăm variabila i * /
i += 6; /*este echiv. cu i = i + 6 */

Se poate asigna aceeaşi valoare mai multor variabile, folosind forma


generală :
var1 = var2 =....= var N = value;
De exemplu :
i=j=k=1;

Pentru atribuirea (asignarea) unei valori unei variabile declarate anterior


vom utiliza operatorul de atribuire =. Forma generală a unei instrucţiuni de
atribuire (asignare) denumită și instrucțiune expresie în limbajul C este:
var_nume = valoare;

În C, operaţia de asignare este o instrucţiune, deci ea trebuie terminată


prin ;. Un bloc de atribuire dintr-o schemă logică se codifică printr-o intrucțiune
expresie.
De exemplu:
x = 100; /*am atribuit lui x valoarea 100*/

In limbajul C pentru afișarea unor valori sau a unui șir constant vom
folosi funcţia printf( ). Aceasta permite afişarea valorilor de tip char, int, float

- 16 -
Programarea în limbajul C – Lucrări de laborator

sau double, utilizând specificatorii (descriptori) de format, prezentați în tabelul


Tabel 1-3. Dacă se doreşte afişarea unei valori de tip char, specificatorul de
format este %c, %f - pentru float şi double și %d - pentru întreg.

Descriptor Reprezentare
%c caracter
%d, %i întreg în zecimal
%u întreg în zecimal fără semn
%o întreg în octal
%x întreg în hexazecimal
%ld, %li, %lu, cu semnificațiile de mai sus,
%lo, %lx pentru întregi lungi
%f, %e float; pentru %e o cifră la partea
întreagă
%lf, %le double
%Lf, %Le long double

Tabel 1-3. Descriptori de format în limbajul C

De exemplu:
printf ("Afişăm numărul %d ", 99);
Instrucțiunea compusă (bloc) este necesară pe parcursul elaborării
programelor, când intervin situații în care codificarea necesită prezența mai
multor instrucțiunile iar acestea se intercaleaza între acolade, formând o
instrucțiune compusă (bloc).

Sintaxa generală:
{
declaratii_variabile_locale_blocului //opționale
instrucțiuni;

- 17 -
Programarea în limbajul C – Lucrări de laborator

}
Instrucțiunile unui bloc pot fi de orice tip, deci pot conține și alte
instrucțiuni bloc, astfel instrucțiunile bloc pot fi deci încuibate.
De exemplu:
{
int a=1,b;
a++;
b=a+1;
printf("%d\n",b);
}

1.2.3 Introducerea numerelor de la tastatură

Pentru introducerea valorilor numerice de la tastatură limbajul C permite


folosirea unei funcţii de bibliotecă C, numită scanf( ). Forma generală de apel a
acestei funcţii este:
scanf ("%specif_format", &var_nume);
unde:
- %specif_format este specificatorul de format, care determină cum va fi
tratat al doilea argument.
- &var_nume locația de memorie unde se stochează variabila

Specificatorii de format sunt similari cu cei folosiţi de printf() cu excepţia


faptului că pentru date de tip double se foloseşte specificatorul de format %lf.

1.2.4 Introducerea caracterelor

- 18 -
Programarea în limbajul C – Lucrări de laborator

Introducerea unui caracter de la tastatură se realizează prin apelul


funcţiei de bibliotecă getchar(). Funcţia returnează (citeşte) un singur caracter
tastat.
Exemplu:
# include <stdio.h>
main( )
{
char ch;
ch = getchar(); /*citeste un caracter */
printf ("A fost tastat caracterul : %c", ch);
}

In C, caracterele se reprezintă prin codul ASCII, deci codul fiecărei litere


fiind cu o unitate mai mare decât codul literei care o precede. ("a" < "b").

1.2.5 Operatorii aritmetici


Limbajul C defineşte 5 operatori aritmetici care vor fi prezentați în tabelul
Tabel 1-4 :

Operația C Operator aritmetic Expresia algebrică Expresie C

Adunare + f+7 f+7


Scadere - p-c p-c
Inmultire * bm b*m
Impartire / x/y x/y

Modulo % r mod s r%s

Tabel 1-4. Operatorii aritmetici în limbajul C

- 19 -
Programarea în limbajul C – Lucrări de laborator

Impărțirea a două numere întregi va avea ca și rezultat un număr întreg,


astfel uneori se trunchiază rezultatul. De exemplu: 7 / 5 rezultatul este 1.
Operatorul modulo (%) returnează restul împărțiri a două numere întregi.
De exemplu: 7 % 5 rezultatul este 2.
În limbajul C există reguli ale precedenței operatorilor aritmetici care sunt
utilizate în evaluarea expresiilor acestea fiind descrise în tabelul Tabel 1-5:

Operatori Operații Ordinea evaluării

() Parenteze Paranteza este cea mai prioritară și va fi


evaluată prima dată. Dacă parantezele
sunt imbricate, expresia cea mai din
interior este evaluată prima dată. Dacă
sunt mai multe perechi de paranteze “pe
același nivel” (neimbricate), sunt
evaluate de la stânga la dreapta.
*, /, sau Inmulțire, împărțire, rest Aceste operații sunt evaluate al doilea.
% Dacă sunt mai multe, sunt evaluate de la
stânga la dreapta.
+ sau - Adunare Operațiile sunt evaluate ultima dată.
Scadere Dacă sunt mai multe, sunt evaluate de la
stânga la dreapta.
Tabel 1-5. Precedența operatorilor aritmetici

Exemplu: Calcularea mediei artimetice a 3 variabile a, b și c se va scrie


în limbajul C astfel:
(a + b + c ) / 3; // varianta corectă
a + b + c / 3; //varianta greșită

1.2.6 Adăugarea comentariilor la un program

Comentariile sunt informații care sunt incluse în programul sursă pentru


o mai bună înțelegere a codului sursă. În C începutul unui comentariu este

- 20 -
Programarea în limbajul C – Lucrări de laborator

semnalat de perechea de caractere /*, iar la sfârşitul lui prin perechea de caractere
*/.
Exemplu: /* comentariu */
Deasemenea orice parte a unei linii precedată de caracterele // și incluzând
acestea, este un comentariu.
// Un exemplu de comentariu pe o linie in C

1.2.7 Funcţii care returnează valori

În C o funcţie poate returna o valoare funcției care a făcut apelarea. Forma


generală a funcţie care returnează valori este:
tip_returnat function_name (lista_param_formali);

unde: tip_returnat - este tipul valorii pe care o funcţie o returnează;


function_name - numele funcţiei;
lista_param_formali - este lista parametrilor formali

Este foarte important ca tipurile argumentelor unei funcţii să fie


compatibile cu tipul pe care aceasta le cere. O funcţie poate returna o valoare
funcției apelante folosind instrucţiunea return care are forma generală:
return value;
unde:
value - este valoarea ce trebuie returnată și are același tip cu tipul
returnat;

Exemple de funcţii de bibliotecă care returnează valori:


sqrt( ) - returnează rădăcina pătrată a argumentului;

- 21 -
Programarea în limbajul C – Lucrări de laborator

Exemplu 1.1: Să se scrie un program în limbajul C care realizează


adunarea, scăderea, înmulţirea şi împărţirea a două numere introduse de la
tastatură, utilizând pentru operațiile de intrare/ieșire funcțiile de bibliotecă din
limbajul C.
#include <stdio.h>

int main(void)
{
int x, y;

printf("Introduceti doua numere intregi :");


scanf("%d %d", &x, &y);
printf("Adunarea lui %d cu %d este : %d \n",x,y,x+y);
printf("Scaderea lui %d din %d este : %d \n",x,y,x-y);
printf("Inmultirea lui %d cu %d este : %d \n",x,y,x*y);
printf("Impartirea lui %d cu %d este : %d \n ",x,y,x/y);
return 0;
}
Rezultatul execuței programului este prezentat în următoarea figură
Figure 1-1:

- 22 -
Programarea în limbajul C – Lucrări de laborator

Figure 1-1. Rezultatul execuției programului din Exemplu 1.1

Să se editeze, compileze şi depaneze programul enunţat mai sus. De


asemenea să se încerce diferitele facilităţi ale mediului Dev-C++. Pentru detalii
despre modul de depanare consultați Anexa 13.3.

1.3 Operațiile de intrare/ieșire în C++

C++ oferă o modalitatea mai flexibilă de a lucra cu consola (tastatură și


ecran) prin utilizarea stream-urilor. Un stream este o secvență de date în care
caractere sunt scrise (inserate) sau din care caractere sunt citite (extrase).
• operatorul cin este utilizat pentru citirea de la tastatură (console input -
keyboard ~ stdin)
• operatorul cout este utilizat pentru tipărirea pe ecran (console output -
display ~ stdout)
Transferul informației este realizat utilizând operatorii >> pentru citire
(cin) și operatorul << pentru tipărire (cout). Sintaxa generală este:
cout<< var; //scrie var

- 23 -
Programarea în limbajul C – Lucrări de laborator

cin >> var; //citește var

Exemplu cu operații multiple:


cout << var1 << var2 … << varN;
cin >> var1 >> var2 …>>varN;

Pentru utilizarea operatorilor cin/cout trebuie inclus în programul sursă


fișierul header iostream și declarația spațiului de nume: using namespace std.

Exemplu 1.2: Să se scrie un program care citește de la tastatură un


caracter, un întreg și un real. Pentru citirea respectiv afișarea informațiilor se vor
utiliza operatorii cin și cout.

#include <iostream>
using namespace std;

int main(){
char ch;
int i;
double d;
cout << "Introduceti un caracter: ";
cin >> ch;
cout << "Introduceti doua numere, un intreg si un real:";
cin >> i >> d;
cout<< "Caracterul este " << ch << "\n";
cout << "Numarul intreg este: " << i << endl;
cout << "Numarul real este: " << d << endl;
return 0;
}

- 24 -
Programarea în limbajul C – Lucrări de laborator

Rezultatul execuței programului este prezentat în următoarea figură


Figure 1-2:

Figure 1-2. Rezultatul execuției programului din Exemplu 1.2

In primul laborator studenții se vor familiariza cu mediul Dev-C++, vor


implementa folosind scheme logice următoarele probleme, urmând apoi să le
implemeteze în limbajul C.

1.4 Probleme propuse:

1. Scrieţi un program C care afişează rădăcina pătrată a numărului


introdus de la tastatură.
2. Scrieţi un program C care afişează pătratul numărului introdus de la
tastatură.
3. Scrieţi un program care să ceară utilizatorului să tasteze un număr
reprezentând dolari şi afişează valoarea în lei (mizaţi pe o rată de schimb de 3,68
lei).
4. Scrieţi un program care calculează pătratul sumei și pătratul diferenței
a trei numere întregi întroduse de la tastatură.

- 25 -
Programarea în limbajul C – Lucrări de laborator

5. Scrieţi un program care citeşte de la tastatură trei numere şi verifică


dacă cele trei numere formează un triunghi. În caz afirmativ verifică ce fel de
triunghi formează, altfel afişează un mesaj de eroare.
6. Să se scrie un program C care afişează tripletele de numere pitagoreice
(i, j, k), 1 < i < j < k <= N cu N introdus de la tastatură.
Observaţie: Numerele pitagoreice satisfac relaţia :
k2= i2 + j2.
7. Să se scrie un program C care afişează toate numerele mai mici decât
un număr dat N. N se citeşte de la tastatură.
8. Scrieţi un program care citeşte de la tastatură un an calendaristic şi
verifică dacă este bisect sau nu. Un an este bisect dacă este divizibil cu 4 și nu
este divizibil cu 100, sau este divizibil cu 400.
9. Scrieţi un program care citeşte de la tastatură doi ani calendaristici și
calculează diferența dintre cei doi ani în număr de ani, luni și zile.
10. Un autovehicul se deplasează cu o viteză medie de 70 Km/h. Calculați
timpul în ore necesar autovehicului pentru parcurgerea distanței d, citită de la
tastatură.

- 26 -

S-ar putea să vă placă și