Documente online.
Zona de administrare documente. Fisierele tale
Am uitat parola x Creaza cont nou
 HomeExploreaza
upload
Upload




CONSTRUCTIILE DE BAZA ALE LIMBAJULUI C

c


CONSTRUCŢIILE DE BAZĂ ALE LIMBAJULUI C

1.3.1. Caractere

Limbajul C foloseste setul de caractere al codului ASCII care se codifica prin numere întregi din intervalul [0,127], adica 128 de coduri. Un astfel de întreg se pastreaza pe un BYTE (OCTET) adica pe 8 biti.



Multimea caracterelor se împarte în trei grupe:

- caractere negrafice (coduri cuprinse între 00=NUL si 31) si 127=DEL;

- spatiu (codul 32);

- caractere grafice (coduri cuprinse între 33 si 126).

Caracterele grafice se împart la rândul lor în:

litere mari (coduri între 65 si 90);

litere mici (coduri între 97 si 122);

cifre (coduri între 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 în coloana 1, iar codul 13 semnifica CR (Carriage Return) adica deplaseaza cursorul în coloana 1 aceeaş 454h71e ;i linie. În 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).

1.3.2. Nume

În limbajul C, un nume este o succesiune de litere si eventual cifre, care începe cu o litera. Ca lungime un nume poate fi oricât de lung dar numai primele 32 de caractere se iau în considerare. Folosind notatia BNF (vezi anexa) un nume se poate defini recursiv, ca mai jos:

<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 câteva contraxemple:

&B - contine caracterul &;

x+y - contine caracterul +;

1.3.3. Cuvinte cheie

Un cuvânt cheie este un cuvânt împrumutat din limba engleza, care are un înteles predefinit. Aceste cuvinte se scriu cu litere mici. Un cuvânt cheie nu poate avea alta utilizare într-un program C decât cea care i-a fost predefinita. Fiind o succesiune de litere, un cuvânt cheie este un nume. Lista cuvintelor cheie se da în anexa de la sfârsitul cartii. Sensul fiecarui cuvânt cheie va rezulta la definirea constructiei în care se utilizeaza.

Exemple:

for, do, if, while, else, break, return, int, long, double, static, extern.

1.3.4. Tipuri de baza

În limbajul C distingem câteva tipuri predefinte de date care se mai numesc tipuri de baza. În 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).

În tabelul de mai jos dam cuvântul cheie, multimea valorilor, reprezentarea interna.

Reprezentarea interna

Cuvânt cheie Multimea valorilor Lungime (biti) Formatul intern

int întregii din [-215; 215-1] 16 reprezentare binara

short întregii din [-215; 215-1] 16 reprezentare binara

long întregii din [-231; 231 - 1] 32 reprezentare binara

unsigned întregii 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 întregii fara semn în dubla precizie.

Cu tipurile de baza se pot defini si tipuri utilizator folosind instructiunea struct.

1.3.5. Constante

O constanta are un tip si o valoare. Atât tipul cât si valoarea unei constante se definesc prin caracterele care compun constanta respectiva.

Constanta întreaga zecimala

O constanta întreaga este un sir de cifre care eventual este prefixat de un semn (+ sau -) si postfixat de litera L sau l. O constanta întreaga se reprezinta în binar pe 16 sau 32 de biti. Sufixul L sau l forteaza reprezentarea pe 32 de biti.

Constanta întreaga octala

O constanta întreaga octala este un sir de cifre octale (cifre cuprinse între 0 si 7) precedat de un zero nesemnificativ.

Constanta întreaga hexazecimala

O constanta întreaga hexazecimala este un sir de cifre hexazecimale prefixat cu 0x sau 0X.

Exemple:

Reprezentare Interpretare

întreg zecimal reprezentat în binar pe 16 biti

întreg zecimal reprezentat în binar pe 16 biti

12345L     întreg zecimal reprezentat în binar pe 32 biti

întreg octal reprezentat în binar pe 16 biti (o cifra octala pe 3 biti)

0xabcd     întreg hexa reprezentat în binar pe 16 biti (o cifra pe 4 biti)

12345678 întreg 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 întreaga 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 întregi si a exponentului.

Partea întreaga 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 în 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 incluzând caracterul respectiv între 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 în 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:

"123"; "Limbajul C"; "sir de caractere"; "sir\""; ""(sirul vid).

Constanta sir de caractere se reprezinta în memoria calculatorului printr-o succesiune de octeti în care se pastreaza codurile ASCII ale caracterelor sirului, iar ultimul octet contine caracterul NUL care marcheaza sfârsitul 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.

1.3.6. Variabile simple

Prin variabila întelegem o data a carei valoare se poate schimba în 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 în 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.

În limbajul C trebuie declarate toate variabilele înainte 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 octeti poate contine coduri ASCII;

long i,j,k; // i, j, k sunt variabile de tip long in format binar pe 32 de biti.

Tablouri

Un tablou ca orice variabila simpla trebuie declarat înainte 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 în forma cea mai simpla este:

tip nume[l1][l2]...[ln];

unde:

l1, l2, ... ln sunt expresii constante care au valori întregi ce pot fi evaluate de compilator la întâlnirea lor.

Evident ca se pot declara mai multe tablouri deodata si atunci numele de tablouri se pot însirui într-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 în paranteze drepte. Numarul indicilor defineste dimensiunea tabloului. Indicii sunt expresii care au valori întregi. Limita inferioara a indicilor este zero. Astfel daca t este tabloul de tip int în exemplul de mai sus, elementele lui sunt:

t[0], t[1], t[2], t[3], t[4].

În 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 între 0 si lk-1.

Repartizarea memoriei pentru un tablou se face astfel: pentru fiecare element al tabloului se repartizeaza o zona de memorie necesara în conformitate cu tipul tabloului respectiv (pentru tipul int câte 2 octeti, pentru tipul float câte 4 octeti, etc). Numele unui tablou este un pointer, el poate fi utilizat în diferite constructii si el are ca valoare adresa primului sau element.

În desenul urmator se indica repartizarea memoriei pentru tabloul t din exemplul de mai înainte:

t

adresa lui

t[0]

t[0] t[1] t[2] t[3] t[4]


Comentariu

În limbajul C un comentariu se scrie între /* si */ pe oricâte rânduri. între /* si */ se poate scrie o succesiune arbitrara de caractere, care însa nu poate sa contina secventa de terminare (adica */). Comentariul poate fi inserat într-un program în orice pozitie în care este legal sa apara un caracter alb. El constituie o explicatie pentru programator sau pentru utilizator. Compilatorul nu interpreteaza comentariul în nici un mod. Comentariul se recomanda a fi inserat în punctele în care programatorul poate lamuri prin explicatii, anumite aspecte ale procesului de calcul sau ale datelor utilizate. În mediile BORLAND C exista si o alta conventie de a marca un comentariu la nivelul unui rând cu ajutorul a doua caractere slash (//), conventie pe care am folosit-o de altfel în exemplele anterioare.



Document Info


Accesari: 1631
Apreciat: hand-up

Comenteaza documentul:

Nu esti inregistrat
Trebuie sa fii utilizator inregistrat pentru a putea comenta


Creaza cont nou

A fost util?

Daca documentul a fost util si crezi ca merita
sa adaugi un link catre el la tine in site


in pagina web a site-ului tau.




eCoduri.com - coduri postale, contabile, CAEN sau bancare

Politica de confidentialitate | Termenii si conditii de utilizare




Copyright © Contact (SCRIGROUP Int. 2024 )