Transcript Limbajul C

Limbajul C++
1. Obiectivul disciplinei
Prezentarea, cunoaşterea şi însuşirea
elementelor de bază ale limbajului C.
Rezolvarea unor probleme şi programarea unor
algoritmi în C/C++.
3. Programa analitică a cursului
1. Limbajul C / C++. Prezentare generală
2. Tipuri de date, constante, variabile
3. Operatori şi expresii
4. Instrucţiunile limbajului C
5. Scrierea programelor în limbajul C
6. Funcţii din bibliotecă şi funcţii definite de utilizator
7. Tablouri.Transferul tablourilor către funcţii
8. Pointeri
9. Pointeri la funcţii. Funcţii recursive
10.Alocare dinamică
11.Structuri şi uniuni
12.Fişiere
13.Funcţii de transfer cu format în fişiere
14.Funcţii video
4. Bibliografie
1. Costea Damian, Iniţiere în limbajul C, Editura Teora,
Bucureşti, 1996.
2. Catrina Octavian, Cojocaru Iuliana, Calculatoare Personale.
Turbo C++, Editura Teora, Bucureşti, 1993.
3. Păun Viorel, Algoritmică şi Programarea Calculatoarelor,
Limbajul C++, Editura Universităţii din Piteşti, 2003
4. Negrescu Liviu, Limbajul C şi C++, Editura Albastră,
Cluj Napoca, 2002.
5. Barbu Gh., Păun Viorel, Calculatoare Personale şi
Programarea în limbajul C/C++.
Limbajul C
Crearea limbajului C a început prin anii ‘ 70 de către Dennis Ritchie pe baza unor preocupări
anterioare ale altor specialşti.
În anul 1978, Brian Kernigan şi Denis Ritchie de la Bell Laboratories, New Jersey-SUA, publică
“The C Programming Language” în care este descrisă o variantă clasică a limbajului C, folosind
un sistem de operare UNIX.
În anul 1983, un comitet ANSI ( American National Standard Institute) a îceput redactarea
limbajului C standard, finalizat în anul 1990.
Firma Borland a elaborat diverse versiuni Turbo C, Turbo C++ etc.
Limbajul C a avut un succes deosebit în rândul programatorilor.
Numărul mare de aplicaţii realizate în limbajul C confirmă faptul că la ora actuală este cel mai
răspândit limbaj de programare.
Limbajul C s-a născut ca o alternativă pentru limbajele de asamblare, fiind utilizat pentru scrierea
unor sisteme de operare, compilatoare, editoare de texte etc, dar, în acelaşi timp este un limbaj
de nivel înalt, folosit pentru aplicaţii din cele mai diverse domenii.
În condiţiile perfecţionării tehnicii de programare pe obiecte ( Object Oriented Programming ), pe
baza limbajului C, la sfârşitul anilor ‘80 a fost creat C++, ca o dezvoltare a acestuia.
Primul plus simbolizează completările aduse limbajului C, dăndu-i mai multă flexibilitate, eficienţă
şi rigurozitate.
Al doilea plus se referă la acea dezvoltare care pune la dispoziţia
programatorului tehnica programării orientată pe obiecte.
Programarea orientată spre obiecte se bazează pe noţiunea de
obiect, care reprezintă un ansamblu format dintr-o structură de
date şi metode ( funcţii ) de operare cu aceste date.
Limbajul C este conceput pe principiul programării structurate.
Iniţial, limbjul C a fost utilizat pentru a substitui limbajul de
asamblare în aplicaţii mai ample, de la sisteme de operare şi
compilatoare până la cele mai diverse aplicaţii.
De exemplu, sistemul de operare UNIX este scris aproape în
totalitate în C.
Caracterul sau universal constă în îmbinarea elementelor de
limbaj de nivel înalt, cu o serie de operaţii tipice limbajelor de
asamblare.
Setul de instrucţiuni şi de date este similar cu cel din limbajul
PASCAL.
Prin comparaţie, setul de instrucţiuni C este mult mai complet
decât cel al limbajului Pascal.
Posibilităţile de lucru cu adrese de date şi de funcţii ( pointeri ),
inclusiv efectuarea de operaţii aritmetice şi comparaţii,
posibilitatea de a efectua operaţii la nivel de bit, apropie limbajul
C de limbajele de asamblare. Acestea oferă posibilitatea
utilizatorului să lucreze cu elementele hardware ale
calculatorului.
Prezentarea limbajului C
•
•
Program : text ce specifică acţiuni care vor fi executate de un procesor.
Limbajul de programare are vocabular şi reguli de sintaxă.
- Vocabularul este format din unităţi lexicale : cele mai simple elemente cu semnificaţie
lingvistică.
- Sintaxa : ansamblu de reguli pe baza cărora se combină elementele vocabularului( unităţile
lexicale ) pentru a obţine fraze corecte ( instrucţiuni, secvenţe de instrucţiuni, declarare de
variabile etc ).
Elementele vocabularului sunt alcătuite din caractere.
Orice caracter este reprezentat în calculator în codul ASCII ( American Standard Code for
Information Interchange ), printr-un număr natural unic, cuprins între 0 şi 255 .
Caracterele sunt simboluri grupate în litere, cifre şi semne speciale, astfel :
- literele mari ale alfabetului englez cu codurile [65,90] A,B,...,X,Y,Z
- literele mici ale alfabetului englez cu codurile [97,122] a,b,...,x,y,z
- cifrele bazei zece, care au codurile in [ 48,57] 0,1,2,...,9
- liniuţa de subliniere _
- semne de punctuaţie şi semne speciale : , . : ? ‘ ( ) [ ] { } < > ! | \ / ~ # & ^ + - * %
Unităţile lexicale ale limbajului C sunt : identificatori, cuvinte cheie, semne de punctuaţie şi semne
speciale, comentarii, constante, operatori.
Identificator : succesiune de litere, cifre, liniute de subliniere, primul caracter din
secvenţă fiind obligatoriu o literă sau o liniuţă de subliniere. Lungimea maximă a
unui identificator poate fi de 32 caractere sau mai mare - depinde de calculator.
Identificatorii sunt nume date de utilizator constantelor, variabilelor, tipurilor de date,
funcţiilor etc.
Identificatorii trebuie să difere de cuvintele cheie. În limbajul C se face deosebire
între literele mari şi literele mici ale alfabetului. Ca identificatori se preferă folosirea
unor nume care să sugereze semnificaţia mărimilor pe care le desemnează,
contribuind la creşterea clarităţii programului.
Exemple : a, x1, program_1, t72, y34hv1, _ut2, 3ab, x..y, m&n .
Cuvinte cheie ( keywords ) cuvinte rezervate care au semnificaţia predefinită, fiind
utilizate pentru declaraţii de tipuri de date, instrucţiuni etc. În general, nu se
redefinesc pentru a li se da o altă utilizare.
Exemple : auto, break, char, do, else, for, goto, int, long, main, printf, return, short,
typedef, union, while etc.
Constante : construcţii ale căror valori nu se schimbă in timpul execuţiei unui
program. Ele pot fi numere, caractere, şiruri de caractere.
Comentariile : explicaţii in limbaj obişnuit, contribuind la mărirea clarităţii
programului. Comentariile sunt semnificative numai pentru utilizator, fiind ignorate
de compilator. Un comentariu începe cu / * si se termină cu */ .
Tipuri de date, constante, variabile
Tipul unei date determină :
- spaţiul de memorie ocupat
- modul de reprezentare internă
- domeniul de valori
- timpul de viaţă asociat datei
- operatori utilizaţi şi restricţii în folosirea acestora
Limbajul C lucrează cu valori care pot fi stocate în constante sau variabile.
Constantele stochează valori nemodificabile pe parcursul execuţiei programului.
Variabilele sunt mărimi care îşi modifică valoarea în timpul execuţiei programului.
Fiecărei variabile i se asociază un nume ( un identificator ) prin intermediul căruia putem referi sau
modifica valoarea variabilei respective, şi un tip.
Corespondenţa între numele şi tipul variabilei se realizează printr-o declaraţie. Toate variabilele
utilizate într-un program trebuie declarate înaintea utilizării lor.
O declaraţie de variabilă are următoarea sintaxă :
< tip > < lista de variabile >
unde lista conţine unul sau mai multe nume de variabile despărţite prin virgule.
Tipurile de date utilizate de limbajul C se clasifică astfel
- tipuri fundamentale
- aritmetice
- caracter
- întregi
- reale
- dublă precizie
- tip void
- tipuri derivate
- tablouri
- pointeri
- structuri
- uniuni
- enumerări
- tip definit de utilizator
Tipurile fundamentale se mai numesc scalare, predefinite, simple sau de bază.
Tipuri fundamentale :
Tipul caracter, desemnat prin cuvântul cheie char, i se alocă o zonă de memorie de un
octet.
Exemplu : char c1, c_2, litera;
Tipul întreg, desemnat prin cuvântul cheie short, ceea ce înseamnă o reprezentare în
memorie pe 2 octeţi sau int, ceea ce înseamnă o reprezentare în memorie pe 4 octeţi.
Exemplu : short n;
int k, l;
Tipul real, desemnat prin cuvântul cheie float, alocă o zonă de memorie de 4 octeţi.
Exemplu : float x1, y;
Tipul real dublă precizie, desemnat prin cuvântul cheie double i se alocă 8 octeţi sau
cuvântul cheie long double şi i se alocă 10 octeţi.
Exemplu : double t;
long double u, v;
Observaţie. Domeniul de valori poate fi modificat utilizând modificatorii de tip, astfel :
signed, unsined, short ş long se pot aplica tipului int ; signed si unsigned se pot aplica
tipului char.
Tipuri derivate
Tipul tablou, reprezintă un tip stucturat de date ce ocupă o zonă continuă de memorie. Se
utilizează pentru declararea variabilelor cu indici.
tip nume [dim1][dim2]…[dimn];
unde tip este unul fundamental, nume este un identificator care defineşte numele tabloului,
iar dim1, dim2, …, dimn sunt numere întregi pozitive care exprimă dimensiunea tabloului.
Exemplu : int v [10];
float a[10][10];
Tipul pointer se utilizează pentru a păstra adresa unei date în loc de a memora data însăşi.
Constante
Constantele se clasifică astfel :
- caracter, întregi, reale corepunzătoare tipurilor de bază
- tablou, pointer, structură, uniune corspunzătoare tipurilor
derivate.
Constante întregi - formate dintr-un şir de cifre precedat eventual de
semn.
O constantă întreagă se reprezintă în cod complementar faţă de 2
pe 16 sau 32 de biţi.
Constantele întregi pot fi exprimate în bazele 8,10,16.
Constantele în baza 8 au întotdeauna prima cifră 0, cele în baza 10
au prima cifră diferită de zero, iar cele în baza 16 au prefixul 0x
sau 0X .
Exemple :
0177 este în baza opt şi are valoarea 87.
87 este în baza zece.
0x57 este în baza şsisprezece şi are valoarea 87.
Tipul unei constante întregi poate fi precizat prin adăugarea sufixului
u sau U pentru tipul unsigned sau l, L pentru tipul long.
Constante caracter – reprezentate de unul sau mai multe caractere
încadrate între apostrofuri.
Constantele caracter sunt de tip întreg şi sunt reprezentate intern pe
16 biţi, având ca valoare codul ASCII al caracterului respectiv.
Exemplu ‘ A ‘, ‘ t ‘, ‘ 8 ‘.
Constante reale , se utilizează pentru reprezentarea
numerelor raţionale. Reprezentarea se face in virgulă
mobilă, având semn, parte întreagă, parte fracţionară şi
un exponent reprezentat prin litera e sau E urmat de un
număr întreg pozitiv sau negativ.
Exemplu 247.52
25e8
-0.3669
-3.64E7
Constante şir de caractere, reprezentate prin şiruri de
caractere încadrate de ghilimele. Ghilimelele nu fac parte
din şirul de caractere.
Şirurile de caractere se memorează în tablouri de tipul
char cu dimensiunea egală cu numărul caracterelor din
şir, la care se adaugă terminatorul de şir ‘\0’.
Exemplu ‘A’ şi “ A” sunt construcţii diferite. ‘A ‘ se
reprezintă pe un octet şi conţine valoarea codului ASCII a
lui A, iar “A” se reprezintă pe doi octeţi împreună cu
caracterul NULL.