CATEGORII DOCUMENTE |
Limbajul C foloseste setul de caractere al codului ASCII care se codifica prin numere intregi din intervalul [0,127], adica 128 de coduri. Un astfel de intreg se pastreaza pe un BYTE (OCTET) adica pe 8 biti.
Multimea caracterelor se imparte in trei grupe:
caractere negrafice (coduri cuprinse intre 00=NUL si 31 precum si 127=DEL);
spatiu (codul 32);
caractere grafice (coduri cuprinse intre 33 si 126).
Caracterele grafice se impart la randul lor in:
litere mari (coduri intre 65 si 90);
litere mici (coduri intre 97 si 122);
cifre (coduri intre 48 si 59);
caractere speciale (celelalte coduri).
Caracterele negrafice au diferite functii. Astfel codul 10 semnifica LF (Line Feed), adica deplaseaza cursorul pe linia urmatoare in coloana 1, iar codul 13 semnifica CR (Carriage Return) adica deplaseaza cursorul in coloana 1 aceeasi linie. In limbajul C combinatia celor doua caractere se noteaza prin:
n
si are semnificatia trecerii cursorului la linie noua si coloana 1 (newline).
Tabulatorul orizontal (deplasarea cursorului peste un anumit numar de pozitii) se precizeaza prin notatia:
t
Sa mai precizam ca urmatoarele 3 caractere: spatiu, newline si tabulator orizontal se mai numesc spatii albe (white spaces).
In limbajul C, un nume este o succesiune de litere si eventual cifre, care incepe cu o litera, deci un nume este un identificator. Ca lungime un nume poate fi oricat de lung dar numai primele 32 de caractere se iau in considerare. Folosind notatia BNF (vezi anexa) un nume se poate defini recursiv, astfel:
<nume> :: = <litera> | <nume><litera> | <nume><cifra>
<litera> :: = A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Z|
a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|z|_
<cifra> :: = 0|1|2|3|4|5|6|7|8|9|
Numele se folosesc pentru denumirea variabilelor, tablourilor, functiilor, etc.
Exemple:
A, _start, a_, matrice, matrice_patratica.
Dam si cateva contraxemple:
&B - contine caracterul &;
x+y - contine caracterul +;
Un cuvant cheie este un cuvant imprumutat din limba engleza, care are un inteles predefinit. Aceste cuvinte se scriu cu litere mici. Un cuvant cheie nu poate avea alta utilizare intr-un program C decat cea care i-a fost predefinita. Fiind o succesiune de litere, un cuvant cheie este un nume. Lista cuvintelor cheie se da in anexa de la sfarsitul cartii. Sensul fiecarui cuvant cheie va rezulta la definirea constructiei in care se utilizeaza.
Exemple:
for, do, if, while, else, break, return, int, long, double, static, extern.
In limbajul C distingem cateva tipuri predefinte de date care se mai numesc tipuri de baza. In general un tip de data are trei atribute bine conturate:
multimea valorilor;
reprezentarea (interna si externa);
comportamentul (adica operatiile ce se pot face cu acel tip).
In tabelul de mai jos dam cuvantul cheie, multimea valorilor, reprezentarea interna.
Reprezentarea interna
Cuvant cheie Multimea valorilor Lungime (biti) Formatul intern
int intregii din [-215; 215-1] 16 reprezentare binara
short intregii din [-215; 215-1] 16 reprezentare binara
long intregii din [-231; 231 - 1] 32 reprezentare binara
unsigned intregii din [0; 216-1] 16 reprezentare binara
char 8 cod ASCII
float [-3.4*10-38; 3.4*1038] 32 virgula flotanta simpla precizie
double [-1.7*10-308; 1.7*10308] 64 virgula flotanta dubla precizie
Facem precizarea ca se poate folosi si combinatia unsigned long pentru intregii fara semn in dubla precizie.
Cu tipurile de baza se pot defini si tipuri utilizator folosind instructiunea struct.
O constanta are un tip si o valoare. Atat tipul cat si valoarea unei constante se definesc prin caracterele care compun constanta respectiva.
Constanta intreaga zecimala
O constanta intreaga este un sir de cifre care eventual este prefixat de un semn (+ sau -) si postfixat de litera L sau l. O constanta intreaga se reprezinta in binar pe 16 sau 32 de biti. Sufixul L sau l forteaza reprezentarea pe 32 de biti.
Constanta intreaga octala
O constanta intreaga octala este un sir de cifre octale (cifre cuprinse intre 0 si 7) precedat de un zero nesemnificativ.
Constanta intreaga hexazecimala
intreg zecimal reprezentat in binar pe 16 biti
intreg zecimal reprezentat in binar pe 16 biti
12345L intreg zecimal reprezentat in binar pe 32 biti
intreg octal reprezentat in binar pe 16 biti (o cifra octala pe 3 biti)
0xabcd intreg hexa reprezentat in binar pe 16 biti (o cifra pe 4 biti)
intreg zecimal reprezentat pe 32 de biti
Constanta flotanta
O constanta flotanta este un numar rational care se compune din urmatoarele elemente:
un semn (+ sau -) care poate lipsi pentru numerele pozitive;
o parte intreaga care poate fi si vida;
o parte fractionara care poate fi si vida;
un exponent care poate fi si vid.
Prezenta partii fractionare este suficienta pentru ca numarul respectiv sa reprezinte o constanta flotanta. Absenta partii fractionare implica prezenta partii intregi si a exponentului.
Partea intreaga reprezinta o succesiune de cifre zecimale. Partea fractionara se compune din caracterul punct urmat de o succesiune de cifre zecimale, care poate fi si vida. Exponentul se compune din litera e sau E urmata de un + sau -, optional, si un sir de cifre zecimale.
Constantele flotante se pastreaza in format flotant dubla precizie.
Exemple:
3.14; 0.314e1; 3.1415926; 2.71828; 2.; 271828E-5.
Constanta caracter
O constanta caracter reprezinta un caracter si are ca valoare codul ASCII al caracterului respectiv. O constanta caracter grafic se poate scrie incluzand caracterul respectiv intre caractere apostrof.
Exemple:
Constanta caracter valoare cod ASCII
'A' 65
'B' 66
'a' 97
48
58
77
Anumite caractere negrafice au notatii speciale la scrierea carora se utilizeaza caracterul backslash (). Dam in continuare un tabel cu cele mai folosite caractere negrafice:
Caracter Reprezentare ca si constanta caracter Valoare cod ASCII
Backspace 'b' 8
Retur de car 'r' 13
Newline 'n' 10
Apostrof ''' 39
Backslash '' 92
Tabulator vertical 'v' 11
Salt pagina imprimanta 'f' 12
Carcterul NUL '0' 0
Constanta sir de caractere
O constanta sir de caractere este o succesiune de zero sau mai multe caractere delimitate prin ghilimele. Ghilimelele nu fac parte din sirul de caractere.
Exemple:
"Limbajul C"; "sir de caractere"; "sir""; ""(sirul vid).
Constanta sir de caractere se reprezinta in memoria calculatorului printr-o succesiune de octeti in care se pastreaza codurile ASCII ale caracterelor sirului, iar ultimul octet contine caracterul NUL care marcheaza sfarsitul sirului de caractere.
Dupa cum se observa din exemplele date putem sa folosim si conventia cu backslash.
De retinut ca 'X' si "X" reprezinta constructii diferite.
Prin variabila intelegem o data a carei valoare se poate schimba in timpul executiei programului care o contine. Unei variabile i se ataseaza un nume prin intermediul caruia o putem referi sau modifica. Totodata valorile pe care le poate lua o variabila trebuie sa apartina aceluiasi tip. Corespondenta dintre numele si tipul unei variabile se realizeaza printr-o constructie speciala numita declaratie.
Dupa modul de grupare datele sunt:
date izolate denumite si variabile simple;
date grupate
- multimi ordonate de date de acelasi tip la care ne referim cu indici,
- structuri in care date de tipuri diferite se grupeaza.
Declaratia de variabila simpla are formatul general:
tip lista_de_nume;
unde lista_de_nume este formata fie dintr-un singur nume fie din mai multe, separate prin virgule.
In limbajul C trebuie declarate toate variabilele inainte de a fi utilizate.
Exemple:
int a,b,c; // a, b, c sunt variabile de tip int reprezentate in binar pe 2 octeti;
float x,y,z; // x, y, z sunt variabile de tip float in format flotant simpla precizie pe 32 de biti;
char car; // car este o variabila de tip char pe 1 octet, poate contine coduri ASCII;
long i,j,k; // i, j, k sunt variabile de tip long in format binar pe 32 de biti.
Un tablou ca orice variabila simpla trebuie declarat inainte de a fi utilizat. Daca referirea la elementele tabloului se face cu un singur indice se spune ca tabloul este unidimensional (se mai numeste vector); daca referirea se face cu doi indici tabloul se numeste bidimensional (matrice); iar cu n indici tabloul este n-dimensional.
Declaratia unui tablou in forma cea mai simpla este:
tip nume[l1][l2][ln];
unde:
l1, l2, ln sunt expresii constante care au valori intregi ce pot fi evaluate de compilator la intalnirea lor.
Evident ca se pot declara mai multe tablouri deodata si atunci numele de tablouri se pot insirui intr-o lista, fiecare separat prin virgula.
Exemple:
int t[5]; // s-a declarat un tablou unidimensional de 5 componente;
float a[5][3]; // s-a declarat un tablou bidimensional de 5*3=15 componente;
La elementele unui tablou ne referim prin variabile cu indici. O variabila cu indici se compune din numele tabloului urmat de unul sau mai multi indici, fiecare indice fiind inclus in paranteze drepte. Numarul indicilor defineste dimensiunea tabloului. Indicii sunt expresii care au valori intregi. Limita inferioara a indicilor este zero. Astfel daca t este tabloul de tip int in exemplul de mai sus, elementele lui sunt:
t[0], t[1], t[2], t[3], t[4].
In cazul matricii a declarate mai sus elementele ei vor fi:
prima linie: a[0][0], a[0][1], a[0][2];
a doua linie: a[1][0], a[1][1], a[1][2];
a cincea linie: a[4][0], a[4][1], a[4][2];
Deci pentru dimensiunea k indicele variaza intre 0 si lk-1.
Repartizarea memoriei pentru un tablou se face astfel: pentru fiecare element al tabloului se repartizeaza o zona de memorie necesara in conformitate cu tipul tabloului respectiv (pentru tipul int cate 2 octeti, pentru tipul float cate 4 octeti, etc). Numele unui tablou este un pointer, el poate fi utilizat in diferite constructii si el are ca valoare adresa primului sau element.
In desenul urmator se indica repartizarea memoriei pentru tabloul t din exemplul de mai inainte:
t
adresa lui
t[0]
t[0] t[1] t[2] t[3] t[4]
In limbajul C un comentariu se scrie intre /* si */ pe oricate randuri. intre /* si */ se poate scrie o succesiune arbitrara de caractere, care insa nu poate sa contina secventa de terminare (adica */). Comentariul poate fi inserat intr-un program in orice pozitie in care este legal sa apara un caracter alb. El constituie o explicatie pentru programator sau pentru utilizator. Compilatorul nu interpreteaza comentariul in nici un mod. Comentariul se recomanda a fi inserat in punctele in care programatorul poate lamuri prin explicatii, anumite aspecte ale procesului de calcul sau ale datelor utilizate. In mediile BORLAND C exista si o alta conventie de a marca un comentariu la nivelul unui rand cu ajutorul a doua caractere slash (//), conventie pe care am folosit-o de altfel in exemplele anterioare.
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 1105
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved