1 / 47

PROGRAMIRANJE U C-u

PROGRAMIRANJE U C-u. Teorija. Struktura programa napisanog u C-u.

annot
Download Presentation

PROGRAMIRANJE U C-u

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. PROGRAMIRANJE U C-u Teorija

  2. Struktura programa napisanog u C-u • Prije početka programa potrebno je pretprocesorskom naredbom #include< ime biblioteke> najaviti biblioteke funkcija koje će se u programu koristiti.Funkcija printf(), scanf() nalazi se u biblioteci funkcija stdio.h – biblioteka za ulaz i izlaz podataka. • Program u C-u sastoji se od niza povezanih funkcija od kojih je jedina obavezna funkcija main() koja označava mjesto gdje počinje izvršavanje programa

  3. Ispis teksta na zaslon • Prva C funkcija s kojom ćemo se detaljnije upoznati je funkcija za ispis. • C koristi nekoliko funkcija za ispis. Konkretno, za ispis teksta na zaslon najčešće koristimo funkciju za formatirani ispis printf(); • Opći oblik(sintaksa)je: printf("tekst koji želimo ispisati na zaslon");

  4. Primjer 1: • printf("Ovo je veliki trenutak! Pisem svoj prvi program!"); • Program bi izgledao: #include<stdio.h>main(){printf("Ovo je veliki trenutak! Pisem svoj prvi program!");}

  5. Ispis vrijednosti • Za ispis vrijednosti također se koristi funkcija printf(), samo malo drugačijeg oblika. • Kod ispisa vrijednosti, osim primjene funkcije za ispis, potrebno je definirati format ispisa. • Formatom se definira način ispisa vrijednosti, a usko je vezan uz tipove podataka.

  6. Ispis vrijednosti

  7. Znakovne konstante za kontrolu ispisa • Znakovne konstante sastoje se od dva znaka. Prvi znak je \, a drugi slovo koje kontrolira ispis. • Neke konstante koje se češće koriste su: \b – pomak za jedno mjesto udesno \r – povratak na početak reda \f – nova stranica \n –novi red \v – vertikalni tabulator \t – horizontalni tabulator

  8. Varijable i konstante • Izrada programa od nas traži i rad s različitim podacima. • Podaci u programu mogu biti: • varijable ili • konstante • Varijable su podaci čije se vrijednosti tijekom izvođenja mijenjaju, a konstantama su podaci čije se vrijednosti tijekom izvođenja ne mogu promijeniti.

  9. Tipovi podataka • Da bi naši programi davali što točnije rezultate i pri tom optimalno koristili memoriju, podatke osim po vrsti (varijable i konstante) moramo podijeliti i po tipu. • C razlikuje pet osnovnih tipova podataka: • int(cijeli broj), • char (znak), • float (realan broj), • double (realan broj dvostruke preciznosti) i • void (tip podatka koji ne sadrži vrijednost.

  10. Aritmetički operatori koriste se kada program treba izračunati rezultate osnovnih matematičkih funkcija. C poznaje pet aritmetičkih operatora: aritmetički operatori

  11. Funkcije za unos podataka • Za unos podataka koriste se funkcije za unos. Najčešće korištena funkcija je funkcija za formatirani unos, scanf(); • Opći oblik(sintaksa)funkcije scanf je: scanf("lista_formata",lista_varijabli);

  12. Funkcije za unos podataka • Kao i kod funkcije za ispis u listu formataupisujemo oznake formata za tip varijabli. One su jednake onima koje se koriste u ispisu. • U listi varijabli navodi se popis imena varijabli istim redoslijedom kao u popisu formata. Varijable navedene u listi varijabli međusobno se odvajaju zarezom. • Budući da se u C-u vrijednosti prenose preko adrese, ispred imena svake varijable treba dodati i operator za dodjeljivanje adrese, & (adresni operator)

  13. Funkcije za unos podataka Važno: • Obratite pažnju na način na koji se odvajaju formati u listi formata (na primjer, zarezom: "%d, %d, %f"). Na isti način korisnik treba odvajati vrijednosti prilikom unosa. • Primjer :printf("Upisite dva cijela broja odvojena razmakom: ");scanf("%d %d",&a, &b);

  14. Deklaracija (najava) varijabli • U svakom programu C traži najavu varijabli koje će se koristiti u programu. Varijable najčešće najavljujemo na početku programa, no nije pravilo. Bitno ih je najaviti prije njihovog prvog korištenja! • Opći oblik najave varijabli: tip_podataka lista varijabli navedenog tipa; • Najavom varijable u memoriji se za nju zauzme mjesto. Zbog toga je vrlo važno najavljivati samo one varijable koje će se u programu stvarno i koristiti.

  15. Deklaracija (najava) varijabli • Zbog preglednosti kôda, većina varijabli najčešće se najavljuje na samom početku programa. • Mjesto na kojem je varijabla najavljena utječe na njezino područje djelovanja. Ako je varijabla najavljena izvan svih funkcija ona je dostupna svim funkcijama i kažemo da je globalna. • Lokalne varijable najavljuju se unutar funkcije ili bloka naredbi u kojem se koriste. Izvan područja u kojem su najavljene nisu dostupne. U programu može biti više lokalnih varijabli istog imena.

  16. Komentar u programu • Dio programa između znakova /*i */naziva se komentar. • Komentari služe programeru za lakše snalaženje u programu. • Programeri najčešće komentiraju bitne dijelove programa kako bi im kasniji zahvati na programu bili jednostavniji. • Prilikom prevođenja programa komentari se preskaču.

  17. Definicija konstanti • Konstante su vrijednosti koje se zadaju jednom i ne mijenjaju se tijekom izvođenja programa. Razlikujemo cjelobrojne, realne i znakovne konstante. • Prije korištenja konstanti potrebno ih je definirati zadavanjem imena i vrijednosti. Možemo ih definirati predprocesorskom naredbom #define • Opći oblik(sintaksa)je: #define ime_konstante vrijednost npr. # definepi 3,14159

  18. Naredba pridruživanja • Naredbom pridruživanja se varijablama pridružuju ili mijenjaju vrijednosti! • Operator pridruživanja u programskom jeziku C je =. • Njegova uloga je vrijednost izraza s desne strane pridružiti varijabli na lijevoj strani. • Operator pridruživanja ima najniži prioritet izvršavanja. To znači da će se najprije izračunati vrijednost izraza s desne strane i tek onda rezultat pridružiti varijabli na lijevoj strani. • Opći oblik naredbe za pridruživanje vrijednosti je: varijabla=izraz; Npr. a = 10;

  19. Matematičke funkcije • Matematičke funkcije nisu sastavni dio C-a, već dolaze u bibliotekama. • Biblioteka u kojoj se nalazi najveći broj standardnih matematičkih funkcija je math.h. One postaju dostupne uključivanjem te biblioteke naredbom #include<>. • Neke od standardnih matematičkih funkcija prikazane su u sljedećoj tablici:

  20. Grananje u programu • Tijekom pisanja programa često ćete imati potrebu  određene naredbe izvršiti ovisno o tome je li ili nije ispunjen određeni uvjet. • Postoje naredbe zajednostruko i naredbe za višestruko grananje.

  21. Relacijski operatori

  22. Jednostruko grananje • Jednostruko grananje koristi se u slučajevima u kojima je naredbu ili blok naredbi potrebno izvršiti jedino ako je dani uvjet ispunjen - kada je vrijednost zadanog relacijskog ili aritmetičkog izraza različita od nule. • Za jednostruko grananje koristi se naredba if. • Opći oblik (sintaksa) naredbe je: if (uvjet) naredba; • Uvjet može biti relacijski ili aritmetičkiizraz. Naredba unutarifće se izvršiti jedino ako je uvjet različit od nule. Ako je uvjet jednak nuli, naredba iza ifse preskače i izvršava se prva sljedeća naredba.

  23. PRIMJER: • Program ispisuje vrijednost drugog korijena pozitivnog realnog broja. #include<stdio.h>#include<math.h>main(){float x;printf("Upisite pozitivan realan broj: ");scanf("%f",&x);if (x>=0){ printf ("Vrijednost drugog korijena broja %.2f je %.2f",x,sqrt(x)); }}

  24. Logički operatori • U slučajevima u kojima je potrebno zadovoljiti uvjete oblika: (uvjet1 i uvjet2) ili (uvjet1 ili uvjet2) koriste se logičke funkcije i logički operatori.

  25. PRIMJER – IF naredba • Rastavljanje na znamenke i ispis rezultata samo ako korisnik upiše troznamenkasti broj. #include<stdio.h>#include<math.h>main() {  int a,prva,druga,treca;printf("Unesite troznamenkasti broj: ");scanf("%d",&a);if (a>99 && a<1000) {    prva=a/100;    druga=a/10%10;treca=a%10;printf("znamenke unesenog broja su %d, %d, %d",prva,druga,treca); }}

  26. Višestruko grananje • U praksi se vrlo rijetko programi granaju samo u jednom smjeru. Najčešće su u pitanju dva ili više smjerova.

  27. Višestruko grananje - If-else naredba • Opći oblik (sintaksa) je : if (uvjet)   naredba_1;else   naredba_2; • Naredba radi na sljedeći način: • Ako je uvjet ispunjen izvršava se naredba_1 i program se nastavlja prvom naredbom iza if-else naredbe. • Ako uvjet nije ispunjen izvršava se naredba_2 i program se nastavlja sljedećom naredbom.

  28. Višestruko grananje - If-else naredba • Grafički prikazano to izgleda ovako:

  29. PRIMJER - If-else naredba • Rastavljanje na znamenke i ispis rezultata samo ako korisnik upiše troznamenkasti broj. • #include<stdio.h>#include<math.h>main(){int a,prva,druga,treca;printf("Unesite troznamenkasti broj: ");scanf("%d",&a);if (a>99 && a<1000) {    prva=a/100;    druga=a/10%10;treca=a%10;printf("znamenke unesenog broja su %d, %d, %d", prva, druga, treca); }elseprintf("Niste upisali troznamenkasti broj"); }

  30. switch-case naredba • Zadaci koji u sebi sadrže različite izbornike u praksi se ne rješavaju pomoću if-elseif naredbe. Postoji naredba prilagođena ovakvim problemima - switch-case naredba. • Njezina sintaksa izgleda ovako: switch (izraz){ case konstanta_1: blok naredbi_1;break;case konstanta_2: blok naredbi_2;break;. . .case konstanta_n-1: blok naredbi_n-1;break;default: blok naredbi_n;break;}

  31. switch-case naredba • Naredba switch-case izvršava se na sljedeći način: • Računa se vrijednost izraza unutar zagrade • Dobivena vrijednost uspoređuje se sa nizom konstanti (konstanta_1 do konstanta_n-1). • Ako je vrijednost jednaka jednoj od konstanti, izvršava se blok naredbi pridružen toj konstanti • Ako dobivena vrijednost nije jednaka niti jednoj od navedenih konstanti, izvršit će se blok naredbi pridružen opciji default. • Izvršavanje bloka naredbi prekida se naredbom break. Ako se blok naredbi u case ne završi s break, nastavlja se izvršavati blok naredbi sljedećeg case. • Opcija default može se i izostaviti ukoliko za njom ne postoji potreba!

  32. PRIMJER - Switch - case naredba #include<stdio.h>main() {int x,y,rez,izbor;printf("Upisite dva cijela broja: ");scanf("%d %d",&x, &y);printf("Zelite li izracunati:\n1) zbroj\n2) razliku\n3) umnozak\n4) kvocijent\nunesenih brojeva?");printf("\nUpisite broj za izbor: "); scanf("%d",&izbor);switch(izbor) {case 1: rez=x+y; break;case 2: rez=x-y; break;case 3: rez=x*y; break;case 4: rez=x/y; break;default: printf("Kriva operacija!");break;  }if (izbor>0&&izbor<5){ printf("Trazeni rezultat je %d",rez); } }

  33. Uvjetni operator • Nednostavniji oblici if-else naredbe mogu se zamijeniti uvjetnim operatorom (?). • Sintaksa uvjetnog operatora: (uvjet) ? naredba_1 : naredba_2; • Kad izvršavanje programa dođe do uvjetnog operatora događa se sljedeće: • Izračuna se vrijednost uvjeta. • Ako je izračunata vrijednost različita od nule izvršit će se naredba_1. • Ako je izračunata vrijednost jednaka nuli izvršava se naredba_2.

  34. PRIMJER – Uvjetni operator • Linija kôda: (a%2==0) ? printf("Broj je paran") : printf("Broj je neparan); ispituje je li ostatak pri dijeljenju vrijednosti varijable a sa brojem 2 jednak nuli. Ako je, ispisuje na zaslon tekst "Broj je paran", a ako nije, ispisuje tekst "Broj je neparan".

  35. Operatori inkrement i dekrement • Operator inkrement (++) • je operator koji vrijednost varijable uvećava za jedan. Može se pisati ispred ili iza imena varijable. To znači da umjesto izraza a=a+1 možemo pisati a++ ili ++a. • Operator dekrement (--) • je operator koji vrijednost varijable umanjuje za jedan. Kao i inkrement može se pisati ispred ili iza imena varijable: a-- ili --a.

  36. Primjeri: • Ako je vrijednost varijable a= 5, nakon naredbe a++; njezina će vrijednost biti 6. • U ovom je slučaju svejedno jesu li operatori inkrement i dekrement ispred ili iza imena varijable. Ali, ako se koriste u aritmetičkim izrazima, tada to nije svejedno. • U izrazu b=++a, vrijednost varijable a najprije će se uvećati i tako uvećana pridružiti varijabli b. Ako je vrijednost varijable a prije izraza bila 5, nakon izraza vrijednost varijabli a i b biti će 6. • U izrazu b=a++, vrijednost varijable a (neka to bude 5) najprije će se pridružiti varijabli b (znači, b=5), a nakon toga će se uvećati za jedan (a=6). • Znači, nakon izraza b=a++, vrijednost varijable a će biti 6, dok će vrijednost varijable b biti 5. • Isto se događa i s operatorom dekrement.

  37. FOR petlja • Naredba for najčešće se koristi u programima u kojima je broj ponavljanja unaprijed poznat. • Opći oblik (sintaksa) naredbe for je: for (inicijalizacija; uvjet; promjena vrijednosti){ naredba (blok naredbi) za ponavljanje; } • Inicijalizacija je postupak postavljanja varijable koja kontrolira ponavljanje na početnu vrijednost • Ponavljanje će se nastavljati sve dok je ispunjen uvjet ponavljanja • Promjena vrijednosti je dio u kojem se definira način promjene stanja kontrolne varijable

  38. Grafički prikaz:

  39. Kako se izvršava naredba for? • Vrijednost kontrolne varijable se (inicijalizacijom) postavi na početnu vrijednost • Provjerava se istinitost uvjeta. • Ako je rezultat različit od nule, izvršava se naredba (blok naredbi) unutar for naredbe. • Ako je rezultat jednak nuli, ponavljanje se prekida i program nastavlja s izvršavanjem prvom naredbom iza naredbe for. • Vrijednost kontrolne varijable se mijenja na način na koji je zadana promjena vrijednosti. • Povratak na korak broj 2

  40. PRIMJER - FOR petlja • Naredbom: for (i=1;i<=5;i++){printf("Danas je lijep suncan dan!\n"); } na zaslon će se pet puta ispisati tekst "Danas je lijep suncan dan!" (svaki puta u novom redu zbog znakovne konstante \n)

  41. WHILE petlja • Kada broj ponavljanja nije unaprijed poznat, već ovisi o uvjetu i kad se uvjet treba provjeriti na početku bloka naredbi koristi se while naredba oblika: inicijalizacija while (uvjet){ naredba (blok naredbi); } • Naredbe unutar while ponavljaju se sve dok je uvjet različit od nule. Prilikom primjene while petlje potrebno je voditi računa o tome da se izbjegne beskonačna petlja

  42. Grafički prikaz:

  43. PRIMJER - WHILE • Program ispisuje sve dvoznamenkaste parne brojeve. #include<stdio.h>main() {int i=10;while (i<100) {printf("%d, ",i);    i+=2;  }}

  44. Petlja do - while • Do-whilenaredba koristi se u slučajevima u kojima se uvjet o kojem ovisi ponavljanje provjerrava tek na kraju bloka naredbi. • Opći oblik do-whilenaredbe: inicijalizacija; do { blok naredbi; }while (uvjet);

  45. Grafički prikaz:

  46. PRIMJER – DO -WHILE • Program ispisuje sve dvoznamenkaste parne brojeve. #include<stdio.h>main() { int i=10;  do {printf("%d, ",i);    i+=2;  }while (i<100)}

More Related