Grananje

Sjedište: CARNET - Arhiva 2021 Loomen
E-kolegij: e-Ekonomac
Knjiga: Grananje
Otisnuo/la: Gost (anonimni korisnik)
Datum: nedjelja, 24. studenoga 2024., 11:53

1. Uvod u grananje

Razmislite na koji način prelazite cestu preko pješačkog prijelaza označenog semaforom. Na koji način u tom slučaju donosimo odluku kada možemo prijeći cestu? 

semafor

Pri pisanju programa, često je potrebno provjeriti neki uvjet npr: jeli broj pozitivan ili negativan, paran ili neparan, jeli broj veći od drugog broja, te ovisno o rezultatu uvjeta izvršiti određenu naredbu ili naredbe.

2. Ponovimo - Relacijski i logički operatori

Za ispitivanje uvjeta korite se relacijski operatori a za postavljanje složenih uvjeta koriste se logički operatori. Ako je izvršavanje neke naredbe ili naredaba uvjetovano rezultatom relacijskih ili logičkih izraza, tada se oni stavljaju u strukturu grananja.

Relacijskim i logičkim izrazima, najčešće se koristimo kad je ovisno o rezultatu provjere, potrebno izvršiti neku naredbu. Na primjer, želimo li unijeti ocjene učenika da bismo izračunali njihov prosjek, najprije moramo provjeriti je li  korisnik unio ocjene (broj između 1 i 5) i tada izvršiti određenu naredbu (zbrojiti ocjene s prethodnim ocjenama). Ako korisnik nije upisao ocjenu, potrebno je izvršiti neku drugu naredbu, npr. napisati mu poruku o tome da nije unio ispravan podatak. 

Relacijski operatori 

Izrazi u kojima je potrebno usporediti dvije vrijednosti nazivaju se relacijskim izrazima. Za uspoređivanje se koriste relacijski operatori: manje od (<), veće od (>), manje ili jednako (<=), veće ili jednako (>=), jednako (=), i različito (<>). Kad uspoređujemo dvije vrijednosti, rezultat može biti laž (0) ili istina (1).

Relacijski operatori u pseudojeziku 

relacijski operatori

Primjer : izračunajmo vrijednosti relacijskih izraza

primjer računanja relacijskih izraza

Logički operatori

Što napraviti ako je potrebno usporediti više vrijendosti, primjerice, trebamo li provjeriti je li uneseni broj troznamenkast (veći od 99 i manji do 1000). Matematički bi to zapisali ovako 99<a<1000. U programiranju uglavnom ne možemo na taj način zapisivati relacijske izraze. Moramo provjeriti je li a>99 i je li a<1000. U tu svrhu koristimo se logičkim operatorima I, ILI, NE i navedeni primjer bi zapisali (A < 1000) I (A > 99)

Logički operatori u pseudojeuiku

logički operatori

U mješovitim izrazima u kojima se nalaze aritmetički, relacijski i logički operatori, najveći prioritet imaju aritmetičke, zatim relacijske i na kraju logičke operacije. Izrazi u zagradi računaju se prvi.

logički operatori

Relacijski i logički operatori u Pythonu

relacijski i logički operatori u pythonu

3. Pitanje, vježbe i zadaci

vježba

4. Grananje

Programskom strukturom grananja koristimo se pri donošenju odluka, odnosno kada se program treba granati u jedan ili više smjerova ovisno o istinitosti danog uvjeta.

Grananje u pseudojeziku

 grananje

Napisani primjer pokazuje grananje u dva smjera. Naredba 1 izvršit će se ako je zadani uvjet istinit, a naredba 2 ako nije. 

Prikaz grananja dijagramom toka

grananje

Primjer 1. Provjerimo je li unijeti broj paran ili neparan (ako je broj paran ostatak pri cjelobrojnom dijeljenju s brojem 2 je 0)

paran ili neparan broj

Primjer 2. Provjerimo je li uneseni broj troznamenkast (u ovom primjeru u uvjetu je potrebno kombinirati relacijske operatore sa logičnim)

troznamenkast broj

Primjer 3. Provjerimo je li uneseni broj manji od nule, veći od nule ili jednak nuli (za rješavanje ovog zadatka moguće je tri puta se koristiti naredbom jednostrukog grananja)

broj veći manji ili jednak nuli

Trebamo li program granati u više od dva smjera, naredbe grananja moguće je pisati jednu u drugoj. Tako prethodni primjer, možemo rješiti i na sljedeći način:

broj veći manji ili jednak nuli

U prvom algoritmu program provjerava sva tri uvjeta bez obzira na upisani broj, dok u drugom primjeru čim jedan uvjet bude ispunjen one u nastavku će preskočiti. 

5. Grananje u Python-u

Grananje u Pythonu ima sljedeći oblik:

grananje u pythonu

Ako je uvjet istinit izvršit će se naredba_1 a ako nije izvršit će se naredba_2. Znak ":" upućuje na to da se naredba nastavlja u sljedećem redu. Pri pisanju programa u sučelju IDLE naredba u sljedećem redu biti će uvučena za četiri mjesta. Sve sljedeće uvučene naredbe pripadaju istom bloku naredaba. 

Primjer 1. Program koji ispituje je li uneseni broj paran  ili neparan  (pseudojezik i programski kom u Pythonu)

paran neparan broj u pythonu

Kada je potrebno provjeriti više uvjeta u jednoj naredbi grananja, naredba IF je oblika: 

elseif

Primjer 2. Program koji za uneseni broj provjerava jeli veći od nule, manji od nule ili je jednak 0

veći, manji jednak 0 u pythonu

6. Domaći rad

  1. Napravite program koji za uneseni broj provjerava je li troznamenkast (algoritam za taj program napisan je prije u pseudojeziku). Prijedlog rješenja možete pronaći u dodatnim digitalnim sadržajima na linku https://www.e-sfera.hr/dodatni-digitalni-sadrzaji/97707967-990f-45db-9034-564e8a1531c9/ (prilikom korištenja rješenja pronađite programski jezik Python i zadatke troznamenkasti)
  2. Napravite program koji će provjeravati je li uneseni broj troznamenkast. Ako jest, na zaslon je potrebno ispisati zbroj njegovih znamenaka, a ako nije poruku: "Uneseni broj nije troznamenkast".