http://pelatihan-osncom Diktat Pelatihan Olimpiade Komputer Oleh Fakhri Pertemuan ke 3 : Pemilihan / Percabangan / IF Pemilihan atau percabangan atau If adalah perntaan pada program ng menyebabkan komputer herus memilih perntaan ng sesuai dengan srat percabangan Ada beberapa cara dan jenis dari percabangan, itu if-, if--if, dan case Pada dasarn ketiga jenis tersebut memiliki bagian bagian ng sama, itu bagian kondisi ng harus dipenihi dan bagian instruksi ng diakukan jika kondisi tersebut dipenuhi 31 if-then syntax pascaln secara umum untuk if-then : <perntaan/instruksi 10>; <perntaan/instruksi 11>; <perntaan/instruksi n>; ; dari syntax di atas dapat diartikan sebagi berikut : jika <kondisi> terpenuhi atau bernilai true maka komputer akan melakukan seluruh perntaan dari <perntaan/instruksi 10> hingga <perntaan/instruksi n> Dengan kata lain melakukan seluruh perntaan di antara - ng berada setelah if Jika memenuhi kondisi, maka komputer melakukan apapun dan melanjutkan penjalanan instruksi ng ada di bawah bagian if Jika perntaan ng dilakukan han ada satu, kita dapat juga menuliskan syntaxn seperti ini : <perntaan/instruksi >; Dengan kata lain, digunakan untuk mengelompokkan beberapa (lebih dari satu) perntaan/instruksi sehingga terkelompok menjadi satu bagian Jadi satu perntaan itu satu bagian, begitu juga satu rentang - walau sepanjang apapun isi di dalamn
http://pelatihan-osncom Sketsa awal dari percabangan untuk kasus if-then adalah seperti berikut: Jika nilai n lebih besar dari 10, maka Nilai n dikurangi satu Contoh di atas merupakan contoh dari perntaan ng ingin kita ubah menjadi if-then pada pemrograman Pada diagram alir / flow chart n : maka pada aplikasi di pemrograman pascal menggunakan syntax ng telah diberikan di atas : if (n>10) then n :=n-1 n >10 n := n-1 32 if-then- syntax pascaln : <perntaan/instruksi 10>; <perntaan/instruksi 11>; <perntaan/instruksi n>; <perntaan/instruksi 20>; <perntaan/instruksi 21>; <perntaan/instruksi m>; ; Sama seperti if-then, han saja jika <kondisi> bernilai false atau terpenuhi, maka komputer akan mengerjakan perntaan dari <perntaan/instruksi 10> hingga <perntaan/instruksi n> atau perntaan di antara - ng berada setelah if, komputer akan lompat dan menjalankan perntaan di bagian setelah, itu menjalankan dari <perntaan/instruksi 20> hingga <perntaan/instruksi m>, dengan kata lain seluruh perntaan di antara - ng
http://pelatihan-osncom berada setelah Lalu jika Jika <kondisi> bernilai true maka komputer akan melakukan instruksi pada pada bagian - ng berada setelah if, lalu lompat ke akhir dari seluruh perntaan ifthen dengan tanpa melakukaan bagian Jika bagian setelah atau bagian antara if-then dengan han ada satu perntaan maka dapat dibuang seperti pada contoh if-then satu perntaan, itu : <perntaan/instruksi n> <perntaan/instruksi m>; Perlu diperhatikan bahwa perntaan apapun sebelum boleh diakhiri tanda titik koma (;), baik itu atau sebuah perntaan Sketsa awal dari percabangan untuk kasus if-then adalah seperti berikut: Jika nilai n lebih besar dari 10, maka Nilai n dikurangi satu tulis nilai n Nilai n dijadikan nol Contoh di atas merupakan contoh dari perntaan ng ingin kita ubah menjadi if-then pada pemrograman Pada diagram alir / flow chart n : n >10 n := n-1 n := 0 Tulis n maka pada aplikasi di pemrograman pascal menggunakan syntax ng telah diberikan di atas : if (n>10) then n :=n-1; writeln(n); n := 0;
http://pelatihan-osncom 33 if--if Jika kondisi ng diberikan tunggal, maka dapat digunakan if- if Maksud dari kondisi ng tunggal adalah komputer harus memilih dan melakukan suatu instruksi dari bank (lebih dari dua) kondisi ng diberikan, jadi bukan kasus ng han membagi suatu kasus menjadi dua saja (bagian ng memenuhi satu kondisi dan bagian selainn // memenuhi) Contoh dari kondisi non tunggal tersebut adalah menentukan hubungan angka pertama terhadap angka kedua itu sama, lebih besar, atau lebih kecil Syntax pascal untuk if--if : if <kondisi1> then <perntaan/instruksi 1>; <perntaan/instruksi 1>; <perntaan/instruksi 1>; if <kondisi2> then <perntaan/instruksi 2>; <perntaan/instruksi 2>; <perntaan/instruksi 2>; <perntaan/instruksi 3>; <perntaan/instruksi 3>; <perntaan/instruksi 3>; ; jadi jika <kondisi1> dipenuhi, komputer akan menjalankan seluruh <perntaan/instruksi 1> Selain itu jika, maka jika memenuhi <kondisi2> maka akan melakukan seluruh <perntaan/instruksi
http://pelatihan-osncom 2> Hal ini akan terus dilakukan sebank jumlah if ng ada Jika ada ng memunuhi, komputer akan memilih bagian tanpa if ng paling bawah Jika bagian tanpa if kita buat, maka komputer akan mengerjakan apapun jika ada kondisi cocok dengan seluruh kondisi if ng ada Sketsa awal dari percabangan untuk kasus if--if- adalah seperti berikut: Jika nilai n lebih besar dari 10, maka Nilai n dikurangi satu tulis nilai n Jika nilai n lebih besar dari 5, maka Nilai n ditambahkan satu Jika nilai n lebih besar dari 0, maka Nilai n diisi nol Nilai n dikalikan minus satu Contoh di atas merupakan contoh dari perntaan ng ingin kita ubah menjadi if-then pada pemrograman Pada diagram alir / flow chart n : n >10 n := n-1 Tulis n 10>= n >5 n := n+1 5>= n >0 n := 0 n := n*-1 maka pada aplikasi di pemrograman pascal menggunakan syntax ng telah diberikan di atas : if (n>10) then n :=n-1; writeln(n); if (n>5) then n := n+1
http://pelatihan-osncom if (n>0) then n :=0 n := n*(-1); 34 Tambahan untuk if-then / if-then- / if--if- Pastikan han akan ada satu kondisi ng bisa dipenuhi oleh komputer agar terjadi overlap kondisi ng menyebabkan error pada program Pada dasarn han ada satu bagian if ng diakukan dari bank rangkaian if--if- atau ifthen- ng ada Komputer han akan melewati seluruh bagian if jika ada kondisi ng memenuhi 35 Soal dan Latihan Buatkah sebuah program pascal (file pas) berikut : 1 Program menghitung luas persegi User meminta dua buah input a dan b ng merupakan sisi-sisi persegi Jika a sama dengan b, outputkan/tulis input bukan persegi, lalu jika a sama dengan b outputkan luas persegi tersebut contoh : a Input : 2 3 input bukan persegi b Input : 2 2 4 2 Program Menentukan hubungan besar atau kecil dua angka User menerima dua masukan a dan b ng bertipe integer Jika a lebih besar daripada b maka ouputkan / tulis <a> lebih besar daripada <b> Jika a lebih kecil daripada b maka ouputkan / tulis <a> lebih kecil daripada <b> Jika sengan dengan b maka ouputkan / tulis <a> sama dengan <b> contoh : a Input : 2 3
http://pelatihan-osncom 2 lebih kecil daripada 3 b Input : 3 2 3 lebih besar daripada 2 c Input : 2 2 2 sama dengan 2 3 Program menetukan tahun kabisat inputkan satu angka tahun Jika tahun kabisat, outputkan tahun kabisat Selainn outputkan bukan tahun kabisat Tahun kabisat adalah tahun ng nilain habis dibagi 400, atau tahun ng nilain habis dibagi 4 dan habis dibagi 100 contoh : a Input : 2000 tahun kabisat b Input : 2100 bukan tahun kabisat