programiranje u c-u

47
PROGRAMIRANJE U C-U Teorija

Upload: annot

Post on 22-Feb-2016

65 views

Category:

Documents


2 download

DESCRIPTION

PROGRAMIRANJE U C-u. Teorija. Struktura programa napisanog u C-u. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: PROGRAMIRANJE U C-u

PROGRAMIRANJE U C-UTeorija

Page 2: PROGRAMIRANJE U C-u

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

Page 3: PROGRAMIRANJE U C-u

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");

Page 4: PROGRAMIRANJE U C-u

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!");

}

Page 5: PROGRAMIRANJE U C-u

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.

Page 6: PROGRAMIRANJE U C-u

ISPIS VRIJEDNOSTIFormat Značenje

%c oznaka formata za ispis jednog znaka

%d ispis cijelog broja

%f ispis realnog broja

%lf ispis realnog broja tipa double

%s ispis niza znakova

%e ispis realnog broja u E-notaciji

Page 7: PROGRAMIRANJE U C-u

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

Page 8: PROGRAMIRANJE U C-u

VARIJABLE I KONSTANTE Izrada programa od nas traži i rad s različitim

podacima. Podaci u programu mogu biti:

varijable ilikonstante

Varijable su podaci čije se vrijednosti tijekom izvođenja mijenjaju, a konstantama su podaci čije se vrijednosti tijekom izvođenja ne mogu promijeniti.

Page 9: PROGRAMIRANJE U C-u

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.

Page 10: PROGRAMIRANJE U C-u

ARITMETIČKI OPERATORI

Operacija Operatorzbrajanje +

oduzimanje -množenje *dijeljenje /Modulo

(ostatak cjelobrojnog dijeljenja)%

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

Page 11: PROGRAMIRANJE U C-u

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);

Page 12: PROGRAMIRANJE U C-u

FUNKCIJE ZA UNOS PODATAKA Kao i kod funkcije za ispis u listu formata

upisujemo 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)

Page 13: PROGRAMIRANJE U C-u

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);

Page 14: PROGRAMIRANJE U C-u

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.

Page 15: PROGRAMIRANJE U C-u

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.

Page 16: PROGRAMIRANJE U C-u

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.

Page 17: PROGRAMIRANJE U C-u

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 vrijednostnpr. # define pi 3,14159

Page 18: PROGRAMIRANJE U C-u

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;

Page 19: PROGRAMIRANJE U C-u

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:

Page 20: PROGRAMIRANJE U C-u

F-ja u C-u Tip argumenta Tip rezultata Matematička f-ja Standardna biblioteka

abs(x) int int Apsolutna vrijednost stdlib.h

labs(x) longint longint math.hacos(x) double(-1do 1) double(0 do )

Trigonometrijske funkcije

math.hacosl(x) long double long doubleasin(x)* double(-1do 1) double atan(x)* double double sin(x)* double doublecos(x)* double double(-1 do 1)tan(x)* double doubleexp(x)* double double eksponencijalna

funkcijemath.h

log(x)* double double prirodni algoritam(ln) math.hlog10(x)* double double logaritam s bazom 10 math.hsqrt(x)* double double Drugi korijen

pozitivnog brojamath.h

pow(x,y) double double Računa vrijednost x math.h

Page 21: PROGRAMIRANJE U C-u

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 za jednostruko i naredbe za

višestruko grananje.

Page 22: PROGRAMIRANJE U C-u

RELACIJSKI OPERATORIOperacija Operator

manje od <veće od >jednako = =

manje ili jednako <=

veće ili jednako >=

različito !=

Page 23: PROGRAMIRANJE U C-u

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čki izraz. Naredba unutar if će

se izvršiti jedino ako je uvjet različit od nule. Ako je uvjet jednak nuli, naredba iza if se preskače i izvršava se prva sljedeća naredba.

Page 24: PROGRAMIRANJE U C-u

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)); }}

Page 25: PROGRAMIRANJE U C-u

LOGIČKI OPERATORI

Operacija Operatorlogička negacija (NOT) !

logički i (AND) &&logički ili (OR) | |

• 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.

Page 26: PROGRAMIRANJE U C-u

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); }}

Page 27: PROGRAMIRANJE U C-u

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.

Page 28: PROGRAMIRANJE U C-u

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.

Page 29: PROGRAMIRANJE U C-u

VIŠESTRUKO GRANANJE - IF-ELSE NAREDBA

Grafički prikazano to izgleda ovako:

Page 30: PROGRAMIRANJE U C-u

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);}

  else    printf("Niste upisali troznamenkasti broj"); }

Page 31: PROGRAMIRANJE U C-u

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;}

Page 32: PROGRAMIRANJE U C-u

SWITCH-CASE NAREDBA Naredba switch-case izvršava se na sljedeći način:

Računa se vrijednost izraza unutar zagradeDobivena 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 konstantiAko 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!

Page 33: PROGRAMIRANJE U C-u

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); }

}

Page 34: PROGRAMIRANJE U C-u

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.

Page 35: PROGRAMIRANJE U C-u

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".

Page 36: PROGRAMIRANJE U C-u

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.

Page 37: PROGRAMIRANJE U C-u

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.

Page 38: PROGRAMIRANJE U C-u

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

Page 39: PROGRAMIRANJE U C-u

GRAFIČKI PRIKAZ:

Page 40: PROGRAMIRANJE U C-u

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

Page 41: PROGRAMIRANJE U C-u

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)

Page 42: PROGRAMIRANJE U C-u

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:

inicijalizacijawhile (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

Page 43: PROGRAMIRANJE U C-u

GRAFIČKI PRIKAZ:

Page 44: PROGRAMIRANJE U C-u

PRIMJER - WHILE Program ispisuje sve dvoznamenkaste parne

brojeve.

#include<stdio.h>main() {

int i=10;  while (i<100) {    printf("%d, ",i);    i+=2;

 }}

Page 45: PROGRAMIRANJE U C-u

PETLJA DO - WHILE Do-while naredba koristi se u slučajevima u

kojima se uvjet o kojem ovisi ponavljanje provjerrava tek na kraju bloka naredbi.

Opći oblik do-while naredbe:

inicijalizacija;do {

blok naredbi; }while (uvjet);

Page 46: PROGRAMIRANJE U C-u

GRAFIČKI PRIKAZ:

Page 47: PROGRAMIRANJE U C-u

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)}