Documente Academic
Documente Profesional
Documente Cultură
Limbajul C
Chisinau, 2009
Continut
Capitolul 10. Prepocesorul.
Directive preprocesor
Directiva #include
Directiva #define
Macroinstructiuni
Exemple
Avantajele unui macro
Pericole legate de utilizarea a macrodefinitiilor
Exemple de macrouri
Directiva #undef
Compilarea conditionata
Directiva #if
Directivele #if, #elif, #else
Directiva #error
Link-uri utile
Continut
Teme suplimentare
Operatori
Operatori de incrementare-decrementare
Operatori logici
Operatori relationali
Operatori la nivel de bit
Alocarea memoriei
Alocarea statica a memoriei
Alocarea automata a memoriei
Alocarea dinamica a memoriei
Etapele rezolvării unei probleme cu ajutorul calculatorului
Editare
Compilare
Linkeditare
Executia
Instalarea compilatorului borland C++
Directive preprocesor
Directive preprocesor
Directive preprocesor
Directive preprocesor
Directive preprocesor
Directiva #include
Directiva #include
Programatorul isi poate crea propriile fisiere header caz in care acesta
va fi incadrat intre " " . De exemplu:
#include "headerul_meu.h“
Exemplu:
#include "c:\\bc\\head\\headerul_meu.h“
char v[N],v1[10+DIM(5+M,6)];
char v1[10*MAX];
char m[M][N];
char v[10],v1[10+(5+10)*(6)];
char v1[10*(10+10)];
char m[10][10];
Exemplu
Macroinstructiuni
Exemplu
Avantajele unui macro
Avantajele unui macro fata de o functie care sa
implementeze acelasi lucru sunt urmatoarele: In primul
rand, este evitarea apelurilor ineficiente din punct de
vedere al regiei pentru functiile simple care se reduc la una
sau doua instructiuni. In aceste cazuri este recomandabil
sa nu se mai construiasca functii care sa fie apelate, ci
instructiunile respective sa fie scrise direct in locurile unde
sunt necesare. Macrourile tratate de preprocesorul
limbajului C realizeaza generari inline a functiilor.
In al doilea rand, macrourile pot fi mai generale decat
functiile, nedepinzand de tipul parametrilor. In cazul
macroului de determinare a maximului, acesta e general si
nu depinde de tipul parametrilor, care pot fi intregi sau
reali.
Pericole legate de utilizarea a
macrodefinitiilor
Exemplu:
Directiva #ifndef
Directiva #if
Directiva #if
#if expr
text1
#else
text2
#endif
Se poate observa
faptul ca directivele
inlantuite #if, #elsif
si #else se
incheie cu #endif.
Directiva #error
Link-uri utile
http://www.scribd.com/doc/22023490/PROGRAMAREA-CALCULATO
ARELOR-IN-LIMBAJUL-C
Teme suplimentare
Operatori
Operatori de incrementare-decrementare
Operatori logici
Operatori relationali
Operatori la nivel de bit
Alocarea memoriei
Alocarea statica a memoriei
Alocarea automata a memoriei
Alocarea dinamica a memoriei
Etapele rezolvării unei probleme cu ajutorul calculatorului
Editare
Compilare
Linkeditare
Executia
Instalarea compilatorului borland C++
Operatori de incrementare-
decrementare
Operatori logici
Operatori relationali
Operatori la nivel de bit
Alocarea statica/automata a
memoriei
Una din cele mai importante funcţii ale unui limbaj de programare
este ca acesta să furnizeze metode de management a memoriei şi
al obiectelor stocate în memorie. C furnizează trei metode
distincte de alocare a memoriei pentru obiecte:
Alocarea statică a memoriei: adresele şi dimensiunile
obiectelor ce fac uz de alocarea statică a memoriei sunt fixate în
momentul compilării şi pot fi plasate într-o zonă de dimensiune
fixă ce corespunde unei secţiuni din cadrul fişierului linkedidat
final. Acest tip de alocare a memoriei se numeşte statică
deoarece locaţia şi dimensiunea lor nu variază pe durata de
execuţie a programului.
Alocarea automată a memoriei: obiectele temporare
(variabilele locale declarate în cadrul unui bloc de cod) sunt
stocate în memorie, iar spaţiul alocat este automat eiberat şi
reutilizat după ce s-a părăsit blocul în care acestea au fost
declarate.
Alocarea dinamica a memoriei
Alocarea dinamică a memoriei: blocuri de memorie de orice dimensiune pot
fi alocate într-o zonă de memorie numită heap prin intermediul funcţiilor
malloc(), calloc() şi realloc(). Aceste blocuri de memorie pot fi reutilizate
după ce zona de memorie a fost eliberată prin apelul funcţiei free().
Nu toate variabilele sunt automat alocate. Următoarele tipuri de variabilă
sunt alocate static:
toate variabilele globale, indiferent dacă au fost sau nu declarate ca statice;
variabilele locale declarate explicit ca fiind statice.
Variabilele alocate static au alocată locaţia lor de memorie şi iniţializată
înainte ca funcţia main să fie executată şi nu sunt dealocate până când se
termină execuţia funcţiei main. Variabilele alocate static nu sunt reiniţializate
la fiecare apel al funcţiei în cadrul cărora au fost declarate. O variabilă
alocată static are avantajul să îşi păstreze valoarea chiar dacă funcţiile care
accesează acea valoare nu mai sunt active.
Alocarea memoriei
Linkeditarea
Dupa ce programul sursă a fost translatat în
program obiect, el este supus operaţiei de
linkeditare. Scopul fazei de linkeditare este acela
de a obţine o formă finală a programului, în
vederea execuţiei acestuia. Linkeditorul “leagă”
modulele obiect, rezolvă referinţele către funcţiile
externe şi rutinele din biblioteci şi produce cod
executabil, memorat într-un alt fisier, numit fişier
executabil (acelaşi nume, extensia .exe)
Etapele rezolvării unei probleme cu
ajutorul calculatorului
Execuţia
Lansarea în execuţie constă în
încărcarea programului executabil în
memorie şi startarea execuţiei sale.
Etapele rezolvării unei probleme cu
ajutorul calculatorului
Observaţii:
Mediile de programare integrate (BORLANDC, TURBOC)
înglobează editorul, compilatorul, linkeditorul şi
depanatorul (utilizat în situaţiile în care apar erori la
execuţie);
Dacă nu se utilizează un mediu integrat, programatorul va
apela în mod explicit (în linie de comandă) un editor de
texte, compilatorul, linkeditorul. Lansarea în execuţie se
va face tot din linie de comandă.
Extensiile specificate pentru fişierele sursă, obiect şi
executabile sunt CPP (sau C), OBJ respectiv EXE.
Instalarea borland C++
http://info-it.talentirosit.com/2009/10/23/instalarea-borlan
d-c-3-1-pe-windows-xp-si-windows-vista-sau-7/
http://info-it.talentirosit.com/download/