Naprednije programiranje u C-u
Vodič je stariji od 2 godine i možda nije u potpunosti aktualan.
Na zahtjev korisnika Učionice donosimo novi tutorijal koji govori o naprednijem programiranju u C-u. U istom tutorijalu šturo ćemo proći kroz većinu toga kako biste zapravo znali mogućnosti programskog jezika C.
Kako započeti sa C-om?
Ako tražite razvojno okruženje za pisanje programa pod Windows operacijskim sustavima potražite program pod nazivom “Dev-C++” (Download Dev-C++).
Prije svega trebali biste otvoriti Dev-C++ kako biste mogli paralelno s tutorijalom pisati svoj kôd.
Varijable u C-u
Navesti ćemo nekoliko osnovnih tipova koji su neophodni za programiranje u C-u:
- char – znakovni tip ili mali cijeli broj
- int – cjelobrojni tip
- float – realni tip
- double – realni tip dvostruke preciznosti
Prefiksi tipova varijabli
U C-u postoje i prefiksi, te kvalifikatori koje možemo ili smo prisiljeni koristiti:
- short – smanjuje raspon cjelobrojnih vrijednosti koje varijabla može sadržavati
- long – smanjuje raspon cjelobrojnih vrijednosti koje varijabla može sadržavati
- signed – omogućuje pridruživanje pozitivnih i negativnih vrijednosti
- unsigned – omogućuje pridruživanje samo pozitivnih vrijednosti i povećava raspon brojeva koje možemo pohraniti u varijablu.
Primjer deklaracije varijabli
int a;
float b;
Primjer deklaracije varijabli sa inicijalizacijom
Inicijalizacija je postupak dodjeljivanja početne vrijednosti varijabli.
int a = 5;
char b = 'a';
Operatori u C-u
Operatori u C-u, kao i u drugim programskim jezicima omogućuju nam manipulaciju vrijednostima varijabli.
Neki od operatora koje možemo koristiti su:
- + zbrajanje
- – oduzimanje
- * množenje
- / dijeljenje
- % modulo – ostatak cjelobrojnog dijeljenja. Npr. 5%4 = 1
- ++ inkrement – uvećava varijablu za 1
- — dekrement – umanjuje varijablu za 1
Primjer korištenja operatora u C-u
int a = 5;
int b = 6;
int c;
++a; /* uvećanje varijable a za 1 */
c = a + b;
a = a + b; /* rezultat operacije može biti i u istoj varijabli */
a += b; /* skraćeni način zapisa linije iznad */
Prioriteti aritmetičkih operacija
Prioriteti su određeni skraćenicom “B.O.D.M.A.S.”, što znači: Brackets (zagrade), Order (potencije), Division i Multiplication (dijeljenje i množenje – isti prioritet), Addition i Substraction (zbrajanje i oduzimanje – isti prioritet).
Sturktura C programa
- Moguće je staviti više naredbi u isti redak
- Razlikujemo velika i mala slova u imenima varijabli
- Za nazive funkcija ne smijemo koristiti ključne riječi
- Deklaracijom opisujemo tip i naziv varijable
- Blok naredbi započinje znakom {, a završava znakom }
- Iza znaka } ne stoji znak ;
- Glavna funkcija naziva se main
Konstante
Konstante u C-u su one varijable koje se neće mijenjati, a imaju prefiks const:
const double pi = 3.1415926;
Konstante možemo i napisati na sljedeći način, neposredno iza uključivanja biblioteka poput stdio.h, a iznad glavne funkcije:
#define PI 3.1415926;
Ispis i unos podataka
Funkciju printf već smo imali prilike upoznati.
U sljedećem primjeru ispisati ćemo vrijednost varijable na ekran.
#include <stdio.h>
int main () {
int a = 2;
printf("Varijabla a ima vrijednost %d", a);
getche();
return 0;
}
Primjetimo “%d” u printf-u. To označava mjesto gdje će se pojaviti vrijednost varijable a. Mogli smo imati i sljedeći slučaj:
printf("Varijabla a ima vrijednost %d, a varijabla b ima vrijednost %d", a, b);
Sada ispisujemo 2 varijable. One u dijelu nakon zatvaranja navodnika moraju biti odvojene zarezima.
Ako se radi o cjelobrojnim varijablama koristimo “%d”. Za realne vrijednosti koristiti ćemo “%f”, a za znakovne “%c”. Ovo nisu jedini specifikatori formata, a postoje i njihove varijacije o kojima ćemo više kasnije.
Primjer unosa vrijednosti varijable izgleda npr. ovako
#include <stdio.h>
int main(){
int a;
printf("Unesite vrijednost varijable a: ");
scanf("%d", &a);
printf("Vi kazete: %d", a);
getche();
return 0;
}
Funkcija koja obavlja unos zove se scanf.
Primijetimo da pomoću specifikatora formata moramo odraditi tip. Razlika u odnosu na printf je u znaku „&“ ispred imena varijable koji označava da se vrijednost sprema u određenu memorijsku adresu. Više o tome kasnije.
U jednom scanf-u možete unositi više i varijabli, ali točno na način kao što ste zapisali. Ako napišete sljedeće:
scanf("%d %d", &a, &b);
program očekuje razmak između dvije vrijednosti.
Ako napišete sljedeće:
scanf("%d\n%d", &a, &b);
program očekuje enter između dvije vrijednosti.
Sada možemo pogledati cijeli program koji koristi unos, ispis i operatore.
#include <stdio.h>
int main(){
int a, b, c;
printf("Unesite vrijednost varijable a ==> ");
scanf("%d", &a);
printf("Unesite vrijednost varijable b ==> ");
scanf("%d", &b);
c=a+b;
printf("Zbroj %d i %d iznosi %d", a, b, c);
getche();
return 0;
}
Kontrola toka programa
Primjer nečega što bi trebalo biti kontrolirano: Ako je na semaforu crveno, stani. Ako je na semaforu zeleno kreni.
Najjednostavnija naredba za kontrolu toka programa je naredba if. Ako je izraz u zagradama točan tada će se izvršiti blok naredbi ili naredba ispod if-a.
Primjer if naredbe:
if ( varijabla < 5) varijabla++;
Ako se radi o jednoj naredbi tada ne trebamo pisati vitičaste zagrade.
if ( varijabla < 5 ) { varijabla++; printf("Varijabla sada iznosi %d", varijabla); }
Nakon if-a ne ide znak ;
Osnovni operatori koje možemo koristiti kod if naredbe su:
- < da li je manje
- > da li je veće
- <= da li je manje ili jednako
- >= da li je veće ili jednako
- == da li je jednako
- != da li je različito
Naredba else može se koristiti nakon naredbe if.
if ( a%2 == 0 ) { /* provjera da li je vrijednost varijable a parna */
printf ("Broj je paran");
} else {
printf ("Broj nije paran");
}
Također, postoji i else if naredba koja se koristi na sljedeći način:
if ( a < 0 ) {
printf ("Broj je negativan");
} else if ( a > 0 ) {
printf ("Broj je pozitivan");
} else {
printf ("Broj je jednak nuli");
}
Postoje i drugi načini pisanja if, else i else if naredbi koji su teži za korištenje i čitanje.
Naredba switch također služi za kontrolu toka programa. Ukoliko se radi o višestranoj selekciji tada ćemo ovime skratiti mnogo koda u odnosu na if, else i else-if naredbe.
Primjer korištenja u programu:
#include <stdio.h>
int main() {
int a;
printf("Unesite ocjenu: ");
scanf("%d", &a);
switch(a) {
case 1:
printf("Nedovoljan");
break;
case 2:
printf("Dovoljan");
break;
case 3:
printf("Dobar");
break;
case 4:
printf("Vrlo dobar");
break;
case 5:
printf("Odlican");
break;
default:
printf("Pogreska - ocjena ne postoji");
break;
}
getche();
return 0;
}
Napomena: ne zaboravite “break;”! Uvijek dodajte default slučaj kako biste prikazali eventualne pogreške pri unosu.
U drugom dijelu tutorijala obraditi ćemo sve od programskih petlji do kraja.
Lijepi pozdrav ;-)
Nadamo se da je ovaj vodič koristio. Ako imate pitanja, možete nam se obratiti putem formulara pitajte učitelja
Pozdrav Milorad,
vodič je napisan 2009. godine pa je moguće ovo što kažete.
Ovo nikako nije napredno programiranje, ali je vodič svakako napredniji od prvog koji imamo na tu temu.
Postovani intereisra me je li greska u naslovu ili greska u materijalu.
Naime iz iskustva sam svijestan koliko dugo ce dev c++ nije razvijao dalje te koliko problema ima s lib-ovima
Takodjer me intereisra da li mozemo smatrati matematicke znakove i njihovu upotrebu kao i varijable Naprednim programiranjem u jeziku poput c-a ili bilo kojem drugom ako uzmemo u obzir da su ovo trivijalne osnove
Sve je OK. Jedino taj neseretni operator & bi ipak trebalo koliko toliko objasniti pocetniku. Sigurno je da ce sve ostalo sasvim lagano “svariti” jer tekst tece lagano, neoptereceno i “pitko”.