Paket 1 Komputer PDF [PDF]

  • 0 0 0
  • Suka dengan makalah ini dan mengunduhnya? Anda bisa menerbitkan file PDF Anda sendiri secara online secara gratis dalam beberapa menit saja! Sign Up
File loading please wait...
Citation preview

Bagian Non-Algoritmik



Logika Proposisional 1. Proposisi Proposisi adalah pernyataan yang mempunyai nilai benar atau salah saja. Proposisi atomik adalah proposisi paling sederhana. Proposisi atomik biasanya dilambangkan dengan huruf kecil seperti p, q, r, … Proposisi majemuk adalah proposisi yang merupakan penggabungan satu atau lebih proposisi atomik dan beberapa operator. Contoh Proposisi :  7 adalah bilangan genap. (bernilai salah)  Ibukota Provinsi Jawa Barat adalah Bandung. (bernilai benar)  Anto tidak mencuri dan Andi berbohong (bisa benar, bisa salah, tetapi tidak keduanya)   



Contoh yang bukan proposisi : Kamu harus pergi! x+5=8 x2 atau y+3 (x dan y adalah bilangan bulat)



2. Operator Proposisi 1. Konjungsi Konjungsi p dan q dinyatakan dengan notasi “p∧q”, yang berarti “p dan q”. 2. Disjungsi Disjungsi p dan q dinyatakan dengan notasi “p∨q”, yang berarti “p atau q”. 3. Negasi Negasi p dinyatakan dengan “~p” yang berarti “tidak p” 3. Tabel Kebenaran Tabel kebenaran digunakan untuk menentukan nilai kebenaran proposisi majemuk. Tabel kebenaran akan menampilkan hubungan antara nilai kebenaran proposisi-proposisi atomik dan nilai kebenaran proposisi majemuk. Tabel kebenaran mendaftar semua kemungkinan nilai kebenaran suatu proposisi majemuk. (ket : B=Benar, S=Salah) A. Konjungsi Konjungsi p∧q bernilai benar jika p dan q keduanya benar. Artinya jika salah satu saja dari p atau q bernilai salah maka p∧q benilai salah. p B B S S



q B S B S



p∧q B S S S



B. Disjungsi Disjungsi p∨q bernilai salah jika p dan q keduanya salah. Artinya jika salah satu saja dari p atau q bernilai benar maka p∧q benilai benar. p B B S S



q B S B S



p∨q B B B S



C. Negasi Negasi p bernilai benar jika q bernilai salah, sebaliknya bernilai salah jika p benar. p B S



~p S B



Contoh : A, C, D, E masing-masing bernilai TRUE, sementara B dan F masing-masing bernilai FALSE. Dari kenyataan itu pernyataan mana dari berikut ini yang bernilai FALSE? A. ((A and B) or ((C and D) or E)) and F B. ((A or B) and ((C or D) and E)) or F C. ((A and B) and ((C or D) or E)) or F D. (A and B) and ((C and D) and E) and F E. ((A or B) or (C or D) or E) and F (OSP 2009) Jawab : Untuk pilihan A: = ((TRUE and FALSE) or ((TRUE and TRUE) or TRUE)) and FALSE =( (FALSE) or ( (TRUE) or TRUE)) and FALSE =( FALSE or (TRUE) ) and FALSE = (TRUE) and FALSE = FALSE Cara lainnya, dengan menganalisa bahwa bagian and di paling kiri dikerjakan paling akhir. Sedangkan, di sebelah kanan and tersebut bernilai FALSE. Akibatnya apapun nilai kebenaran di bagian kiri, hasilnya akan selalu FALSE Untuk pilihan B: = ((TRUE or FALSE) and ((TRUE or TRUE) and TRUE)) or FALSE =( (TRUE) and ( (TRUE) and TRUE)) or FALSE =( TRUE and (TRUE) ) or FALSE = (TRUE) or FALSE = TRUE



Untuk pilihan C: = ((TRUE and FALSE) and ((TRUE or TRUE) or TRUE)) or FALSE =( (FALSE) and ( (TRUE) or TRUE)) or FALSE =( FALSE and (TRUE) ) or FALSE = (FALSE) or FALSE = FALSE Untuk pilihan D: = ((TRUE and FALSE) and ((TRUE and TRUE) and TRUE)) and FALSE =( (FALSE) and ( (TRUE) and TRUE)) and FALSE =( FALSE and (TRUE) ) and FALSE = (FALSE) and FALSE = FALSE Untuk pilihan E: = ((TRUE or FALSE) or ((TRUE or TRUE) or TRUE)) and FALSE =( (TRUE) or ( (TRUE) or TRUE)) and FALSE =( TRUE or (TRUE) ) and FALSE = (TRUE) and FALSE = FALSE Jadi, jawaban yang benar adalah B 4. Hierarki Operator Logika Hierarki adalah urutan pengerjaan proposisi majemuk. Artinya operator yang hierarkinya lebih tinggi dikerjakan terlebih dulu. 1. Operator dalam tanda kurung 2. Negasi 3. Konjungsi 4. Disjungsi Contoh : Apakah nilai kebenaran dari : (not TRUE and not FALSE or (TRUE and FALSE) or not(TRUE or FALSE)) ? Jawab : = (not TRUE and not FALSE or = ( FALSE and TRUE or =( FALSE or = FALSE



(FALSE) ) or not(TRUE)) FALSE ) or FALSE) FALSE ) or FALSE)



 tanda kurung  negasi  konjungsi disjungsi



5. Hukum De Morgan  ~( p ∨ q) = ~p ∧ ~q Ingkaran dari proposisi majemuk “p atau q” adalah “tidak p dan tidak q”  ~( p ∧ q) = ~p ∨ ~q Ingkaran dari proposisi majemuk “p dan q” adalah “tidak p atau tidak q” Contoh : Jika pernyataan “A peringkat 1 dan B peringkat 2” salah, maka “A bukan peringkat 1 atau B bukan peringkat 2”. (salah satu saja salah cukup untuk menyatakan bahwa pernyataan di atas salah) 6. Implikasi Pernyataan berbentuk “jika p maka q” disebut sebagai implikasi. Pernyataan ini dilambangkan dengan p ⇒ q. Kalimat ini bernilai salah jika p benar dan q salah. p q p⇒q B B B B S S S B B S S B Proposisi “jika p maka q” setara dengan “tidak p atau q” p ⇒ q = ~p ∨ q Contoh : Andi berkata : “Jika hari ini hujan, maka saya membawa payung” Ternyata esok harinya tidak hujan, tetapi ia malah membawa payung. Apakah Andi berbohong? Jawab : Tidak. Kalimat Andi dapat dirubah menjadi seperti berikut = (hari ini hujan) ⇒ (bawa payung) = (hari ini tidak hujan) atau (bawa payung) Berdasarkan proposisi ini dan fakta yang ada, pernyataan Andi benar. Yang salah adalah, saat suatu hari hujan, tetapi Andi malah tidak membawa payung. 7. Kontraposisi Pernyataan “Jika p maka q” setara dengan pernyataan “Jika tidak q maka tidak p” p ⇒ q = ~q ⇒ ~p Contoh :  Pernyataaan “Jika saya lapar, maka saya makan” setara dengan pernyataan “Jika saya tidak makan, berarti saya tidak lapar”  Pernyataan “Jika n bilangan genap, maka n2 merupakan bilangan genap” setara dengan pernyataan “Jika n2 bilangan ganjil, maka n merupakan bilangan genap” (Ingat bahwa selain bilangan genap, adalah bilangan ganjil)



8. Biimplikasi Pernyataan berbentuk “p jika dan hanya jika q” disebut sebagai biimplikasi. Pernyataan ini dilambangkan dengan p ⇔ q. Kalimat ini bernilai benar jika p dan q memiliki nilai kebenaran yang sama. p B B S S



q B S B S



p⇔q B S S B



Proposisi “p jika dan hanya jika q” setara dengan “(jika p maka q) dan (jika q maka p)” p⇔q



= (p ⇒ q) ∧ (q ⇒ p)



p⇔q



= (~p ∨ q) ∧ (~q ∨ p)



Contoh : Joko berkata : “Kaka berbohong dan Lani Jujur” Jika diketahui Joko sedang berbohong dan Kaka memang berbohong, maka bagaimanakah dengan Lani? Perhatikan bahwa untuk kalimat langsung seperti ini, jika Joko jujur, maka apa yang dikatakannya adalah benar. Sebaliknya jika Joko berbohong, maka yang dikatakannya adalah salah. Hal ini dapat kita modelkan ke dalam biimplikasi : = (Joko jujur) ⇔ ((Kaka berbohong) dan (Lani jujur)) = FALSE ⇔ ( (TRUE) dan (????) ) Karena ruas kiri, FALSE, maka ruas kanan juga FALSE, akibatnya, supaya pernyataaan ( (TRUE) dan (????) ) bernilai FALSE, maka ???? harus bernilai FALSE Kesimpulannya adalah Lani berbohong 9. Mengubah Kalimat ke dalam Notasi Logika Penting sekali menguasai kemampuan mengubah kalimat ke dalam notasi logika. Dengan menggunakan notasi logika, kalimat yang tadinya panjang bisa disederhanakan menjadi bentuk yang singkat untuk selanjutnya memudahkan penyelesaian. Contoh1 : - Hari ini banjir =p - Penduduk mengungsi = q - Bupati kewalahan =r Maka : - Jika hari ini banjir maka penduduk mengungsi dan bupati kewalahan = (p ⇒ ( q ∧ r ))



Contoh 2 : Tahun kabisat didefinisikan sebagai tahun yang habis dibagi 4 tetapi tidak habis dibagi 100, atau tahun yang habis dibagi 400. - Tahun kabisat :k - Tahun kelipatan 4 :a - Tahun kelipatan 100 : b - Tahun kelipatan 400 : c Maka : - Tahun kabisat jika dan hanya jika tahun yang habis dibagi 4 tetapi tidak habis dibagi 100, atau tahun habis dibagi 400. = k ⇔ (a ∧ ~b) ∨ c



10. Kaidah Inferensi Kaidah inferensi adalah pola penarikan kesimpulan dari beberapa proposisi yang menghasilkan satu proposisi lain. 1. Modus Ponens p⇒q p kesimpulan



q



Contoh :  Jika pandu rajin belajar maka Pandu pintar  Pandu rajin belajar Kesimpulan : Pandu pintar 2. Modus Tollens p⇒q ~q kesimpulan



~p



Contoh :  Jika pandu rajin belajar maka Pandu pintar  Pandu tidak pintar Kesimpulan : Pandu tidak rajin belajar 3. Hypothetical syllogism p⇒q q⇒r kesimpulan



p⇒r



Contoh :  Jika pandu rajin belajar maka Pandu pintar  Jika Pandu pintar maka Pandu mendapat pujian Kesimpulan : Jika Pandu rajin belajar, maka pandu mendapat pujian 4. Disjunctive syllogism p∨q ~p kesimpulan



q



Contoh :  Pandu rajin belajar atau Pandu pintar  Pandu tidak rajin belajar Kesimpulan : Pandu pintar 5. Simplifications p∧q kesimpulan



p, q



Contoh :  Pandu rajin belajar dan Pandu baik hati Kesimpulan : Pandu rajin belajar. Pandu baik hati. 6. Disjunctive syllogism p q kesimpulan



p∧q



Contoh :  Pandu rajin belajar  Pandu baik hati Kesimpulan : Pandu rajin belajar dan Pandu baik hati 7. Disjunctive syllogism p∨q p⇒r q⇒r kesimpulan



r



Contoh :  Pandu rajin belajar atau pandu baik hati  Jika Pandu rajin belajar, maka Pandu disayangi guru  Jika Pandu baik hati, maka Pandu disayangi guru Kesimpulan : Pandu disayangi guru



11. Strategi menyelesaikan soal tipe logika Sebelumnya, telah dijelaskan berbagai teori yang berkaitan dengan proposisi. Hal-hal tersebut yang akan mendasari anda menarik kesimpulan dari sebuah persoalan. Seringkali persoalan yang diberikan berbentuk cerita, sehingga kita perlu merumuskannya dalam notasi logika. Asumsi adalah dugaan yang digunakan sebagai dasar. Asumsi dapat digunakan dalam persoalan, dengan pengecekan kontradiksi/pertentangan di akhir. Contoh 1 : Suatu hari kepala sekolah kehilangan jam dinding kesayangannya. Berdasarkan saksi yang ada, ia kemudian memanggil 4 anak yang mungkin menjadi pencurinya. Saat itu ada juga Erni, murid yang sangat pintar ikut bersama kepala sekolah untuk membantunya. Mereka berempat berkata :  Andi : "Bukan saya pncurinya"  Budi : "Andi berbohong"  Cakti : "Budi berbohong, pak"  Deni : "Budi pncurinya" Erni berkata kepada kepala sekolah bahwa hanya satu orang diantara meraka yang berkata jujur. Siapakah pencurinya? Jawab 1 : Keempat pernyataan diatas dapat kita modelkan dalam (1) Andi jujur ⇔ Andi bukan pencuri (2) Budi jujur ⇔ Andi berbohong (3) Cakti jujur ⇔ Budi berbohong (4) Deni jujur ⇔ Budi pencuri Untuk penjelasan selanjutnya, (x) berarti pernyataan (x). Cara 1 : Misalkan salah satu orang sebagai pencurinya Karena yang tertuduh di percakapan di atas hanya Andi dan Budi, maka kita mulai dari mereka berdua. Kasus 1 : Andi pencuri  Dari asumsi awal, diperoleh Deni berbohong. Simpan sebagai (5)  Dari asumsi awal dan (1), diperoleh Andi berbohong. Simpan sebagai (6)  Dari (6) dan (2), diperoleh Budi jujur. Simpan sebagai (7)  Dari (7) dan (3), diperoleh Cakti berbohong. Simpan sebagai (8)  Dari (5), (6), (7), (8) diperoleh 1 orang jujur (Budi), lainnya berbohong. Sesuai dengan syarat di soal. Artinya asumsi kita benar bahwa Andi pencurinya Kasus 1 : Budi pencuri  Dari asumsi awal, diperoleh Deni jujur. Simpan sebagai (5)  Dari asumsi awal dan (1), diperoleh Andi jujur. Simpan sebagai (6)  Sampai pada penelusuran ini saja sudah diperoleh bahwa ada dua orang yang jujur. Bertentangan dengan syarat di soal. Sehingga asumsi ini salah.



Cara 2 : Misalkan salah satu orang sebagai satu-satunya orang yang berkata jujur Ada empat kasus untuk cara ini : Kasus 1 : Andi jujur, lainnya (Budi, Cakti, Deni) berbohong.  Dari asumsi awal dan (1) diperoleh Andi bukan pencurinya.  Dari asumsi awal dan (2) diperoleh Andi jujur. Ini bertentangan dengan asumsi awal. Akibatnya asumsi ini salah. Kasus 2 : Budi jujur, lainnya (Andi, Cakti, Deni) berbohong.  Dari asumsi awal dan (1) diperoleh Andi pencurinya.  Dari asumsi awal dan (2) diperoleh Andi berbohong.  Dari asumsi awal dan (3) diperoleh Budi jujur.  Dari asumsi awal dan (4) diperoleh Andi bukan pencurinya.  Tidak ada yang kontradiksi dan kasus lengkap. Artinya asumsi ini benar. Andi pencurinya Kasus 3 : Cakti jujur, lainnya (Andi, Budi, Deni) berbohong.  Dari asumsi awal dan (1) diperoleh Andi pencurinya.  Dari asumsi awal dan (2) diperoleh Andi jujur. Ini bertentangan dengan asumsi awal. Akibatnya asumsi ini salah. Kasus 4 : Deni jujur, lainnya (Andi, Budi, Cakti) berbohong.  Dari asumsi awal dan (1) diperoleh Andi bukan pencurinya.  Dari asumsi awal dan (2) diperoleh Andi jujur. Ini bertentangan dengan asumsi awal. Akibatnya asumsi ini salah. Diperoleh solusi, Andi adalah pencurinya



Contoh 2 : Iwan selalu berbohong pada hari Senin, Selasa, Rabu dan berkata jujur pada hari-hari lainnya. Dilain pihak, Budi selalu berbohong pada hari Kamis, Jumat, Sabtu dan berkata jujur pada hari-hari lainnya. Pada suatu hari terjadi percakapan berikut:  Iwan : Kemarin saya berbohong.  Budi : Saya juga. Pada hari apakah percakapan tersebut terjadi? (OSK Matematika 2003)



Jawab 2 : Kedua pernyataan di atas dapat kita modelkan ke dalam : (1) Hari ini Iwan jujur ⇔ Kemarin Iwan bohong (2) Hari ini Budi jujur ⇔ Kemarin Budi bohong



Coba semua kemungkinan jujur-bohong Iwan dan Budi Kasus 1 : Hari ini Iwan bohong, Budi bohong. Hal ini tidak mungkin, karena tidak ada hari dimana keduanya berbohong Kasus 2 : Hari ini Iwan jujur, Budi bohong. Hari yang mungkin adalah Senin, Selasa, dan Rabu. Artinya hari kemarinnya yang mungkin adalah Minggu, Senin, Selasa  Dari asumsi awal dan (1), diperoleh kemarin Iwan bohong. Simpan sebagai (3)  Dari asumsi awal dan (2), diperoleh kemarin Budi jujur. Simpan sebagai (4)  Tidak ada hari diantara kemunkingan kemarin (Minggu, Senin, Selasa) yang memenuhi pernyataan (3) dan (4). Artinya asumsi kita salah Kasus 3 : Hari ini Iwan jujur, Budi jujur. Hari yang mungkin adalah Minggu. Artinya hari kemarinnya yang mungkin adalah Sabtu.  Dari asumsi awal dan (1), diperoleh kemarin Iwan bohong. Simpan sebagai (3)  Dari asumsi awal dan (2), diperoleh kemarin Budi bohong. Simpan sebagai (4)  Pada hari Sabtu tidak memenuhi pernyataan (3) dan (4). Artinya asumsi kita salah. Kasus 2 : Hari ini Iwan bohong, Budi jujur. Hari yang mungkin adalah Kamis, Jumat dan Sabtu. Artinya hari kemarinnya yang mungkin adalah Rabu, Kamis, dan Jumat  Dari asumsi awal dan (1), diperoleh kemarin Iwan jujur. Simpan sebagai (3)  Dari asumsi awal dan (2), diperoleh kemarin Budi bohong. Simpan sebagai (4)  Tidak ada hari diantara kemunkingan kemarin (Kamis, Jumat dan Sabtu) yang memenuhi pernyataan (3) dan (4). Artinya asumsi kita salah Teknik pembagian kasus dengan menggunakan asumsi adalah salah satu cara yang sederhana dalam menyelesaikan persoalan logika. Terkadang, asumsi tidak terbatas pada dua cara di atas, asumsi juga bisa berlaku pada proposisi lain yang ada pada persoalan. Asumsi yang tepat dapat membuat persoalan menjadi lebih mudah diselesaikan. Perhatikan pula bahwa pembagian kasus harus lengkap, artinya tidak ada kasus yang terlewat, karena solusi bisa menjadi tidak lengkap atau bahkan tidak ditemukan. Pada saat kompetisi, tentu saja waktu yang disediakan sangat terbatas. Anda tentu tidak mungkin menuliskan uraian di atas dengan rinci. Untuk itu, gunakanlah simbol yang anda mengerti untuk menggambarkan langkah-langkah di atas, tanpa mengurangi kelengkapan kasus dan kebenaran langkah yang dilakukan.



Paket Soal Logika Proposisi



1. Dari nilai- nilai berikut, pernyataan mana yang bernilai salah jika C, D, E, F bernilai benar. A, B bernilai salah? A. ((A and B) or ((C and D) or E)) and F B. ((A or B) and ((C or D) and E)) or F C. ((A and B) and ((C or D) or E)) or F D. (A and B) and ((C and D) and E) and F E. ((A or B) or (C or D) or E) and F (OSP 2007) 2. Dari nilai- nilai berikut, pernyataan mana yang bernilai benar jika B, C, D, E bernilai benar. A, F bernilai salah? A. ((A and B) or ((C and D) or E)) and F B. ((A or B) and ((C or D) and E)) or F C. ((A and B) and ((C or D) or E)) or F D. (A and B) and ((C and D) and E) and F E. ((A or B) or (C or D) or E) and F (OSP 2007) 3. Ekspresi not((not(a))or(b)) sama dengan A. (a)and(not(b)) B. ((a)or(not(b)) C. (not(a))and(not(b)) D. TRUE E. FALSE (OSP 2007) 4. not (not (P or not Q) or (not P and not Q)) or (P or not Q) Ekspresi di atas akan bernilai False jika nilai P dan Q adalah ... A. P = True, Q = True B. P = True, Q = False C. P = False, Q = True D. P = False, Q = False E. Tidak memungkinkan ekspresi bernilai False. (OSK 2014)



5. Jika A bernilai True, B bernilai False, C bernilai True, D bernilai False, E bernilai False, dan F bernilai True. Maka Ekspresi Logika yang nilainya sama dengan (A and (((B or C) and (D and E)) and F)) adalah.... A. (A and B) or ((C or D) and (E or F)) B. ((A or (B or C)) or (D or E) or F) C. ((A and B) or ((C and (D and E)) and F)) D. ((A or B) or ((C and D) and (E or F))) E. (((A and B) or C) or ((D or E) and F)) (OSK 2014) 6. Asosiasi TOKI merupakan organisasi yang anggota alumninya TOKI. Seseorang dapat disebut alumni TOKI jika sudah tidak memenuhi syarat mengikuti IOI dan pernah mengikuti pelatnas. Seseorang dapat mengikuti pelatnas bila pernah mendapatkan medali saat OSN. Jika seseorang telah berusia lebih dari 21 tahun, atau telah memasuki perguruan tinggi, maka dia tidak mengikuti syarat mengikuti IOI. Seseorang yang akan mengikuti IOI harus mengikuti pelatnas. Cakra saat ini adalah mahasiswa dari universitas XX dan pernah mendapatkan medali Emas OSN. Basith adalah mahasiswa dari universitas YYY dan pernah mengikuti pelatnas, sedangkan Nathan adalah siswa SMA Z yang pernah mendapatkan medali perak IOI. Pernyataan : I. Basith adalah anggota alumni asosiasi TOKI II. Cakra adalah alumni TOKI III. Nathan pernah mengikuti pelatnas IV. Cakra pernah mengikuti IOI Dari pernyataan-pernyataan di atas manakah yang benar? A. I, IV B. II, IV C. II, III D. I, III E. I, II, III (OSK 2013) 7. Di sebuah pulau terdapat dua golongan penduduk, ksatria yang selalu bicara jujur, dan yang lain adalah penipu yang selalu berbohong. Jika anda bertemu dengan dua orang A dan B  A : “B adalah seorang ksatria”  B : “Golongan kami berbeda” Apakah golongan yang tepat untuk A dan B? A. A adalah seorang ksatria dan B adalah seorang penipu. B. A adalah seorang penipu dan B adalah seorang ksatria. C. Keduanya adalah ksatria. D. Terkadang A dan B dapat berganti golongan. E. Keduanya adalah penipu. (OSK 2006)



8. Di suatu pulau misterius terdapat 2 macam orang, prajurit dan pencuri. Sang prajurit selalu berkata jujur dan sang pencuri selalu berkata bohong. Suatu hari anda bertemu tiga orang yang berkata sebagai berikut :  A : Hanya satu diantara kami yang merupakan prajurit  B : Setidaknya satu diantara kita adalah prajurit  C : A bukanlah prajurit Siapakah diantara mereka yang merupakan prajutit? A. Hanya A B. Hanya B C. Hanya C D. B dan C saja E. A dan B saja (OSK 2013) 9. Di sebuah kota di Indonesia, terjadi sebuah kejahatan. Polisi dengan cepat menangkap 9 orang tersangka. Pada saat kesembilan tersangka tersebut diinterogasi, demikianlah jawaban mereka  Ari : Ery pelakunya. Suer  Billy : Bukan Ery pelakunya woi.  Cory : Aku yang melakukannya. Hiks.  David : Antara Cory atau Hilda yang melakukannya, bro  Ery : Billy tidak berkata jujur  Fitri : Cory yang bersalah  Gita : Bukan Cory deh  Hilda : Bukan aku dan juga bukan Cory!  Intan : Hmm… Hilda berkata jujur dan pelakunya bukan Ery Hanya 3 dari mereka yang berkata jujur sedangkan 6 yang lainnya berbohong. Siapa pelakunya? (Penyisihan ILPC) A. Ery B. Cory C. Hilda D. Intan E. Billy 10. Heru selalu berkata jujur pada hari Senin, Selasa, dan Rabu. Heru selalu berkata bohong pada hari Kamis, Jumat, dan Sabtu. Pada hari Minggu, ia bisa berkata jujur atau bohong. Pada suatu hari, teman Heru, Kudo ingin menanyakan suatu informasi yang penting pada Heru. Sayangnya, Kudo lupa melihat kalender sehingga lupa tanggal dan hari pada saat itu. Tentu saja Kudo yang cerdas tidak langsung menanyakan pertanyaannya pada Heru. Setelah Kudo menanyakan beberapa pertanyaan, Heru menjawab, “Hari ini saya sedang berkata jujur, begitu pula esok hari. Hari ini bukan hari Kamis maupun Senin. Kemarin saya berkata bohong. Kemarin adalah hari Minggu“. Pada hari apakah Kudo bertemu Heru? …



A. Senin B. Selasa C. Rabu D. Kamis E. Jumat (OSP 2014) 11. Ammar, Soko, Salvian, Ivan dan Rakina bermain ayam-bebek. Setiap anak menjadi ayam atau bebek, tetapi tidak kedua-duanya. Ayam selalu jujur, sementara bebek selalu berdusta. Ammar berkata bahwa Soko adalah ayam. Salvian berkata bahwa Ivan adalah bebek. Rakina berkata Ammar bukan bebek. Soko berkata Salvian bukan ayam. Ivan berkata bahwa Rakina dan Ammar adalah binatang yang berbeda. Berapakah banyaknya bebek dalam permainan ini? ... A. 0 B. 1 C. 2 D. 3 E. 4 (OSP 2014) 12. Seorang detektif sedang menangani sebuah kasus kriminal. Ada 4 orang tersangka berinisial G, O, L, D. Dari hasil interogasi, detektif tersebut mendapatkan sejumlah fakta, yaitu :  Jika G berkata jujur, maka O berkata jujur.  Jika L berkata bohong, maka D berkata jujur.  Salah satu dari O dan L berkata jujur.  O berkata jujur jika dan hanya jika D berkata bohong. Dari sejumlah fakta di atas, siapa yang berkata jujur? A. L dan D B. O dan L C. G dan O D. D dan G E. Tidak dapat ditentukan. (OSK 2014) 13. Masing-masing dari pernyataan berikut benar atau salah. a) Pernyataan c,d benar. b) Pernyataan d,e tidak keduanya salah. c) Pernyataan a benar. d) Pernyataan c salah. e) Pernyataan a,c keduanya salah.



Berapa pernyataan di atas yang benar? A. 0 B. 1 C. 2 D. 3 E. 4 (OSK Matematika 2003) 14. Joko sering berbohong (jangan ditiru). Dia hanya jujur sehari dalam seminggu. Satu hari dia berkata: "Aku berbohong pada Senin dan Selasa". Pada hari selanjutnya dia berkata: "Hari ini adalah salah satu dari hari Minggu, Sabtu atau Kamis". Pada hari selanjutnya dia berkata: "Aku berbohong pada Jum'at dan Rabu". Pada hari apa dia berkata jujur? A. Senin B. Selasa C. Kamis D. Jumat E. Minggu (OSK 2011) 15. Pak Dengklek memiliki 1000 buah kartu. Setiap kartu terdiri dari dua sisi yang tampak identik. Pada kedua sisi setiap kartu, Pak Dengklek dapat memilih untuk menuliskan sebuah angka, atau tidak menuliskan apa-apa. Seribu buah kartu tersebut diletakkan oleh Pak Dengklek di atas meja, sehingga Anda dapat melihat bahwa pada sisi yang terbuka, semua kartu telah ditulisi angka yang berbeda, mulai dari 1 hingga 1000. Anda tidak dapat melihat sisi yang tertutup. Pak Dengklek mengatakan bahwa: “Jika pada satu sisi kartu tertulis bilangan ganjil, maka pada sisi lainnya pasti tertulis bilangan yang habis dibagi 3, DAN jika satu sisi sebuah kartu tidak terdapat tulisan apa-apa (kosong), maka pada sisi lainnya pasti tertulis bilangan yang habis dibagi 5”. Berapa minimal kartu yang harus Anda balik untuk mengetahui apakah Pak Dengklek berkata benar atau tidak? A. 500 B. 1000 C. 789 D. 451 E. 967 (OSP 2012 dengan perubahan)



Bagian Algoritmik



Dasar PseudoPascal Algoritma adalah urutan langkah‐langkah sistematis yang terkait pada pemecahan suatu masalah; didalamnya bisa terdapat sejumlah variabel, perintah, ekspresi & assignment, struktur kendali aliran (control flow) dari algoritma, serta definisi fungsi/prosedur. Pseudocode-Pascal, atau disingkat pseudopascal adalah tata bahasa yang dipakai untuk merepresentasikan suatu algoritma yang tata bahasanya mengadopsi notasi bahasa pemrograman pascal. Algoritma yang ditulis dalam suatu pseudocode dibedakan dari programnya yang ditulis dalam suatu bahasa pemrograman akibat adanya perbedaan tujuan dari kedua hal itu. Algoritma dengan pseudocode bertujuan untuk menyampaikan ide dari algoritma bagi pembaca (dalam hal ini peserta seleksi), sementara program dalam suatu bahasa pemrograman untuk dapat dijalankan nantinya oleh komputer [1]. Paradigma yang digunakan adalah paradigma prosedural dimana blok instruksi dijalankan secara berurutan. Pada bagian ini, akan dijelaskan berbagai terminologi dan aturan dalam pseudocode pascal. (Anda yang telah mempelajari bahasa pemrograman pascal tentu dapat melewati bagian ini) 1. Literal Literal adalah sebuah nilai. Misalnya  1  True  0.3421  ‘kamu’ (ini adalah sebuah string/kalimat) 2. Variabel Variabel adalah elemen dari algoritma untuk menyimpan suatu harga tertentu pada suatu saat dan pada saat lain harga dalam variable itu bisa diubah ke harga lain sesuai kebutuhan. Setiap varibel dasar memiliki tipe data, atau jenis nilai yang dapat ditampung pada variabel tersebut. Analoginya, variabel adalah sebuah ember yang dapat menampung sesuatu. Ember tersebut hanya dapat menyimpan objek dengan tipe tertentu. Tipe ini disebut tipe data. 3. Tipe Data Dasar Tipe data dasar yang tedapat pada pPseudoPascal berasal dari bahasa pemrograman Pascal. Tipe data dasar yang sering digunakan antara lain : A. Tipe Ordinal - Tipe data berjenis integer adalah tipe data yang dapat menampung bilangan bulat dengan range tertentu - Tipe data boolean adalah tipe data yang dapat menyimpan nilai kebenaran (true/false) - Tipe data char adalah tipe data yang mampu menampung karakter (misal ‘a’. ‘/’ )



Tipe Data Shortint Byte Integer Word Longint Int64 Boolean Char



Range/Jangkauan -128 .. 127 0 .. 255 -32768 .. 32767 0 .. 65535 -2147483648 .. 2147483647 -9223372036854775808 .. 9223372036854775807 false..true lihat tabel ASCII



Contoh : var a : longint b : byte; c : boolean; d : char; begin a := 10 + (5*8) b := 4-3+9; c := (7-5) > (6-9) d := ‘z’; end; B. Tipe Real Tipe data real adalah tipe data yang unik karena dapat menyimpan bilangan real dengan teknik tertentu. Setiap tipe real dibedakan dari tingkat presisinya. Double memiliki tingkat presisi yang lebih tinggi dari real Tipe Data Range -45 Real 1.5x10 .. 3.4x1038 Double 5.0x10-324 .. 1.7x10308 Contoh : var x : real y : double; begin x := 78/98; y := sqrt(213*313);



//sqrt adalah fungsi akar



Untuk tipe data non-dasar, akan dijelaskan di modul berikutnya.



4. Operator Operator menghubungkan beberapa nilai/literal menjadi satu nilai baru. Operator yang didukung oleh pseudopascal diantara lain adalah : A. Operator bilangan bulat dan real Operator Operasi + Penambahan Pengurangan * Perkalian / Pembagian div *) Pembagian integer/bulat mod *) Sisa bagi *) khusus bilangan bulat B. Operator relasi Operator Operasi = sama dengan



tidak sama dengan > lebih besar < lebih kecil >= lebih besar atau sama dengan 0) then a := a + 10; writeln(a); Jawab : Pada pertanyaan pertama, a awalnya 5. Karena kondisi terpenuhi (5 > 0), maka nilai 10 ditambahkan ke dalam a. Sehingga pada akhirnya a bernilai 15. Pada pertanyaan kedua, a awalnya -5. Karena kondisi tidak terpenuhi (-5 y then if z > x then t := z; else t := x; else if z > y then t := z; else t := y; writeln(t); Apabila diberikan nilai x=3, y=5 dan z=8, berapakah output dari program tersebut? (OSK 2011) Jawab : Pada pemeriksaan if yang pertama, kondisi (x > y) tidak terpenuhi karena (3 y). Kondisi ini terpenuhi karena (8 > 5). Akibatnya perintah yang akan dilakukan adalah t := z;. pada akhirnya t akan bernilai 8. Perhatikan bahwa algoritma ini adalah algoritma untuk mencari nilai terbesar dari tiga bilangan (coba ganti x, y, z dengan sembarang bilangan lain). 3. Case Case adalah cara lain untuk merepresentasikan if bersarang. Jika pada if bersarang, kasus yang akan dilakukan berdasarkan kepada kondisi mana yang dipenuhi duluan, mak Case adalah analisa kasus berdasarkan nilai dari suatu ekspresi/variabel. Bentuk dari case adalah : case of : : : else : end; Contoh : Apakah output dari program di bawah?



a := (1+6)*5-11 case (a mod 10)+1 of 1 : writeln(‘jelek’); 2..5 : writeln(‘lumayan); 6,7,8 : writeln(‘bagus); else : writeln(‘bagus sekali); end; Jawab : Nilai dari a setelah dilakukan assignment adalah 24. Nilai dari (24 mod 5)+1 adalah 5, sehingga kasus yang akan dilakukan dalah kasus kedua (karena 5 berada diantara 2 sampai 5). Sehingga output dari program adalaah : lumayan



Paket Soal Dasar Pseudopascal dan Perulangan 16. Perhatikan potongan program berikut a := 2; b := 5; tmp := 2*b; b := 2*a; a := tmp; writeln(b,‘ ’,a); Berapakah output dari program di atas? A. 4 10 B. 10 4 C. 2 5 D. 5 2 E. 4 4 (OSK 2006) 17. Perhatikan potongan program berikut x := 20; y := 35; x := x + y; y := x - y; x := x - y; Nilai pasangan variabel x dan y setelah operasi x := x-y dieksekusi adalah...? A. x = 35, y = 55 B. x = 35, y = 20 C. x = 15, y = 5 D. x = 15, y = -20 E. x = -35, y = 155 (OSK 2010) 18. Perhatikan potongan program berikut x := 5; y := 10; if((2*x) = y) then begin x := y-1; end;



Nilai variabel x setelah potongan program di atas dieksekusi adalah? A. 10 B. 9 C. 5 D. 4 E. -1 (OSK 2009) 19. Perhatikan potongan program berikut {x dan y bertipe data integer} x:=10; y:=10; x:=x*x; y:=x; if (xy) then x:=y+1 else x:=x div x; Nilai variabel x setelah potongan program di atas dieksekusi adalah... A. 10 B. 99 C. 11 D. 100 E. 1 (OSK 2009) 20. Perhatikan potongan program berikut if (a and b) or ((not c) and d) then if ((a or not b) and c) or (b and (not a)) then writeln(1) else if (a or (d and b)) and (not b) then writeln(2) else writeln(4) else if not (d and c) and (not a) then writeln(5) else writeln(6);



Jika dijalankan dan ternyata mencetakkan harga 4 maka urutan harga-harga a, b, c, d yang mungkin adalah? A. TRUE, FALSE, TRUE, FALSE B. TRUE, TRUE, TRUE, FALSE C. FALSE, FALSE, TRUE, TRUE D. TRUE, TRUE, FALSE, FALSE E. TRUE, FALSE, FALSE, TRUE (OSK 2007) 21. Perhatikan potongan program berikut if (a and not (not c and not b)) or not ((c and b) or not a) then writeln('ding') else writeln('dong'); Pemeriksaan ekspresi lojik (dari struktur if-then) tersebut bisa digantikan dengan ekspresi berikut… A. ((a c) or (a = b) or b) B. ((a = c) and (a b) and not b) C. (a and (c or b)) or (not (c and b) and a) D. ((a and c) or b) or ((not c or not b) and a) E. a and not b and not c (OSK 2010) 22. Agar algoritma selalu menuliskan ‘ding’ maka kondisi yang tepat adalah A. Variabel a dan variabel c keduanya harus true sementara variabel b tidak penting B. Variabel b berharga true yang lain tidak penting C. Variabel a dan variabel b keduanya harus true sementara variabel c tidak penting D. Variabel b harus false sementara yang lain harus true E. Variabel a harus true sementara variabel b dan variabel c keduanya tidak penting (OSK 2010) 23. Agar algoritma selalu menuliskan 'dong' maka kondisi yang tepat adalah A. algoritma selalu menuliskan 'dong' jika salah satu lainnya true B. algoritma selalu menuliskan 'ding' apapun harga variabel b dan variabel c C. algoritma selalu menuliskan 'dong' apapun harga variabel b dan variabel c D. algoritma selalu menuliskan 'dong' jika variabel b dan variabel c berharga true E. algoritma selalu menuliskan 'dong' jika variabel a false, sementara b dan c memilliki nilai yang sama (OSK 2010)



24. if not((not a and b) or (a and not b)) then writeln('merah') else writeln('putih'); Jika a dan b memiliki nilai kebenaran yang sama maka outputnya adalah . . . A. merah B. putih C. merah putih D. putih merah E. Tidak mengeluarkan output apa-apa (OSP 2012 dengan perubahan) 25. if a > b then if b < c then b := a + 2 * c else c := b + 2 * c else a := b + c; d := a + b + c; Jika nilai yang mungkin baik untuk a, b, maupun c adalah salah satu bilangan bulat yang berkisar antara {1,2,3,4} (a, b, c bilangan berbeda) berapakah nilai maksimum d yang mungkin?. . . A. 14 B. 17 C. 18 D. 19 E. 20 (OSP 2012 dengan perubahan) 26. a := -5 if a > 0 then writeln(‘one’); else if a 5 then writeln(‘two’); else if a < 0 then writeln(‘three’); else writeln(‘four’);



Apakah output dari program di atas A. one B. two C. three D. four E. tidak mengeluarkan output apa-apa 27. a := -5 b := a*a + 20; if a > b then begin c := a; a := b; b := c; end; writeln(a, ‘ dan ’, b) Apakah output dari program di atas A. -5 dan -5 B. -5 dan -25 C. -5 dan 45 D. -25 dan -5 E. 45 dan -5 28. a := true and (false or (56 c then begin temp := a; a := c; c := temp; end; if a > b then begin temp := a; a := b; b := temp; end; if a > c then begin temp := a; a := c; c := temp; end; writeln(a, ‘ lalu ’, b, ‘ lalu ’, c); Apakah output dari program di atas A. 0 lalu -4 lalu -3 B. -4 lalu -3 lalu 0 C. 0 lalu 0 lalu 0; D. 0 lalu -3 lalu -4 E. tidak mengeluarkan output apa-apa