Professional Documents
Culture Documents
Sekvenca I Selekcija If I If-Else
Sekvenca I Selekcija If I If-Else
IF I IF-ELSE
SEKVENCA: { }
{
naredba_1;
naredba_2;
.
.
.
naredba_N;
}
Sadržaj sekvenci uvlači se za tabulator u odnosu na zagrade {}, i svaka naredba se radi
preglednosti piše u posebnom redu. Sekvenca u C jeziku, ispred prve izvršne naredbe može
sadržati i nekoliko deklarativnih naredbi, i tada sekvenca predstavlja blok (kao što je na primer
telo main funkcije).
Na primer:
Neka je data sekvenca:
{
x+=y;
y-=x;
x-=y;
}
Preporučuje se da se niz naredbi koristi kada je u pitanju niz jako povezanih radnji, a da
se u svim ostalim slučajevima koriste sekvence.
SELEKCIJE
Selekcija if
Opšti oblik selekcije if je:
if(uslov) naredba;
Ukoliko logički izraz uslov ima vrednost logičke istine izvršiće se naredba, a u suprotnom
se naredba neće izvršiti.
Ako je potrebno da se izvrši više naredbi ako je logički uslov zadovoljen tada treba
koristiti sekvencu.
if(uslov)
{
naredba_1;
naredba_2;
.
.
.
naredba_N;
}
Selekcija if-else
Opšti oblik selekcije if-else je:
if(uslov) naredba_1;
else naredba_2;
Ukoliko logički izraz uslov ima vrednost logičke istine izvršiće se naredba_1, a u
suprotnom se izvršava naredba_2.
Primeri 1:
Napisati deo C programa koji izračunava zbir pozitivnih celobrojnih podataka među
promenljivama a,b,c,d, e i f.
Rešenje
s=0;
if(a>0) s+=a;
if(b>0) s+=b;
if(c>0) s+=c;
if(d>0) s+=d;
if(e>0) s+=e;
if(f>0) s+=f;
//komentar
#include <stdio.h>
main(){
int a,b,veci; //
printf("\n\tVECi: ");
scanf("%d%d", &a,&b);
if(a>b) veci=a;
else veci=b;
x=3; y=1;
if (x>0)
if (y>0) x++;
else { x--;
y--;
} /* x=4, y=1 */
U C jeziku else odgovara prvom slobodnom if koje prethodi a ne sadrži else.
Ako želimo da promenimo to pravilo pridruživanja moramo koristiti velike zagrade Npr
x=3; y=1;
if (x>0){
if (y<0) x++;
Napisati deo C programa koji utvrđuje najveću vrednost između tri uneta broja x, y i z i
rezultat upisuje u promenljivu max.
Rešenje
prvi način:
if(x>y)
{
if(x>z) max=x;
else max = z;
}else{
if(y>z) max = y;
else max = z;
}
drugi način:
if(x>y&&x>z) max = x;
else {
if(y>z) max = y;
else max = z;
}
treći način:
max = x;
if(y>max) max = y;
if(z>max) max = z;
Domaći:
Napisati deo C programa koji na osnovu vrednosti celobrojne promenljive ugao (koji
može biti negativan, veći od 360 ili manji od -360), utvrđuje i ispisuje kvadrant u kome se ugao
nalazi. Ugao od 0 stepeni pripada prvom kvadrantu, ugao od 90 drugom, ugao od 180 stepeni
trećem, a ugao od 270 stepeni pripada četvrtom kvadrantu.
Koristiti isključivo naredbu if-else.
switch(izraz)
{
case k_1: niz_ naredbi_1;
case k_2: niz_ naredbi_2;
.
.
.
case k_N: niz_naredbi_N;
default: niz_naredbi_0;
}
switch(izraz)
{
case k_1: niz_ naredbi_1;
break;
case k_2: niz_ naredbi_2;
break;
.
.
.
case k_N: niz_naredbi_N;
break;
default: niz_naredbi_0;
}
Zadatak 1
Napisati C program koji na osnovu unete godine i rednog broja meseca u godini ispisuje koliko taj mesec u toj
godini ima dana.
Rešenje:
/***************************************************************************
Opis: Demonstrira primenu naredbe visestrukog grananja switch.
Koristi module: -
Autori: Branko Markoski, Dejan Lacmanovic, Predrag Pecev
Datum poslednje promene:
***************************************************************************/
#include <stdio.h>
int main(void)
{
/* Definicija promenljivih. */
unsigned god,mesec;
/* Unos podataka. */
printf("\n UNESITE REDNI BROJ MESECA: ");
scanf("%d",&mesec);
printf(" UNESITE TEKUCU GODINU: ");
scanf("%d",&god);
printf("\n\n\n UNETI MESEC IMA ");
switch(mesec)
{
case 1: case 3: case 5: case 7: case 8: case 10: case 12: printf(" 31 DAN.");
break;
case 4: case 6: case 9: case 11: printf(" 30 DANA.");
break;
case 2: if(god%4==0) printf(" 29 DANA.");
else printf(" 28 DANA.");
}
return 0;
}
NAREDBE CIKLUSA
CIKLUSI (PETLJE)
WHILE NAREDBA
CIKLUSI (PETLJE)
WHILE NAREDBA
Primer 1:
Napisati C program koji omogućava unos šest celih brojeva i izračunava zbir pozitivnih
među njima. Zadatak rešiti bez korišćenja ciklusa.
Rešenje:
#include <stdio.h>
void main(void)
{
int a, b, c, d, e, f, s;
s=0;
if(a>0) s+=a;
if(b>0) s+=b;
if(c>0) s+=c;
if(d>0) s+=d;
if(e>0) s+=e;
if(f>0) s+=f;
Rešenje pokazuje da se vrši unos brojeva istoga tipa podatka, kao i da su selekcije iste
strukture. Sličan deo programskog koda (imaju istu strukturu) u programu se ponavlja šest puta.
Korišćenjem ciklusa program postaje manji i pregledniji, a eliminiše se ponavljanje istih
struktura.
Zadatak 2
Napisati C program koji utvrđuje koliko je brojeva sa intervala [1..n] (n N) deljivo sa brojem sedam.
Rešenje:
/***************************************************************************
Opis: Demonstrira primenu while ciklusa u C programu.
Koristi module: -
Autori: Branko Markoski, Dejan Lacmanovic, Predrag Pecev
Datum poslednje promene:
***************************************************************************/
#include <stdio.h>
int main(void)
{
/* Definicija promenljivih. */
unsigned n;
int br,i;
printf("\n\n\n\n\n\tUnesite gornju granicu intervala:\n\t\tN = ");
scanf("%d",&n);
DO-WHILE NAREDBA
do{
naredba;
}while(uslov);
do{ naredba;
naredba; = while(uslov) naredba;
}while(uslov);
Zadatak 3
Napisati C program koji računa i štampa najmanji zajednički sadržalac NZS(n,m) i najveći zajednički delilac
NZD(n,m), za brojeve n i m, pri čemu n N i m N.
Rešenje:
/***************************************************************************
Opis: Demonstrira primenu while ciklusa u C programu.
Koristi module: -
Autori: Branko Markoski, Dejan Lacmanovic, Predrag Pecev
Datum poslednje promene:
***************************************************************************/
#include <stdio.h>
int main(void)
{
/* Definicija promenljivih. */
int n,m,nzs,nzd,i,j,k;
do{
printf("\n\tULAZNI PODACI:\n\t n = ");
scanf("%d",&n);
printf("\t m = ");
scanf("%d",&m);
}while(n<1||m<1);
/* Mora se utvrditi koji je od podataka manji, 'm' ili 'n'. Promenljiva 'i' dobija
vrednost veceg broja, a promenljiva 'j' dobija vrednost manjeg broja. */
if(m>=n)
{
i=m;
j=n;
}else{
i=n;
j=m;
}
while(j!=0)
{
k=i%j;
i=j;
j=k;
}
nzd=i;
nzs=(m*n)/nzd;
FOR NAREDBA
izraz1;
while(uslov)
{
for(izraz1;uslov;izraz2) naredba; = naredba;
izraz2;
}
Primer 1:
Napisati deo C program koji na osnovu unetog prirodnog broja n izračunava zbir prvih n
prirodnih brojeva.
Rešenje
s=0;
i=1;
for( ;i<=n; )
{
s+=i;
i++;
}
for(s=0,i=1;i<=n;s+=i,i++);
for(s=0,i=1;i<=n;i++) s+=i;
for(kontprom=pocvrednost;kontprom<=kranjavrednost;kontprom+=korak) naredba;
for(kontprom=1;kontprom<=krajnjavrednost;kontprom++) naredba;
Vrednost promenljive krajnjavrednost pokazuje nam koliko će se puta for ciklus
izvršiti. Ako je vrednost promenljive krajnjavrednost manja od 1 for ciklus se neće nijednom
izvršiti.
Primer 2: Za domaći
Napisati C program koji na osnovu unetog broja zvezdca n na ekranu štampa sliku
sledećeg izgleda:
*********
*********
*********
********* U ovom primeru je n=9, a n predstavlja broj redova
********* i broj zvezdica u jednom redu.
*********
*********
*********
*********