PERCABANGAN/KONDISIONAL Pernyataan percabangan / kondisional memberi pilihan apakah sebuah segmen program akan dikerjakan atau tidak Perintah percabangan dalam C++ if statement if ( percabangan tunggal ) if - else ( percabangan majemuk ) if - else - if ( percabangan bertingkat ) switch statement
Percabangan 5
Percabangan Tunggal 6 Percabangan tunggal adalah struktur kontrol di C++ yang hanya memeriksa satu kondisi , dan jika kondisi benar (true), maka program akan menjalankan perintah di dalamnya . Jika kondisi salah (false), program akan melewati perintah tersebut .
Contoh Flowchart Percabangan Tunggal 7 Contoh BEGIN END INPUT umur umur >= 60 PRINT “Manula” BENAR SALAH
Contoh Flowchart Percabangan Tunggal 8 Kemungkinan #1 Start
Contoh Flowchart Percabangan Tunggal 9 Start Input umur umur 85 Kemungkinan #1
Contoh Flowchart Percabangan Tunggal 10 Start Input umur umur >= 60 BENAR SALAH umur 85 Kemungkinan #1
Contoh Flowchart Percabangan Tunggal 11 Start Input umur umur >= 60 Cetak “ Manula ” BENAR umur 85 Kemungkinan #1
Contoh Flowchart Percabangan Tunggal 12 Start END Input umur umur >= 60 Cetak “ Manula ” umur 85 Kemungkinan #1
Contoh Flowchart Percabangan Tunggal 13 Kemungkinan #2 Start
Contoh Flowchart Percabangan Tunggal 14 Start Input umur umur 20 Kemungkinan #2
Contoh Flowchart Percabangan Tunggal 15 Start Input umur umur >= 60 BENAR SALAH umur 20 Kemungkinan #2
Contoh Flowchart Percabangan Tunggal 16 Start End Input umur umur >= 60 umur 20 Kemungkinan #2 SALAH
Perintah Percabangan Tunggal (if) Syntax if ( condition ) action if condition bernilai true maka kerjakan action . action dapat berupa sebuah pernyataan atau sekelompok pernyataan . condition action true false
Contoh 1. if( harga >100000) discount = harga * 0.1; 2. i f((x>0) && (x<20)) { y = x * 10; z = y + 25; } 3. i f((x>0) && (x<20)) y = x * 10; z = y + 25; 18 Misal x = 15 ; y=0; z=0 y = 150 Z = 175 Misal x = 15 ; y=0; z=0 y = 150 Z = 175 Misal x = 25 ; y=0; z= 0 y = 0 Z = 0 Misal x = 25 ; y=0; z= 0 y = 0 Z = 25
Contoh nilai absolut // program to read number & print its absolute value #include <iostream> using namespace std; int main(){ int value; cout << "Enter integer: "; cin >> value; if (value < 0) value = -value; cout << "The absolute value is " << value; return 0; } END INPUT value Value <0 PRINT Value BENAR SALAH START Value = -Value
Operator Relasional Operator relasional digunakan untuk membandingkan dua nilai pada bentuk percabangan Math C++ Penjelasan = == sama dengan [ contoh : if (a==b) ] [ jika (a=b) berarti nilai b disalin ke a ] < < lebih kecil <= lebih kecil atau sama dengan > > lebih besar daripada >= lebih besar atau sama dengan != tidak sama dengan
Operator Precedence * / % + - < <= >= > == != = Semakin rendah
Operator Precedence Precedence operator (Dari tinggi ke rendah ) Parentheses ( … ) Unary operators ! - + Multiplicative operators * / % Additive operators + - Relational ordering < <= >= > Relational equality == != Logical and && Logical or || Assignment =
Tipe Boolean Dalam C++ kondisi akan menghasilkan nilai yang bertipe bool Kondisi akan mempunyai nilai : true ( merupakan nilai selain nol ) false ( nilai 0) Operator boolean dapat digunakan untuk membuat ekspresi kondisi yang lebih kompleks . operator and && operator or || operator not !
Tipe Boolean bool P = true ; bool Q = false ; bool R = true ; bool S = P && Q; bool T = !Q || R; bool U = !(R && !Q);
Sorting Two Numbers int value1; int value2; int temp; cout << "Enter two integers: "; cin >> value1 >> value2; if (value1 > value2){ temp = value1; value1 = value2; value2 = temp; } cout << "The input in sorted order: " << value1 << " " << value2 << endl ;
Contoh 1 void main() { int Num1, Num2; cout <<“ masukkan nilai 1:”; cin >>Num1; cout <<“ masukkan nilai 2:”; cin >>Num2; if(Num1>Num2) cout <<Num1<<“+”<<Num2<<“=“<<Num1+Num2; } 28
Contoh 2 void main() { int Nilai; cout <<“ masukkan nilai :”; cin >>Nilai; if(Nilai < 0) cout <<“Nilai tidak boleh negatif ”; if(Nilai>100) cout <<“Nilai maksimal 100”; if(Nilai>=0 && Nilai<=100) cout <<“Nilai anda : “<<Nilai; } 29
Contoh 3 void main() { char c; printf (“ ketikkan sebuah huruf :”); scanf (“%c”, &c); if(c==’a’||c= = ’e’||c==’ i ’ ||c= = ’o’||c==’u’) printf (“ anda mengetik huruf vokal ”); } 30
Percabangan Majemuk 31 Percabangan majemuk digunakan untuk dua kemungkinan kondisi : jika kondisi benar , maka blok if dijalankan , tetapi jika kondisi salah, maka blok else yang dijalankan .
Flowchart Percabangan Majemuk 32 Kondisi A Model Kondisi B Instruksi 2 Instruksi 1
Percabangan Majemuk ( i f-else) Syntax if ( condition ) Action_A else Action_B if condition bernilai true maka jalankan Action_A else jalankan Action_B condition Action_A Action_B true false
Contoh : mencari bilangan terbesar int value1; int value2; int larger; cout << "Enter two integers: "; cin >> value1 >> value2; if (value1 > value2) larger = value1; else larger = value2; cout << "Larger of inputs is: " << larger << endl ;
Contoh : Luas Lingkaran const double PI = 3.1415926 ; int radius ; double area ; cout << "Enter the radius of the circle : "; cin >> radius ; if ( radius > ) { area = radius * radius * PI; cout << " The area of the circle is: " << area; } else cout << " The radius has to be positive " << endl ;
Contoh : menetukan bilangan genap atau ganjil int value1; bool even; cout << "Enter a integer : "; cin >> value ; if (value %2 == 0 ) even = true ; else even = false ;
Contoh void main() { char c; printf (“ ketikkan sebuah huruf :”); scanf (“% c”,&c ); if (c==’a’||c=’ = e’||c==’ i ’ ||c= = ’o’||c==’u’) printf (“ anda mengetik huruf vokal \n\n”); else printf (“ bukan huruf vokal \n\n”); } 38
Percabangan Bertingkat 39
Flowchart Percabangan Bertingkat 40 Kondisi A Kondisi B Kondisi C Kondisi D Model
Flowchart Percabangan Bertingkat 41 Kondisi A Model
Flowchart Percabangan Bertingkat 42 Kondisi A Kondisi B Model
Flowchart Percabangan Bertingkat 43 Kondisi A Kondisi B Kondisi C Model
Flowchart Percabangan Bertingkat 44 Kondisi A Kondisi B Kondisi C Kondisi D Model
Kondisi if else bertingkat if(tes1) { if(tes2) { if (tes3) {…} } else {…………………} } else {………………} 45 Proses A Benar Salah
if-else-if Statements if <condition 1>{ <do Q> } else if <condition 2>{ <do R> } else if <condition 3>{ <do S> } else{ <do T> } Q R T S Q R T S
Contoh void main() { int Ultah = 13; int tebak ; printf (“ tebak tanggal lahir dari 1 sampai 31\n”); printf (“ masukkan tebakan anda : “); scanf (“%d”,& tebak ); if ( tebak <0) printf (“ tanggal tidak negatif ”); else if ( tebak >31) printf (“ tidak ada tanggal diatas 31\n”); else { if ( tebak == ultah ) printf (“ anda benar ”); else if ( tebak < ultah ) printf (“ tebakan terlalu rendah ”); else printf (“ tebakan terlalu tinggi ”); } } 48
Percabangan Bersarang (Nested if) Bersarang (Nested) adalah suatu kondisi dimana terdapat pernyataaan yang berada didalam pernyataan yang lain. if <condition 1>{ if <condition 2>{ if <condition 3>{ <do A> } <do B> } <do C> } 1 2 3 A B C
Nested if Statements if (member) { if (age < 18) { fee = fee * 0.5; } if (age >=18) fee = fee * 0.8; } if (member) { if (age < 18) { fee = fee * 0.5; } } if (age >=18) fee = fee * 0.8;
“Dangling Else” Problem else adalah milik dari if yang terdekat . int a = -1, b = 1, c = 1; if ( a > 0 ) if ( b > 0 ) c = 2; else c = 3; (A) int a = -1, b = 1, c = 1; if (a > 0) { if (b > 0) c = 2; else c = 3; } (B) int a = -1, b = 1, c = 1; if (a > 0) { if (b > 0) c = 2; } else c = 3;
STRUKTUR KONDISI SWITCH switch(ekspresi) { case……..: pernyata a n; break; case……..: pernyata a n; break; case……..: pernyata a n; break; . . default: pernyataan; //pilihan } 54
Aturan Switch Label pada case harus berupa konstanta . Konstanta pada label case berupa integer atau karakter . Tidak boleh terdapat 2 case yang mempunyai nilai label sama . Dua label case dapat melakukan perintah yang sama . default tidak harus ada . default hanya satu dan diletakkan pada akhir pilihan . 55
56 action action action action case 1 case 2 case 3 default
Contoh Flowchart Selection/ Switch 57 Start Input hari Cetak “ Minggu ” hari Cetak “ Senin ” Cetak “ Sabtu ” 1 6 End ITATS
Contoh Flowchart Selection/ Switch 58 BEGIN INPUT hari PRINT “Minggu” hari Cetak “Senin” Cetak “Sabtu” 1 6 END Start Jika variabel “ hari ” diberi nilai 0. Input hari Cetak “ Minggu ” hari End
Contoh Flowchart Selection/ Switch 59 BEGIN INPUT hari Cetak “Minggu” hari PRINT “Senin” Cetak “Sabtu” 1 6 END Jika variabel “hari” diberi nilai 1. Start Input hari hari Cetak “ Senin ” 1 End
Contoh Flowchart Selection/ Switch 60 BEGIN INPUT hari Cetak “Minggu” hari Cetak “Senin” PRINT “Sabtu” 1 6 END Jika variabel “hari” diberi nilai 6. Start Input hari hari Cetak “ Sabtu ” 6 End
Contoh 1 void main(){ int angka ; printf (“ tulis angka antara 1 sampai 5:”); scanf (“%d”, & angka ); switch( angka ) { case 1: printf (“ anda menuliskan angka %d”, angka ); break; case 2: printf (“ anda menuliskan angka %d”, angka ); break; case 3: printf (“ anda menuliskan angka %d”, angka ); break; case 4: printf (“ anda menuliskan angka %d”, angka ); break; case 5: printf (“ anda menuliskan angka %d”, angka ); break; default: printf (“%d tidak antara 1 sampai 5”,angka); } } 61
Contoh 2 char char1; char1 = g et c he(); switch (char1) { case 'a': case 'A': cout <<“ huruf pertama ”; break; case 'b': case 'B': cout <<“ huruf kedua ”; break; case ‘c': case ‘C': cout <<“ huruf pertama ”; break; default: cout << "Not a valid choice\n"; } 62