Documente Academic
Documente Profesional
Documente Cultură
<<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 ); Cul 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 19831989 ) 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 iau 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 lowlevel , 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 dintro 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
Tabela cuvintelor rezervate proprii compilatorului Turbo C: nume de registri, moduri de
compilare
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 12345e3
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 © 20012002. Carmen Holotescu
All rights reserved. Published by Timsoft
http://www.timsoft.ro/aux/module/modul0.html#1 5/5