Download presentation
Presentation is loading. Please wait.
Published byΚλαύδιος Δημητρακόπουλος Modified over 5 years ago
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
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.