Documente Academic
Documente Profesional
Documente Cultură
Iata un contraexemplu de program C, corect insa - incercati sa-l descifrati, apoi rulati-l!
Oricum, nimeni ( sau aproape ) nu scrie astfel de programe 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
Caracteristicile
limbajului
Caracteristicile limbajului C, care i-au determinat popularitatea, sunt prezentate pe scurt mai jos si vor fi
analizate pe parcursul cursului:
grafica
prelucrare de imagini
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 )
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.
Simboluri grafice
In codificarea ASCII:
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.
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
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 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 ).
Operatorii sunt formati din caracterele din tabela de simboluri grafice, ultima categorie. Vor face obiectul
unui capitol aparte in aceasta prezentare.
Fiecare distribuitie Linux este insotita de gcc ( cc ), compilatorul de C - verificati daca acesta apare in /bin.
Daca fisierul sursa C, care apare ca intrare a compilatorului nu are erori, se obtine fisierul executabil
implicit a.out sau cel precizat dupa optiunea -o.
Sintaxa gcc:
gcc sursa.c
sau
Exemplu:
#include <stdio.h>
void main(){
CTRL/D
Il compilam cu:
si il executam cu:
./prim
Sa invatam C impreuna!
Exercitii
1.Revedeti informatiile de la Constantele sir si scrieti cele doua constante care contin caracterele de mai
jos:
2.Care este spatiul de memorie ocupat de constanta caracter si cea sir: 'z' si "z"?