Kontrolni zadatak: grananje (selekcije) u programu

Kontrolni 2 od 8 · Kontrolni zadaci

Na ovoj strani možeš da ponoviš naredbe za grananje toka programa i proveriš razumevanje uslova, naredbi if, if–else, višestruke selekcije i switch. Cilj nije samo da zapamtiš sintaksu već i da možeš da odrediš koji deo programa će se izvršiti za zadate vrednosti promenljivih.

Pre nego što počneš: ponovi lekcije Grananje u programu (C), Grananje u C++-u, Grananje u Javi, a zatim uradi zadatke sa strana Grananje – primeri, Dodatni primeri iz grananja.
Kako da vežbaš: izaberi jednu grupu i reši je za 45 minuta, bez gledanja u rešenja i beleške. Tek posle toga uporedi svoje rešenje sa rešenjem probnog kontrolnog.

Šta treba znati za kontrolni

  • Uslovni izrazi: poređenja kao što su ==, !=, <, >, <= i >=.
  • Logički operatori: && (i), || (ili) i ! (negacija).
  • Jednostruka selekcija: naredba if, kada se određeni blok izvršava samo ako je uslov ispunjen.
  • Dvostruka selekcija: if–else, kada program bira jednu od dve grane.
  • Višestruka selekcija: niz naredbi if–else if–else i izbor pomoću switch.
  • Redosled i granice: proveri šta se dešava kada je vrednost jednaka granici uslova, kao i kojim redom se uslovi ispituju.
  • Blokovi naredbi: pravilno korišćenje vitičastih zagrada i, u naredbi switch, oznaka case, break i default.

Kako izgleda kontrolni

  • Trajanje: jedan školski čas (45 minuta).
  • Zadaci: 3 (ponekad 4) zadatka; svaka grupa ima zadatke iste težine, ali sa drugim podacima.
  • Šta se ocenjuje: da li program radi tačno za primer i za granične slučajeve, da li su ulaz i izlaz kao u tekstu i da li je kod pregledan.
Predlog bodovanja (3 zadatka po 10 poena)
Poeni0–1112–1617–2122–2627–30
Ocena12345

Skala je predlog za samostalnu proveru; nastavnik može da je prilagodi.

Primer: izbor grane na osnovu broja poena

U sledećem primeru program određuje opis rezultata na osnovu broja osvojenih poena. Redosled provera je važan: čim je neki uslov ispunjen, izvršava se odgovarajuća grana i ostatak lanca se preskače.

int poeni = 76;

if (poeni >= 90) {
    cout << "Odlican rezultat";
} else if (poeni >= 75) {
    cout << "Vrlo dobar rezultat";
} else if (poeni >= 60) {
    cout << "Dobar rezultat";
} else {
    cout << "Potrebno je jos vezbe";
}

Za poeni = 76 ispisuje se Vrlo dobar rezultat. Vrednost 76 ne zadovoljava prvi uslov, ali zadovoljava drugi, pa se naredne grane ne proveravaju.

Obrati pažnju: kada se opseg definiše pomoću više uslova, pažljivo odredi da li granica pripada jednom ili drugom opsegu. Na primer, poeni >= 75 uključuje i vrednost 75.

Probni kontrolni sa rešenjima

Zadaci iz grupe „10. grupa“ (PDF) prepisani su ovde kao tekst, sa primerom, uputstvom i rešenjem. Postavi sat na 45 minuta i pokušaj da ih rešiš sam/a; rešenja otvori tek na kraju.

ZADATAK 0110. grupa

Površina kružnog prstena

Napiši program koji izračunava površinu kružnog prstena za unete poluprečnike spoljašnjeg i unutrašnjeg kruga Rs i Ru. Proveri da li su podaci ispravni: oba broja moraju biti pozitivna, a spoljašnji poluprečnik veći od unutrašnjeg. Ako su podaci ispravni, ispiši površinu na dve decimale, a ako nisu – poruku o grešci.

Primer 1

Ulaz

5 3

Izlaz

Povrsina prstena: 50.27

Primer 2

Ulaz

3 5

Izlaz

Neispravni podaci
ZADATAK 0210. grupa

Izvršenje if naredbe

Dat je deo programa (u Javi, kao u originalnom kontrolnom):

if (a > 12 || !(b > 0)) {
    if (!(c > 5)) {
        System.out.println("Tačno je naredba će se izvršiti");
    }
}

Za koje od sledećih unetih vrednosti a b c će se ispisati poruka?

a) -1 5 -7   b) 2 8 6   c) 4 -6 5   d) 16 0 3   e) 5 6 3

ZADATAK 0310. grupa

Kupovina računara

U prodavnici postoje tri konfiguracije računara: 1 – 48000 din, 2 – 42000 din, 3 – 58000 din. Program nudi korisniku da odabere konfiguraciju, a zatim ispisuje cenu u evrima (uzmi kurs 1 € = 117 din) i da li je odabrao najskuplju, srednju ili najjeftiniju varijantu. Za pogrešan izbor ispisuje „Pogresan izbor“.

Primer 1

Ulaz

1

Izlaz

Cena: 410.26 EUR
Srednja po ceni

Primer 2

Ulaz

3

Izlaz

Cena: 495.73 EUR
Najskuplja

Primer 3

Ulaz

7

Izlaz

Pogresan izbor

Saveti za rešavanje

  1. Najpre zapiši početne vrednosti svih promenljivih.
  2. Proveravaj uslove redom i za svaki napiši da li je tačan ili netačan.
  3. Prati samo onu granu koja se zaista izvršava; nemoj izvršavati i if i odgovarajući else.
  4. Posebno proveri granične vrednosti, kao što su 0, 1, 18 ili vrednost koja je jednaka granici iz uslova.
  5. Kod switch proveri da li su navedeni odgovarajući case i default, kao i gde se nalaze naredbe break.
  6. Pre predaje rešenja testiraj tipične slučajeve, granične vrednosti i vrednosti koje ne pripadaju nijednom posebnom slučaju.

Proveri znanje: mini kviz

Odgovori na pitanja i proveri svaki odgovor odmah nakon izbora.

Otvori kviz

Mini kviz: if, if–else i switch

1. Šta će ispisati sledeći kod ako je x = 7?

if (x > 10) cout << "A";
else if (x > 5) cout << "B";
else cout << "C";




2. Koji uslov proverava da li je ceo broj x paran?





3. Koji izraz proverava da li je broj godine u opsegu od 18 do 65 godina, uključujući obe granice?





4. U ugnježdenim if naredbama, kome pripada else ako vitičaste zagrade nisu upotrebljene da razdvoje blokove?





5. Šta će ispisati ovaj kod kada je n = 3?

switch (n) {
    case 1: cout << "Jedan"; break;
    case 2: cout << "Dva"; break;
    case 3: cout << "Tri"; break;
    default: cout << "Drugo";
}




6. Šta će biti rezultat ako je x = 12?

if (x > 10) cout << "A";
else if (x > 0) cout << "B";
else cout << "C";