Free Ebook Tutorial from Rosihan Ari's Blog

Tutorial Javascript | Tutorial PHP | Tutorial AJAX | Tutorial CSS | Tutorial FPDF | Tutorial Wordpress | Tutorial Java SE


Ebook yang direkomendasikan untuk Anda
Kunjungi Toko Ebook RosihanAri.Net


Pembahasan Soal Olimpiade Komputer Kabupaten #2


August 23rd, 2008 | by rosihanari | Cetak Artikel Cetak Artikel


GampSMS SMS Gateway

Berikut ini adalah pertanyaan dan pembahasan dari soal yang diambil dari “Seleksi Olimpiade Komputer Tingkat Kabupaten/Kota 2007″. Soal kali ini terkait dengan operasi OR dan AND pada operand berbentuk bilangan integer. Wah apa lagi tuh ??? Lho bukannya operasi OR and AND hanya bisa digunakan pada operand berbentuk boolean (TRUE atau FALSE)? Wah… ternyata ndak tuh, simak detail dari artikel ini ya…

Diketahui algoritma pseudopascal berikut ini

const
xmin = -10;
xmax =  10;
ymin = -10;
ymax =  10;
[sourcecode language="php"]function code(x: integer; y : integer) : byte;
var c : byte;
begin
   c := 0;
   if (x < xmin) then c := c OR 8
   else if (x > xmax) then c := c OR 1;

   if (y < ymin) then c := c OR 4
   else if (y > ymax) then c := c OR 2;

   code := c;
end;

[/sourcecode]
Pertanyaan :

Perintah writeln(code(-12, -12) AND code(20, 5)) akan mencetak harga berapakah?

Jawab :

OK… sebelum kita jawab pertanyaan ini, perhatikan bahwa dalam function code() terdapat operator OR. Operand OR tidak harus berupa boolean TRUE atau FALSE namun juga bisa berupa integer. Operator OR untuk operand bilangan integer merupakan operasi OR secara bitwise (diproses bit demi bit, dengan 1 identik bernilai TRUE dan 0 bernilai FALSE) dari bilangan binernya.

Perhatikan contoh operasi OR berikut ini yang melibatkan bilangan integer.

Berapakah hasil 2 OR 1?

2 = 10 (biner)
1 = 01 (biner)
----------- OR
    11 -> bilangan biner dari 3

Dengan demikian hasil dari 2 OR 1 adalah 3.

Berapakah hasil 3 OR 1?

3 = 11 (biner)
1 = 01 (biner)
----------- OR
    11 -> bilangan biner dari 3

Berapakah 4 OR 5?

4 = 100 (biner)
5 = 101 (biner)
----------- OR
    101 -> bilangan biner dari 5.

Nah akan kita akan selesaikan soal di atas menggunakan konsep tersebut. Terlebih dahulu operand code(-12, -12) pada operasi ‘code(-12, -12) AND code(20, 5)’ akan diselesaikan

code(-12, -12) -> x = -12, y = -12
--------- masuk function code() --------
c = 0
cek (-12 < -10) -> TRUE
                -> c = c OR 8 = 0 OR 8 = 8

cek (-12 < -10) -> TRUE
                -> c = c or 4 = 8 OR 4 = 12

code = c = 12
----------------------------------------

Sehingga diperoleh hasil dari code(-12, -12) adalah 12. Selanjutnya akan diproses untuk code(20, 5).

code(20, 5) -> x = 20, y = 5
---------- masuk function code() -------
c = 0
cek (20 < -10) -> FALSE
               -> cek (20 > 10) -> TRUE
                                -> c = c OR 1 = 0 OR 1 = 1
cek (5 < -10)  -> FALSE
               -> cek (5 > 10)  -> FALSE

code = c = 1
----------------------------------------

Sehingga diperoleh hasil dari code(20, 5) adalah 1.

Selanjutnya bagaimana dengan operasi ‘code(-12, -12) AND code(20, 5)’ atau dalam hal ini ’12 AND 1′? Pada prinsipnya operasi AND pada bilangan integer sama dengan operasi OR, yaitu dilakukan operasi boolean AND secara bit per bit dari bilangan binernya. Dengan demikian proses 12 AND 1 adalah:

12 = 1100 (biner)
 1 = 0001 (biner)
----------------- AND
     0000  -> biner dari 0

Dari perhitungan di atas hasil dari perintah ‘writeln(code(-12, -12) and code(20, 5))’ akan mencetak 0.

Nah… berdasarkan contoh ini, Anda dapat mencoba untuk menebak output apa yang akan muncul jika diberikan perintah sebagai berikut:

a. writeln(code(-12, -12) OR code(20, 5))
b. writeln(code(12, -12) AND code(20, 5))
c. writeln(code(12, -12) OR code(20, 5))
d. writeln(code(7, -12) OR code(-20, 5))

Selamat mencoba…




Share ke Facebook Share ke Twitter
Baca Juga Artikel Terkait
Pembahasan Soal Olimpiade Komputer Kabupaten #1
Membuat Program Konversi Bilangan Desimal ke Biner dengan Pascal
Menggambar Grafik Invers Fungsi dengan Maple
PHP Dasar – Operator dalam PHP
Function Menghitung Pangkat Bilangan dengan Pascal

Kata kunci:


Ada 31 komentar dalam artikel ini.



  1. Muhammad Luthfi says:

    Maaf pak, bisa nggak pembahasan tentang penggunaan operator or untuk operand bilangan integer lebih diperjelas, soalnya saya kurang mengerti!
    Trims

    • rosihanari says:

      @muhammad luthfi: operator OR untuk bilangan integer itu adalah operasi OR untuk setiap bit dari bilangan biner kedua bilangan. Contoh, 5 OR 3. Kita tahu bahwa bilangan biner dari 5 adalah 101, dan biner dari 3 adalah 11. Selanjutnya kita lakukan operasi OR untuk setiap digit biner yang bersesuaian. Yang perlu diingat bahwa 1 OR 1 = 1, 1 OR 0 = 1, 0 OR 1 = 1, dan 0 OR 0 = 0. (Nilai 0 = false, 1 = true). Ingat tabel logika OR kan? Nah.. ini dia hasil operasi OR untuk setiap digit binernya

      1 0 1
      0 1 1
      ——- OR
      1 1 1

      Hasil 1 1 1 adalah bilangan biner dari 7. Sehingga 5 OR 3 = 7.

  2. syahlan hutagaol says:

    pak,
    saya adalah salah satu anak di sma soposurung yang akan mengikuti olimpiade komputer.saya minta pak contoh soal olimpiade komputer beserta pembahasanya yang jelas pak.

    pak kami mohon tolong dikirim ya pak agar kami bisa memahami soal olimpiade komputer.

    kirim ke alamat email saya ya pak.

  3. yanto says:

    numpang copy ya pak ,,,

  4. veri naldy says:

    mas pembahasan soalnya bagus ,tapitolong dong di kasi kumpulan soal dan pembahasan tik sma kls xi semester 2 dan kls x semester 2.

  5. agustama says:

    pak……..
    mengapa array itu
    susah untuk saya pahami////????/
    bisakah bapak memberikan tis tips or contoh agar saya bisa lebih memahami array????

  6. tuti says:

    ASS, SAYA MAU MINTA KUMPULAN SOAL2 OSN TIK ADA APA TDK, KALAU ADA KIRIMI DONK LEWAT EMAIL SAYA. TRIMS

  7. Bintang Dimas says:

    makasih ya kak!
    tapi aku jga mau tanya. ada soal-soal IOI gak???
    hehe

  8. Dimas Wahyu says:

    Ghan gua kasih donk kumpulan soal olimpiade tik nya, thanks

  9. pinky says:

    boleh kalau ada kumpulan soalnya



 

Komentar/pertanyaan Anda!

Mohon maaf, komentar/pertanyaan yang menggunakan email palsu atau komentar bernada negatif, cemooh, umpatan, cacian atau sejenisnya secara otomatis akan terhapus karena dianggap spam dan tidak akan tampil

Dimohon jangan pula memasukkan code program dalam bentuk apapun ke dalam komentar karena akan dianggap spam.

Mohon maaf jika seandainya ada beberapa pertanyaan Anda yang tidak direspon atau ditanggapi mengingat banyaknya komentar yang masuk dan keterbatasan kemampuan/ilmu saya dalam menjawab pertanyaan satu persatu. Saya harap Anda bisa memahami dan memakluminya.

Semua komentar atau pertanyaan yg masuk tidak akan langsung tampil di halaman ini, karena akan dimoderasi dahulu.


*