Documente Academic
Documente Profesional
Documente Cultură
B01 Limbajul C
B01 Limbajul C
Programarea calculatoarelor
II. Limbajul C
Limbajul C a aparut n 1972. Este un limbaj cu destinatie universala.
Autorii sai sunt Dennis M. Tichie si Brian K. Kerninghan de la Bell
Laboratories.
Limbajul C a fost proiectat n ideea de a asigura implementarea portabila a
sistemului de operare UNIX. Un rezultat direct al acestui fapt este ca
programele scrise n limbajul C au o portabilitate foarte buna.
Facilitatile principale ale limbajului C sunt:
- portabilitate lipsesc operatiile de I/E (n baza limbajului)
- flexibilitate n programare ( nr. redus de controale)
- programe compacte ( expr. de atribuire, expr. conditionata, i++, i--)
- lucrul pe biti si calcul de adrese, specifice limbajelor de asamblare este
un intermediar ntre limbajele de asamblare si limbajele de nivel nalt
Exista un standard ANSI, dar multe implementari se abat de la standard.
n 1980 a fost dat publicitatii limbajul C++ care permite programarea
orientata pe obiect. Este un superset al limbajului C.
Limbajul C este implementat de la microcalculatoare pna la
supercalculatoare.
Cele mai cunoscute implementari sunt cele ale firmelor Borland si
Microsoft.
Borland comercializeaza o biblioteca de componente standardizate care
pot fi utilizate la implementarea interfetelor utilizator utiliznd unul din limbajele
C si PASCAL. Produsul se numeste Turbo Vision.
De asemenea s-au realizat extensii ale C++ pentru Windows: BC for
Windows, Microsoft C++ 7.0, Visual C si Visual C++ (interfata utilizatorilor
se specifica grafic cu mouse).
Din cele de mai sus putem afirma ca C++ se bucura de o mare
popularitate fiind utilizat n mare masura la implementare de aplicatii complexe.
Daca n 1970 o persoana putea programe 4-5 mii instructiuni, acum o
persoana poate programa 25 mii de instructiuni.
31
1.Notiuni de baza
Un program contine una sau mai multe functii. Dintre acestea una este
functia principala.
Fiecare functie are un nume. Numele functiei principale este main.
Programele se pastreaza ntr-un fisier sau n mai multe. Fisierele au extensia .c
pentru limbajul C si .cpp pentru limbajul C++.
sursa
Un fisier care contine un program scris n C sau care contine numai o parte a
acestuia se va numi fisier de sursa.
obiect
compilare
executabil
linkeditare
Prin compilarea unui fisier rezulta un fisier obiect. Acesta are extensia .obj.
Fisierele obiect corespunzatoare unui program pot fi reunite ntr-un program
executabil prin editare de legaturi (linkeditare) fisier executabil.
1.1. Nume
Un nume este o succesiune de litere (plus caracterul _) si eventual
cifre. Primul caracter fiind litera.
Implicit numai primele 32 caractere din nume se iau n considerare.
Exemplu: x,i, a1, a_1, aib2c3, Axy.
Acesta_Este_Tot_un_NUME
Se recomanda ca numele sa fie sugestiv, adica sa sugereze pe ct posibil data
pe care o reprezinta.
32
Programarea calculatoarelor
Tip
nr. biti
reprezentare
domeniu
Int
Short
Long
Unsigned
unsigned long
[signed] char
unsigned char
Float
Double
long double
16
16
32
16
32
8
8
32
64
80
C2
C2
C2
ntreg fara semn
ntreg fara semn
ASCII
ASCII
flotant simpla precizie
flotant dubla precizie
flotant dubla precizie
[-215, 215-1]
[-215, 215-1]
[-231, 231-1]
[0, 216-1]
[0, 232-1]
[0, 255]
[-128, 127]
val. abs. [3.4*10-38; 3.4*1038]
val. abs. [1.7*10-308; 1.7*10308]
val. abs. [3.4*10-4932; 3.4*104932]
33
Exemplu:
void f ()
void f (void)
int g ()
g ()
double h (void)
main ()
Parametri utilizati la apel se numesc parametri actuali sau efectivi.
Transmisia parametrilor se face prin valoare.
1.5. Comentariu
Un comentariu poate fi:
/* comentariu */ pe mai multe linii, sau
// comentariu pe o linie.
Ex.:
/*
*/
//
Comentariile sunt explicatii pentru programatori. Ele nu au nici un efect asupra
complilatorului si sunt omise la compilare.
Ex.:
F:
I:
E:
1.6. Constante
34
Programarea calculatoarelor
35
36
Programarea calculatoarelor
37
38
Programarea calculatoarelor
pentru functiile care returneaza o valoare la revenirea din ele. n acest caz
valoarea returnata de functie se foloseste la evaluarea expresiei din care s-a
facut apelul.
Ex.1:
int tab [100];
f((tab); //functia are antetul: void f(int x[100]) sau void f(int x[])
Ex.2:
double mat[4][10];
Ex.:
void c(int x, long y[ ], double z);
sau
void c(int, long[ ], double);
Compilatorul utilizeaza datele din prototip pentru a verifica tipurile parametrilor
de la apel si a aloca memorie pentru acestia.
Utilizatorii limbajului C si C++ pot folosi o serie de functii aflate n bibliotecile
standard ale acestor limbaje. Prototipurile acestor functii se gasesc n fisiere
header (.h).
Ex.:
stdio.h //operatii I/E
string.h //operatii pe siruri de caractere
39
1.12. Preprocesare
nainte de compilare un fisier sursa C este prelucrat, efectundu-se
urmatoarele operatii:
1. includeri de fisiere sursa: #include;
2. definitii si apeluri de macrouri: # define;
3. compilare conditionata
1.12.1.Includeri de fisiere
#include specificator de fisier
//cauta n directorul curent sau pe calea precizata
sau
#include <specificator_de_fisier>
//pentru fisiere standard pentru prototipuri
// cauta n directoarele INCLUDE din Directories/Options
Ex.:
#include <stdio.h>
#include fis1.cpp
#include c:\\bc\\sursa\\fis2.c
1.12.2.Substituiri de caractere
# define nume succesiune_de_caractere
Se substituie nume cu succesiune_de_caractere peste tot n textul sursa.
Observatie: De obicei nume se scrie cu majuscule.
Este folosita pentru a defini constante.
O definitie # define nume este valabila pna cnd apare # undef nume.
40
Programarea calculatoarelor
#define A 100
#define DIMAX (A*20)
char tab [DIMAX]; //tab [200];
Avantajele constantei simbolice:
- se pot defini nume sugestive unor constante:
#define PI 3.14159
- se pot face prescurtari
- permite nlocuirea simpla a valorii constantei cu o alta valoare, n toate
locurile unde apare.