Presentation is loading. Please wait.

Presentation is loading. Please wait.

Programiranje - Naredbe za kontrolu toka programa – 1. dio

Similar presentations


Presentation on theme: "Programiranje - Naredbe za kontrolu toka programa – 1. dio"— Presentation transcript:

1 Programiranje - Naredbe za kontrolu toka programa – 1. dio
Kolegij: Programski jezik C++ Ak. god. 2018/19 Izv. Prof. Dr. Sc. Marko Maliković

2 Grananje toka programa naredbom if
Prvi oblik naredbe if: if (logicki_izraz) { blok_naredbi } Ako je vrijednost izraza logicki_izraz jednak: true – onda se izvodi blok_naredbi false – onda se blok_naredbi preskače i izvođenje programa se nastavlja od prve naredbe iza bloka

3 Grananje toka programa naredbom if
Iako se u slučaju samo jedne naredbe u bloku naredbi vitičaste zagrade mogu izostaviti, ipak se preporučuju stavljati: if (a >= 0) { korijen = sqrt(a); }

4 Primjer: Dijeljenje s nulom
Ako se u kôdu pojavi dijeljenje s nulom, program će se “srušiti” Rješenje je prije naredbe u kojoj može doći do dijeljenja s nulom umetnuti ispitivanje i omogučiti tu operaciju samo ako je nazivnik različit od nule: if (nazivnik!=0) { rezultat = brojnik/nazivnik; }

5 Grananje toka programa naredbom if
Drugi oblik naredbe: if (logicki_izraz) {blok_naredbi_1} else {blok_naredbi_2} Ako je vrijednost izraza logicki_izraz jednaka true - izvodi se blok_naredbi_1 false – izvodi se blok_naredbi_2 if (a < 0) {cout << "Broj je negativan!" << endl;} {cout << "Broj je pozitivan ili nula!" << endl;}

6 Primjer: Dijeljenje s nulom
if (nazivnik!=0) { rezultat = brojnik/nazivnik; } else cout << "Ne smijete dijeliti s 0!";

7 Nadovezivanje if naredbi
if (logicki_izraz_1) {prvi_blok_naredbi} else if (logicki_izraz_2) {drugi_blok_naredbi} if (logicki_izraz_3) {treci_blok_naredbi} ... else {n_ti_blok_naredbi}

8 Nadovezivanje if naredbi
int a; cin >> a; if (a < 0) { cout << "Broj je negativan!" << endl; } else if (a > 0) cout << "Broj je pozitivan!" << endl; cout << "Broj je jednak nuli!" << endl;

9 Primjer - Program za rješavanje kvadratne jednadžbe
#include <iostream> #include <cmath> using namespace std; int main() { double a, b, c; cout << "Unesi koeficijente kvadratne jednadzbe:" << endl; cout << "a = "; cin >> a; cout << "b = "; cin >> b; cout << "c = "; cin >> c; double diskriminanta = b * b - 4. * a * c; if (diskriminanta == 0) cout << "Jednadzba ima dva jednaka realna rjesenja:" << endl << endl; cout << "x = " << -b/(2*a) << endl; } else if (diskriminanta > 0) cout << "Jednadzba ima dva razlicita realna rjesenja:" << endl << endl; cout << "x1 = " << (-b+sqrt(pow(b,2)-4*a*c))/(2*a) << endl; cout << "x2 = " << (-b-sqrt(pow(b,2)-4*a*c))/(2*a) << endl; cout << "Jednadzba ima dva razlicita kompleksna rjesenja:" << endl << endl; cout << "x1 = " << -b/(2*a) << "+i*" << sqrt(abs(pow(b,2)-4*a*c))/(2*a) << endl; cout << "x2 = " << -b/(2*a) << "-i*" << sqrt(abs(pow(b,2)-4*a*c))/(2*a) << endl; return 0; Deklaracije i unos varijabli Blok koji se izvodi ako je diskriminanta jednaka 0 Blok koji se izvodi ako je diskriminanta veća od 0 Blok koji se izvodi ako je diskriminanta manja od 0

10 Ugnježđivanje naredbi if
if (logicki izraz 1) { naredbe; if (logicki izraz 2) ... } else naredbe;

11 Što će ispisati: if (6<5) if (5<6) cout << "1"; else
Ispisati će broj 3

12 Što će ispisati: if (6<5) if (5<6) cout << "1"; else
Neće ispisati ništa! Što to znači?

13 Dakle, na koji if se odnosi else:
if (uvjet1) if (uvjet2) cout << "1"; else cout << "2";

14 Dakle, trebalo bi pisati ovako:
if (uvjet1) if (uvjet2) cout << "1"; else cout << "2";

15 Opasnost (== a ne =) #include <iostream> #include <conio.h> using namespace std; int main() { float x; cout << "x = "; cin >> x; if (x=0) cout << "Hmm,..."; } else cout << "Hmm, Hmm,..."; getch(); return 0; Program se izvodi ali neispravno! Uvijek se ispisuje "Hmm, Hmm,…" - bez obzira na vrijednost x Neki prevoditelji javljaju samo upozorenje ali ne i grešku Neki prevoditelji ne javljaju ni upozorenje


Download ppt "Programiranje - Naredbe za kontrolu toka programa – 1. dio"

Similar presentations


Ads by Google