Naredbe ponavljanja

Sjedište: CARNET - Arhiva 2021 Loomen
E-kolegij: Pripreme za ispit iz informatike na državnoj maturi
Knjiga: Naredbe ponavljanja
Otisnuo/la: Gost (anonimni korisnik)
Datum: ponedjeljak, 7. listopada 2024., 05:19

1. Uvod

Često se u procesu programiranja javllja potreba za ponavljanjem dijelova programa. Na primjer, postoji li potreba za unosom 10 brojeva, naredbu za unos treba pisati deset puta. Ako još s tim brojevima treba napraviti niz operacija, program postaje nepregledan i nepotrebno dugačak.
Praktičnije je potrebne naredbe napisati jednom, a pri izvršavanju programa pozvati ih željeni broj puta.

Za ponavljanje dijelova programa upotrebljavaju se naredbe ponavljanja ili programske petlje!

Naredbe ponavljanja su sastavni dio svakog programskog jezika. Možemo ih podijeliti prema različitim kriterijima.

Gledamo li broj ponavljanja, dijelimo ih na:

  • - naredbe ponavljanja kod kojih je poznat broj ponavljanja i

  • - naredbe ponavljanja kod kojih ponavljanje ovisi o uvjetu.

Ovisno o mjestu ispitivanja uvjeta naredbe ponavljanja dijelimo na:

  • - naredbe ponavljanja s ispitivanjem uvjeta na početku i

  • - one kod kojih se uvjet ponavljanja nalazi na kraju niza naredbi koje se ponavljaju.


2. Ponavljanje s poznatim brojem ponavljanja

Kao što je navedeno u naslovu, ova se naredba primjenjuje u zadacima u kojima je broj ponavljanja unaprijed poznat. To je najopćenitija vrsta petlje i najčešće se koristi, a ima slijedeći oblik:

za b:= p do k činiti
 naredba (blok naredbi);

b je kontrolna varijabla. Ona kontrolira broj prolazaka petljom, a njezina se vrijednost automatski mijenja svakim prolaskom kroz petlju - od početne vrijednosti (p) do krajnje vrijednosti (k). (Možemo je prikazati kao brojač koji se u svakom koraku povećava za 1. Kreće od početne vrijednosti p, a povećava se dok ne dostigne krajnju vrijednost k)

Tijek izvršavanja naredbe s poznatim brojem ponavljanja je slijedeći:

1. Kontrolna varijabla se postavlja na početnu vrijednost.
2. Provjerava se je li vrijednost kontrolne varijable manja ili jednaka od završne vrijednosti (k). Ako je rezultat istina, izvodi se blok naredbi.
3. Vrijednost kontrolne varijable uveća se za 1. Program se vraća na početak petlje, te se ona ponavlja od točke 2.
4. Ako je vrijednost kontrolne varijable veća od završne vrijednosti, blok naredbi se preskače i program se nastavlja prvom naredbom iza bloka.  

Primjer 1:

Dio programa:

za b:= 1 do 10 činiti
 izlaz ("Danas je lijep dan!");

na zaslon će 10 puta ispisati rečenicu Danas je lijep dan!

Primjer 2:

Dio programa:

za b:= 100 do 110 činiti
  izlaz (b);

na zaslon će ispisati brojeve 100, 101, 102, 103... do 110.

Naredbe ponavljanja mogu se kombinirati sa svim naredbama koje se koriste u programiranju.

Tako će, na primjer, dio programa

za b:= 1 do 20 činiti
 ako je b mod 2 = 0 onda ispis (b);

na zaslon ispisati sve parne brojeve u intervalu od 1 do 20.

Primjer 3:

Dio programa

s:=0;
ulaz
( n )
za
b:= 1 do n činiti
    s:=s+b;
izlaz (s)

na zaslon će ispisati zbroj brojeva od 1 do n.

Provjerimo!

Neka je n=4;
za b=1 => s:=0+1=1;
za b=2 => s:=1+2=3;
za b=3 => s:=3+3=6;
za b=4 => s:=6+4=10;
A to je upravo 1+2+3+4!

Primjer 4:

Dio programa

ulaz (broj)
za
b:= 1 do 4 činiti
{
     znam:=broj mod 10;
     izlaz (znam);
     broj:=broj div 10;
}

će na zaslon ispisati znamenke unesenog četveroznamenkastog broja.

Provjerimo!

Neka je broj=2314;

Za b=1 => znam = 2314 mod 10 = 4 => ispis 4 => broj = 2314 div 10 =231;
Za b=2 => znam = 231 mod 10 = 1 => ispis 1 => broj = 231 div 10 =23;
Za b=3 => znam = 23 mod 10 = 3 => ispis 3 => broj = 23 div 10 =2;
Za b=4 => znam = 2 mod 10 = 2 => ispis 2 => broj = 2 div 10 =0;
 

Na isti način možemo ispisivati znamenke troznamenkastog, peteroznamenkastog ili bilo kojeg broja kojem znamo broj znamenki. Samo mijenjamo završnu vrijednost kontrolne varijable.

Ali, što kada želimo napraviti općeniti program? Za broj kojemu ne znamo unaprijed broj znamenki?

U tom slučaju ne možemo koristiti petlju s poznatim brojem ponavljanja, već jednu od petlji kod kojih ponavljanje ovisi o uvjetu!

S tim ćemo se petljama upoznati u sljedećim lekcijama.


2.1. Ugnježđivanje petlji (petlja u petlji)

Naredbe ponavljanja mogu se pisati jedna unutar druge, tj. ugnježđivati.

Na primjer:

t:=1;
za i := 1 do 4 činiti
{
   za j := 1 do i činiti
        t :=  i * j;
}

U tom slučaju, kada se jednom promijeni vrijednost kontrolne varijable vanjske petlje (i), potpuno se izvrši unutarnja petlja (vrijednosti njezine kontrolne varijable (j) promijene se od početne do završne).
Tek se tada ponovo promijeni vrijednost kontrolne varijable vanjske petlje.

Primjer:

Dio programa

za a:= 2 do 20 činiti
      za b:= a do 20 činiti
            za c:= b do 20 činiti
                ako je sqr(a)+sqr(b)=sqr(c) onda
                           izlaz (a,b,c);

ispisuje sve Pitagorine brojeve (brojeve a, b, c za koje vrijedi da je a2+b2=c2) u intervalu od 2 do 20.

2.2. Zadatci s provedenih ispita

  1. (2010, ljetni rok, zadatak 23) Koju će vrijednost imati varijabla t nakon izvođenja dijela programa?
    t := 0;
    za i := 1 do 4 činiti
    {
        t := i;
        za j := 1 do i činiti
            t := t + 2 * i;
    }

    A. 32
    B. 36
    C. 56
    D. 60

  2. (2010, ljetni rok, zadatak 24) Što će ispisati sljedeći dio programa?
    t := 0;
    n := 27;
    m := 12;
    za i := 1 do n + m činiti
        ako je (n mod i = 0) I (m mod i = 0) onda
            t := t + i;
    izlaz t;

    A. 0
    B. 2
    C. 4
    D. 29

  3. (2010, jesenski rok, zadatak 23) Koju će vrijednost imati varijabla t nakon izvođenja sljedećega dijela programa?
    t := 0;
    za i := 1 do 4 činiti
        za j := 1 do i činiti
            t := t + 2 * i;

    A. 32
    B. 36
    C. 56
    D. 60

  4. (2011, ljetni rok, zadatak 24) Što će ispisati sljedeći dio programa?
    x := 15;
    y := 52;
    t := 1;
    za i := x do y činiti
    {
        ako je (i MOD 2 = 0) I (i DIV 10 MOD 2 <> 0) onda
            t := t + 1;
    }
    izlaz (t)

    A. 9
    B. 10
    C. 18
    D. 19

  5. (2011, jesenski rok, zadatak 24)<Što će ispisati sljedeći dio programa?
    x := 15;
    y := 52;
    t := 1;
    za i := x do y činiti
    {
        ako je (i MOD 2 = 0) I (i DIV 10 MOD 2 = 0) onda
            t := t + 1;
    }
    izlaz (t)

    A. 10
    B. 11
    C. 18
    D. 19

  6. (2012, ljetni rok, zadatak 18) Koju će vrijednost ispisati sljedeći algoritam za unesenu vrijednost n = 29?
    ulaz ( n);
    s := 0;
    za i := 1 do n činiti
        ako je i mod 2 = 0 onda
            s := s + 2;
    izlaz (s);
    A. 14
    B. 28
    C. 29
    D. 58

  7. (2012, ljetni rok, zadatak 19) U nastavku je dio programa koji će za broj n provjeriti je li prost.
    Koju naredbu treba umetnuti na označeno mjesto (crtu) kako bi program bio ispravan?
    k := 0;
    za i := 2 do round(sqrt(n )) činiti
        ako je n mod i = 0 onda
                __________;
    ako je k = 0 onda
        izlaz ('Broj je prost');
    inače
        izlaz ('Broj nije prost');
    A. k := 0
    B. k := 1
    C. n := n – 1
    D. k := 2 * k

  8. (2012, ljetni rok, zadatak 33) Koju će vrijednost ispisati sljedeći algoritam ako se za n upisuje vrijednost 7,
    a zatim n različitih prirodnih brojeva b: 3 214, 252, 1 028, 112, 198, 3, 16 834?
    ulaz ( n);
    m:=0;
    za i := 1 do n činiti
    {
        ulaz (b);
        ako je b mod 10 > m onda m := b mod 10;
    }
    izlaz (m);

  9. (2012, jesenski rok, zadatak 19) Za prirodan broj kaže se da je prost ako je djeljiv samo s 1 i sa samim sobom.
    U nastavku je dio programa koji će za broj n provjeriti je li prost.
    Koji uvjet treba umetnuti na označeno mjesto (crtu) kako bi program bio ispravan?
    k := 0;
    za i := 2 do round(sqrt( n)) činiti
        ako je n mod i = 0 onda
            k := k + 1;
    ako je _______ onda
        izlaz ('Broj je prost')
    inače
        izlaz ('Broj nije prost');
    A. n = 0
    B. n <> 0
    C. k = 0
    D. k <> 0

  10. (2012, jesenski rok, zadatak 33) Koju će vrijednost ispisati sljedeći algoritam ako se za n upisuje vrijednost 7, a zatim n različitih prirodnih brojeva b: 314, 25, 102, 1123, 98, 2, 16 836?
    ulaz ( n);
    m:=9;
    za i := 1 do n činiti
    {
        ulaz (b);
        ako je b mod 10 < m onda
            m := b mod 10;
    }
    izlaz (m);

  11. (2013, ljetni rok, zadatak 32) Što će ispisati sljedeći dio programa?
    a := 100;
    b := 200;
    min := a;
    za i := a do b činiti
        ako je i div 10 mod 10 <= min div 10 mod 10 onda
            min := i;
    izlaz(min);

  12. (2013, jesenski rok, zadatak 32) Koju će vrijednost ispisati sljedeći dio programa?
    a := 100;
    b := 150;
    min := a;
    za i := a do b činiti
        ako je i mod 10 <= min mod 10 onda
            min := i;
    izlaz(min);

  13. (2014, ljetni rok, zadatak 19) Što će ispisati sljedeći algoritam?
    ulaz( n);
    s := 0;
    za i := 1 do n činiti
    {
        ulaz(a);
        ako je a mod 2 = 1 onda
            s := s + a;
    }
    izlaz(s);

    A. zbroj parnih brojeva među unesenim brojevima
    B. zbroj neparnih brojeva među unesenim brojevima
    C. broj parnih brojeva među unesenim brojevima
    D. broj neparnih brojeva među unesenim brojevima

  14. (2014, ljetni rok, zadatak 20) Koji će od navedenih algoritama uvijek ispisivati najveći od n unesenih realnih brojeva?
    A.
    max := 100;
    za i := 1 do n činiti
    {
        ulaz(x);
        ako je (i = 1) ILI (x > max) onda
            max := x;
    }
    izlaz(max);

    B.
    max := 0;
    za i := 1 do n činiti
    {
        ulaz(x);
        ako je x > max onda
            max := x;
    }
    izlaz(max);

    C.
    max := 100;
    za i := 1 do n činiti
    {
        ulaz(x);
        ako je x > max onda
            max := x;
    }
    izlaz(max);

    D.
    za i := 1 do n činiti
    {
        max := n;
        ulaz(x);
        ako je x > max onda
            max := x;
    }
    izlaz(max);

  15. (2014, jesenski rok, zadatak 19) Što će ispisati sljedeći algoritam?
    ulaz( n);
    k := 0;
    za i := 1 do n činiti
    {
        ulaz (a);
        ako je a mod 2 = 1 onda
           k := k + 1;
    }
    izlaz (k);

    A. zbroj parnih brojeva među unesenim brojevima
    B. zbroj neparnih brojeva među unesenim brojevima
    C. broj parnih brojeva među unesenim brojevima
    D. broj neparnih brojeva među unesenim brojevima

  16. (2014, jesenski rok, zadatak 20) Koji će od navedenih algoritama ispisivati zbroj n unesenih brojeva?
    A.
    zbroj := 0;
    za i := 1 do n činiti
    {
        ulaz(x);
        zbroj := zbroj + x;
    }
    izlaz(zbroj);

    B.
    za i := 1 do n činiti
    {
        ulaz(x);
        zbroj := zbroj + i;
    }
    izlaz(zbroj);

    C.
    zbroj := 1;
    za i := 1 do n činiti
        zbroj := zbroj + n;
    izlaz(zbroj);

    D.
    zbroj := 0;
    za i := 1 do n činiti
        zbroj := zbroj + i;
    izlaz(zbroj);

  17. (2015, ljetni rok, zadatak 32) Koju će vrijednost ispisati sljedeći dio programa?
    a := 100;
    b := 150;
    max := a;
    za i := a do b činiti
        ako je i mod 10 >= max mod 10 onda
            max := i
    izlaz (max);

  18. (2015, jesenski rok, zadatak 32) Koju će vrijednost ispisati sljedeći dio programa?
    a := 100;
    b := 200;
    max := a;
    za i := a do b činiti
        ako je i div 10 mod 10 >= max div 10 mod 10 onda
            max := i;
    izlaz (max);

  19. (2016., ljetni rok, zadatak 19) U kojemu će se od sljedećih programskih isječaka petlja izvesti točno 10 puta?

    A. k := 0;
        za i := 2 do 11 činiti
            k := k + i;

    B. k := 0;
        za i := 5 do 15 činiti
            k := k + i;

    C. k := 0;
        za i := 1 do 12 činiti
            k := k + i;

    D. k := 0;
        za i := 0 do 10 činiti
            k := k + i;
     

2.3. Rješenja

  1. B
  2. C
  3. D
  4. B
  5. B
  6. B
  7. B
  8. 8
  9. C
  10. 2
  11. 200
  12. 150
  13. B
  14. A
  15. D
  16. A
  17. 149
  18. 199
  19. A

3. Ponavljanje koje ovisi o uvjetu

Postoje problemi kod kojih ne možemo znati točan broj ponavljanja. Na primjer, želimo li izračunati zbroj znamenki nekog broja, a ne znamo koliko ima znamenki, moramo pronaći drugi način rješavanja tog problema.
Ili, ako želimo da korisnik unosi podatke (npr. o učenicima) sve dok to njemu odgovara. Ne znamo koliko će podataka unositi...
Ovakvih primjera ima još jako puno. Rješavamo ih naredbama ponavljanja kod kojih ponavljanje ovisi o uvjetu.

Ovisno o mjestu ispitivanja uvjeta naredbe ponavljanja dijelimo na:

  • - naredbe ponavljanja s ispitivanjem uvjeta na početku i

  • - one kod kojih se uvjet ponavljanja nalazi na kraju niza naredbi koje se ponavljaju.


3.1. Petlja s provjerom uvjeta na početku

Ovu naredbu koristimo kada nam nije unaprijed poznat broj ponavljanja, a uvjet se provjerava na početku.

Njezin je opći oblik:

dok je uvjet činiti
     naredba;

Naredba (blok naredbi) unutar ove petlje ponavlja se sve dok je uvjet istinit. Ukoliko se treba ponavljati više od jedne naredbe, one se moraju staviti u blok (između znakova { i }).

Primjer 1:

Što će ispisati sljedeći dio programa ako je k cjelobrojna varijable?

k := 3;
dok je k <= 20 činiti
   k := k+3;
izlaz (k);

Na zaslon će se ispisati broj 21.

Kako to?
Na početku se varijabli k pridruži vrijednost 3.
Naredba dok je... sada provjerava je li vrijednost varijable k manja ili jednaka od 20. Pošto je ta vrijednost jednaka 3, uvjet je ispunjen i vrijednost varijable k se uvećava za 3 (k=3+3=6).
Sada se izvršavanje programa vraća na ispitivanje uvjeta.
Šest je manje od 20 i uvjet je još uvijek ispunjen. To znači da će se vrijednost varijable k ponovo uvećati za 3 => k=6+3=9.
Devet je manji od 20 => k se uvećava za 3 => k=9+3=12
12<20 => k=12+3=15
15<20 => k=15+3=18
18<20 => k=18+3=21
21 nije manji ili jednak 20. Uvjet nije ispunjen i program nastavlja sa izvođenjem s prvom naredbom iza naredbe ponavljanja. To je naredba izlaz (k). Sada se na zaslon ispisuje 21.

Primjer 2:

Što ako prethodni program zapišemo ovako:

k := 3;
dok je k <= 20 činiti
{   k := k+3;
    izlaz (k);
}

Kako su sada naredbe k := k+3; i  izlaz (k); unutar vitičastih zagrada, obje su unutar naredbe za ponavljanje. To znači da će se sada nakon svakog uvećavanja vrijednosti varijable k, ta vrijednost i ispisati na zaslon.

Tako će se nakon ovog dijela programa na zaslon ispisati vrijednosti 6, 9, 12, 15, 18 i 21.
Početna vrijednost varijable k (k=3) se neće ispisati jer se naredba za izlaz nalazi iza naredbe za promjenu vrijednosti varijable.

Kada bi se naredba izlaz (k) nalazila prije naredbe za promjenu vrijednosti (k:=k+3), na zaslon bi se ispisivale vrijednosti: 3, 6, 9, 12, 15, 18.

Primjer 3:

Što će ispisati sljedeći dio programa?

ulaz (broj);
br:=0;
dok je broj>0 činiti
{
   br:=br+1;
   broj:=broj div 10;
}
izlaz (br);

Ovo je dio programa koji broji koliko uneseni broj ima znamenaka.

Provjerite je li to istina na nekom primjeru.
Npr. neka je vrijednost varijable broj jednaka 3271. Koja će se vrijednost ispisati na zaslon?

Prilikom primjene uvjetnih petlji potrebno je voditi računa o tome da se izbjegne beskonačna petlja. Potrebno je pronaći uvjet koji će sigurno postati lažan u nekom trenutku.

Primjer 4:

Što će ispisati sljedeći dio programa?

ulaz (broj);
br:=0;
dok je broj<>0 činiti
     br:=br+1;
broj:=broj div 10;
izlaz (br);

Ovo je klasičan primjer beskonačne petlje. Izostavljene su vitičaste zagrade i unutar naredbe dok je... nalazi se samo naredba br:=br+1.
To znači da će se vrijednost varijable br povećavati, no vrijednost varijable broj će ostajati nepromijenjena (nikada neće postati nula) i uvjet nikada neće postati lažan!

Zadatak:

Napravite algoritam za program koji će za uneseni broj provjeriti je li potpuno paran. (Pomoć: Broj je potpuno paran ako mu je svaka znamenka paran broj)


3.2. Petlja s provjerom uvjeta na kraju

PONAVLJATI ... DOK JE (UVJET)

Ovu naredbu koristimo kada nam nije unaprijed poznat broj ponavljanja, a uvjet se provjerava na kraju.

Tipični su primjeri programi kod kojih se naredbe unutar petlje moraju izvršiti najmanje jednom, čak i ako uvjet nije ispunjen.

Zadatak:

Omogućiti unos ocjena za učenike sve dok to želi korisnik. Izračunati i ispisati srednju ocjenu.

Za rješavanje ovakvih problema možemo koristiti petlju s provjerom uvjeta na kraju. Njezin je opći oblik:

ponavljati
 
naredbe;
dok je
uvjet;

Naredbe unutar ove petlje također se ponavljaju se sve dok je uvjet istinit.

Pokušajmo sada riješiti zadatak.

Podsjetimo se!
Srednja ocjena dobije se tako da se zbroje sve ocjene i taj broj se podijeli sa brojem ocjena.

Algoritam koji rješava problem sa početka:

ponavljati
unos (ocjena)
   zbroj:=zbroj+ocjena;
   broj:=broj+1;
   izlaz ("Želite li još unositi podatke?");
   unos (odgovor);
dok je (odgovor<>"ne");
srednja:=zbroj/broj;
izlaz (srednja);

Primjer:

Koju će vrijednost ispisati sljedeći algoritam za n = 1235?

ulaz ( n );
k := 1;
ponavljati
  ako je n MOD 2 = 0
  onda k := k + 1;
  n := n DIV 10;
do n = 0;
izlaz (k);

Rješenje:

Ispisat će se broj 2.

Zbog čega?

Na početku je vrijednost varijable k jednaka 1.
Sada ulazimo u petlju i izvršavaju se redom naredbe:
ako je n mod 2 = 0 onda k:=k+1;
n mod 2 = 1235 mod 2 = 1 => uvjet nije ispunjen, vrijednost varijable k se ne mijenja.
Sljedeća naredba je n:= n DIV 10 => n:=1235 div 10 = 123;
Sada se provjerava uvjet zaustavljanja. Kako je n=123 i nije jednak nuli, program se vraća na početak naredbe ponavljanja.

n mod 2 = 123 mod 2 = 1 => uvjet nije ispunjen, vrijednost varijable k se ne mijenja.  n:= n DIV 10 => n:=123 div 10 = 12; => n nije jednak nuli, program se vraća na početak naredbe ponavljanja.

n mod 2 = 12 mod 2 = 0 => uvjet je ispunjen, vrijednost varijable k se povećava za 1 (k=2).
n:= n DIV 10 => n:=12 div 10 = 1; => n nije jednak nuli, program se vraća na početak naredbe ponavljanja.

n mod 2 = 1 mod 2 = 1 => uvjet nije ispunjen, vrijednost varijable k se ne mijenja.
n:= n DIV 10 => n:=1 div 10 = 0; => n je jednak nuli, program ide na sljedeću naredbu => izlaz (k) i na zaslon se ispisuje broj 2
 

Zadatak:

Napravite algoritam za program koji traži unos brojeva sve dok se ne unese 0. Program treba na zaslon ispisati koliko je unesenih brojeva (bez nule).


3.3. Zadatci s provedenih ispita

  1. (2010, ljetni rok, zadatak 26) Što će ispisati sljedeći dio programa?
    t := 0;
    n := 286;
    dok je n > 0 činiti
    {
        ako je n mod 2 > 0 onda
            t := t + 1;
        n = n div 2;
    }
    izlaz t;

  2. (2010, jesenski rok, zadatak 24) Što će ispisati sljedeći algoritam za n = 345?
    m := 0;
    dok je n <> 0 činiti
    {
        m := m * 10;
        k := n mod 10;
        m := m + k;
        n := n div 10
    }
    izlaz m;

    A. 0
    B. 5
    C. 345
    D. 543

  3. (2010, jesenski rok, zadatak 26) Što će ispisati sljedeći dio programa?
    x := 1001001;
    p := 1;
    d := 0;
    dok je x > 0 činiti
    {
        d := d + x mod 10 * p;
        x := x div 10;
        p := p * 2;
    }
    izlaz d;

  4. (2011, ljetni rok, zadatak 23) Koju će vrijednost imati varijabla t nakon izvođenja sljedećega dijela programa?
    x := 100;
    y := 200;
    t := 0;
    za i := x do y činiti
    {
        a := 0;
        b := i;
        dok je b > 0 činiti
        {
            a := a + (b MOD 10) * (b MOD 10) * (b MOD 10);
            b := b DIV 10;
        }
        ako je a = i onda
            t := t + 1;
     }

    A. 0
    B. 1
    C. 7
    D. 8

  5. (2011, ljetni rok, zadatak 26) Što će ispisati sljedeći dio programa?
    n := 415263;
    t := n;
    dok je n > 0 činiti
    {
        ako je (n MOD 10) >= 3 onda
             t := t + 1;
        n := n DIV 10;
    }
    izlaz (t);

  6. (2011, jesenski rok, zadatak 23) Koju će vrijednost imati varijabla t nakon izvođenja sljedećega dijela programa?
    x := 100;
    y := 200;
    t := 0;
    za
    i := x do y činiti
    {
        a := true;
        b := i;
        c := 9;
        dok je b > 0 činiti
       {
            ako je b MOD 10 > c onda
                a := false;
            c := b MOD 10;
            b := b DIV 10;
       }
       ako je a = true onda
           t := t + 1;
    }
    A. 0
    B. 28
    C. 45
    D. 98

  7. (2011, jesenski rok, zadatak 26) Što će ispisati sljedeći dio programa?
    n := 415263;
    dok je n > 0 činiti
    {
        t := n;
        ako je (n MOD 10) >= 3 onda
            t := t + 1;
        n := n DIV 10;
    }
    izlaz (t);

  8. (2012, ljetni rok, zadatak 32) Što će ispisati sljedeći dio programa?
    n := 290;
    m := 300;
    za i := n do m činiti
    {
        t := i;
        k := t mod 10;
        dok je t >= 10 činiti
            t := t div 10;
        ako je t + k = 9 onda
        izlaz (i);
    }

  9. (2012, jesenski rok, zadatak 18) Koji će brojevi biti ispisani nakon izvođenja sljedećeg programskog odsječka?
    m := 5;
    dok je m<10 činiti
    {
        m := m - 2;
        izlaz(m);
    }

    A. Bit će ispisan konačni niz brojeva: 5 7 9.
    B. Bit će ispisan beskonačni niz brojeva koji počinje brojevima: 5 3 1 –1…
    C. Bit će ispisan beskonačni niz brojeva koji počinje brojevima: 3 1 –1 –3...
    D. Bit će ispisan konačni niz brojeva: 3 5 7 9.

  10. (2012, jesenski rok, zadatak 32) Što će ispisati sljedeći dio programa?
    n := 160;
    m := 170;
    za i := n do m činiti
    {
        t := i;
        k := 0;
        dok je t > 0 činiti
        {
            k := k + t mod 10;
            t := t div 10;
        }
        ako je k mod 7 = 0 onda
            izlaz (i);
    }

  11. (2013, ljetni rok, zadatak 19) U kojem će se od navedenih algoritama varijabla x povećavati za jedan dok ne
    postigne deseterostruku početnu vrijednost varijable x?

    A. k := x;
        dok je x < 10 * k činiti
        x := x + 1;

    B. k := x;
        dok je x < 10 * x činiti
        x := x + 1;

    C. k := x;
        dok je x < 10 * k činiti
        x := k + 1;

    D. k := x;
        dok je x < 10 * x činiti
        k := k + 1;

  12. (2013, ljetni rok, zadatak 20) Koji će od navedenih algoritama ispisati najveću znamenku broja n?
    A.
    ulaz(n );
    max := n;
    dok je n > 0 činiti
    {
        ako je n mod 10 > max onda
            max := n mod 10;
        n := n div 10;
    }
    izlaz(max);

    B.
    ulaz(n );
    max := 0;
    dok je n > 0 činiti
    {
        z := n div 10;
        ako je z > max onda
            max := z;
        n := n div 10;
    }
    izlaz(max);
    C.
    ulaz(n );
    max := n;
    dok je n > 0 činiti
    {
        z := n div 10
        ako je z div 10 > max onda
            max := z;
        n := n mod 10;
    }
    izlaz(max);

    D.
    ulaz(n );
    max := 0;
    dok je n > 0 činiti
    {
        ako je n mod 10 > max onda
            max := n mod 10;
        n := n div 10;
    }
    izlaz(max);

  13. (2013, ljetni rok, zadatak 33) Koju će vrijednost ispisati sljedeći dio programa ako se za n upisuje vrijednost 2 i
    zatim n različitih prirodnih brojeva k: 19283 i 819?
    ulaz(n );
    t := 0;
    za i := 1 do n činiti
    {
        ulaz(k);
        p := k;
        r := 0;
        dok je k > 0 činiti
        {
            k := k div 10;
            r := r + 1;
        }
        ako je r > t onda
        {
            izlaz(p);
            t := r;
        }
    }
     
  14. (2013, jesenski rok, zadatak 19) U kojem će se od navedenih algoritama varijabla x pri svakome ponavljanju petlje učetverostručiti dok ne postane veća od 210?

    A. x := 2;
        dok je x > 1024 činiti
        x := x + 4;

    B. x := 2;
        dok je x <= 1024 činiti
        x := x + 4;

    C. x := 2;
        dok je x <= 32 * 32 činiti
        x := x * 4;

    D. x := 2;
        dok je x > 32 * 32 činiti
        x := x * 4;

  15. (2013, jesenski rok, zadatak 20) Koji će od navedenih algoritama računati dekadski zapis binarnoga broja b?
    A.
    ulaz(b);
    d := 0;
    p := 1;
    dok je b > 0 činiti
    {
        d := d * p + b mod 10;
        b := b div 10;
        p := p * 2;
    }
    izlaz(d);

    B.
    ulaz(b);
    d := 0;
    p := 1;
    dok je b > 0 činiti
    {
        d := d + (b mod 2) * p;
        b := b div 2;
        p := p * 10;
    }
    izlaz(d);

    C.
    ulaz(b);
    d := 0;
    p := 1;
    dok je b > 0 činiti
    {
        d := d + (b mod 10) * p;
        b := b div 10;
        p := p * 2;
    }
    izlaz(d);

    D.
    ulaz(b);
    d := 0;
    p := 1;
    dok je b > 0 činiti
    {
        d := d * p + b mod 10;
        b := b div 2;
        p := p * 2;
    }
    izlaz(d);

  16. (2013, jesenski rok, zadatak 33) Koju će vrijednost ispisati sljedeći dio programa ako se za n upisuje vrijednost 2 i zatim n
    različitih prirodnih brojeva k: 918 i 1111?
    ulaz (n );
    t := 0;
    za i := 1 do n činiti
    {
        ulaz(k);
        r := 0;
        dok je k > 0 činiti
        {
            r := r + k mod 10;
            k := k div 10;
        }
        ako je r > t onda
        {
            izlaz (r);
        t := r;
        }
    }

  17. (2014, ljetni rok, zadatak 32) Što će ispisati sljedeći dio programa?
    a := 10;
    t := 0;
    dok je a < 100 činiti
    {
        ako je sqrt(a) = round(sqrt(a)) onda
        t := a;
        a := a + 2;
    }
    izlaz (t)

  18. (2014, ljetni rok, zadatak 33) Što će ispisati sljedeći dio programa?
    t := 0;
    za i := 90 do 105 činiti
    {
        k := i;
        dok je k > 0 činiti
        {
            t := t + 1;
            k := k div 10;
        }
    }
    izlaz (t);

  19. (2014, jesenski rok, zadatak 32) Što će ispisati sljedeći dio programa?
    a := 10;
    t := 0;
    dok je a < 100 činiti
    {
        ako je a div 10 <= a mod 10 onda
            t := a;
        a := a + 2;
    }
    izlaz (t);

  20. (2014, jesenski rok, zadatak 33) Što će ispisati sljedeći dio programa ako je a = 7835?
    t := 0;
    dok je a > 0 činiti
    {
        k := a;
        a := a div 10;
        s := 0;
        dok je k > 0 činiti
       {
            s := s + k mod 10;
            k := k div 10;
       }
       ako je s mod 2 = 0 onda
           t := t + 1;
    }
    izlaz (t);

  21. (2015, ljetni rok, zadatak 19) U kojemu će se od sljedećih algoritama varijabla x smanjivati za tri dok ne postane manja od 20?

    A. x := 100;
        dok je x <= 20 činiti
            x := x - 3;

    B. x := 100;
        dok je x >= 20 činiti
            x := x - 3;

    C. x := 20;
        dok je x <= 100 činiti
            x := x - 3;

    D. x := 20;
        dok je x > 100 činiti
            x := x - 3;

  22. (2015, ljetni rok, zadatak 20) Koji će od sljedećih algoritama ispisati binarni zapis dekadskoga prirodnog broja n?

    A.
    ulaz ( n);
    b := 0;
    p := 1;
    dok je n > 0 činiti
    {
        b := b + (n mod 10) * p;
        n := n div 2;
        p := p * 2;
    }
    izlaz (b);

    B.
    ulaz (n );
    b := 0;
    p := 1;
    dok je n > 0 činiti
    {
        b := b * p + n mod 2;
        n := n div 2;
        p := p * 2;
    }
    izlaz (b);

    C.
    ulaz (n );
    b := 0;
    p := 1;
    dok je n > 0 činiti
    {
        b := b + (n mod 2) * p;
        n := n div 2;
        p := p * 10;
    }
    izlaz (b);

    D.
    ulaz (n );
    b := 1;
    p := 1;
    dok je n > 0 činiti
    {
        b := b * 10 + n mod 2;
        n := n div 2;
        p := p * 10;
    }
    izlaz (b);

  23. (2015, ljetni rok, zadatak 33) Koju će vrijednost ispisati sljedeći dio programa ako se za n upisuje vrijednost 2 i zatim n različitih prirodnih brojeva k: 1811 i 7?

    ulaz
    (n );
    t := 0;
    za i := 1 do n činiti
    {
        ulaz(k);
        p := k;
        r := 1;
        dok je k > 0 činiti
        {
            r := k mod 10 * r;
            k := k div 10;
        }
        ako je r > t onda
        {
            izlaz (p);
            t := r;
        }
    }

  24. (2015, jesenski rok, zadatak 19) U kojemu će se od sljedećih algoritama varijabla x pri svakome ponavljanju petlje povećavati dva puta dok ne postigne osmerostruku početnu vrijednost varijable x?

    A. k := x;
        dok je x < 8 * k činiti
            x := x + 2;

    B. k := x;
        dok je x < 8 * x činiti
            x := x * 2;
    C. k := x;
        dok je x < 8 * k činiti
            x := x * 2;
    D. k := x;
        dok je x < 8 * x činiti
            k := k + 2;

  25. (2015, jesenski rok, zadatak 20) Koji će od sljedećih algoritama ispisati najmanju znamenku prirodnoga broja n?

    A.
    ulaz ( n);
    min := n mod 10;
    dok je n > 0 činiti
    {
        ako je n mod 10 < min onda
            min := n mod 10;
        n := n div 10;
    }
    izlaz (min);

    B.
    ulaz ( n);
    min := 0;
    dok je n > 0 činiti
    {
        z := n div 10;
        ako je z < min onda
            min := z;
        n := n div 10;
    }
    izlaz (min);

    C.
    ulaz ( n);
    min := n;
    dok je n > 0 činiti
    {
        z := n div 10;
        ako je z div 10 < min onda
            min := z;
        n := n mod 10;
    }
    izlaz (min);

    D.
    ulaz ( n);
    min := 0;
    dok je n > 0 činiti
    {
        ako je n mod 10 < min onda
            min := n mod 10;
        n := n div 10;
    }
    izlaz (min);

  26. (2015, jesenski rok, zadatak 33) Koju će vrijednost ispisati sljedeći dio programa ako se za n upisuje vrijednost 2 i zatim n različitih prirodnih brojeva k: 38 i 1123?

    ulaz ( n);
    t := 0;
    za i := 1 do n činiti
    {
        ulaz (k);
        p := k;
        r := 0;
        dok je k > 0 činiti
        {
             r := r + k mod 10;
             k := k div 10;
        }
        ako je r > t onda
        {
            izlaz (p);
            t := r;
        }
    }

  27. (2016., ljetni rok, zadatak 20) Koju je naredbu potrebno upisati na crtu u sljedećemu dijelu programa da bi nakon njegova izvođenja u varijabli s bio zapisan broj znamenaka broja n?

    ulaz ( n);
    s := 0;
    dok je n > 0 činiti
    {
        __________________
        n := n div 10;
    }

    A. s := s + 1;
    B. s := s + n;
    C. s := s + n mod 10;
    D. s := s + n div 10;

  28. (2016., ljetni rok, zadatak 32) Što će ispisati sljedeći dio programa ako se za n učita vrijednost 25387?

    ulaz ( n);
    k := 0;
    dok je n > 0 činiti
    {
        ako je n mod 2 = 0 onda
        k := k + 1;
        n := n div 10;
    }
    izlaz (k);

  29. (2016., ljetni rok, zadatak 33) Što će ispisati sljedeći dio programa?

    t := 0;
    za i := 200 do 300 činiti
    {
        n := i;
        k := n mod 10;
        dok je n > 9 činiti
            n := n div 10;
        ako je (k + n) mod 2 = 0 onda
            t := t + 1;
    }
    izlaz ( t);

3.4. Rješenja

  1. 5
  2. D
  3. 73
  4. B
  5. 415267
  6. C
  7. 5
  8. 297
  9. C
  10. 160, 167
  11. A
  12. D
  13. 19283
  14. C
  15. C
  16. 18
  17. 64
  18. 38
  19. 88
  20. 1
  21. B
  22. C
  23. 1811
  24. C
  25. A
  26. 38
  27. A
  28. 2
  29. 50