Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Nested if 164.

Presentasi serupa


Presentasi berjudul: "Nested if 164."— Transcript presentasi:

1 Nested if 164

2 9.4. Nested IF 9. 2 Perhatikan kembali struktur IF-THEN-ELSE dan IF-THEN Statement seperti yang sudah diterangkan sebagai berikut : Cond Cond FALSE TRUE TRUE S2 S1 FALSE S1 Struktur IF-THEN-ELSE Struktur IF-THEN Dari ilustrasi struktur diatas, S adalah satu atau sekelompok statement. Didalam kelompok S mungkin terdapat statement IF sehingga terjadi IF secara berjenjang atau secara tersarang yang biasa disebut Nested If (nest = sarang) 164

3 9.4. Nested IF if (cond1) {if (cond2) { - - S1 - } else { - - S2 S2 S1
3 Dari ilustrasi struktur diatas, S adalah satu atau sekelompok statement. Didalam kelompok S mungkin terdapat statement IF sehingga terjadi IF secara berjenjang atau secara tersarang yang biasa disebut Nested If (nest = sarang) Contoh : Cond1 False True 1) if (cond1) {if (cond2) { - - S1 - } else { - - S2 Cond2 True S2 S1 False 164

4 9.4. Nested IF S1 S3 S2 2) if (cond1) {if (cond2) {- Cond1 - S1 - }
True False S1 S3 S2 2) if (cond1) {if (cond2) {- - S1 - } else {- - S2 - S3 164

5 3) if cond1 { - - S1 - if cond2 - S2 } - S3 else {if cond3 - S4 - S5
9. 5 3) if cond1 { - - S1 - if cond2 - S2 } - S3 else {if cond3 - S4 - S5 Cond1 True False Cond3 S1 False True S5 S4 Cond2 True S2 False S3 Perhatikan posisi letak ‘titik’ Endif (akhir fungsi if ) dalam flowchart. Posisi ini penting untuk menganalisa aliran terutama untuk nested IF yang komplek atau untuk proses pengulangan yang bersifat rekursif. 165

6 S1 S5 S4 S3 S2 S6 165 4) if (cond1) { - - S1 - if (cond2) - S2 Cond1 }
9. 6 4) if (cond1) { - - S1 - if (cond2) - S2 } else { - - S3 else {if (cond3) - S4 - S5 - S6 Cond1 False True Cond3 S1 False True S5 S4 Cond2 True False S3 S2 S6 165

7 166 5) if(cond1) {if(cond2) {if(cond3) {if(cond4) { - - S1 - } S1
9. 7 5) if(cond1) {if(cond2) {if(cond3) {if(cond4) { - - S1 - } Cond1 True Cond2 True False Cond3 True False Cond4 True False S1 False endif endif endif endif S1 dilaksanakan, hanya bila keempat kondisi nilainya TRUE 166

8 166 6) if(cond1) { - - S1 - } else {if(cond2) - S2 {if(cond3) - S3
False True Cond2 S1 False True Cond3 S2 False True Cond4 True S3 False S5 S4 endif endif endif endif 166

9 166 6) if(cond1) { - - S1 - } else {if(cond2) - S2 {if(cond3) - S3
False True Cond2 S1 False True Cond3 S2 False True Cond4 True S3 False S5 S4 endif endif endif endif 166

10 Multi condition dan Logical Operator. 5.14 9.5.
Kadang-kadang satu kondisi saja tidak cukup untu menentukan suatu syarat, sehingga diperlukan dua atau lebih kondisi. Untuk menggabung kondisi kondisi tersebut digunakan operator yang disebut logical operator. Ada 3 maca logical operator yaitu : Yang dalam Bahasa C/C++ dan Java dinyatakan dengan simbol : 1. NOT 2. AND 3. OR 1. ! sebagai NOT 2. && sebagai AND 3. || sebagai OR 167

11 5.14 1). Operator NOT. Operator NOT, walaupun sifatnya logical, tapi beberapa buku literatur tidak memasukkannya kedalam Logical Operator. Operator NOT, bukan untuk menggabung dua buah kondisi, tapi bekerja sebagai pembalik nilai logika TRUE menjadi FALSE, False menjadi TRUE sehingga sering disebut Unary Operator. 167

12 Contoh : Misal nilai A = 5 dan B = 2 5 2 A B 167 Condition Nilai
Not (Condition) Nilai A == B A > B A < B A >= B A <= B A !=> B False True ! (A == B) ! (A > B) ! (A < B) ! (A >= B) ! (A <= B) ! (A != B) True False 167

13 Contoh : Misal nilai A = 5 dan B = 2 5 2 A B 167 Sama maksudnya dengan
Penulisan ! (A == B) ! (A > B) ! (A < B) ! (A >= B) ! (A <= B) ! (A != B) A != B A <= B A >= B A < B A > B A == B Contoh Penulisan dalam Bahasa C : if( ! ( A < B ) ) disini boleh ada satu atau lebih spasi 167

14 2). Operator AND. IF cond1 AND cond2 if ( cond1 && cond2 )
5.15 Operator AND, menggabung dua buah kondisi menjadi satu nilai sedemikian rupa akan bernilai TRUE hanya bila kedua kondisi yang digabungkan bernilai TRUE. Atau dengan perkataan lain harus memenuhi kedua syarat yang ditentukan0 Pemakaiannya dalam instruksi IF IF cond1 AND cond2 cond1 = kondisi-1 cond2 = kondisi-2 Yang dalam Bahasa C ditulis : if ( cond1 && cond2 ) atau if ( (cond1) && (cond2) ) 1) if ( KodeSex == 1 && Umur <= 25 ) 2) if ( Nilai >= 60 && Nilai < 70) 168

15 Truth Table (Tabel Kebenaran)
5.15 cond-1 AND cond-2 cond-1 cond-2 TRUE FALSE TRUE FALSE TRUE FALSE Contoh pemakaian : Bila nilai A = 5, B= 2, C = 6 dan D = 4 Maka : if( A > B && C > D) akan bernilai TRUE true true if ( A > B && B > D ) akan bernilai FALSE true false if ( A > C && B > D ) akan bernilai FALSE false false if( ( A > B) && ! (B > D) akan bernilai TRUE 168 true true

16 3). Operator OR if ( cond1 || cond2 ) if ( (cond1) || (cond2) ) 169
5.16 Operator OR, menggabung dua buah kondisi menjadi satu nilai sedemikian rupa akan bernilai TRUE cukup bila salah satu saja dari kedua kondisi yang digabungkan bernilai TRUE. Hanya bila kedua kondisi bernilai FLASE, maka nilai gabungannya bernilsi FALSE. Atau dengan perkataan lain : cukup satu satu syarat saja yang harus dipenuhi. Pemakaiannya dalam instruksi IF : IF cond1 OR cond2 cond1 = kondisi-1 cond2 = kondisi-2 Yang dalam Bahasa C ditulis : if ( cond1 || cond2 ) atau if ( (cond1) || (cond2) ) 169

17 1) if(Status == 1 || Umur >= 17 )
Contoh penulisan : 1) if(Status == 1 || Umur >= 17 ) 2) if (NilAgo >= 60 || NilMat >= 65 ) Misal maksudnya : 1) Syarat sebagai pemilih : sudah menikah (Status =1 ) atau umur tidak kurang dari 17 tahun. 2) Diberi Sertifikat bila Nilai Algoritma >= 60, atau Nilai Matematik >= 60. 169

18 Perhatikan Truth Table yang memperlihatkan nilai gabungan dua buah kondisi (cond-1 dan cond-2) yang digabung dengan operator OR. cond-1 cond-2 cond-1 OR cond-2 TRUE FALSE TRUE FALSE TRUE FALSE Salah satu bernilai TRUE akan menghasilkan nilai gabungan = TRUE Hanya bila kedua kondisi bernilai FALSE, yang menghasilkan nilai gabungan = FALSE 169

19 Bila nilai A = 5, B= 2, C = 6 dan D = 4
Contoh pemakaian : Bila nilai A = 5, B= 2, C = 6 dan D = 4 Maka : if (A > B || C > D) akan bernilai TRUE true true if ( A > B || B > D ) akan bernilai TRUE true false IF (A > C || B > D ) akan bernilai FALSE false false IF (!(A > B) || !(C > D)) akan bernilai FALSE false false 169

20 if (Cond1 && Cond2) 4) Proses pada multi condition. Kita sebut saja :
Pandanglah statement IF dengan condition merupakan gabungan dua kondisi (Cond1 dan Cond2) sebagai berikut: if (Cond1 && Cond2) Kita sebut saja : Nilai Cond1 sebagai input, Nilai Cond2 sebagai input, dan Nilai (Cond1 && Cond2) sebagai output Bagaimana logika proses yang dilakukan oleh komputer untuk mendapatkan output gabungan dari dua atau lebih input dapat dijelaskan sebagai berikut : 170

21 1 1 1 a) Proses AND. if ( Cond1 && Cond2 ) Truth Table
Proses oleh komputer input C1 input C2 output C1 AND C2 1. Mula-mula memeriksa nilai semua kondisi (Cond1 dan Cond2). Nilai logical TRUE dinyatakan dengan : 1 dan logical FALSE dengan : 0 1 1 1 2. Kemudian dilakukan proses AND, yang hasilnya diperlihatkan pada truth table yang diberikan C1 = Cond1 C2 = Cond2 170

22 170 Mula mula memeriksa Cond1. Bila Cond1 = TRUE baru periksa Cond2
Bagaimana kita (bukan komputer) menganalisa untuk mencari nilai output, dapat kita lakukan dengan menggambarkan padanannya kalau dibuat dalam bentuk Nested If yang Program Flowchartnya diilustrasikan sebagai berikut : Cond1 Cond2 True True TRUE False False FALSE FALSE Mula mula memeriksa Cond1. Bila Cond1 = TRUE baru periksa Cond2 bila Cond2 = TRUE maka output = TRUE bila Cond2 = FALSE maka output = FALSE Bila Cond1 = FALSE , output langsung = FALSE Cond2 tidak diperiksa lagi 170

23 1 1 1 b) Proses OR . if ( Cond1 || Cond2 ) Truth Table
Proses oleh komputer input C1 input C2 output C1 OR C2 1. Mula-mula memeriksa nilai semua kondisi (Cond1 dan Cond2). Nilai logical TRUE dinyatakan dengan : 1 dan logical FALSE dengan : 0 1 1 1 2. Kemudian dilakukan proses OR, yang hasilnya diperlihatkan pada truth table yang diberikan C1 = Cond1 C2 = Cond2 171

24 Bagaimana kita menganalisa untuk mencari nilai output, dapat kita lakukan dengan menggambarkan padanannya kalau dibuat dalam bentuk Nested If yang Program Flowchartnya diilustrasikan sebagai berikut : Cond1 True TRUE False Cond2 True TRUE False Mula mula memeriksa Cond1. Bila Cond1 = TRUE maka langsung output = TRUE tak perlu lagi memeriksa Cond2 Bila Cond1 = FALSE, maka baru memeriksa Cond2 Bila Cond2 = TRUE maka output = TRUE Bila Cond2 = FALSE maka output = FALSE FALSE 171

25 c) Proses lebih dari satu Logical Operator.
5.19 c.1) if ( Cond1 && Cond2 && Cond3 ) Nomor dan merupakan hasil sekaligus urutan proses oleh komputer Cond1 AND Cond2 menghasilkan Hasil AND Cond3 menghasilkan Output = 1 2 1 2 output Untuk mencari output, apakah hasilnya TRUE atau FALSE dapat dianalisa dengan Nested IF sebagai berikut : Cond1 Cond2 True False Output = FALSE TRUE Cond3 172

26 172 c.2) if ( Cond1 && Cond2 || Cond3 ) Nomor dan
5.19 Nomor dan merupakan hasil sekaligus urutan proses oleh komputer Cond1 AND Cond2 menghasilkan Hasil OR Cond3 menghasilkan Output = 1 2 if ( Cond1 && Cond2 || Cond3 ) 1 1 1 2 2 2 output Untuk mencari output, apakah hasilnya TRUE atau FALSE dapat dianalisa dengan Nested IF sebagai berikut : Cond1 True Cond2 True Output = TRUE False False Cond3 True Output = TRUE False 172 Output = FALSE

27 Catatan : Urutan menganalisa hasil output, dengan menggunakan padanan logikanya dalam program flowchart Nested IF belum tentu sama dengan urutan pelaksanaannya oleh komputer. Komputer memperlakukan operator AND tingkat hirarkhinya lebih tinggi dari OR, sehingga apabila ada AND dan OR, output untuk AND dicari lebih dulu dari OR. 172

28 173 c.3) if ( Cond1 || Cond2 && Cond3 )
Komputer akan mencari output untuk AND lebih dulu, hasilnya digabung dengan OR sehingga didapat output akhir 1 2 output Cond1 True TRUE Untuk mencari output akhir dengan lebih cepat dapat dilakukan dengan mula mula melihat nilai Cond1, bila nilainya TRUE maka outpu akhirnya pasti TRUE tak perlu lagi melihat nilai (Cond2 AND Cond3) seperti yang diperlihatkan padananya bila digambarkan dengan program flowchart Nested If berikut ini. False Cond2 Cond3 True True TRUE False False FALSE FALSE 173

29 if ( Cond1 || Cond2 || Cond3 )
Padanan logikanya untuk mencari output dapat digambarkan dalam bentuk Flowchart Nested If berikut ini : if ( Cond1 || Cond2 || Cond3 ) 1 Cond1 True TRUE 2 False output Cond2 True TRUE False Cond3 True TRUE False FALSE 173

30 9. 30 9.6. Contoh Program Sederhana Menggunakan Nested If dan Multi Conditions Soal-1. Susun program dalam bahasa C untuk menginput tiga buah bilangan bulat (integer), dimana ketiga buah bilangan tersebut dianggap bernilai tidak sama, kemudian mencetak salah satu bilangan yang nilainya terbesar: 174

31 9. 31 5 17 8 scanf 5 17 8 17 A B C printf KEYBOARD SCREEN MEMORY 174

32 9. 32 17 5 8 scanf 17 5 8 17 A B C printf KEYBOARD SCREEN MEMORY 174

33 9. 33 5 8 17 scanf 5 8 17 17 A B C printf KEYBOARD SCREEN MEMORY 174

34 174 Jawab-1. Cara-1 START Scanf A A B C Menggunakan 3 variabel scanf B
false true 174

35 174 Jawab-1. Cara-1 START Scanf A A B C Menggunakan 3 variabel scanf B
false A > B true 174

36 174 Jawab-1. Cara-1 START Scanf A A B C Menggunakan 3 variabel scanf B
false A > B true false true 174

37 174 Jawab-1. Cara-1 START Scanf A A B C Menggunakan 3 variabel scanf B
false A > B true false true A > C 174

38 174 Jawab-1. Cara-1 START Scanf A A B C Menggunakan 3 variabel scanf B
false A > B true false true A > C printf A 174

39 174 Jawab-1. Cara-1 START Scanf A A B C Menggunakan 3 variabel scanf B
false A > B true false true A > C printf printf C A 174

40 174 Jawab-1. Cara-1 START Scanf A A B C Menggunakan 3 variabel scanf B
false A > B true false true A > C printf printf C A 174

41 174 Jawab-1. Cara-1 START Scanf A A B C Menggunakan 3 variabel scanf B
false A > B true false true false true A > C printf printf C A 174

42 174 Jawab-1. Cara-1 START Scanf A A B C Menggunakan 3 variabel scanf B
false A > B true false true false true B > C A > C printf printf C A 174

43 174 Jawab-1. Cara-1 START Scanf A A B C Menggunakan 3 variabel scanf B
false A > B true false true false true B > C A > C printf printf printf B C A 174

44 174 Jawab-1. Cara-1 START Scanf A A B C Menggunakan 3 variabel scanf B
false A > B true false true false true B > C A > C printf printf printf printf C B C A 174

45 174 Jawab-1. Cara-1 START Scanf A A B C Menggunakan 3 variabel scanf B
false A > B true false true false true B > C A > C printf printf printf printf C B C A 174

46 174 Jawab-1. Cara-1 START Scanf A A B C Menggunakan 3 variabel scanf B
false A > B true false true false true B > C A > C printf printf printf printf C B C A 174 END

47 174 Jawab-1. Cara-1 #include <stdio.h> main() { int A,B,C;
START 47 #include <stdio.h> main() { int A,B,C; scanf(“ %i ”, &A); scanf(“ %i ”, &B); scanf(“ %i ”, &C); if(A > B) if(A > C) printf(“%i“, A); else printf(“%i”, C); } if(B > C) printf(“%i“, B); Scanf A scanf B scanf C false true A > B false true false true B > C A > C printf printf printf printf C B C A A B C 174 END Menggunakan 3 variabel

48 A B C #include <stdio.h> main() { int A,B,C; scanf(%i”, &A);
Karena setiap blok instruksi hanya terdiri dari satu instruksi, maka program diatas dapat ditulis menjadi : 9. 48 #include <stdio.h> main() { int A,B,C; scanf(%i”, &A); scanf(%i”, &B); scanf(%i”, &C); if (A > B) if (A > C) printf(“%i“, A); else printf(“%i”, C); if (B > C) printf(“%i“, B); } A B C Menggunakan 3 variabel 176

49 5 7 9 5 9 7 7 5 9 7 9 5 9 5 7 9 7 5 Menggunakan 3 variabel A B C 175
Jawab-1. Cara-1 Menggunakan 3 variabel A B C 5 7 9 5 9 7 7 5 9 7 9 5 9 5 7 9 7 5 175

50 Jawab-1. Cara-1 START 5 7 9 Scanf A A B C Menggunakan 3 variabel scanf B scanf C false A > B true false true false true B > C A > C 1 2 3 4 Bila diinput 3 buah nilai diatas, maka flow akan menuju nomor : ……… 175

51 Jawab-1. Cara-1 START 5 7 9 Scanf A A B C Menggunakan 3 variabel scanf B scanf C false A > B true false true false true B > C A > C 1 2 3 4 Bila diinput 3 buah nilai diatas, maka flow akan menuju nomor : ……… 175

52 Jawab-1. Cara-1 START 5 7 9 Scanf A A B C Menggunakan 3 variabel scanf B scanf C false A > B true false true false true B > C A > C 1 2 3 4 Bila diinput 3 buah nilai diatas, maka flow akan menuju nomor : ……… 175

53 Jawab-1. Cara-1 START 5 7 9 Scanf A A B C Menggunakan 3 variabel scanf B scanf C false A > B true false true false true B > C A > C 1 2 3 4 Bila diinput 3 buah nilai diatas, maka flow akan menuju nomor : ……… 175

54 Jawab-1. Cara-1 START 5 7 9 Scanf A A B C Menggunakan 3 variabel scanf B scanf C false A > B true false true false true B > C A > C 1 2 3 4 Bila diinput 3 buah nilai diatas, maka flow akan menuju nomor : ……… 175

55 Jawab-1. Cara-1 START 5 7 9 Scanf A A B C Menggunakan 3 variabel scanf B scanf C false A > B true false true false true B > C A > C 1 2 3 4 Bila diinput 3 buah nilai diatas, maka flow akan menuju nomor : ……… 175

56 Jawab-1. Cara-2 175

57 #include <stdio.h> main() { int A,B,C, MAX;
Jawab-1. Cara-2 START #include <stdio.h> main() { int A,B,C, MAX; scanf(“%i %i %i”, &A, &B, &C); MAX = A; if (B > MAX) MAX = B; if (C > MAX) MAX = C; printf(“%i“, MAX); } scanf A, B, C MAX = A B > MAX true MAX = B false C > MAX true MAX = C false printf MAX A B C MAX Menggunakan 4 variabel 175 END

58 Jawab-1. Cara-3 176

59 #include <stdio.h> main() { int A,B,C, MAX; scanf(“ %i ”, &A);
Jawab-1. Cara-3 9. 59 #include <stdio.h> main() { int A,B,C, MAX; scanf(“ %i ”, &A); MAX = A; scanf(“ %i ”, &B); if (B > MAX) MAX = B; scanf(“ %i ”, &C); if (C > MAX) MAX = C; printf(“%i “, MAX); } Scanf A MAX = A scanf B true B > MAX false MAX = B scanf C true C > MAX false MAX = C A B C MAX printf MAX 176

60 Jawab-1. Cara-4 177

61 Jawab-1. Cara-4 Menggunakan hanya 2 variabel. Variabel A khusus untuk menampung input, dan variabel MAX khusus mencatat atau menyimpan nilai terbesar. 5 17 8 scanf 8 17 A 17 printf KEYBOARD MAX MEMORY SCREEN 177

62 #include <stdio.h> main() { int A, MAX; scanf(“ %i ”, &A);
Jawab-1. Cara-4 #include <stdio.h> main() { int A, MAX; scanf(“ %i ”, &A); MAX = A; if (A > MAX) printf(“\n %i “, MAX); } Scanf A MAX = A scanf A A > MAX true false MAX = A scanf A A > MAX true false MAX = A Algoritma ini nanti yang menjadi dasar algoritma pencarian bilangan terbesar atau terkecil dari sejumlah bilangan yang ada atau bilangan yang diinput. printf MAX 177

63 Jawab-1. Cara-5 178

64 #include <stdio.h> main() { int A,B,C;
Jawab-1. Cara-5 Menggunakan multi conditions dengan logical operator AND 9. 64 5 17 8 scanf 5 17 8 17 A B C printf KEYBOARD MEMORY Dengan menggunakan Logical Operator AND (&&) SCREEN #include <stdio.h> main() { int A,B,C; scanf(“ %i %i %i”, &A, &B, &C); if (A>B && A>C) printf(“\n %i“, A); else { if (B>A && B>C) printf(“\n %i”, B); printf(“\n %i“, C); } 178

65 178 #include <stdio.h> main() { int A,B,C;
scanf(“ %i %i %i”, &A, &B, &C); if (A>B && A>C) printf(“\n %i“, A); else { if (B>A && B>C) printf(“\n %i”, B); printf(“\n %i“, C); } START Scanf A,B,C A>B && A>C true printf false B>A && B>C A true printf printf C B Sebenarnya disini cukup membanding-kan B dengan C karena bila pemeriksaan pertama if (A>B && A>C) hasilnya FALSE maka A sudah bukan yang terbesar, tinggal B atau C yang terbesar Hanya untuk keseragaman saja dibuat lagi if (B>A && B>C), dengan cara ini berpikirnya lebih mudah END Ini sebenarnya bisa diganti cukup dengan : B > C 178

66 Jawab-1. Cara-6 179

67 Jawab-1. Cara-6 Berpikir lebih praktis, tapi computer-time tidak efisien 9. 67 5 17 8 scanf 5 17 8 C printf 17 A B KEYBOARD MEMORY SCREEN #include <stdio.h> main() { int A,B,C; scanf(“ %i %i %i”, &A, &B, &C); if (A>B && A>C) printf(“\n i%“, A); if (B>A && B>C) printf(“\n i%”, B); if (C>A && C>B) printf(“\n i%“, C); } 179

68 #include <stdio.h> main() { int A,B,C;
START 9. 68 #include <stdio.h> main() { int A,B,C; scanf(“ %i %i %i”,&A,&B,&C); if (A>B && A>C) printf(“\n i%“, A); if (B>A && B>C) printf(“\n i%”, B); if (C>A && C>B) printf(“\n i%“, C); } Scanf A,B,C A>B && A>C true printf A B>A && B>C true printf B C>A && C>B true printf C END 179

69 ! 179 #include <stdio.h> main() { int A,B,C;
scanf(“ %i %i %i”, &A, &B, &C); if (A>B && A>C) printf(“\n i%“, A); if (B>A && B>C) printf(“\n i%”, B); if (C>A && C>B) printf(“\n i%“, C); } ! Cara ini yang paling mudah logikanya. Tapi dengan cara seperti ini, computer-time bisa lebih panjang karena computer akan melaksanakan semua instruksi if Walaupun pada if yang pertama didapat misal A yang terbesar, tapi computer akan tetap melaksanakan if yang ke-dua memeriksa apakah B yang terbesar dan juga masih melaksanakan if yang ke-tiga, memeriksa apakah C yang terbesar. Dengan perkataan lain, data seperti apapun yang diinput, ketiga instruksi if tersebut akan selalu dilaksanakan. Dalam pemrograman selalu ada kompromi antara kemudahan membuat program dengan efisiensi. 179


Download ppt "Nested if 164."

Presentasi serupa


Iklan oleh Google