
Programski jezik C ostaje jedan od najutjecajnijih jezika u povijesti računarstva. Zbog svoje iznimne efikasnosti, brzine i sposobnosti izravnog upravljanja hardverom, C je postao temelj za mnoge moderne jezike poput C++, Jave i Pythona. Bilo da ste početnik koji želi razumjeti kako računalo zapravo obrađuje podatke ili programer koji želi proširiti svoje znanje, razumijevanje strukture i logike jezika C ključno je za razvoj visokokvalitativnog softvera.
U ovom vodiču detaljno ćemo proći kroz ključne elemente programiranja u C-u, od postavljanja razvojnog okruženja i rada s varijablama, preko aritmetičkih operacija, pa sve do kontrolnih struktura koje omogućuju pisanje kompleksne logike. Cilj je pružiti vam jasnu sliku o tome kako ovaj jezik funkcionira “ispod haube”.
Početni koraci i razvojno okruženje
Prije nego što napišete svoju prvu liniju koda, potreban vam je alat koji će vaš tekstualni kod pretvoriti u izvršni program. Taj proces naziva se kompilacija. Za korisnike Windows operacijskog sustava, jedan od najjednostavnijih alata za početnike je Dev-C++. On objedinjuje tekstualni editor i kompajler u jednom paketu, što omogućuje brzo testiranje koda bez potrebe za složenim konfiguracijama sustava.
Kada instalirate razvojno okruženje, važno je razumjeti da svaki C program započinje s određenim strukturama. Glavna točka ulaska u svaki program je funkcija main(). Bez nje, računalo ne zna gdje započeti s izvršavanjem naredbi. Također, C je jezik koji razlikuje velika i mala slova (case-sensitive), što znači da su varijable “Broj” i “broj” potpuno različiti entiteti u memoriji.
Upravljanje podacima: Varijable, tipovi i konstante
Varijable su zapravo imenovani prostori u memoriji računala u kojima pohranjujemo podatke. U jeziku C, svaki podatak mora imati strogo definiran tip kako bi kompajler znao točno koliko bajtova memorije treba rezervirati za tu varijablu.
Osnovni tipovi podataka
Najčešće korišteni tipovi podataka u C-u uključuju:
- char: Koristi se za pohranu jednog znaka (npr. ‘A’, ‘5’, ‘@’) ili vrlo malih cijelih brojeva.
- int: Standardni tip za cjelobrojne vrijednosti (npr. 10, -500, 0).
- float: Koristi se za realne brojeve s decimalnim zarezom (npr. 3.14).
- double: Slično kao float, ali s dvostrukom preciznošću, što ga čini idealnim za znanstvene izračune gdje je točnost ključna.
Kvalifikatori i prefiksi za preciznije upravljanje
Kako bismo optimizirali korištenje memorije i prilagodili raspon brojeva, C nudi kvalifikatore koji utječu na veličinu varijable:
- short i long: Ovi prefiksi mijenjaju broj bajtova koji se dodjeljuju varijabli, čime se povećava ili smanjuje maksimalni raspon vrijednosti koju ona može pohraniti.
- signed: Omogućuje pohranu i pozitivnih i negativnih brojeva (ovo je zadano stanje za tip int).
- unsigned: Ovaj kvalifikator pomiče donju granicu vrijednosti s negativnih brojeva na nulu. Iako ne povećava ukupni broj mogućih vrijednosti, on omogućuje pohranu znatno većih pozitivnih brojeva u odnosu na signed varijablu iste veličine.
Kada imamo vrijednosti koje se ne smiju mijenjati tijekom rada programa, koristimo konstante. To možemo postići na dva načina: korištenjem ključne riječi const (npr. const double PI = 3.14;) ili pomoću direktive preprocesora #define (npr. #define PI 3.14), koja zamjenjuje sve pojavljivanja imena konstante stvarnom vrijednošću prije same kompilacije.
Operatori i aritmetika u C-u
Operatori omogućuju manipulaciju podacima. Osim standardnih matematičkih operacija, C nudi i specifične operatore koji ubrzavaju pisanje koda i olakšavaju logičke operacije.
Standardni aritmetički operatori su zbrajanje (+), oduzimanje (-), množenje (*) i dijeljenje (/). Posebno je koristan operator modulo (%), koji vraća ostatak cjelobrojnog dijeljenja. Na primjer, izraz 5 % 4 rezultira vrijednošću 1.
Za brzo uvećavanje ili smanjenje vrijednosti varijable za jedan, koristimo inkrement (++) i dekrement (--). Također, C podržava skraćeni zapis operacija. Umjesto pisanja a = a + b;, možemo napisati a += b;, što je standard u profesionalnom programiranju zbog preglednosti.
Prilikom pisanja kompleksnijih izraza, važno je poštovati prioritet operatora (operator precedence). Opće pravilo prati redoslijed: prvo se rješavaju zagrade, zatim potencije, množenje i dijeljenje, te na kraju zbrajanje i oduzimanje.
Unos i ispis podataka
Komunikacija s korisnikom u C-u najčešće se odvija putem biblioteke stdio.h, koja sadrži funkcije printf i scanf.
Funkcija printf služi za ispis na ekran. Kako bismo ispisali vrijednost varijable, koristimo specifikatore formata:
%dza cjelobrojne brojeve (int)%fza realne brojeve (float/double)%cza znakove (char)
Za unos podataka koristimo funkciju scanf. Ključna razlika u odnosu na ispis je korištenje znaka & (ampersand) ispred imena varijable. Ovaj znak označava adresu u memoriji na koju će scanf