Professional Documents
Culture Documents
P3 - 2 - Petlje
P3 - 2 - Petlje
Uvod u programiranje
Petlje
Doc. dr. Senka Krivić
#include <stdio.h>
if nije petlja!
int main() {
if nije petlja!
int i;
if nije petlja!
for (i=0; i<5; i++) {
if nije petlja!
printf("if nije petlja!\n");
if nije petlja!
}
return 0;
}
for petlja
#include <stdio.h>
if nije petlja!
int main() {
if nije petlja!
int i;
if nije petlja!
for (i=0; i<8; i++) {
if nije petlja!
printf("if nije petlja!\n");
if nije petlja!
}
if nije petlja!
return 0;
if nije petlja!
}
if nije petlja!
for petlja
#include <stdio.h>
if nije petlja!
int main() {
if nije petlja!
int i;
if nije petlja!
for (i=0; i<8; i++)
if nije petlja!
printf("if nije petlja!\n");
if nije petlja!
if nije petlja!
return 0;
if nije petlja!
}
if nije petlja!
for petlja
return 0;
}
Struktura for petlje
Kontrolna promjenljiva
(brojač)
Zaglavlje petlje
int i;
for (i=0; i<8; i++) {
printf("if nije petlja!\n");
}
Tijelo petlje (blok naredbi
koje se ponavljaju)
Neispravno (C++)
i je 10
Zaglavlje for petlje
int i;
for (i=0; i<8; i++) {
printf("if nije petlja!\n");
}
Uslov Ažuriranje
Petlja se ponavlja sve dok je Promjenljiva i se povećava
uslov ispunjen za jedan pri svakom prolazu
Zaglavlje for petlje
int i;
for (i=1; i<8; i++) {
printf("if nije petlja!\n");
}
Zaglavlje for petlje
int i;
for (i=100; i<200; i++) {
printf("if nije petlja!\n");
}
Zaglavlje for petlje
int i;
for (i=1; i<=8; i++) {
printf("if nije petlja!\n");
}
Zaglavlje for petlje
int i;
for (i=8; i<1; i++) {
printf("if nije petlja!\n");
}
Proizvoljan broj prolaza
#include <stdio.h>
int main() {
int i,n;
printf("Unesite broj n: ");
scanf("%d", &n);
for (i=0; i<n; i++) {
printf("if nije petlja!\n");
}
return 0;
}
Kako funkcioniše for petlja?
#include <stdio.h> i je 0
i je 1
int main() {
i je 2
int i,n; i je 3
printf("Unesite broj n: ");i je 4
poslije petlje 5
scanf("%d", &n);
for (i=0; i<n; i++) {
printf("i je %d\n", i);
}
printf("poslije petlje %d\n", i);
return 0;
}
Kako funkcioniše for petlja?
#include <stdio.h> i je 0
i je 1
int main() {
i je 2
int i,n; i je 3
printf("Unesite broj n: ");i je 4
poslije petlje 5
scanf("%d", &n);
for (i=0; i<n; i++) {
printf("i je %d\n", i);
}
printf("poslije petlje %d\n", i);
return 0;
}
Polja zaglavlja mogu biti i prazna
#include <stdio.h>
int main() {
int i=0,n;
printf("Unesite broj n: ");
scanf("%d", &n);
for (; i<n; i++) {
printf("i je %d\n", i);
}
printf("poslije petlje %d\n", i);
return 0;
}
Polja zaglavlja mogu biti i prazna
#include <stdio.h>
int main() {
int i=0,n;
printf("Unesite broj n: ");
scanf("%d", &n);
for (i; i<n; i++) {
printf("i je %d\n", i);
}
Nije greška ali
printf("poslije ovo je
petlje %d\n", i);
naredba koja ne radi ništa!
return 0;
}
Polja zaglavlja mogu biti i prazna
#include <stdio.h>
int main() {
int i=0,n;
printf("Unesite broj n: ");
scanf("%d", &n);
for (; i<n;) {
printf("i je %d\n", i);
i++;
}
printf("poslije petlje %d\n", i);
return 0;
}
Beskonačna petlja
#include <stdio.h>
int main() {
int i=0,n;
printf("Unesite broj n: ");
scanf("%d", &n);
for (;;) {
printf("i je %d\n", i);
i++;
}
printf("poslije petlje %d\n", i);
return 0;
}
Beskonačna petlja
for (;;) {
if (i>=n) break;
printf("i je %d\n", i);
i++;
}
printf("poslije petlje %d\n", i);
Naredbe break i continue
}
printf("poslije petlje %d\n", i);
return 0;
} Sve ovo je naredba koja će se
izvršiti pri svakom prolazu
(naredba ažuriranja).
Još o zaglavlju for petlje?
#include <stdio.h>
int main() {
int i=0,n;
printf("Unesite broj n: ");
scanf("%d", &n);
for (; i<n; printf("i je %d\n", i++));
printf("poslije petlje %d\n", i);
return 0;
} Tijelo petlje je prazno
Još o zaglavlju for petlje?
int i; i je 1
i je 4
for (i=1; i<8; i+=3) i je 7
U svakom koraku
printf("i je %d\n", i); i
poslije petlje 10
se povećava
printf("poslije petlje %d\n", i);za 3
Česta greška
i je 1
int i; i je 1
for (i=1; i<8; i+3) i je 1
printf("i je %d\n", i); i je 1
i je 1
Beskonačna petlja
printf("poslije petlje %d\n", i);i je 1
i se ne mijenja! i je 1
i je 1
i je 1
i je 1
i je 1
i je 1
i je 1
i je 1
i je 1
i je 1
Opadajuća for petlja
i=0
#include <stdio.h>
int main() {
int i,j;
for (i=0; i<5; i++) {
for (j=0; j<5; j++) {
printf("i=%d,j=%d\n", i, j);
}
}
return 0;
}
Ugniježđene petlje
i=0
0<5? DA
#include <stdio.h>
int main() {
int i,j;
for (i=0; i<5; i++) {
for (j=0; j<5; j++) {
printf("i=%d,j=%d\n", i, j);
}
}
return 0;
}
Ugniježđene petlje
Izvršava se tijelo
#include <stdio.h> petlje i
int main() {
int i,j;
for (i=0; i<5; i++) {
for (j=0; j<5; j++) {
printf("i=%d,j=%d\n", i, j);
}
}
return 0;
}
Ugniježdene petlje
i=0
0<5? DA
j=0
#include <stdio.h>
int main() {
int i,j;
for (i=0; i<5; i++) {
for (j=0; j<5; j++) {
printf("i=%d,j=%d\n", i, j);
}
}
return 0;
}
Ugniježdene petlje
i=0
0<5? DA
j=0
#include <stdio.h>
0<5? DA
int main() {
int i,j;
for (i=0; i<5; i++) {
for (j=0; j<5; j++) {
printf("i=%d,j=%d\n", i, j);
}
}
return 0;
}
Ugniježdene petlje
i=0
0<5? DA
j=0
#include <stdio.h>
0<5? DA
int main() {
“i=0,j=0”
int i,j;
for (i=0; i<5; i++) {
for (j=0; j<5; j++) {
printf("i=%d,j=%d\n", i, j);
}
}
return 0;
}
Ugniježdene petlje
i=0
0<5? DA
j=0
#include <stdio.h>
0<5? DA
int main() {
“i=0,j=0”
int i,j;
j++ => j=1
for (i=0; i<5; i++) {
for (j=0; j<5; j++) {
printf("i=%d,j=%d\n", i, j);
}
}
return 0;
}
Ugniježdene petlje
i=0
0<5? DA
j=0
#include <stdio.h>
0<5? DA
int main() {
“i=0,j=0”
int i,j;
j++ => j=1
for (i=0; i<5; i++) {
1<5? DA
for (j=0; j<5; j++) {
printf("i=%d,j=%d\n", i, j);
}
}
return 0;
}
Ugniježdene petlje
i=0
0<5? DA
j=0
#include <stdio.h>
0<5? DA
int main() {
“i=0,j=0”
int i,j;
j++ => j=1
for (i=0; i<5; i++) {
1<5? DA
for (j=0; j<5; j++) {
“i=0,j=1”
printf("i=%d,j=%d\n", i, j);
}
}
return 0;
}
Ugniježdene petlje
i=0
0<5? DA
j=0
#include <stdio.h>
0<5? DA
int main() {
“i=0,j=0”
int i,j;
j++ => j=1
for (i=0; i<5; i++) {
1<5? DA
for (j=0; j<5; j++) {
“i=0,j=1”
printf("i=%d,j=%d\n", i, j);
...
}
“i=0,j=4”
}
return 0;
}
Ugniježdene petlje
i=0
0<5? DA
j=0
#include <stdio.h>
0<5? DA
int main() {
“i=0,j=0”
int i,j;
j++ => j=1
for (i=0; i<5; i++) {
1<5? DA
for (j=0; j<5; j++) {
“i=0,j=1”
printf("i=%d,j=%d\n", i, j);
...
}
“i=0,j=4”
}
j++ => j=5
return 0;
}
Ugniježdene petlje
i=0
0<5? DA
j=0
#include <stdio.h>
0<5? DA
int main() {
“i=0,j=0”
int i,j;
j++ => j=1
for (i=0; i<5; i++) {
1<5? DA
for (j=0; j<5; j++) {
“i=0,j=1”
printf("i=%d,j=%d\n", i, j);
...
}
“i=0,j=4”
}
j++ => j=5
return 0;
5<5? NE
}
Ugniježdene petlje
i=0
0<5? DA
j=0
#include <stdio.h>
0<5? DA
int main() {
“i=0,j=0”
int i,j;
j++ => j=1
for (i=0; i<5; i++) {
1<5? DA
for (j=0; j<5; j++) {
“i=0,j=1”
printf("i=%d,j=%d\n", i, j);
...
}
“i=0,j=4”
}
j++ => j=5
return 0;
Izvršavanje bi se trebalo 5<5? NE
}
nastaviti ovdje, no to je
kraj petlje i
Ugniježdene petlje
i=0
0<5? DA
j=0
#include <stdio.h>
0<5? DA
int main() {
“i=0,j=0”
int i,j;
j++ => j=1
for (i=0; i<5; i++) {
1<5? DA
for (j=0; j<5; j++) {
“i=0,j=1”
printf("i=%d,j=%d\n", i, j);
...
}
“i=0,j=4”
}
j++ => j=5
return 0;
5<5? NE
}
i++ => i=1
Ugniježdene petlje
i=0
0<5? DA
j=0
#include <stdio.h>
0<5? DA
int main() {
“i=0,j=0”
int i,j;
j++ => j=1
for (i=0; i<5; i++) {
1<5? DA
for (j=0; j<5; j++) {
“i=0,j=1”
printf("i=%d,j=%d\n", i, j);
...
}
“i=0,j=4”
}
j++ => j=5
return 0;
5<5? NE
}
i++ => i=1
1<5? DA
Ugniježdene petlje
i=0
0<5? DA
j=0
#include <stdio.h>
0<5? DA
int main() {
“i=0,j=0”
int i,j;
j++ => j=1
for (i=0; i<5; i++) {
1<5? DA
for (j=0; j<5; j++) {
“i=0,j=1”
printf("i=%d,j=%d\n", i, j);
...
}
“i=0,j=4”
}
j++ => j=5
return 0;
5<5? NE
}
i++ => i=1
1<5? DA
j=0
... ...
Primjer dvostruke petlje
i=0;
for ( ; i<n; i++) {
printf("i je %d", i);
}
while vs. for
i=0;
for ( ; i<n; ) {
printf("i je %d", i);
i++;
}
while vs. for
i=0;
while (i<n) {
printf("i je %d", i);
i++;
}
while vs. for
A;
for (A; B; C) {
while(B) {
D;
D;
}
C;
}
while primjer
do {
x = x*x;
} while (x<n);
while vs. do-while