Tuesday, June 10, 2014

Tugas 3, Pengantar Komputasi Modern 2

Keadilan

        Keadilan adalah kondisi kebenaran ideal secara moral mengenai sesuatu hal, baik menyangkut benda atau orang. Menurut sebagian besar teori, keadilan memiliki tingkat kepentingan yang besar. John Rawls, filsuf Amerika Serikat yang dianggap salah satu filsuf politik terkemuka abad ke-20, menyatakan bahwa "Keadilan adalah kelebihan (virtue) pertama dari institusi sosial, sebagaimana halnya kebenaran pada sistem pemikiran" [1]. Tapi, menurut kebanyakan teori juga, keadilan belum lagi tercapai: "Kita tidak hidup di dunia yang adil" [2]. Kebanyakan orang percaya bahwa ketidakadilan harus dilawan dan dihukum, dan banyak gerakan sosial dan politis di seluruh dunia yang berjuang menegakkan keadilan. Tapi, banyaknya jumlah dan variasi teori keadilan memberikan pemikiran bahwa tidak jelas apa yang dituntut dari keadilan dan realita ketidakadilan, karena definisi apakah keadilan itu sendiri tidak jelas. keadilan intinya adalah meletakkan segala sesuatunya pada tempatnya.
 
      Pengertian Keadilan pada hakikatnya adalah memperlakukan seseorang atau pihak lain sesuai dengan haknya. Yang menjadi hak setiap orang adalah diakuai dan diperlakukan sesuai dengan harkat dan martabatnya, yang sama derajatnya, yang sama hak dan kewajibannya, tanpa membedakan suku, keturunan, dan agamanya.  kalau menurut saya keadilan itu tidak membeda-beadakan sesuatu hal jadi berlaku seimbang tergantung keperluannya.

Thursday, June 5, 2014

Tugas 3, Pengantar Komputasi Modern 1

Komputasi & Parallel Processing

         Pada pertemuan kali ini saya akan membahas tentang komputasi dan parallel processing. langsung saja Komputasi itu adalah Setiap jenis perhitungan , penggunaan teknologi komputer dalam pengolahan informasi. Perhitungan adalah proses setelah yang jelas model yang dipahami dan dinyatakan dalam suatu algoritma , protokol , topologi jaringan , dll Perhitungan juga merupakan subyek utama dari ilmu komputer : menyelidiki apa yang dapat atau tidak dapat dilakukan dengan cara komputasi. atau sebagai cara untuk menemukan pemecahan masalah dari data input dengan menggunakan suatu algoritma. Hal ini ialah apa yang disebut dengan teori komputasi, suatu sub-bidang dari ilmu komputer dan matematika. Selama ribuan tahun, perhitungan dan komputasi umumnya dilakukan dengan menggunakan pena dan kertas, atau kapur dan batu tulis, atau dikerjakan secara mental, kadang-kadang dengan bantuan suatu tabel. Namun sekarang, kebanyakan komputasi telah dilakukan dengan menggunakankomputer. 

             Secara umum iIlmu komputasi adalah bidang ilmu yang mempunyai perhatian pada penyusunan model matematika dan teknik penyelesaian numerik serta penggunaan komputer untuk menganalisis dan memecahkan masalah-masalah ilmu (sains). Dalam penggunaan praktis, biasanya berupa penerapan simulasi komputer atau berbagai bentuk komputasi lainnya untuk menyelesaikan masalah-masalah dalam berbagai bidang keilmuan, tetapi dalam perkembangannya digunakan juga untuk menemukan prinsip-prinsip baru yang mendasar dalam ilmu.
Parallel Processing

           Komputasi paralel adalah salah satu teknik melakukan komputasi secara bersamaan dengan memanfaatkan beberapa komputer secara bersamaan. Biasanya diperlukan kapasitas yang sangat besar, baik karena harus mengolah data dalam jumlah besar ataupun karena tuntutan proses komputasi yang banyak. Dalam komputer, pemrosesan paralel merupakan pengolahan dari Program instruksi dengan membagi mereka di antara beberapa prosesor dengan tujuan untuk menjalankan program dalam waktu kurang. Dalam komputer paling awal, hanya satu program berlari pada suatu waktu. Sebuah program komputasi-intensif yang memakan waktu satu jam untuk menjalankan dan menyalin Program tape yang mengambil satu jam untuk menjalankan akan mengambil total dua jam untuk menjalankan. Bentuk awal dari pemrosesan paralel memungkinkan eksekusi interleaved kedua program bersama-sama. Komputer akan memulai operasi I / O, dan sementara itu sedang menunggu operasi untuk menyelesaikan, itu akan mengeksekusi program prosesor-intensif. Waktu eksekusi total untuk dua pekerjaan akan menjadi sedikit lebih dari satu jam.
         Peningkatan berikutnya multiprogramming . Dalam sistem multiprogramming, beberapa program telah dikirim pengguna yang masing-masing diperbolehkan untuk menggunakan prosesor untuk waktu yang singkat. Untuk pengguna tampak bahwa semua program yang melaksanakan pada saat yang sama. Masalah pertama muncul pertentangan sumber daya di sistem ini. Permintaan eksplisit untuk sumber daya menyebabkan masalah dari kebuntuan . Kompetisi untuk sumber daya pada mesin tanpa dasi-melanggar instruksi mengarah pada rutin critical section.

              Langkah berikutnya dalam pengolahan paralel adalah pengenalan multiprocessing .Dalam sistem ini, dua atau lebih prosesor berbagi pekerjaan yang akan dilakukan. Versi awal memiliki master / slave konfigurasi. Salah satu prosesor (master) diprogram untuk bertanggung jawab atas semua pekerjaan dalam sistem, yang lain (budak) dilakukan hanya tugas-tugas itu diberikan oleh master. Pengaturan ini diperlukan karena tidak kemudian mengerti bagaimana program mesin sehingga mereka bisa bekerja sama dalam pengelolaan sumber daya sistem. Untuk melakukan aneka jenis komputasi paralel ini diperlukan infrastruktur mesin paralel yang terdiri dari banyak komputer yang dihubungkan dengan jaringan dan mampu bekerja secara paralel untuk menyelesaikan satu masalah. Untuk itu diperlukan aneka perangkat lunak pendukung yang biasa disebut sebagai middleware yang berperan untuk mengatur distribusi pekerjaan antar node dalam satu mesin paralel. Selanjutnya pemakai harus membuat pemrograman paralel untuk merealisasikan komputasi. 

Komputasi paralel membutuhkan: 
  • algoritma 
  • bahasa pemrograman 
  • compiler 

           Paralel processing komputasi adalah proses atau pekerjaan komputasi di komputer dengan memakai suatu bahasa pemrograman yang dijalankan secara paralel pada saat bersamaan. Secara umum komputasi paralel diperlukan untuk meningkatkan kecepatan komputasi bila dibandingkan dengan pemakaian komputasi pada komputer tunggal. Penggunaan komputasi parallel prosessing merupakan pilihan yang cukup handal untuk saat ini untuk pengolahan data yang besar dan banyak. Yang mempunyai tujuan untuk dapat mempercepat dalam hal mengatasi suatu permasalahan. Parallel processing berbeda dengan multitasking, yaitu satu CPU mengeksekusi beberapa program sekaligus. Parallel processing disebut juga parallel computing.

Terdapat beberapa konfigurasi yang harus dilakukan dalam penggunaan parallel processing yaitu : 
  • Perangkat keras komputer diharuskan melakukan penyetinggan dengan sistem shared memory. 
  • Melakukan penyetinggan processor yang memiliki memory masing-masing. 
  • Melakukan beberapa / banyak processor yang terhubung ke dalam suatu jaringan untuk melakukan pekerjaan yang sama dengan cara simultan yaitu bersama-sama. 
          Aspek keamanan merupakan suatu aspek penting dalam sistem parallel prosessing komputasi ini, karena didalam sistem akan banyak berkaitan dengan akses data, hak pengguna, keamanan data, keamanan jaringan terhadap peyerangan sesorang atau bahkan virus sehingga akan menghambat kinerja dari system komputasi ini. Didalam makalah ini akan memamparkan bagaimana sistem komputasi parallel ini pada suatu PC Cluster sehingga menjadi suatu sistem komputasi yang aman sehingga dapat meningkatkan performa dari komputasi. 

         Implementasi untuk parallel komputasi ini telah dilakukan di lab dengan PC Clutster dengan menggunakan 1 buah master node dan 7 buah slave node, dimana system yang digunakan adalah diskless dengan menggunakan switch hub 1Gbps sebagai konsentrator dan dengan menerapkan aspek keamanan. 

      Setelah ditemukannya teknik parallel processing, komputasi pun berkembang ke sebuah proses komputasi baru yaitu proses komputasi parallel. 
  
Hubungan antara komputasi modern dengan paralel processing

      Kinerja komputasi dengan menggunakan paralel processing itu menggunakan dan memanfaatkan beberapa komputer atau CPU untuk menemukan suatu pemecahan masalah dari masalah yang ada. Sehingga dapat diselesaikan dengan cepat daripada menggunakan satu komputer saja. Komputasi dengan paralel processing akan menggabungkan beberapa CPU, dan membagi-bagi tugas untuk masing-masing CPU tersebut. Jadi, satu masalah terbagi-bagi penyelesaiannya. Tetapi ini untuk masalah yang besar saja, komputasi yang masalah kecil, lebih murah menggunakan satu CPU saja.
Perbedaan Komputasi Tunggal & Parallel 


        Terlihat pada gambar diatas bahwa komputasi tunggal hanya menggunakan 1 CPU atau processor, sehingga dalam hal ini, jika instruksi yang dilakukan banyak, processor akan memprosesnya satu persatu. Hal ini menimbulkan antrian yang akhirnya akan memperlambat hasil yang diperoleh (waktunya lama). 


      Namun jika kita lihat pada gambar komputasi paralel, instruksi akan dibagi menjadi beberapa instruksi sesuai dengan banyaknya processor. Hal ini tentunya akan mempercepat kerja komputer dan mempercepat waktu untuk mendapatkan hasil.
Terdapat dua hukum yang berlaku dalam sebuah parallel processing. yaitu:
  • Hukum Amdahl, Amdahl berpendapat, “Peningkatan kecepatan secara paralel akan menjadi linear, melipatgandakan kemampuan proses sebuah komputer dan mengurangi separuh dari waktu proses yang diperlukan untuk menyelesaikan sebuah masalah.”
  • Hukum Gustafson, Pendapat yang dikemukakan Gustafson hampir sama dengan Amdahl, tetapi dalam pemikiran Gustafson, sebuah komputasi paralel berjalan dengan menggunakan dua atau lebih mesin untuk mempercepat penyelesaian masalah dengan memperhatikan faktor eksternal, seperti kemampuan mesin dan kecepatan proses tiap-tiap mesin yang digunakan.




        Gambar diatas merupakan contoh dari sebuah komputasi paralel, dimana pada gambar diatas terdapat sebuah masalah, dari masalah tersebut dibagi lagi menjadi beberapa bagian agar sebuah masalah dapat dengan cepat diatasi.

Komentar Pribadi::
Jadi sebenarnya komputasi paralel ini bertujuan untuk meningkatkan kinerja komputer dalam menyelesaikan berbagai masalah. Dengan membagi sebuah masalah besar ke dalam beberapa masalah kecil, membuat kinerja menjadi cepat.

Referensi ::
https://www.google.co.id/?gws_rd=ssl
http://id.wikipedia.org/wiki/Komputasi 
http://zwanzigr.blogspot.com/2013/06/komputasi-parallel-processing.html
http://3anapoe3.wordpress.com/2013/06/10/komputasi-dan-parallel-processing/
http://andri102.wordpress.com/game/soft-skill/konsep-komputasi-parallel-processing/ 

Tuesday, May 27, 2014

Tugas Pengantar Teknologi Game 2



Tic-Tac-Toe
Pada kesempata kali ini saya akan membuat sebuah game tic-tac-toe. langsung saja penjelasannya dibawah ini..

Cara Main
Pada Game ini diawalnya terdiri dari 9 petak kosong yang tersusun oleh 3 baris dan 3 kolom yang dipakai untuk bermain di dalam game ini,sebenarnya ada beberapa jenis bentuk petak pada game ini yaitu seperti 4x4 yang terdiri dari 4 baris dan 4 kolom ada juga yang 5x5 dsb kebetulan saya memakai yang 3x3.  Di dalam permainan ini terdapat  2 karakter yaitu satu karakter yang digunakan untuk user yang berbentuk “kepala kucing” dan satu karakter yang digunakan oleh komputer yang berbentuk “tangan kucing” sebagai lawan kita. Pada permainan ini hanya dimainkan oleh 1 user sedangkan  komputer bertindak sebagai lawan.  User atau kita dapat menaruh karakter pada area permainan yang telah disediakan.
  
 Strawberry Prolog
 Strawberry prolog, kita bahas terlebih dahulu tentang PROLOG, PROLOG adalah sebuah bahasa pemrograman yang dirancang oleh Alain Colmenraurer dan P. Roussel di Universitas Marseilles Prancis pada tahun 1972, PROLOG merupakan sebuah singkatan dari Programing in Logic (dalam bahasa Pranci programmation en logique), di Eropa sana, bahasa pemrograman ini populer digunakan untuk membuat sebuah aplikasi atau game berbasiskan Artificial Intelligence atau kecerdasan buatan.
Bahasa pemrograman PROLOG tidak memilki aturan khusus seperti adanya prosedur atau tetek bengeknya yang ada pada bahasa pemrograman lain dikarenakan bahasa pemrograman PROLOG ini tergolong “Declarative Language“, tidak ada prosedur didalamnya, tetapi terdapat kumpulan data-data objek (fakta) yang akan diolah, dan relasi antara objek tersebut akan membentuk sebuah aturan (rule) yang diperlukan untuk mencapai suatu goal (tujuannya).
Penerapan PROLOG ini cukup banyak diterapkan pada bidang-bidang tertentu, berikut contoh penerapannya :
  • Sistem Pakar (Expert System)
  • Pengolahan Bahasa Alami (Natural Language Processing)
  • Robotika
  • Pengenalan Pola (Pattern Recognition)
  • Pembelajaran (Learning)

Pembuatan
Pada kesempatan ini saya akan coba menjelaskan cara membuat Game Tic-Tac-Toe ini yang dibuat dengan program Strawberry Prolog..
Pertama kita buat codingan seperti dibawah ini di awal program harus ada tanda “?-“ sebagai pendeklarasian awal program lalu lanjut ke ::
   “G_Br=0, %brush” ini sebagai deklarasi untuk Brush atau tampilan background.
   “G_N=50, %timer” kemudian ini untuk mendeklarasikan timer.
Untuk yang dibawah ini berguna untuk mendeklarasikan atau memasukan image yang kita inginkan dengan format gambarnya bitmap.
   G_gue is bitmap_image("jitac\\kucing.bmp",_),
   G_loe is bitmap_image("jitac\\kucing10.bmp",_),
Selanjutnya saya buat untuk menampilkan pesan pembuka pada program saat dijalankan nanti yaitu dengan mengetikan: 



set(currscore(0)),read(Name,"siapa nama loe"),set(hisname(Name)),
   set(currscore(1)),read(Umur,"berapa umur loe"),set(hisumur(Umur)),
yang akan memunculkan tampilan seperti ini ::




Lalu kita ketikan ini::
   set(pos([[f,f,f], [f,f,f], [f,f,f]])),
   set(lose_flag(false)),
   brush(system_color(window)),
   window( _, _, win_func(_), "Tick-Tack-Toe", 200, 200, 496, 550).
gunanya untuk menset tampilan pada layarnya.
Kemudian kita lanjutkan dengan mengetikan ::
put_mark(Mark) :-
   pos(Current_Pos),
   member(Current_Pos, L, Y),
   member(L, Mark, X),
   X1 is 80 + 120*X, Y1 is 80 + 120*Y, X2 is X1 + 80, Y2 is Y1 +80,
   write_mark(Mark, X1, Y1, X2, Y2),
   fail.
put_mark(_).
Yang berfungsi untuk menentukan kordinat dari bidak atau karakter yang kita mainkan letaknya dimana.



Kalau yang dibawah ini untuk memasukan setingan gambar yang sudah kita deklarasikan diatas untuk dapat dimainkan didalam game sebagai karakter kita ::
  write_mark(x, X1, Y1, X2, Y2) :-
   draw_bitmap(X1, Y1, G_gue,_ ,_).
write_mark(o, X1, Y1, X2, Y2) :-
   draw_bitmap(X1, Y1, G_loe,_ ,_).
  


Selanjutnya kalau kita ingin memasukan menu maka kita ketikan ini,pada menu ini kita dapat memilih letak menu tersebut dimana seperti normal(di pojok kiri), Right(di pojok kanan), dan Pop up(dia akan sebagai induk menu yang dapat di taruh sub menunya) ::
win_func(init):-
menu(pop_up,_,_,menu_Game(_), "&Game"),
menu(normal,_,_,menu_brush(_), "&Brush"),
menu(normal,_,_,menu_about(_), "&About"),
menu(normal,_,_,menu_Exit(_), "&Exit"),
menu(right,_,_,menu_help(_), "&Help").
menu(right,_,_,menu_help(_), "&Help").



win_func(paint) :-     
   pen(2, rgb(255, 0, 0)), “berfungsi untuk menampilkan warna tabelnya   dengan pen sebagai alat gambarnya
   line(60, 60, 60, 420),   
   line(60, 420, 420, 420),  “dan Line itu sendiri untuk membuat garisnya”
   line(420, 420, 420, 60),
   line(420, 60, 60, 60),
   line(180, 60, 180, 420),
   line(300, 60, 300, 420),
   line(60, 180, 420, 180),
   line(60, 300, 420, 300),
   pen(4, rgb(255, 0, 0)),
   put_mark(x),
   pen(4, rgb(0, 0, 255)),
   put_mark(o),
   fail.
Table atau petak-petak pada tampilan ini dibuat dengan kodingan seperti diatas ini dengan fungsi masing-masing.
Kemudian kita harus membuat kodingan yang berfungsi sebagai tombol klik kita yang menjalankan permainan atau yang menaruh karakternya ::
win_func(mouse_click(X, Y)) :-
  lose_flag(false),
  X>60, Y>60,
  X<420, Y<420,
  X1 is (X - 60)//120,
  Y1 is (Y - 60)//120,
  pos(Current_Pos),
  member(Current_Pos, L, Y1),
  member(L, f, X1),
  !,
  replace(L2, L, x, X1),
  replace(Current_Pos2, Current_Pos, L2, Y1),
  set(pos(Current_Pos2)),
  not(win_func(paint)),
  think(Current_Pos2).

win_func(mouse_click(X, Y)) :-
  beep.                         “ini berfungsi sebagai suara jika kita klik”

Selanjutnya pada game ini terdapat Timer yang berfungsi memberitahu waktu berakhirnya permainan cara untuk memasukan waktu ke dalam game ini dengan cara mengetikan ::
win_func(paint):-
G_waktu is set_timer(_,1,time_func).
time_func(end):-
(G_N=:=0->
kill_timer(_,G_waktu),
message("Surat!!","waktunya abiss ha ha",i)
else
G_N <>=G_N-1),
T is printq(G_N),
text_out(10, 10, "Time : "+print(T)),
beep.
G_N ini sudah dideklarasikan diatas sebagai tempat lamanya waktu yang ingin kita buat..
Berikutnya:
is_it_win(Sit2) :-
  victory(o, Sit2),
  set(pos(Sit2)),
  not(win_func(paint)),
  set(lose_flag(true)),
  message("Maap nih!","loe kalahhh :)",s),
close_window(_).

is_it_win(Sit2) :-
  win(x, Sit2),
  set(pos(Sit2)),
  not(win_func(paint)).
Ini adalah potongan dari kodingan untuk mengecek kejadian menang atau kalah versi fullnya dapat dilihat di listing atas dipotongan ini dia mengecek jika kita kalah, maka akan keluar pesan. : 
Pada game ini tentunya terdapat AI sebagai lawan kita,untuk memasukan AI ke game Tic-Tac-Toe ini anda harus mengetikan koding seperti berikut:
member([Element, _, _], Element, 0).
member([_, Element, _], Element, 1).
member([_, _, Element], Element, 2).

replace([Element, A, B], [_, A, B], Element, 0).
replace([A, Element, B], [A, _, B], Element, 1).
replace([A, B, Element], [A, B, _], Element, 2).

Ini berguna untuk menentukan letak AI itu berjalan kita dapat menentukan letak AI itu berjalan bisa mengusakan dia menang ataupun memblok kita. Tentunya ini hanya versi fullnya di listing atas J lalu ini juga potongannya,sama seperti yang sebelumnya ini juga untuk menentukan letak AI itu berada bedanya adalah yang sebelumnya untuk meletakan saja sedangkan yang ini sebagai otaknya untuk AI itu berjalan agar menhalangi kita menang.

lose( x, Sit) :- move(x, Sit, Sit2), lose(o, Sit2).
lose( o, Sit) :- victory(x, Sit).
lose( o, Sit) :- not(nolose( o, Sit)).

nolose(o, Sit) :- not(move(Sit)). % the last move belongs to X
nolose(o, Sit) :- move(o, Sit, Sit2), nolose(x, Sit2).
nolose( x, Sit) :- victory(o, Sit).
nolose(x, Sit) :- not(lose(x, Sit)).

Bila tadi sebelumnya kita sudah membuat menu maka kita akan mencoba membuat sub menu nya dengan cara :
            menu_Game(init):-
     menu(normal, _,_,menu_newGame(_),"NewGame"),
     menu(separator, _,_,fail(_),_),
     menu(normal,_,_,menu_play(_),"Play"),
     menu(separator, _,_,fail(_),_),
     menu(normal, _,_,menu_Exit(_),"Exit").
Sub menu ini terdapat di dalam menu Game, disitu ada perintah yang berisikan “separator”ini berfungsi untuk membuat garis pemisah antara menu satu dengan yang lain.




Lalu  kita buat menu Brush yang berfungsi untuk mengganti tampilan background pada layar disini saya buat contoh 5 background dan bisa ditambah lagi sesukany:
menu_brush(press) :-
     new_brush(G_Br),
     update_window(_),
     G_Br:= (G_Br+1) mod 5.
        
new_brush(0) :- window_brush(_, "jitac/aha.bmp").
new_brush(1) :- window_brush(_, "jitac/uta.bmp").
new_brush(2) :- window_brush(_, "jitac/kiti.bmp").
new_brush(3) :- window_brush(_, "jitac/kutu.bmp").
new_brush(4) :- window_brush(_, rgb(255, 0, 0), '/').

G_Br itu sendiri sudah di deklarasikan di atas agar dapat muncul dan berjalan pada programnya.