Staša Vujičić v2poincare.matf.bg.ac.rs/~stasa/P1/Cas 05.pdfSve promenljive u C-u se moraju...
Transcript of Staša Vujičić v2poincare.matf.bg.ac.rs/~stasa/P1/Cas 05.pdfSve promenljive u C-u se moraju...
![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](https://reader033.fdocuments.net/reader033/viewer/2022041522/5e2f6b984b43320b1d14241d/html5/thumbnails/1.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041522/5e2f6b984b43320b1d14241d/html5/thumbnails/2.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041522/5e2f6b984b43320b1d14241d/html5/thumbnails/3.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041522/5e2f6b984b43320b1d14241d/html5/thumbnails/4.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041522/5e2f6b984b43320b1d14241d/html5/thumbnails/5.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041522/5e2f6b984b43320b1d14241d/html5/thumbnails/6.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041522/5e2f6b984b43320b1d14241d/html5/thumbnails/7.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041522/5e2f6b984b43320b1d14241d/html5/thumbnails/8.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041522/5e2f6b984b43320b1d14241d/html5/thumbnails/9.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041522/5e2f6b984b43320b1d14241d/html5/thumbnails/10.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041522/5e2f6b984b43320b1d14241d/html5/thumbnails/11.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041522/5e2f6b984b43320b1d14241d/html5/thumbnails/12.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041522/5e2f6b984b43320b1d14241d/html5/thumbnails/13.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041522/5e2f6b984b43320b1d14241d/html5/thumbnails/14.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041522/5e2f6b984b43320b1d14241d/html5/thumbnails/15.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041522/5e2f6b984b43320b1d14241d/html5/thumbnails/16.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041522/5e2f6b984b43320b1d14241d/html5/thumbnails/17.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041522/5e2f6b984b43320b1d14241d/html5/thumbnails/18.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041522/5e2f6b984b43320b1d14241d/html5/thumbnails/19.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041522/5e2f6b984b43320b1d14241d/html5/thumbnails/20.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041522/5e2f6b984b43320b1d14241d/html5/thumbnails/21.jpg)
Š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](https://reader033.fdocuments.net/reader033/viewer/2022041522/5e2f6b984b43320b1d14241d/html5/thumbnails/22.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041522/5e2f6b984b43320b1d14241d/html5/thumbnails/23.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041522/5e2f6b984b43320b1d14241d/html5/thumbnails/24.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041522/5e2f6b984b43320b1d14241d/html5/thumbnails/25.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041522/5e2f6b984b43320b1d14241d/html5/thumbnails/26.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041522/5e2f6b984b43320b1d14241d/html5/thumbnails/27.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041522/5e2f6b984b43320b1d14241d/html5/thumbnails/28.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041522/5e2f6b984b43320b1d14241d/html5/thumbnails/29.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041522/5e2f6b984b43320b1d14241d/html5/thumbnails/30.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041522/5e2f6b984b43320b1d14241d/html5/thumbnails/31.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041522/5e2f6b984b43320b1d14241d/html5/thumbnails/32.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041522/5e2f6b984b43320b1d14241d/html5/thumbnails/33.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041522/5e2f6b984b43320b1d14241d/html5/thumbnails/34.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041522/5e2f6b984b43320b1d14241d/html5/thumbnails/35.jpg)
#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](https://reader033.fdocuments.net/reader033/viewer/2022041522/5e2f6b984b43320b1d14241d/html5/thumbnails/36.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041522/5e2f6b984b43320b1d14241d/html5/thumbnails/37.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041522/5e2f6b984b43320b1d14241d/html5/thumbnails/38.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041522/5e2f6b984b43320b1d14241d/html5/thumbnails/39.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041522/5e2f6b984b43320b1d14241d/html5/thumbnails/40.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041522/5e2f6b984b43320b1d14241d/html5/thumbnails/41.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041522/5e2f6b984b43320b1d14241d/html5/thumbnails/42.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041522/5e2f6b984b43320b1d14241d/html5/thumbnails/43.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041522/5e2f6b984b43320b1d14241d/html5/thumbnails/44.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041522/5e2f6b984b43320b1d14241d/html5/thumbnails/45.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041522/5e2f6b984b43320b1d14241d/html5/thumbnails/46.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041522/5e2f6b984b43320b1d14241d/html5/thumbnails/47.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041522/5e2f6b984b43320b1d14241d/html5/thumbnails/48.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041522/5e2f6b984b43320b1d14241d/html5/thumbnails/49.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041522/5e2f6b984b43320b1d14241d/html5/thumbnails/50.jpg)
#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](https://reader033.fdocuments.net/reader033/viewer/2022041522/5e2f6b984b43320b1d14241d/html5/thumbnails/51.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041522/5e2f6b984b43320b1d14241d/html5/thumbnails/52.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041522/5e2f6b984b43320b1d14241d/html5/thumbnails/53.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022041522/5e2f6b984b43320b1d14241d/html5/thumbnails/54.jpg)
#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](https://reader033.fdocuments.net/reader033/viewer/2022041522/5e2f6b984b43320b1d14241d/html5/thumbnails/55.jpg)
Izlaz:
x = 1
x = 2
x = 3
x = 4
x = 5
x = 6
x = 7
x = 8
x = 9
55