Jednostrano uvjetno grananje Kristijana Paskvali 15 52 16

  • Slides: 32
Download presentation
Jednostrano uvjetno grananje { Kristijana Paskvali 15: 52: 16

Jednostrano uvjetno grananje { Kristijana Paskvali 15: 52: 16

Ponavljane: Primjer slijeda 15: 52: 18

Ponavljane: Primjer slijeda 15: 52: 18

Logički izraz omogućuje usporedbe numeričkih vrijednosti, niza znakova i logičkih vrijednosti Za usporedbu se

Logički izraz omogućuje usporedbe numeričkih vrijednosti, niza znakova i logičkih vrijednosti Za usporedbu se služimo relacijskim operatorima (<, >, <=, >=, ==, !=) npr. a != b Logički izraz 15: 52: 22

 u pseudokodu: „Ako je izraz onda“, u kodu: naredba. . if (izraz) blok

u pseudokodu: „Ako je izraz onda“, u kodu: naredba. . if (izraz) blok naredbi. . U struktogramu: U dijagramu toka: izraz (u kodu izraz smještamo unutar oblih zagrada) Logički uvjet sadrži logički izraz 15: 52: 24

Jednostrano uvjetno grananje -> programski blok se ili izvodi ili preskače 0 if (uvjet)

Jednostrano uvjetno grananje -> programski blok se ili izvodi ili preskače 0 if (uvjet) 1 { blok naredbi } naredba iza bloka Oblik jednostranog uvjetnog grananja 15: 52: 26

Ako je vrijednost uvjeta logička istina (true, 1), izvodi se blok naredbi koji se

Ako je vrijednost uvjeta logička istina (true, 1), izvodi se blok naredbi koji se nalazi iza naredbe if. o o Ako je vrijednost uvjeta logička neistina (false, 0), blok naredbi iza naredbe if se preskače i izvođenje se nastavlja od prve naredbe iza bloka. 15: 52: 30

Prezentiranje jednostranog uvjetnog grananja dijagramom toka 15: 52: 33

Prezentiranje jednostranog uvjetnog grananja dijagramom toka 15: 52: 33

… Uvjet false true Blok naredbi … Naredbe iza bloka Prezentiranje jednostranog uvjetnog grananja

… Uvjet false true Blok naredbi … Naredbe iza bloka Prezentiranje jednostranog uvjetnog grananja struktogramom 15: 52: 37

Primjer 1: Unesite broj litara goriva u automobilu. Ako je broj manji od 3,

Primjer 1: Unesite broj litara goriva u automobilu. Ako je broj manji od 3, ispiši: ”Natoči gorivo”. Ispiši: ”Produži prema Solinu. ” 15: 52: 39

Struktogram 15: 52: 42

Struktogram 15: 52: 42

Dijagram toka 15: 52: 45

Dijagram toka 15: 52: 45

int main() { int br; scanf("%d", &br); if (br <3) printf("Natoci gorivo n"); printf("n

int main() { int br; scanf("%d", &br); if (br <3) printf("Natoci gorivo n"); printf("n Produzi prema Solinu. n"); return 0; } Kod 15: 52: 48

Primjer 2. Osmislite program koji provjerava mogu li tri unesene duljine stranica tvoriti trokut.

Primjer 2. Osmislite program koji provjerava mogu li tri unesene duljine stranica tvoriti trokut. 15: 52: 50

Ako su ispunjeni svi navedeni uvjeti trokut se može načiniti Ugniježđeno jednostrano grananje 15:

Ako su ispunjeni svi navedeni uvjeti trokut se može načiniti Ugniježđeno jednostrano grananje 15: 52: 53

Ako su ispunjeni svi navedeni uvjeti trokut se može načiniti Ugniježđeno jednostrano grananje 15:

Ako su ispunjeni svi navedeni uvjeti trokut se može načiniti Ugniježđeno jednostrano grananje 15: 52: 56

Ako su ispunjeni svi navedeni uvjeti trokut se može načiniti int main() { int

Ako su ispunjeni svi navedeni uvjeti trokut se može načiniti int main() { int a, b, c, trokut; trokut = 0; printf("Unesite duljine stranica trokuta a, b i c: "); scanf("%d%d%d", &a, &b, &c); if (a + b >= c) if (a + c >= b) if (b + c >= a) trokut=1; if(trokut==0) printf("NIJE"); if(trokut==1) printf("JE"); return 0; } Ugniježđeno jednostrano grananje 15: 53: 00

Ako je ispunjen barem jedan uvjet trokut NIJE moguće načiniti Niz uvjeta jednake posljedice

Ako je ispunjen barem jedan uvjet trokut NIJE moguće načiniti Niz uvjeta jednake posljedice 15: 53: 03

Ako je ispunjen barem jedan uvjet, NIJE moguće načiniti trokut. Niz uvjeta jednake posljedice

Ako je ispunjen barem jedan uvjet, NIJE moguće načiniti trokut. Niz uvjeta jednake posljedice 15: 53: 09

Ako je ispunjen barem jedan uvjet trokut se ne može načiniti { int a,

Ako je ispunjen barem jedan uvjet trokut se ne može načiniti { int a, b, c, trokut; trokut =1; printf("Unesite duljine stranica trokuta a, b i c: "); scanf("%d%d%d", &a, &b, &c); if (a + b < c) trokut =0; if (a + c < b) trokut =0; if (b + c < a) trokut =0; if(trokut==0) printf("NIJE"); if(trokut==1) printf("JE"); return 0; } Niz uvjeta jednake posljedice 15: 53: 12

Operator > < >= <= == != Suprotni operator <= >= < > !=

Operator > < >= <= == != Suprotni operator <= >= < > != == De Morgan-ova pravila : _____ _ _ A+B=A*B _____ _ _ A*B=A+B Podsjetimo se svojstava negacije logičkih i relacijskih operatora: 15: 53: 15

 • Navedeni prvi primjer ugniježđenih serijskih uvjeta možemo pojednostaviti logičkim izrazom : (a

• Navedeni prvi primjer ugniježđenih serijskih uvjeta možemo pojednostaviti logičkim izrazom : (a + b >= c && a + c >= b && c + b >= a) • Navedeni drugi primjer paralelnih uvjeta možemo zamijeniti pojednostavljenim logičkim izrazom: (a + b < c || a + c < b || c + b < a) Rješenje zadatka uz korištenje jednog logičkog uvjeta sa složenijim logičkim izrazom: 15: 53: 16

int main() { int a, b, c, trokut; trokut = 0; printf("Unesite duljine stranica

int main() { int a, b, c, trokut; trokut = 0; printf("Unesite duljine stranica trokuta a, b i c: "); scanf("%d%d%d", &a, &b, &c); if (a + b >= c && a + c >= b && c + b >= a) trokut = 1; int main() { int a, b, c, trokut; trokut = 1; printf("Unesite duljine stranica trokuta a, b i c: "); scanf("%d%d%d", &a, &b, &c); if (a + b < c || a + c < b || c + b <a) trokut = 0; if(trokut==0) printf("NIJE"); if(trokut==1) printf("JE"); return 0; } Kodovi izgledaju dosta slično uz naglasak na razliku u logičkim izrazima 15: 53: 18

! (a + b >= c && a + c >= b && c

! (a + b >= c && a + c >= b && c + b >= a) = (a + b < c || a + c <b || c + b < a) ! (a + b < c || a + c < b || c + b < a) = (a + b >= c && a + c >= b &&c + b >= a) Uvjet može biti jednostavan relacijski izraz ili kombinacija izraza spojenih s logičkim operatorima. 15: 53: 21

Primjer 3. Ispiši površinu trokuta nakon unosa duljina stranica. Ako duljine stranica ne zadovoljava

Primjer 3. Ispiši površinu trokuta nakon unosa duljina stranica. Ako duljine stranica ne zadovoljava uvjet konstrukcije trokuta, ispiši „Takav trokut ne postoji. ” 15: 53: 23

Primjer 4: Ispiši najmanju vrijednost broja od dvaju unesenih 15: 53: 27 brojeva:

Primjer 4: Ispiši najmanju vrijednost broja od dvaju unesenih 15: 53: 27 brojeva:

int main() { int a, b, min; printf("Unesi dva broja: "); scanf("%d %d ",

int main() { int a, b, min; printf("Unesi dva broja: "); scanf("%d %d ", &a, &b, ); min=a; if (b<min) min=b; printf ("n manji je %dn", min); return 0; } Primjer 4: Ispiši najmanju vrijednost broja od dvaju unesenih 15: 53: 35 brojeva:

Od unesena tri broja (a, b, c) ispiši najmanji (min). Zadatak 1. 15: 53:

Od unesena tri broja (a, b, c) ispiši najmanji (min). Zadatak 1. 15: 53: 36

int main() { int a, b, c, min; printf("Unesi tri broja: "); scanf("%d %d

int main() { int a, b, c, min; printf("Unesi tri broja: "); scanf("%d %d %d", &a, &b, &c); min=a; if (b<min) min=b; if (c<min) min=c; printf ("n Najmanji je %dn", min); return 0; } Prijedlog rješenja 1. 15: 53: 39

Ako učenik ima manje od 5 neopravdanih izostanaka i odličan uspjeh, ispiši 1 kao

Ako učenik ima manje od 5 neopravdanih izostanaka i odličan uspjeh, ispiši 1 kao znak dopuštenja za ispis pohvalnice. Zadana vrijednost nek je 0. Zadatak 2. 15: 53: 42

int main() { int uspjeh, izostanci, p; p=0; printf("Unesite opci uspjeh ucenika: "); scanf("%d",

int main() { int uspjeh, izostanci, p; p=0; printf("Unesite opci uspjeh ucenika: "); scanf("%d", &uspjeh); printf("Unesite broj neopravdanih izostanaka ucenika: "); scanf("%d", &izostanci); // Testiranje uvjeta if (uspjeh ==5 && izostanci < 5) p=1; if (p ==1) printf(„Ispisi uceniku pohvalnicu "); return 0; } Prijedlog rješenja 2. 15: 53: 47

Unesite dvije vrijednosti od 1 do 6 kao rezultat bacanja kockice Mirka, zatim Slavka.

Unesite dvije vrijednosti od 1 do 6 kao rezultat bacanja kockice Mirka, zatim Slavka. Igrač može odabrati i onu bodovnu vrijednost koja je okrenuta prema stolu (za 1 to je 6, za 2 to je 5, za 3 to je 4). Program ispisuje pobjednika. Ulaz : 2 4 Izlaz: Mirko Zadatak 3. 15: 53: 49

int main() { int m, s; scanf("%d%d", &s, &m); if (m<7 -m) m=7 -m;

int main() { int m, s; scanf("%d%d", &s, &m); if (m<7 -m) m=7 -m; if (s<7 -s) s=7 -s; if(s<m) printf("Mirkon"); if(m<s) printf("Slavkon"); if(m==s) printf("Nerijesenon"); return 0; } Prijedlog rješenja zadatka 3. 15: 53: 52