structura unui program in c
TRANSCRIPT
Structura unui program in C/C++
Un program scris în limbajul C (sau C++) este compus din unul sau mai multe fişiere
sursă. Un fişier sursă este un fişier text care conţine codul sursă (în limbajul C) al unui
program. Fiecare fişier sursă conţine una sau mai multe funcţii şi eventual, referinţe către unul
sau mai multe fişiere header (figura 1).
Funcţia principală a unui program este numită main. Execuţia programului începe cu execuţia
acestei funcţii, care poate apela, la rândul ei, alte funcţii. Toate funcţiile folosite în program
trebuie descrise în fişierele sursă (cele scrise de către programator), în fişiere header (funcţiile
predefinite, existente în limbaj), sau în biblioteci de funcţii.
Un fişier header este un fişier aflat în sistem sau creat de către programator, care conţine
declaraţii şi definiţii de funcţii şi variabile.
Acţiunile din fiecare funcţie sunt codificate prin instrucţiuni (figura 2.a.). Există mai multe
tipuri de instrucţiuni, care vor fi discutate în capitolul următor. O instrucţiune este orice
expresie validă (de obicei, o asignare sau un apel de funcţie), urmată de simbolul ;. În figura
2.b. este dat un exemplu de instrucţiune simplă. Uneori, ca instrucţiune poate apare
instrucţiunea nulă (doar ;), sau instrucţiunea compusă (privită ca o succesiune de instrucţiuni
simple, încadrate între acoladele delimitatoare {}.
Fişiere header
main
Funcţii
Fişier sursă
Program
Biblioteci C++
Funcţii din bibliotecă
Figura 1. Structura unui program în limbajul C
O expresie este o structură corectă sintactic, formată din operanzi şi operatori (figura 2.c.).
Un fisier care contine textul programului sau o parte a acestuia se numeste fisier sursă. Prin
compilarea unui fisier sursă, compilatorul generează un fisier obiect , cu extensia .obj .
Fisierele sursă care intră în compunerea unui program pot fi compilate separat sau împreună.
Fisierele obiect, corespunzătoare unui program, pot fi reunite într-un program executabil, prin
editarea de legături (link - editare), rezultând un fisier executabil, cu extensia .exe. Executia unui program începe cu prima instructiune a functiei main.
Dacă functia main( ) face apel la alte functii, acestea vor intra în actiune când vor fi chemate
de main( ).
Exemplu:
# include <stdio.h>
void main(void)
{
printf("Cel mai simplu program C \n");
}
Prima linie este o directivă pentru compilator, pentru a include în textul sursă fisierul
cu numele stdio.h (standard input output) aflat într-un director predefinit. Directivele
de compilator au marcajul #.
A doua linie este antetul functiei main() - functia principală. Cuvântul void arată că
functia este fără tip (nu furnizează valori) iar void dintre paranteze arată că functia este
fără parametri.
Corpul functiei este delimitat de paranteze acolade { }.
Functia main contine un apel la altă functie,
printf() - functie de bibliotecă. Ea realizează tipărirea sau afisarea unui mesaj,
conform unui anumit format (print format). Functia printf este o functie de intrare/iesire, care
se găseste în fisierul header stdio.h; de aceea acest fisier trebuie inclus în toate programele în
care se fac operatii de citire / scriere.
În limbajul C, nu există instructiuni de intrare / iesire (pentru citire si scriere date) ca de
exemplu read, write din Pascal sau Fortran.
Instrucţiunea1
Instrucţiunea2
Instrucţiunea3 .
.
.
.
FUNCŢII
Expresie;
INSTRUCŢIUNI
Operatori
Operanzi
EXPRESII
Figura 2. Funcţie, instrucţiune, expresie
2.a. 2.b. 2.c.
Acest fapt se justifică prin dependenta instructiunilor de intrare/iesre de sistemul de operare.
Autorii limbajului C au optat pentru realizarea operatiilor de intrare / iesire cu ajutorul
functiilor de bibliotecă. Semnul ; este separator de instructiuni (ca în Pascal).
Functia printf() are un singur parametru = sir de caractere, delimitat de ghilimele ". . . ".
Ultimele caractere sunt de tip neimprimabil si determină trecerea la linie nouă, după
imprimarea textului.
Biblioteci standard
Oferă o mare varietate de functii, grupate după tipul operatiilor efectuate (familii de functii).
Pentru fiecare familie, există un fisier header (*.h), care contine prototipurile functiilor.
Principalele fisiere header sunt:
Stdio.h contine functii standard de intrare/ iesire printf(), scanf().
conio.h - contine functii pentru testarea apartenentei la clase de caractere: litere mari,
litere mici, cifre, caractere tip spatiu, de control etc.
string.h - contine functii pentru operatii cu siruri de caractere.
Math.h - contine functii matematice: sin(), cos(), exp(), log(), pow()
Stdlib.h - contine functi utilitare: de conversie, de generare a numerelor aleatoare,
alocare eliberare memorie etc.
stdarg.h - contine macroinstructiuni pentru crearea de functii cu număr variabil de
argumente.
time.h - contine functii pentru gestionarea timpului (data si ora): numele zilei, lunii,
anul, minutul, secunda, reprezentarea datei.
limits.h în aceste fisiere sunt definite constante care dau valorile minime si float.h
maxime pentru tipurile de bază; aceste valori depind de implementare: Borland
C, Turbo C, Turbo C++ etc.
Conio.h - contine functii standard pentru gestionarea ecranului în modul text (25 linii si
40 sau 80 de coloane)
graphics.h - contine functii (peste 60) pentru gestionarea ecranului în modul grafic (de ex.
VGA: 480 x 640 pixeli); numărul de pixeli depinde de tipul de monitor si de
adaptorul grafic.
Pentru a utiliza o functie, aceasta trebuie apelată. Forma generală a apelării este:
nume_functie(lista de parametri efectivi);
Cu exceptia functiilor de tip void, orice functie returnează o valoare care înlocuieste numele
functiei.
Functiile de tip void se numesc procedurale, deoarece realizează anumite prelucrări (operatii)
dar nu returnează o anumită valoare.