Naredbe grananja

Sjedište: CARNET - Arhiva 2021 Loomen
E-kolegij: Pripreme za ispit iz informatike na državnoj maturi
Knjiga: Naredbe grananja
Otisnuo/la: Gost (anonimni korisnik)
Datum: nedjelja, 24. studenoga 2024., 13:43

1. Naredbe grananja

Naredbe grananja koristimo kada se program treba granati u jedan ili višesmjerova, ovisno o istinitosti danog uvjeta.

Na primjer, želimo li unositi ocjene učenika, najprije moramo provjeriti je li korisnik unio ocjenu (broj između 1 i 5) i u tom slučaju izvršiti određenu naredbu. Ako korisnik nije upisao broj iz tog intervala, potrebno je izvršiti neku drugu naredbu.

Zapis naredbe grananja u pseudo jeziku izgleda ovako:

ako je uvjet onda
     naredba1;
inače
     naredba2;

Ovo je oblik naredbe koja se grana u dva smjera: naredba1 izvršit će se ako je zadani uvjet istinit, a naredba2 ako nije.

Uvjet je najčešće relacijski izraz, ali ponekad može biti i aritmetički.

Primjer 1:
Provjerimo je li uneseni broj paran ili neparan.

ulaz (a);
ako je a mod 2 = 0 onda
    izlaz ("paran");
inače
    izlaz ("neparan");

Objašnjenje: Ako je broj paran, ostatak pri dijeljenju s brojem 2 je nula.

Primjer 2:

Provjerava je li uneseni broj pozitivan ili negativan

ako je a>0 onda
     izlaz ('uneseni broj je pozitivan!');
inače
     izlaz ('uneseni broj nije pozitivan!');

Primjer 3:

ako je a>0 onda
     P:=4*a;
inače
     izlaz ('Duljina stranice kvadrata mora biti veća od nule!');



1.1. Blok naredbi

Istaknimo još jednom zapis naredbe grananja:

ako je uvjet onda
     naredba1;
inače
     naredba2;

Uočite kako naredbe pišu u jednini (naredba1 i naredba2). Trebamo li izvršiti više od jedne naredbe ako je uvjet ispunjen (ili ako nije), moramo ih izdvojiti u BLOK naredbi.

Blok naredbi zapisuje se između vitičastih zagrada ({ i }).

Primjer:

Algoritam koji računa i ispisuje površinu i opseg kvadrata zadanog duljinom stranice a.

Ako je a>0 onda
{    
       P:=4*a;
       o:=sqr(a);
       izlaz (P, o);
}
inače
    izlaz ('Duljina stranice kvadrata mora biti veća od nule!');


2. Zadatci s provedenih ispita

  1. (2010, ljetni rok, zadatak 22)  Što će ispisati sljedeći dio programa?

    x := 5;
    y := 5;
    ako je x – y > 0 onda
        izlaz x - y
    inače
        izlaz x + y;

    A. −5
    B. 0
    C. 5
    D. 10

  2. (2010, ljetni rok, zadatak 27)  Što će ispisati sljedeći dio programa?
    a := 3;
    b := 3;
    c := 2;
    ako je a < b onda
    {
        t := a;
        a := b;
        b := t;
    }
    ako je a < c onda
    {
        t := a;
        a := c;
        c := t;
    }
    ako je b < c onda
    {
        t := b;
        b := c;
        c := t;
    }
    izlaz c;
     
  3. (2010, jesenski rok, zadatak 22) Što će ispisati sljedeći dio programa?
    x := 3;
    y := -2;

    ako je 2 * x + 3 * y > 0 onda
        izlaz 3 * x – 4 * y
    inače
        izlaz 4 * x + 3 * y;

    A. 1
    B. 6
    C. 17
    D. 18

  4. (2010, jesenski rok, zadatak 27) Što će ispisati sljedeći dio programa ako su x i y realne varijable? Početna vrijednost varijable x je 2,7 i varijable y je 2,3.

    x := 2 * y;
    ako je trunc(x ) < round(y ) onda
        izlaz x
    inače ako je round(x ) > 3 * trunc(y ) onda
        izlaz y
    inače
        izlaz trunc(y )+round(x );

  5. (2011, ljetni rok, zadatak 27) Što će ispisati sljedeći dio programa?
    a := 153;
    b := 432;
    c := 385;
    ako je a MOD 10 > b MOD 10 onda
    {
        t := a;
        a := b;
        b := t;
    }
    ako je a MOD 10 > c MOD 10 onda
    {
        t := a;
        a := b;
        b := t;
    }
    ako je b MOD 10 > c MOD 10 onda
    {
        t := b;
        b := c;
        c := t;
    }
    izlaz (a);
    izlaz (b);
    izlaz (c);
     
  6. (2011, jesenski rok, zadatak 27) Što će ispisati sljedeći dio programa?
    a := 153;
    b := 432;
    c := 385;
    ako je a DIV 10 MOD 10 > b DIV 10 MOD 10 onda
    {
        t := a;
        a := b;
        b := t;
    }
    ako je a DIV 10 MOD 10 > c DIV 10 MOD 10 onda
    {
        t := a;
        a := b;
        b := t;
    }
    ako je b DIV 10 MOD 10 > c DIV 10 MOD 10 onda
    {
        t := b;
        b := c;
        c := t;
    }
    izlaz (a);
    izlaz (b);
    izlaz (c);
     
  7. (2012, ljetni rok, zadatak 31) Što će ispisati sljedeći dio programa za unesene vrijednosti parametara:
    a = 30, b = 30 i c = 30?
    ulaz (a, b, c);
    ako je (a < b) I (a < c) onda
        izlaz ('Slunj')
    inače ako je b <= c onda
        izlaz ('Umag')
    inače
        izlaz ('Makarska');

  8. (2012, jesenski rok, zadatak 31) Što će ispisati sljedeći dio programa za unesene vrijednosti parametara:
    a = 34, b = 34 i c = 30?
    ulaz (a, b, c);
    ako je (a > b) I (a > c) onda
        izlaz ('Bjelovar')
    inače ako je b > c onda
        izlaz ('Delnice')
    inače
        izlaz ('Sisak');

  9. (2013, ljetni rok, zadatak 18) Koju će vrijednost imati varijabla a nakon izvođenja sljedećega dijela programa?
    a := 5;
    b := a + 5;
    b := b div a;
    a := b mod a;
    ako je a < b onda a := a - b
    inače a := a + b;

    A. ̶4
    B. 0
    C. 1
    D. 4

  10. (2013, ljetni rok, zadatak 31) Što će ispisati sljedeći dio programa za unesenu vrijednost varijable t = 18?
    ulaz(t);
    ako je t div 10 + t mod 10 = 9 onda
        izlaz("Broj je djeljiv s 9")
    inače ako je (t div 10 + t mod 10) mod 3 = 0 onda
        izlaz("Broj je djeljiv s 3")
    inače
        izlaz("Broj nam nije zanimljiv");

  11. (2013, jesenski rok, zadatak 18) Koja je vrijednost varijable z nakon izvođenja sljedećega dijela programa?
    x := 20 mod 4;
    y := 20 div 4;
    z := x;
    ako je x > y onda x := x * 4;
    inače x := x + 3;
    z := x – z;

    A. 5
    B. 4
    C. 3
    D. 0

  12. (2013, jesenski rok, zadatak 31) Što će ispisati sljedeći dio programa za unesenu vrijednost varijable t = 123?
    ulaz(t);
    ako je t div 10 + t mod 10 = 9 onda
        izlaz("Broj je djeljiv s 9")
    inače ako je (t div 10 + t mod 10) mod 3 = 0 onda
        izlaz("Broj je djeljiv s 3")
    inače
        izlaz("Broj nam nije zanimljiv");

  13. (2014, ljetni rok, zadatak 18) Koju će vrijednost imati varijabla x nakon izvođenja sljedećega dijela programa?
    x := 15;
    y := round(sqrt(x));
    ako je y < 100 onda
        x := x – y
    inače
        x := y – x;

    A. –210
    B. –11
    C. 11
    D. 210

  14. (2014, ljetni rok, zadatak 31) Što će ispisati sljedeći dio programa ako je a = 20?
    ako je a div 100 > 0 onda
        izlaz("tri")
    inače ako je a div 10 > 0 onda
        izlaz("dva")
    inače
       izlaz("jedan");

  15. (2014, jesenski rok, zadatak 18) Koju će vrijednost imati varijabla x nakon izvođenja sljedećega dijela programa?
    a := 10;
    b := 12;
    a := 2 * a – b;
    b := 2 * b – a;
    ako je a > b onda
        x := a
    inače
        x := b;

    A. 8
    B. 10
    C. 12
    D. 16

  16. (2014, jesenski rok, zadatak 31) Što će ispisati sljedeći dio programa ako je a = 325?
    p1 := a div 100 > a div 10 mod 10
    p2 := a div 100 > a mod 10
    p := p1 I p2
    ako je p onda
        izlaz("sto")
    inače ako je (a div 10 mod 10) > (a mod 10) onda
        izlaz("deset")
    inače
        izlaz("jedan");

  17. (2015, ljetni rok, zadatak 18) Koju će vrijednost imati varijable a i b nakon izvođenja sljedećega dijela programa?
    a := 20;
    b := round(sqrt(a - sqr(2)));
    ako je a mod b > 0 onda b := a
    inače a := b;

    A. 20
    B. 16
    C. 5
    D. 4

  18. (2015, ljetni rok, zadatak 31) Što će ispisati sljedeći dio programa za unesenu vrijednost varijable t = 5?
    ulaz(t);
    ako je t div 10 + t mod 10 = 9 onda
        izlaz(ꞌXꞌ)
    inače ako je (t div 10 + t mod 10) mod 3 = 0 onda
        izlaz(ꞌYꞌ)
    inače
        izlaz(ꞌZꞌ);

  19. (2015, jesenski rok, zadatak 18) Koju će vrijednost imati cjelobrojna varijabla x i logička varijabla prolaz nakon izvođenja sljedećega dijela programa ako varijabla x ima početnu vrijednost 23?

    prolaz := laž;
    ako je x mod 3 = 0 onda
    {
        x := x + 4;
        prolaz := istina;
    }
    inače ako je x mod 3 = 1 onda
        x := x + 4
    inače
        x := x + 3;

    A. x = 27, prolaz = istina
    B. x = 27, prolaz = laž
    C. x = 26, prolaz = istina
    D. x = 26, prolaz = laž

  20. (2015, jesenski rok, zadatak 31) Što će ispisati sljedeći dio programa za unesenu vrijednost varijable t = 12?

    ulaz(t);
    ako je t < 100 onda
    {
        ako je t div 10 + t mod 10 = 9 onda
            izlaz("A")
        inače ako je (t div 10 + t mod 10) mod 3 = 0 onda
            izlaz("B")
        inače
            izlaz("C");
    }
    inače
        izlaz("D");

  21. (2016., ljetni rok, zadatak 18) Što će ispisati sljedeći dio programa nakon izvođenja?

    a := 5;
    a := sqr(a);
    a := a div 6;
    ako je a > 2 onda
        izlaz(a + 3)
    inače
        izlaz(a + 5);

    A. 7
    B. 8
    C. 9
    D. 10

  22. (2016., ljetni rok, zadatak 31) Što će ispisati sljedeći dio programa ako je a = 57?

    ako je (a mod 10) * 10 + a div 10 > a onda
        izlaz ((a mod 10) * 10 + a div 10)
    inače ako je (a mod 10) * 10 + a div 10 < a onda
       izlaz ( a)
    inače
        izlaz (ꞌsimetričanꞌ);

2.1. Rješenja

  1. D
  2. 2
  3. B
  4. 7
  5. 432, 153, 385
  6. 432, 153, 385
  7. Umag
  8. Delnice
  9. D
  10. Broj je djeljiv s 9
  11. C
  12. Broj je djeljiv s 3
  13. C
  14. dva
  15. D
  16. jedan
  17. D
  18. Z
  19. D
  20. B
  21. A
  22. 75