staša vujičić v2poincare.matf.bg.ac.rs/~stasa/p1/cas 05.pdfsve promenljive u c-u se moraju...

55
Staša Vujičić v2

Upload: others

Post on 06-Jan-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Staša Vujičić v2poincare.matf.bg.ac.rs/~stasa/P1/Cas 05.pdfSve promenljive u C-u se moraju deklarisati. Time se za promenljivu u memoriji rezerviše potreban prostor, a ostatak

Staša Vujičić

v2

Page 2: Staša Vujičić v2poincare.matf.bg.ac.rs/~stasa/P1/Cas 05.pdfSve promenljive u C-u se moraju deklarisati. Time se za promenljivu u memoriji rezerviše potreban prostor, a ostatak

Algoritmi

Page 3: Staša Vujičić v2poincare.matf.bg.ac.rs/~stasa/P1/Cas 05.pdfSve promenljive u C-u se moraju deklarisati. Time se za promenljivu u memoriji rezerviše potreban prostor, a ostatak

Konstruisati efikasan algoritam znači

dati skup preciznih uputstava

kako doći do rešenja zadatog problema.

Algoritmi se mogu opisivati:

pseudo jezikom

prirodnim jezikom

dijagramom toka.

3

Page 4: Staša Vujičić v2poincare.matf.bg.ac.rs/~stasa/P1/Cas 05.pdfSve promenljive u C-u se moraju deklarisati. Time se za promenljivu u memoriji rezerviše potreban prostor, a ostatak

Opisati prirodnim jezikom detaljno,

precizno i nedvosmisleno korake

pri rešavanju problema,

vodeći računa o redosledu operacija

koje se izvršavaju.

4

Page 5: Staša Vujičić v2poincare.matf.bg.ac.rs/~stasa/P1/Cas 05.pdfSve promenljive u C-u se moraju deklarisati. Time se za promenljivu u memoriji rezerviše potreban prostor, a ostatak

Pseudo jezik je neformalna kombinacija

prirodnog jezika i nekog programskoj jezika.

Pri upotrebi pseudo jezika mora se voditi

računa da se jezičke konstrukcije koriste

uvek na isti način i da budu praćene

objašnjenjima (ako je potrebno).

5

Page 6: Staša Vujičić v2poincare.matf.bg.ac.rs/~stasa/P1/Cas 05.pdfSve promenljive u C-u se moraju deklarisati. Time se za promenljivu u memoriji rezerviše potreban prostor, a ostatak

Napisati algoritam za ispisivanje poruke

”Zdravo svete” na izlazu.

Algoritam Ispis

ulaz: Nema podataka na ulazu.

izlaz: poruka ”Zdravo, svete!!!”

početak

izlaz: "Zdravo, svete!!!"

kraj

6

Page 7: Staša Vujičić v2poincare.matf.bg.ac.rs/~stasa/P1/Cas 05.pdfSve promenljive u C-u se moraju deklarisati. Time se za promenljivu u memoriji rezerviše potreban prostor, a ostatak

Napisati algoritam za sabiranje dva broja.

Algoritam Sabiranje

ulaz: x,y

izlaz: zbir brojeva x,y

početak

ulaz x,y;

zbir = x + y;

izlaz zbir;

kraj

7

Page 8: Staša Vujičić v2poincare.matf.bg.ac.rs/~stasa/P1/Cas 05.pdfSve promenljive u C-u se moraju deklarisati. Time se za promenljivu u memoriji rezerviše potreban prostor, a ostatak

Napisati algoritam za razmenu dva broja.

Algoritam razmena

ulaz: dva broja

izlaz: razmenjena dva broja

početak

ulaz x,y;

pom=x; /* pom je pomocna promenljiva */

x=y;

y=pom;

izlaz x,y;

kraj

8

Page 9: Staša Vujičić v2poincare.matf.bg.ac.rs/~stasa/P1/Cas 05.pdfSve promenljive u C-u se moraju deklarisati. Time se za promenljivu u memoriji rezerviše potreban prostor, a ostatak

Dat je prav valjak visine H i poluprečnika osnove r. Izračunati površinu i zapreminu valjka.

Algoritam P i V valjka

ulaz: visina valjka H i poluprecnik osnove r

izlaz: P i V valjka

početak

ulaz H,r;

B = πr2;

V = B * H;

O = 2πrH;

P = O + 2B;

izlaz P,V;

kraj

9

Page 10: Staša Vujičić v2poincare.matf.bg.ac.rs/~stasa/P1/Cas 05.pdfSve promenljive u C-u se moraju deklarisati. Time se za promenljivu u memoriji rezerviše potreban prostor, a ostatak

Napisati algoritam za određivanje maksimuma dva broja.

Algoritam Maksimum dva broja

ulaz: x, y;

izlaz: veći od brojeva x i y

početak

ulaz x,y;

ako je x>y onda je

max=x;

inace je

max=y;

izlaz max;

kraj

10

Page 11: Staša Vujičić v2poincare.matf.bg.ac.rs/~stasa/P1/Cas 05.pdfSve promenljive u C-u se moraju deklarisati. Time se za promenljivu u memoriji rezerviše potreban prostor, a ostatak

Za ovaj oblik opisa koriste se grafički simboli

čiji je opis propisan ISO standardom.

Tekst koji opisuje obradu

se zapisuje unutar grafičkih simbola.

Tok rada algoritma

se opisuje linijama koje povezuju

grafičke simbole koji reprezentuju obradu.

11

Page 12: Staša Vujičić v2poincare.matf.bg.ac.rs/~stasa/P1/Cas 05.pdfSve promenljive u C-u se moraju deklarisati. Time se za promenljivu u memoriji rezerviše potreban prostor, a ostatak

Primer dijagrama toka

Page 13: Staša Vujičić v2poincare.matf.bg.ac.rs/~stasa/P1/Cas 05.pdfSve promenljive u C-u se moraju deklarisati. Time se za promenljivu u memoriji rezerviše potreban prostor, a ostatak

Programski jezik C

Page 14: Staša Vujičić v2poincare.matf.bg.ac.rs/~stasa/P1/Cas 05.pdfSve promenljive u C-u se moraju deklarisati. Time se za promenljivu u memoriji rezerviše potreban prostor, a ostatak

U upotrebi su velika i mala slova,

cifre i specijalni simboli iz ASCII skupa.

Programski jezik C razlikuje velika i mala

slova!

int x, X;

/*To su dve razlicite promenljive!!!*/

Komentari se navode između sekvenci /* i */.

Mogu se prostirati u više linija.

Ne mogu biti ugnježdeni.

Zasnovano na primerima sa sajtova:

http://www.matf.bg.ac.rs/~milan

http://www.matf.bg.ac.rs/~jtomasevic 14

Page 15: Staša Vujičić v2poincare.matf.bg.ac.rs/~stasa/P1/Cas 05.pdfSve promenljive u C-u se moraju deklarisati. Time se za promenljivu u memoriji rezerviše potreban prostor, a ostatak

Postoji šest vrsta tokena:

identifikatori

ključne reči

operatori

separatori

stringovi i

konstante.

Tokeni se razdvajaju belinama,

tabulatorima i novim redovima.

15

Page 16: Staša Vujičić v2poincare.matf.bg.ac.rs/~stasa/P1/Cas 05.pdfSve promenljive u C-u se moraju deklarisati. Time se za promenljivu u memoriji rezerviše potreban prostor, a ostatak

Identifikatori se sastoje iz

slova, cifara i znaka _

pri čemu prvi karakter nije cifra.

Koriste se za:

imena promenljivih,

imena funkcija, itd.

16

Page 17: Staša Vujičić v2poincare.matf.bg.ac.rs/~stasa/P1/Cas 05.pdfSve promenljive u C-u se moraju deklarisati. Time se za promenljivu u memoriji rezerviše potreban prostor, a ostatak

Ključne reči su rezervisane reči koje imaju

posebnu ulogu i ne mogu se koristiti kao

identifikatori.

Ključne reči se koriste za:

definisanje jezičkih konstrukcija (if, while, for),

imena tipova (int, float, char), itd.

17

Page 18: Staša Vujičić v2poincare.matf.bg.ac.rs/~stasa/P1/Cas 05.pdfSve promenljive u C-u se moraju deklarisati. Time se za promenljivu u memoriji rezerviše potreban prostor, a ostatak

Izvorni program (source code) u C-u je

običan tekstualni fajl,

kreiran u bilo kom editoru teksta (npr. Notepad).

Program u C-u sastoji se iz definicija funkcija.

Funkcija koja mora da postoji u svakom

programu je main(). Izvršavanje programa se

svodi na izvršavanje tela ove funkcije.

Telo funkcije se navodi iza zaglavlja funkcije

main(), između vitičastih zagrada { i }.

18

Page 19: Staša Vujičić v2poincare.matf.bg.ac.rs/~stasa/P1/Cas 05.pdfSve promenljive u C-u se moraju deklarisati. Time se za promenljivu u memoriji rezerviše potreban prostor, a ostatak

U telu funkcije se na početku navode

deklaracije pomenljivih, nakon čega sledi

proizvoljan niz naredbi .

main() /* zaglavlje funkcije main */

{ /* ovde pocinje telo */

/* deklaracije promenljivih */

/* naredbe */

} /* kraj tela */

19

Page 20: Staša Vujičić v2poincare.matf.bg.ac.rs/~stasa/P1/Cas 05.pdfSve promenljive u C-u se moraju deklarisati. Time se za promenljivu u memoriji rezerviše potreban prostor, a ostatak

Napisati program koji na standardnom izlazu

štampa ”Zdravo, svete!”.

#include <stdio.h>

main()

{

printf("Zdravo, svete!\n");

}

Izlaz iz programa:

Zdravo, svete!

20

Page 21: Staša Vujičić v2poincare.matf.bg.ac.rs/~stasa/P1/Cas 05.pdfSve promenljive u C-u se moraju deklarisati. Time se za promenljivu u memoriji rezerviše potreban prostor, a ostatak

Šta je izlaz iz sledećeg programa?

#include <stdio.h>

main()

{

printf("Zdravo, ");

printf("svete!");

printf("\n");

}

21

Page 22: Staša Vujičić v2poincare.matf.bg.ac.rs/~stasa/P1/Cas 05.pdfSve promenljive u C-u se moraju deklarisati. Time se za promenljivu u memoriji rezerviše potreban prostor, a ostatak

Sve promenljive u C-u se moraju deklarisati.

Time se za promenljivu u memoriji rezerviše

potreban prostor, a ostatak programa postaje

svestan postojanja promenljive i njenog tipa.

Deklaracija se sastoji iz imena tipa

za kojim slede imena promenljivih (identifikatori)

koja su razdvojena zarezima.

Deklaracija se završava simbolom ';'.

Svako ime promenljive u deklaraciji može biti

praćeno inicijalizatorom koji se sastoji iz

karaktera '=' za kojim sledi inicijalna vrednost.

22

Page 23: Staša Vujičić v2poincare.matf.bg.ac.rs/~stasa/P1/Cas 05.pdfSve promenljive u C-u se moraju deklarisati. Time se za promenljivu u memoriji rezerviše potreban prostor, a ostatak

Da bi promenljiva mogla da se upotrebljava u programu mora na početku programa da se deklariše!

Prilikom deklaracije može da se izvrši i inicijalizacija.

int broj; /* Deklaracija celog broja */

int vrednost=5; /* Deklaracija i inicijalizacija celog broja */

Postoji i kvalifikator const koji može da bude dodeljen deklaraciji bilo koje promenljive da bi označio da se ona neće menjati

const double e=2.71828182845905 ;

23

Page 24: Staša Vujičić v2poincare.matf.bg.ac.rs/~stasa/P1/Cas 05.pdfSve promenljive u C-u se moraju deklarisati. Time se za promenljivu u memoriji rezerviše potreban prostor, a ostatak

Uvođenje promenljivih u program.

#include <stdio.h>

main()

{

/* Deklaracija vise promenljivih istog tipa */

int rez,pom1,pom2;

pom1=20;

pom2=15;

rez=pom1-pom2;

/* Ispisivanje rezultata */

printf("Rezultat je %d - %d = %d\n", pom1, pom2, rez);

}

24

Page 25: Staša Vujičić v2poincare.matf.bg.ac.rs/~stasa/P1/Cas 05.pdfSve promenljive u C-u se moraju deklarisati. Time se za promenljivu u memoriji rezerviše potreban prostor, a ostatak

Izlaz iz programa:

Rezultat je 20-15=5

25

Page 26: Staša Vujičić v2poincare.matf.bg.ac.rs/~stasa/P1/Cas 05.pdfSve promenljive u C-u se moraju deklarisati. Time se za promenljivu u memoriji rezerviše potreban prostor, a ostatak

Tip Opis Uobičajena veličina

char Mali ceo broj

(ASCII kod karaktera)

1 bajt

int Ceo broj 4 bajta

float Realan broj 4 bajta

double Realan broj 8 bajtova

26

Page 27: Staša Vujičić v2poincare.matf.bg.ac.rs/~stasa/P1/Cas 05.pdfSve promenljive u C-u se moraju deklarisati. Time se za promenljivu u memoriji rezerviše potreban prostor, a ostatak

Ulaz i izlaz se ostvaruju posredstvom funkcija

koje su definisane u standardnoj biblioteci

stdio.h.

Ove funkcije su obične C funkcije,

koje se služe direktno servisima operativnog

sistema prilikom svog rada.

27

Page 28: Staša Vujičić v2poincare.matf.bg.ac.rs/~stasa/P1/Cas 05.pdfSve promenljive u C-u se moraju deklarisati. Time se za promenljivu u memoriji rezerviše potreban prostor, a ostatak

Za korišćenje ovih funkcija neophodno je

uključiti zaglavlje stdio.h navođenjem

direktive #include<stdio.h> pre definicije

funkcije main().

Ovo zaglavlje je obilan tekstualni fajl

u kome su navedene deklaracije funkcija

ulaza i izlaza.

Direktiva #include na mestu poziva uključuje

kompletan sadržaj fajla koji je naveden,

čime funkcije i podaci deklarisani u njemu

postaju dostupni funkciji main().

28

Page 29: Staša Vujičić v2poincare.matf.bg.ac.rs/~stasa/P1/Cas 05.pdfSve promenljive u C-u se moraju deklarisati. Time se za promenljivu u memoriji rezerviše potreban prostor, a ostatak

Ovom funkcijom se ispisuje poruka zadata

format stringom na standardni izlaz.

Eventualni konverzioni specifikatori se

zamenjuju vrednostima izraza koji u tom

slučaju slede nakon format stringa,

kao argumenti funkcije printf(),

razdvojeni zarezima i u onom poretku

u kome su odgovarajući konverzioni

specifikatori navedeni.

Tipovi izraza moraju biti u skladu sa tipovima

koje određuju konverzioni specifikatori.

29

Page 30: Staša Vujičić v2poincare.matf.bg.ac.rs/~stasa/P1/Cas 05.pdfSve promenljive u C-u se moraju deklarisati. Time se za promenljivu u memoriji rezerviše potreban prostor, a ostatak

Specifikator Tip Napomena

%d int Dekadni ispis

%f float, double Ispis bez eksponenta

%Lf long double Ispis bez eksponenta

%hd short Dekadni ispis

%ld long Dekadni ispis

%c char Ispis karaktera

30

Page 31: Staša Vujičić v2poincare.matf.bg.ac.rs/~stasa/P1/Cas 05.pdfSve promenljive u C-u se moraju deklarisati. Time se za promenljivu u memoriji rezerviše potreban prostor, a ostatak

Funkcija printf je bibliotečka funkcija

koja prikazuje izlazne podatke u

određenom formatu.

Primer korišćenja funkcije printf je:

printf("%d\t%d\n", broj1, broj2);

Prvi argument ove funkcije je uvek između

” ” i određuje format u kome će se podaci

ispisati na izlaz. Ova funkcija vraća kao

vrednosti broj upisanih znakova na izlazu.

31

Page 32: Staša Vujičić v2poincare.matf.bg.ac.rs/~stasa/P1/Cas 05.pdfSve promenljive u C-u se moraju deklarisati. Time se za promenljivu u memoriji rezerviše potreban prostor, a ostatak

Sekvenca \n u okviru prvog argumenta

funkcije printf je C oznaka za prelazak u novi

red, \t je oznaka za tabulator, dok %d

označava da će na tom mestu biti ispisana

celobrojna vrednost argumenta koji je sa

njim u paru. Svaka % konstrukcija je u paru

sa odgovarajućim argumentom koji sledi.

%% koristi se za ispis znaka %

\\ koristi se za ispis znaka \

\” koristi se za ispis znaka ”

32

Page 33: Staša Vujičić v2poincare.matf.bg.ac.rs/~stasa/P1/Cas 05.pdfSve promenljive u C-u se moraju deklarisati. Time se za promenljivu u memoriji rezerviše potreban prostor, a ostatak

Postoji mogućnost da se precizira i

širina polja u kome će se ispisati

odgovarajuće vrednosti.

Na primer, koristimo %3c za štampanje

karaktera na tri pozicije poravnato zdesna.

Koristimo %3d za štampanje broja na tri

pozicije ili %6d za štampanje broja na 6

pozicija.

33

Page 34: Staša Vujičić v2poincare.matf.bg.ac.rs/~stasa/P1/Cas 05.pdfSve promenljive u C-u se moraju deklarisati. Time se za promenljivu u memoriji rezerviše potreban prostor, a ostatak

Važi:

%f — štampaj kao realan broj

%6f — štampaj kao realan broj širok najviše 6

znakova

%.2f — štampaj kao realan broj sa dve

decimale

%6.2f — štampaj kao realan broj širok

najviše 6 znakova pri čemu su 2 iza

decimalne tačke.

Da bi se izvršilo levo poravnanje, između % i

odgovarajućeg karaktera dodaje se znak -.

34

Page 35: Staša Vujičić v2poincare.matf.bg.ac.rs/~stasa/P1/Cas 05.pdfSve promenljive u C-u se moraju deklarisati. Time se za promenljivu u memoriji rezerviše potreban prostor, a ostatak

#include <stdio.h>

main()

{

printf("Slova:\n%3c\n%5c\n", 'z' , 'Z');

}

Izlaz iz programa:

Slova:

z

Z

35

Page 36: Staša Vujičić v2poincare.matf.bg.ac.rs/~stasa/P1/Cas 05.pdfSve promenljive u C-u se moraju deklarisati. Time se za promenljivu u memoriji rezerviše potreban prostor, a ostatak

Ovom funkcijom se učitavaju podaci sa

standardnog ulaza.

Prvi argument je format string

u kome se navode konverzioni specifikatori

kojima se definiše tip podatka koji se

očekuje.

Nakon format stringa slede adrese

promenljivih, razdvojene zarezima,

u koje treba upisati vrednosti učitane sa

ulaza. Adresa promenljive a navodi se sa &a.

36

Page 37: Staša Vujičić v2poincare.matf.bg.ac.rs/~stasa/P1/Cas 05.pdfSve promenljive u C-u se moraju deklarisati. Time se za promenljivu u memoriji rezerviše potreban prostor, a ostatak

Adrese se navode u onom poretku

u kom su odgovarajući konverzioni

specifikatori navedeni u format stringu.

Tipovi promenljivih moraju biti u skladu

sa tipovima koje određuju konverzioni

specifikatori.

37

Page 38: Staša Vujičić v2poincare.matf.bg.ac.rs/~stasa/P1/Cas 05.pdfSve promenljive u C-u se moraju deklarisati. Time se za promenljivu u memoriji rezerviše potreban prostor, a ostatak

Specifikator Tip Napomena

%d int Opciono označeni dekadni broj

%f

float

Realan broj sa opcionim eksponentom

%lf double Realan broj sa opcionim eksponentom

%Lf long

double

Realan broj sa opcionim eksponentom

%hd short Opciono označeni dekadni broj

%ld long Opciono označeni dekadni broj

%c char Karakter iz ASCII skupa

38

Page 39: Staša Vujičić v2poincare.matf.bg.ac.rs/~stasa/P1/Cas 05.pdfSve promenljive u C-u se moraju deklarisati. Time se za promenljivu u memoriji rezerviše potreban prostor, a ostatak

Na primer,

scanf("%d %d", &broj1, &broj2);

Ova funkcija čita sa ulaza dva cela broja i

smešta ih na adresu promenljivih broj1 i

broj2, redom.

Kao rezultat, ova funkcija vraća broj uspešno

dodeljenih ulaznih vrednosti.

Naredni poziv funkcije scanf nastavlja

čitanje neposredno iza poslednjeg znaka koji

je već pročitan.

39

Page 40: Staša Vujičić v2poincare.matf.bg.ac.rs/~stasa/P1/Cas 05.pdfSve promenljive u C-u se moraju deklarisati. Time se za promenljivu u memoriji rezerviše potreban prostor, a ostatak

Program prikazuje unos celog broja koristeći funkciju scanf("%d", &x).

#include <stdio.h>

main()

{

int x;

printf("Unesi ceo broj : ");

/* Obratiti paznju na znak &

pre imena promenljive u funkciji scanf. */

scanf("%d",&x);

/* U funkciji printf nije

potrebno stavljati &. */

printf("Uneli ste broj %d\n", x);

}

40

Page 41: Staša Vujičić v2poincare.matf.bg.ac.rs/~stasa/P1/Cas 05.pdfSve promenljive u C-u se moraju deklarisati. Time se za promenljivu u memoriji rezerviše potreban prostor, a ostatak

if (izraz)

naredba1

else

naredba2

Naredba može biti prosta naredba

a može biti i složena naredba (blok)

koja se dobije kada se više prostih naredbi

grupišu navođenjem vitičastih zagrada.

41

Page 42: Staša Vujičić v2poincare.matf.bg.ac.rs/~stasa/P1/Cas 05.pdfSve promenljive u C-u se moraju deklarisati. Time se za promenljivu u memoriji rezerviše potreban prostor, a ostatak

Program ilustruje if i ispisuje ukoliko je uneti ceo broj negativan.

#include <stdio.h>

main()

{

int b;

printf("Unesi ceo broj:");

scanf("%d", &b);

if (b < 0)

printf("Broj je negativan\n"); //prosta naredba

}

42

Page 43: Staša Vujičić v2poincare.matf.bg.ac.rs/~stasa/P1/Cas 05.pdfSve promenljive u C-u se moraju deklarisati. Time se za promenljivu u memoriji rezerviše potreban prostor, a ostatak

Ulaz:

Unesi ceo broj:-5

Izlaz:

Broj je negativan

Ulaz:

Unesi ceo broj:5

Izlaz:

43

Page 44: Staša Vujičić v2poincare.matf.bg.ac.rs/~stasa/P1/Cas 05.pdfSve promenljive u C-u se moraju deklarisati. Time se za promenljivu u memoriji rezerviše potreban prostor, a ostatak

Else se odnosi na prvi neuparen if.

Ako želimo drugačije moramo da navedemo

vitičaste zagrade.

if (izraz) //prvo if

if (izraz1) naredba1 //drugo if

else naredba2

Ovo else se odnosi na drugo if a ne na prvo

if!

44

Page 45: Staša Vujičić v2poincare.matf.bg.ac.rs/~stasa/P1/Cas 05.pdfSve promenljive u C-u se moraju deklarisati. Time se za promenljivu u memoriji rezerviše potreban prostor, a ostatak

if (izraz)

{

if (izraz1) naredba1

}

else naredba2

Tek sada se else odnosi na prvo if!!!

45

Page 46: Staša Vujičić v2poincare.matf.bg.ac.rs/~stasa/P1/Cas 05.pdfSve promenljive u C-u se moraju deklarisati. Time se za promenljivu u memoriji rezerviše potreban prostor, a ostatak

if (izraz1)

iskaz1

else if (izraz2)

iskaz2

else if (izraz3)

iskaz3

else if (izraz4)

iskaz4

else iskaz

46

Page 47: Staša Vujičić v2poincare.matf.bg.ac.rs/~stasa/P1/Cas 05.pdfSve promenljive u C-u se moraju deklarisati. Time se za promenljivu u memoriji rezerviše potreban prostor, a ostatak

if (a<5)

printf("A je manje od 5\n");

else if (a==5)

printf("A je jednako 5\n");

else if (a>10)

printf("A je vece od 10\n");

else if (a==10)

printf("A je jednako 10\n");

else printf("A je vece od pet i manje od

10\n");

47

Page 48: Staša Vujičić v2poincare.matf.bg.ac.rs/~stasa/P1/Cas 05.pdfSve promenljive u C-u se moraju deklarisati. Time se za promenljivu u memoriji rezerviše potreban prostor, a ostatak

Program ispituje znak broja.

#include <stdio.h>

int main()

{

int b;

printf("Unesi ceo broj : ");

scanf("%d", &b);

if (b < 0)

printf("Broj je negativan\n");

else if (b == 0)

printf("Broj je nula\n");

else

printf("Broj je pozitivan\n");

}

48

Page 49: Staša Vujičić v2poincare.matf.bg.ac.rs/~stasa/P1/Cas 05.pdfSve promenljive u C-u se moraju deklarisati. Time se za promenljivu u memoriji rezerviše potreban prostor, a ostatak

Ulaz:

Unesi ceo broj:-5

Izlaz:

Broj je negativan

Ulaz:

Unesi ceo broj:5

Izlaz:

Broj je pozitivan

49

Page 50: Staša Vujičić v2poincare.matf.bg.ac.rs/~stasa/P1/Cas 05.pdfSve promenljive u C-u se moraju deklarisati. Time se za promenljivu u memoriji rezerviše potreban prostor, a ostatak

#include <stdio.h>

int main()

{

int b;

printf("Unesi ceo broj : ");

scanf("%d", &b);

/* Obratiti paznju na = umesto == */

if (b = 0)

printf("Broj je nula\n");

else if (b < 0)

printf("Broj je negativan\n");

else

printf("Broj je pozitivan\n");

}

50

Page 51: Staša Vujičić v2poincare.matf.bg.ac.rs/~stasa/P1/Cas 05.pdfSve promenljive u C-u se moraju deklarisati. Time se za promenljivu u memoriji rezerviše potreban prostor, a ostatak

Ulaz:

Unesi ceo broj:-5

Izlaz:

Broj je pozitivan.

Voditi računa o tome da je = operator

dodele a == je operator poređenja na

jednakost.

Ne mešati ta dva operatora!

51

Page 52: Staša Vujičić v2poincare.matf.bg.ac.rs/~stasa/P1/Cas 05.pdfSve promenljive u C-u se moraju deklarisati. Time se za promenljivu u memoriji rezerviše potreban prostor, a ostatak

Uslov u zagradi se testira i ako je ispunjen

telo petlje (naredba) se izvršava.

Zatim se uslov ponovo testira i ako je

ispunjen ponovo se izvršava telo petlje.

I tako sve dok uslov ne postane neispunjen.

Tada se izlazi iz petlje i nastavlja sa prvom

sledećom naredbom u programu.

while (uslov)

telo petlje

52

Page 53: Staša Vujičić v2poincare.matf.bg.ac.rs/~stasa/P1/Cas 05.pdfSve promenljive u C-u se moraju deklarisati. Time se za promenljivu u memoriji rezerviše potreban prostor, a ostatak

Voditi računa o tome da li je naredba koja čini telo petlje prosta ili složena!

Ako nema vitičastih zagrada onda se prva naredba iza while(uslov) tretira kao telo while petlje.

Na primer, u sledećem fragmentu koda

while (i<j)

i=2*i;

j++;

samo naredba i=2*i; se ponavlja u okviru while petlje dok se naredba j++; izvršava tek nakon izlaženja iz while petlje.

53

Page 54: Staša Vujičić v2poincare.matf.bg.ac.rs/~stasa/P1/Cas 05.pdfSve promenljive u C-u se moraju deklarisati. Time se za promenljivu u memoriji rezerviše potreban prostor, a ostatak

#include <stdio.h>

int main()

{

int x;

x = 1;

while (x<10)

{

printf("x = %d\n",x);

x++; /* x++ je isto kao i x=x+1 */

}

}

54

Page 55: Staša Vujičić v2poincare.matf.bg.ac.rs/~stasa/P1/Cas 05.pdfSve promenljive u C-u se moraju deklarisati. Time se za promenljivu u memoriji rezerviše potreban prostor, a ostatak

Izlaz:

x = 1

x = 2

x = 3

x = 4

x = 5

x = 6

x = 7

x = 8

x = 9

55