Sunteți pe pagina 1din 5

9/29/2016 Elementele de baza ale Limbajului C

 
<<Pagina Materiale

  
 
 Elementele de baza ale limbajului C 

Istoricul limbajului C
Caracteristicile limbajului C
Alfabetul limbajului C
Atomii lexicali
Exercitii

Inainte de prezentarea sintaxei si structurii limbajului C, apar in continuare, pe scurt,
istoricul si caracteristicile limbajului C.

C este un limbaj de baza pentru programatorii profesionisti. Are caracteristicile
limbajelor de nivel inalt ( de exemplu PASCAL ), fiind insa mult mai flexibil, aspect care
poate fi exploatat de programatorii experimentati ( uneori programele in C pot parea de
nedescifrat ­ vezi programul mystery ). 

Invatarea limbajului C permite trecerea la limbajele orientate pe obiecte care il au ca
baza: C++ si Java. Nu toti guru din programare sunt de aceeasi parere; de exemplu, cel
mai cunoscut autor de carti de C/C++, Herbert Schildt ( presedintele companiei
Universal Computing Laboratories, Illinois si membru al comitetului de standardizare
ANSI C++ ) spune ca pentru a stapani C++, trebuie sa inveti inainte C, pe cand Bjarne
Stroustrup, creatorul limbajului C++, sugereaza ca este bine sa se studieze direct C++.

 Istoricul
limbajului C

proiectat si implementat de Dennis Ritchie in 1972 la AT&T Bell Laboratories,
pentru programe de sistem ( care pana atunci erau dezvoltate doar in limbaje de
asamblare ); C­ul este un succesor al limbajului B, creat de Ben Thompson
in 1973, sistemul de operare UNIX este in totalitate scris in C
cartea de referinta care defineste un standard minim: Brian W. Kernighan, Dennis
Ritchie ­ "The C Programming Language" ­ Prentice Hall 1978
a fost dezvoltat un standard international ( intre 1983­1989 ) ­­ ANSI C (ANSI ­
American National Standards Institute)
sunt dezvoltate medii de programare C performante sub UNIX si DOS, care
contribuie la utilizarea masiva a limbajului.

 Caracteristicile
limbajului 

Caracteristicile limbajului C, care i­au determinat popularitatea, sunt prezentate pe scurt
mai jos si vor fi analizate pe parcursul cursului:

limbaj de nivel mediu, portabil, structurat, flexibil
produce programe eficiente ( lungimea codului scazuta, viteza de executie mare )
de dimensiune relativ scazuta
set bogat de operatori
multiple facilitati de reprezentare si prelucrare a datelor
utilizare extensiva a apelurilor de functii si a pointerilor
verificare mai scazuta a tipurilor ­­ loose typing ­­ spre deosebire de PASCAL
permite programarea la nivel scazut ­­ low­level , apropiat de hardware

Este utilizat in multiple aplicatii, in care nu predomina caracterul numeric:

programe de sistem
http://www.timsoft.ro/aux/module/modul0.html#1 1/5
9/29/2016 Elementele de baza ale Limbajului C

proiectare asistata de calculator
grafica
prelucrare de imagini
aplicatii de inteligenta artificiala.

 Alfabetul
limbajului C 

Un program C cuprinde

atomi lexicali ( identificatori, constante ­­ numerice, caracter, sir, operatori,
semne de punctuatie ) si
separatori ( spatii, comentarii, terminator de linie )

aranjati conform sintaxei limbajului.

Atomii si separatorii se construiesc din simbolurile care constituie alfabetul limbajului C.
Simbolurile se codifica conform codului ASCII ( American Standard Code for Information
Interchange ), prin cate o configuratie de 8 biti ( un octet ); rezulta faptul ca sunt 256 ( 0
­ 255 ) de caractere in codul ASCII.

Alfabetul cuprinde simboluri grafice si simboluri fara corespondent grafic:

Simboluri grafice 
 

Cod ASCII 
Categorie  Membri  in zecimal       in
hexazecimal     in octal
A ­­ 65   41  101 
A B C  .....     Z
Z ­­ 90  5A  132 
Litere
a b c   ......    z a ­­  97  61  141 
z ­­ 122 7A 172
0 ­­ 48  30  060 
Cifre 0 1 2   ......    9 
9 ­­ 57 39 070
Liniuta de
_   95 5F 137
subliniere
! " # % & ' ( ) * +
Operatori si
, ­ . / 
semne    
: ; < = > ? [ ] \ ^
de punctuatie 
{ } | ~

Simboluri fara corespondent grafic  
 

Cod
Secventa  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 ­ back
BS \b 8
space
FF salt la pagina noua ­ form feed \f 12
NL avans cursor cu o linie ­ new line \n 10
revenire cursor la inceputul liniei
CR \r 13
curente­ carriage return
salt la urm pozitie de tabulare

http://www.timsoft.ro/aux/module/modul0.html#1 2/5
9/29/2016 Elementele de baza ale Limbajului C

HT orizontala ­ horizontal tab \t 9

salt la urm pozitie de tabulare
VT \v 11
verticala ­ vertical tab
caracter cu cod 0 ( terminator de
NULL \0 0
sir )

In codificarea ASCII:

spatiul are codul mai mic decat simbolurile grafice ( 32 )
cifrele ( in ordine crescatoare ), literele mari si literele mici ( in ordine alfabetica )
ocupa cate trei zone compacte.

 Atomii lexicali 
 
Folosind simbolurile grafice se construiesc atomii lexicali:

identificatori
constante ( explicite ) ­­ numerice, caracter, sir
operatori
semne de punctuatie.

Atomii sunt separati de separatori: spatiul, caracterul de tabulare orizontala HT,
terminatorul de linie NL si comentariul ( orice text aflat intre combinatiile de caractere /*
si */ , sau textul inceput cu // pana la sfarsitul liniei ).

 Numele sau identificatorii se compun dintr­o secventa de litere, cifre si/sau _ ( liniuta
de subliniere ), primul caracter trebuind sa fie litera sau _. Numele sunt case sensitive,
deci se face deosebire intre literele mari si mici ( spre deosebire de PASCAL ). Pot fi:

nume utilizator ­ nume de variabile, constante simbolice, functii, tipuri, structuri,
uniuni ­ este bine sa fie alese cat mai sugestiv pentru scopul utilizarii; se
obisnuieste ca numele constantelor simbolice sa fie compuse din majuscule ­­ o
constanta simbolica se defineste prin directiva #define fiind recunoscuta in
toate liniile de program ce urmeaza definirii; preprocesorul, anterior compilarii,
inlocuieste orice aparitie a unei constante simbolice cu definitia sa
cuvinte cheie ale limbajului C ­ pot fi folosite doar cu intelesul cu care au fost
definite
cuvinte rezervate ­ intelesul poate fi modificat, de evitat acest lucru; pentru ca
multe nume rezervate de compilator, invizibile programatorului, incep cu _, este
indicat a nu utiliza _ pentru inceputul numelor utilizator.

Exemple de nume utilizator 
 
suma  produs  x1  X1 PI functia_gauss

Exemple de definitii de constante simbolice ( care sunt nume utilizator ):

#define     PI            3.1415 
#define     DIMENSIUNE    20 
#define     Salut         "Hello!"

Tabela cuvintelor cheie ­ 32 cuvinte cheie, dintre care 27 provin din standardul initial
Kernighan ­ Ritchie, iar 5 au fost adaugate de comitetul ANSI ( enum, const, signed,
void, volatile ); limbajele de nivel inalt au de obicei mult mai multe cuvinte cheie ­
BASIC peste 100 
 

auto double int struct


break else long switch
http://www.timsoft.ro/aux/module/modul0.html#1 3/5
9/29/2016 Elementele de baza ale Limbajului C

case enum register typedef


char extern return union
const float short unsigned
continue for signed void
default goto sizeof volatile
do if static while

Tabela cuvintelor rezervate ­ proprii compilatorului Turbo C: nume de registri, moduri de
compilare 
 

asm _cs _BH _DH


cdecl _ds _BL _DI
far _es _BP _DL
huge _ss _BX _DX
interrupt _AH _CH _FLAGS
near _AL _CL _SI
pascal _AX _CX _SP

Observatie: In mediul Turbo C, pentru a vizualiza o fereasta Help referitoare la un
cuvant cheie, rezervat sau nume de functie din biblioteca, se tasteaza Ctrl/F1 avand
cursorul pe un caracter din cuvantul respectiv.

 Constantele numerice pot avea in componenta cifre si/sau caracterele . + ­ E e 
Constantele nu au semn explicit: +12 sau ­12 sunt expresii formate din cate o constanta
precedata de operatorii unari +, respectiv ­. Ocupa un spatiu de memorie minim,
corespunzator tipului numeric caruia ii apartin ­ aspect care va fi lamurit la capitolul
referitor la Tipuri fundamentale. 
Constantele numerice pot fi:

intregi ­ implicit in baza 10 ( zecimal ); in baza 8 ( octal ) sunt precedate de 0, in
baza 16 ( hexazecimal ) de 0x;   exemple: 1, 29, 123123123, 0237 ( in octal ),
0xffab ( in hexazecimal ); iata aceeasi constanta in trei scrieri echivalente,
folosind cele trei baze: 255   0377    0xFF
reale ­ pot avea doar mantisa sau mantisa si exponent ( exponentul este
precedat de litera e sau E si reprezinta puterea lui 10 ); ca exemplu o constanta
in patru scrieri echivalente: 12.345    .12345E+2    1.2345e1    12345e­3

 Constantele caracter se precizeaza intre apostrofuri. O constanta caracter ocupa un
spatiu de 2 octeti ­ primul este 0, al doilea codul ASCII al caracterului. Caracterul poate
fi:

un simbol grafic sau codul sau ASCII in hexazecimal sau octal dupa \; exemple:
'A'   '\x41'   '\101'  ( sunt echivalente ); caracterele \    '    " se reprezinta ca si
constante: '\\'   '\''   '"'
un simbol fara echivalent grafic, dat ca secventa escape: '\n'   '\xa'   '\12'  ( sunt
echivalente ).

 Constantele sir se precizeaza intre ghilimele. Fiecare caracter din sir poate fi un
simbol grafic, o secventa escape sau un cod ASCII ( in octal sau hexazecimal ). Spatiul
ocupat este un numar de octeti cu unu mai mare decat al caracterelor din sir, ultimul
octet fiind rezervat pentru terminatorul de sir: caracterul cu codul ASCII 0, adica '\0'.
Daca se doreste ca si caracterul " sa faca parte din sir, el trebuie precedat de \. 
Exemple: "CURS"   "\x43URS"  ( scrieri echivalente ale unui sir ce ocupa 5 octeti ); 
              "1a24\t"    "\x31\x61\x32\x34\11"   ( scrieri echivalente ale unui sir ce ocupa 6
octeti ) 
              "'\""  ( sir ce contine caracterele ' " si terminatorul, deci ocupa 3 octeti ).

http://www.timsoft.ro/aux/module/modul0.html#1 4/5
9/29/2016 Elementele de baza ale Limbajului C

 Operatorii sunt formati din caracterele din tabela de simboluri grafice, ultima
categorie. Vor face obiectul unui capitol aparte in aceasta prezentare.

 Ca semn de punctuatie, limbajul C foloseste simbolul ; care termina instructiunile, nu
le separa ca in PASCAL ­­ lucru care duce la scaderea erorilor de sintaxa.

 Exercitii

1.Revedeti informatiile de la Constantele sir si scrieti cele doua constante care contin
caracterele de mai jos:

Informatii 100% corecte:  
I.Ionescu / 24 ani \ zis "a lu' Vasile" 

slash /; backslash \; procent%;  
ghilimele "; apostrof '. 

2.Care este spatiul de memorie ocupat de constanta caracter si cea sir: 'z' si "z"? 

1, respectiv 2 octeti 

    Cate 2 octeti       

 
<<Pagina Materiale

Copyright © 2001­2002. Carmen Holotescu  
All rights reserved. Published by Timsoft

http://www.timsoft.ro/aux/module/modul0.html#1 5/5

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