Oblik tipičnog programa u C-u
Tipičan program na jeziku C ima sledeći oblik:
Direktive pretprocesora
Spoljnje deklaracije i definicije
main()
{
Definicije i deklaracije
Izvršne naredbe
}
Definicije funkcija
Jezik C predstavlja programski jezik sa proizvoljnim razmeštajem polja u kojima su napisane naredbe programa. Dozvoljeni su programski redovi koji sadrže više naredbi, kao i naredbe koje zauzimaju više redova (ali se pri tome na kraju reda stavlja znak \ za nastavak naredbe u sledećem redu).
Sve komponente programa se najčešće smeštaju u jedan folder. Međutim, program na jeziku C može da se podeli i na više delova koji možemo nazvati jedinice prevođenja, tako da svaki deo bude u posebnom folderu, o čemu će biti govora u sledećem razredu.
U programima na jeziku C se prva izvršava funkcija main - to je polazna tačka odakle naš program počinje da se izvršava. To je dogovor koji je počeo da se koristi još od UNIX-a i u većini drugih operativnih sistema. To ne znači da je to i obavezno. Napredni korisnici, ako žele, mogu uvek da promene podešavanja u kompajleru, pa da postave da je polazna tačka neka druga funkcija. Ako ne mislite da menjate podešavanja u okruženju u kojem radite, onda se vodite time da sve kreće sa mesta gde piše main.
Navedeni oblik programa nije jedini oblik koji se može koristiti. Na primer, direktive pretprocesora jezika C se mogu sresti na bilo kojem mestu u fajlu sa tekstom programa. Jedino je ograničenje da one moraju da se navedu pre korišćenja identifikatora koje one definišu. Drugi je primer da se pre definicije funkcije main mogu nalaziti definicije drugih funkcija.
Pretprocesor
Pretprocesor je deo prevodioca za jezik C koji vrši pripremnu obradu teksta programa pre njegovog prevođenja. Naredbe pretprocesora nazivaju se direktive. To su uputstva kojima se vrše razne transformacije teksta programa i priprema konačni oblik teksta koji treba da bude preveden. Te transformacije uključuju:
-
umetanje sadržaja nekog fajla na određeno mesto u programu
-
zamena leksičkih simbola zadatim novim nizovima znakova, na primer, definisanje tzv simboličkih konstanti
-
uslovno uključivanje (ili izostavljanje) delova programa
Direktive pretprocesora nisu deo samog programa obrade i nisu naredbe jezika C.
Direktive pretprocesora uvek počinju znakom #. Moraju se obavezno pisati u zasebnim redovima, pri čemu u svakom redu može biti samo jedna direktiva. Direktiva može da se produži u više redova, što se označava znakom \ kao poslednjim ne-belim znakom na kraju reda koji se produžuje. U redovima programa gde se nalaze direktive ne mogu se pisati i naredbe jezika C. Sintaksa (pravila pisanja) direktiva nije deo jezika C, jer njih obrađuje pretprocesor, a ne prevodilac jezika C.
Direktiva #include vrši umetanje sadržaja fajlova. To su fajlovi koji imaju nastavak .h i definišu se kao fajlovi zaglavlja (engl. header - zaglavlje).
U našem primeru direktiva #include <stdio.h> predtstavlja uputstvo prevodiocu da treba iz fajla stdio.h da pročita osobine bibliotečke funkcije za izlaz podataka.
Direktiva #define vrši zamenu identifikatora sa tekstom koji se nalazi u redu nakon tog identifikatora. Na primer, ako je u programu data direktiva:
#define NUL 0
posle obrade pretprocesorom će svuda u programu identifikator NUL biti zamenjen konstantom 0.
Zamenjivanje u tekstu programa može da se ukine posebnom direktivom pretprocesora koja ima oblik:
#undef NUL
Pretprocesor ne vrši nikakvu sintaksnu proveru, već prihvata šta god je navedeno iza identifikatora i time samo zamenjuje tekst u programu.
Direktive pretprocesora mogu da se pojave na bilo kom mestu u programu, a njihovo delovanje se prostire do kraja fajla, ukoliko nije prekinuto drugim direktivama.
Komentari u programu
Tekst koji se postavi između znakova /* i */ predstavlja komentar u programu. Komentari su proizvoljni tekstovi koji služe za objašnjenje čitaocu programa. Komentar nije deo programa obrade već služi za dokumentovanje programa, tj da se opiše namena programa, kako program radi, smisao i logika nekih delova programa, ograničenja i slično. Komentar je namenjen autoru programa, korisniku, ili licu koje treba da kasnije eventualno menja program. On ne utiče na prevođenje i izvršenje programa. Skup znakova koji se nalaze u komentaru ne mora da se poklapa sa azbukom jezika C, i može biti bilo koji skup znakova koji prihvata operativni sistem.
Komentar se ubraja u bele znake u može da se nalazi na mestima gde su oni dozvoljeni. Dužina komentara nije ograničena, a može se prostirati u jednom ili više redova teksta programa bez posebnog označavanja produžetka u sledeći red, na primer:
/* komentar */
/* komentar u
više
redova */
Deklaracije i definicije, kao i naredbe će biti objašnjavani naknadno.