14 Nov 2016

Program Pembuatan Garis dengan OpenGL pada Dev C++



OpenGL adalah kumpulan standard API (Application Programming Interface) yang menghubungkan software dengan hardware grafis untuk menampilkan gambar 2D dan 3D. Intinya OpenGL itu adalah kumpulan library untuk mengakses hardware (GL= graphical library). OpenGL mendefinisikan berbagai instruksi untuk menggambar objek, image (umumnya 3D) dan melakukan berbagai operasi terhadap objek-objek tersebut. OpenGL tidak mengandung source code, hanya spesifikasi saja. Pembuat GPU (graphical processing unit) seperti NVIDIA, Intel, Samsung dll yang akan membuat implementasi. Dengan cara ini walaupun GPU diproduksi oleh berbagai produsen dengan berbagai berbagai variasi tipe dan implementasi, semuanya dapat diperintah dengan spesifikasi yang sama. OpenGL dirancang independen terhadap sistem operasi, hardware, maupun bahasa pemrograman yang digunakan. Bahkan jika GPU tidak tersedia, openGL dapat dijalankan diatas software yang mengemulasi hardware, tentu dengan kinerja yang lebih rendah. OpenGL adalah low level API, jadi saat kita menggambar suatu objek kita harus mengirimkan terlebih dulu objek, texture, shaders dan lainnya. Ini membuat programming dengan OpenGL bisa jadi hal yang rumit, tapi disisi lain jadi lebih powerfull dan fleksibel. Bagi pemula hal ini bisa memusingkan karena terdapat banyak variasi teknik yang dapat dilakukan untuk mencapai hasil yang sama. Umumnya pengembang game tidak menggunakan openGL secara langsung, tetapi melalui game engine seperti Unity.
Seperti yang sudah diketahui diatas, jadi jika ingin membuat sebuah ‘Program Pembuat Garis’ maka dibutuhkan Library OpenGL. Untuk melakukan suatu pemrograman grafis, salah satunya dapat menggunakan GLUT pada suatu compiler C++. Programer dapat menggunakan Visual C++ atau DevC++, yang mana kedua compiler tersebut adalah yang paling sering digunakan, dan memiliki fitur yang hampir sama. Perbedaan yang paling mencolok antara keduanya yaitu DevC++ gratis sedangkan Visual C++ berbayar.

Apa sih Dev C++ itu ?
Dev C++ merupakan software yang dikembangkan oleh Bloodshed adalah grafis IDE fitur lengkap (Integrated Development Environment), yang mampu membuat Windows atau konsol berbasis C / C + + program menggunakan sistem kompiler MinGW. MinGW (Minimalis GNU * untuk Windows) menggunakan GCC (GNU g+ + compiler collection), yang pada dasarnya adalah sistem compiler yang sama yang ada di Cygwin (program lingkungan unix untuk Windows) dan sebagian besar versi Linux.
Dev C++ dapat membuat program yang berbahasa C dan C++. Perbedaan C dan C++ adalah pada library, C++ memiliki library dan algoritma yang lebih banyak daripada C. Tapi akan lebih baik jika anda mempelajari dasarnya dahulu, yaitu bahasa C. Library OpenGL pada Dev C++ dinamakan GLUT.

Berikut ini cara memasukan GLUT pada Dev C++


Setelah itu klik Install dan pilih dimana kita menyimpan Glut yang telah didownload sebelumnya. Biarkan Glutnya tetap .rar atau .zip.


Setelah itu pilih Open dan akan terbuka sebuah jendela instalasi. Pilih Install dan tunggu hingga selesai.


Untuk memulai sebuah project bisa dilakukan dengan cara new > project.


Setelah itu pilih Console Application dan beri nama project anda sesuai yang anda inginkan



Perlu diketahui juga, jika operating system yang anda gunakan adalah 64 bit dan cara diatas tidak dapat digunakan, maka anda bisa melihatnya di Tutorial Instalasi Glut 64bit.


SCRIPT PROGRAM PEMBUAT GARIS

Bisa dilihat pada gambar berikut atau bisa di download Disini


Adapun untuk memenuhi tugas saya sebagai Mahasiswa pada mata kuliah yang bersangkutan maka untuk Contoh Program dan Penjelasan lebih lanjut mengenai scriptnya, bisa di download pada Program Garis & Penjelasannya.


.

31 Okt 2016

Heuristik Search dan Contoh Penerapannya

HEURISTIK SEARCH



Heuristik adalah sebuah teknik yang mengembangkan efisiensi dalam proses pencarian, namum dengan kemungkinan mengorbankan kelengkapan (completeness).

Fungsi heuristik digunakan untuk mengevaluasi keadaan-keadaan problema individual dan menentukan seberapa jauh hal tersebut dapat digunakan untuk mendapatkan solusi yang diinginkan.

Jenis-jenis Heuristic Searching :
  • Generate and Test.
  • Hill Climbing.
  • Best First Search.
  • Means-EndAnlysis, Constraint Satisfaction, dll.

Pembangkitan dan Pengujian (Generate and Test)
Metode ini merupakan penggabungan antara depth-first search dengan pelacakan mundur (backtracking), yaitu bergerak ke belakang menuju pada suatu keadaan awal.

Algoritma :
  1. Bangkitkan suatu kemungkinan solusi (membangkitkan suatu tititk tertentu atau lintasan tertentu dari keadaan awal).
  2. Uji untuk melihat apakah node tersebut benar-benar merupakan solusinya dengan cara membandingkan node terebut atau node akhir dari suatu lintasan yang dipilih dengan kumpulan tujuan yang diharapkan.
  3. Jika solusi ditemukan, keluar. Jika tidak, ulangi kembali langkah pertama.

Contoh : “Travelling Salesman Problem (TSP)
Seorang salesman ingin mengunjungi n kota. Jarak antara tiap-tiap kota sudah diketahui. Kita ingin mengetahui ruter terpendek dimana setiap kota hanya boleh dikunjungi tepat 1 kali.
Misalkan ada 4 kota dengan jarak antara tiap-tiap kota seperti berikut ini :





Pendakian Bukit (Hill Climbing)
Metode ini hampir sama dengan metode pembangkitan dan pengujian, hanya saja proses pengujian dilakukan dengan menggunakan fungsi heuristic. Pembangkitan keadaan berikutnya tergantung pada feedback dari prosedur pengetesan. Tes yang berupa fungsi heuristic ini akan menunjukkan seberapa baiknya nilai terkaan yang diambil terhadap keadaan-keadaan lainnyayang mungkin.

Algoritma:
Cari operator yang belum pernah digunakan; gunakan operator ini untuk mendapatkan keadaan yang baru.

a). Kerjakan langkah-langkah berikut sampai solusinya ditemukan atau sampai tidak ada operator baru yang akan diaplikasikan pada keadaan sekarang : Cari operator yang belum digunakan; gunakan operator ini untuk mendapatkan keadaan yang baru.

b). Evaluasi keadaan baru tersebut :
  • Jika keadaan baru merupakan tujuan, keluar
  • Jika bukan tujuan, namun nilainya lebih baik daripada keadaan sekarang, maka jadikan keadaan baru tersebut menjadi keadaan sekarang.
  • Jika keadaan baru tidak lebih baik daripada keadaan sekarang, maka lanjutkan iterasi.

Ada 3 Masalah yang mungkin terjadi pada Simple Hill Climbing :
  • Algoritma akan berhenti kalau mencapai nilai optimum local
  • Urutan penggunaan operator akan sangat berpengaruh pada penemu solusi
  • Tidak diijinkan untuk melihat satupun langkah sebelumnya.

Contoh: TSP dengan Simple Hill Climbing Disini ruang keadaan berisi semua kemungkinan lintasan yang mungkin. Operator digunakan untuk menukar posisi kota-kota yang bersebelahan. Apabila ada n kota, dan kita ingin mencari kombinasi lintasan dengan menukar posisi urutan 2 kota, maka kita akan mendapatkan sebanyak n!/2!(n-2)! atau sebanyak 6 kombinasi. Fungsi heuristic yang digunakan adalah panjang lintasan yang terjadi.



Sumber Terkait :
  • hendrik.staff.gunadarma.ac.id/Downloads/files/23065/teknik-pencarian-heuristik.pdf

.

Breadth First Search & Depth First Search serta Contoh Penerapannya

BLIND SEARCH


Uninformed Search sering disebut juga dengan Blind Search. Istilah tersebut menggambarkan bahwa teknik pencarian ini tidak memiliki informasi tambahan mengenai kondisi diluar dari yang disediakan oleh definisi masalah. Yang dilakukan oleh algoritma ini adalah melakukan generate dari successor dan membedakan goal state dari non-goal state. Pencarian dilakukan berdasarkan pada urutan mana saja node yang hendak di-expand.


Breadth First Search (BFS)

Pencarian dengan Breadth First Search menggunakan teknik dimana langkah pertamanya adalah root node diekspansi, setelah itu dilanjutkan semua successor dari root node juga di-expand. Hal ini terus dilakukan berulang-ulang hingga leaf (node pada level paling bawah yang sudah tidak mempunyai successor lagi).


Pencarian dengan Breadth First Search akan menjadi optimal ketika nilai pada semua path adalah sama. Dengan sedikit perluasan, dapat ditemukan sebuah algoritma yang optimal dengan melihat kepada nilai tiap path di antara node-node yang ada. Selain menjalankan fungsi algoritma BFS, Uniform Cost Search melakukan ekspansi node dengan nilai path yang paling kecil. Hal ini bisa dilakukan dengan membuat antrian pada successor yang ada berdasar kepada nilai path-nya (node disimpan dalam bentuk priority queue).

Keuntungannya :
  • Tidak menemui jalan buntu.
  • Jika ada suatu solusi, maka Breadth-first search akan menemukannya. Dan jika didapat lebih dari satu solusi, maka solusi minimum akan ditemukan.

Kelemahannya :
  • TABLE I. Membutuhkan memori yang cukup banyak, karena menyimpan semua node dalam suatu pohon.
  • TABLE II. Membutuhkan waktu yang cukup lama, karena akan menguji n level untuk mendapatkan solusi pada level ke-(n + 1).


Depth First Search (DFS)

Teknik pencarian dengan Depth First Search adalah dengan melakukan ekspansi menuju node yang paling dalam pada tree. Node paling dalam dicirikan dengan tidak adanya successor dari node itu. Setelah node itu selesai diekspansi, maka node tersebut akan ditinggalkan, dan dilakukan ke node paling dalam lainnya yang masih memiliki successor yang belum diekspansi.


Pencarian menggunakan DFS akan berlanjut terus sampai kedalaman paling terakhir dari tree. Permasalahan yang muncul pada DFS adalah ketika proses pencarian tersebut menemui infinite state space. Hal ini bisa diatasi dengan menginisiasikan batas depth pada level tertentu semenjak awal pencarian. Sehingga node pada level depth tersebut akan diperlakukan seolah-olah mereka tidak memiliki successor.

Keuntungannya :
  • Membutuhkan memori yang relatif kecil, karena hanya node-node pada lintasan yang aktif yang di simpan.
  • Secara kebetulan, metode Depth First Search akan menemukan solusi tanpa harus menguji lebih banyak lagi dalam ruang keadaan.

Kelemahannya :
  • Memungkinkan tidak ditemukannya tujuan yang diharapkan.
  • Hanya akan mendapatkan satu solusi pada setiap pencarian.


Contoh Penerapan BFS & DFS

Studi Kasus : Pada suatu hari ada seorang petani yang mempunyai seekor kambing dan serigala.Pada saat itu ia baru saja panen sayuran. Karena membutuhkan uang, petani tersebut hendak menjual kambing, serigala, dan sayurannya ke pasar Johar. Untuk sampai di pasar Johar, ia harus menyeberangi sebuah sungai.

Permasalahannya : adalah di sungai itu hanya tersedia satu perahu saja yang bisa memuat petani dan satu penumpang lainnya (kambing, srigala, atau sayuran). Jika ditinggalkan oleh petani tersebut, maka sayuran akan dimakan oleh kambing dan kambing akan dimakan oleh serigala.

Deskripsi
  • P = Petani
  • Sy = Sayuran
  • K = Kambing
  • Sg = Serigala

Ruang Keadaan
  • Untuk daerah asal dan daerah seberang digambarkan. (P, Sy, K, Sg)

Keadaan Awal
  • Daerah Asal = (P, Sy, K, Sg)
  • Daerah seberang = (0, 0, 0, 0)

Tujuan
  • Daerah Asal = (0, 0, 0, 0)
  • Daerah seberang = (P, Sy, K, Sg)

Metode Penyelesaian :
a. Berikut ini adalah algoritma BFS :
  1. Masukkan simpul akar ke dalam antrian Q. Jika simpul akar = simpul solusi (goal node), maka stop.
  2. Jika Q kosong, tidak ada solusi. Stop.
  3. Ambil simpul v dari kepala (head) antrian, bangkitkan semua anak-anaknya. Jika v tidak mempunyai anak lagi, kembali ke langkah 2. Tempatkan semua anak dari v di belakang antrian.
  4. Jika suatu simpul anak dari v adalah simpul solusi, maka solusi telah ditemukan, kalau tidak kembali lagi ke langkah 2.



b. Menggunakan algoritma DFS :
  1. Masukkan simpul akar ke dalam antrian Q. Jika simpul akar = simpul solusi, maka stop.
  2. Jika Q kosong, tidak ada solusi. Stop.
  3. Ambil simpul v dari kepala (head) antrian. Jika kedalaman simpul v sama dengan batas kedalaman maksimum, kembali ke langkah 2
  4. Bangkitkan semua anak dari simpul v. Jika v tidak mempunyai anak lagi, kembali ke langkah 2. Tempatkan semua anak dari v di awal antrian Q. Jika anak dari simpul v adalah simpul tujuan, berarti solusi telah ditemukan, kalau tidak, kembali lagi ke langkah 2.




Sumber Terkait :
  • http://socs.binus.ac.id/2013/04/23/uninformed-search-dan-informed-search/
  • dosen.publikasistmikibbi.lppm.org/permalink/000043.pdf
  • https://creactiveit.wordpress.com/2015/05/08/halo-dunia

.

2 Okt 2016

Sistem Pakar dan Penerapan dalam Bidang Farmakologi

Artificial Intelligence (Kecerdasan buatan)


Kecerdasan buatan atau Artificial Intelligence (AI) istilah yang mungkin akan mengingatkan kita akan kehebatan optimus prime dalam film The Transformers. Kecerdasan buatan memang kerap diidentikkan dengan kemampuan robot yang dapat berperilaku seperti manusia. Definisi Kecerdasan Buatan, Berbagai definisi diungkapkan oleh para ahli untuk dapat memberi gambaran mengenai kecerdasan buatan beberapa diantaranya :
Kecerdasan Buatan (Artificial Intelligence) merupakan kawasan penelitian, aplikasi dan instruksi yang terkait dengan pemrograman komputer untuk melakukan sesuatu hal yang dalam pandangan manusia adalah cerdas (H. A. Simon [1987]).
Kecerdasan Buatan (AI) merupakan sebuah studi tentang bagaimana membuat komputer melakukan hal-hal yang pada saat ini dapat dilakukan lebih baik oleh manusia (Rich and Knight [1991]).
Kecerdasan Buatan (AI) merupakan cabang dari ilmu komputer yang dalam merepresentasi pengetahuan lebih banyak menggunakan bentuk simbol-simbol daripada bilangan, dan memproses informasi berdasarkan metode heuristic atau dengan berdasarkan sejumlah aturan (Encyclopedia Britannica).

Jenis-Jenis Kecerdasan Buatan
Dalam perkembangannya kecerdasan buatan dapat dikelompokkan sebagai berikut :
  • Sistem Pakar (Expert System), komputer sebagai sarana untuk menyimpan pengetahuan para pakar sehingga komputer memiliki keahlian menyelesaikan permasalahan dengan meniru keahlian yang dimiliki pakar.
  • Pengolahan Bahasa Alami (Natural Language Processing), user dapat berkomunikasi dengan komputer menggunakan bahasa sehari-hari, misal bahasa inggris, bahasa indonesia, dan sebagainya.
  • Pengenalan Ucapan (Speech Recognition), manusia dapat berkomunikasi dengan komputer menggunakan suara.
  • Robotika & Sistem Sensor.
  • Computer Vision, menginterpretasikan gambar atau objek-objek tampak melalui komputer.
  • Intelligent Computer-Aided Instruction, komputer dapat digunakan sebagai tutor yang dapat melatih & mengajar.
  • Game Playing.


Sistem Pakar
Sistem pakar (Expert System) dibuat bertujuan untuk dapat menyelesaikan masalah yang cukup rumit yang sebenarnya hanya bisa diselesaikan oleh para ahli. Pembuatan sistem pakar bukan untuk menggantikan ahli itu sendiri melainkan dapat digunakan sebagai asisten yang sangat berpengalaman (Sri Kusumadewi, 2003).

Adapun beberapa definisi sistem pakar dari beberapa ahli (Sri Kusumadewi, 2003), antara lain:
  • Menurut Durkin: Sistem pakar adalah suatu program komputer yang dirancang untuk memodelkan kemampuan penyelesaian masalah yang dilakukan oleh seorang pakar.
  • Menurut Ignizio: Sistem pakar adalah suatu model dan prosedur berkaitan, dalam suatu domain tertentu, yang mana tingkat keahliannya dapat dibandingkan dengan seorang pakar.
  • Menurut Giarratano dan Riley: Sistem pakar adalah suatu sistem komputer yang bisa menyamai atau meniru kemampuan seorang pakar.

Sejarah Sistem Pakar
Sistem Pakar petama kali dikembangkan oleh komunitas AI (Artificial Intellegence) pada pertengahan tahun 1956. Sistem Pakar yang munculpertama kali adalah General-purpose Problem Solver (GPS) yang dikembangkan oleh Newel dan Simon (Sri Kusumadewi, 2003).
Pertengahan tahun 1960-an, terjadi pergantian dari program serba bisa (general-purpose) ke program yang spesialis (special-purpose) dengan dikembangkannya DENDRAL oleh E.Feigenbauh dari Universitas Stanford dan kemudian diikutu oleh MYCIN.
Awal tahun 1980-an, teknologi Sistem Pakar yang mula-mula dibatasi oleh suasana akademis mulai muncul sebagai aplikasi komersial, khususnya XCON, XSEL (dikembangkan dari R-1 pada Digital Equipment Corp.) dan CATS-1 (dikembangkan oleh General Electric). Sistem Pakar dari tahun ketahun selalu mengalami perkembangan.

Contoh Sistem Pakar



Ciri-ciri Sistem Pakar
Adapun ciri-ciri dari sistem pakar yang baik (Sri Kusumadewi, 2003), antara lain:
  • Memilki fasilitas informasi yang handal.
  • Mudah dimodifikasi.
  • Dapat digunakan dalam berbagai jenis komputer.
  • Memiliki kemampuan untuk belajar beradaptasi.

Keuntungan Sistem Pakar
Secara garis besar, banyak manfaat yang dapat diambil dengan adanya sistem pakar ahli (Sri Kusumadewi, 2003), antara lain:
  • Memungkinkan orang awam bisa mengerjakan pekerjaan para ahli.
  • Bisa melakukan proses secara berulang secara otomatis.
  • Menyimpan pengetahuan dan keahlian dari para pakar.
  • Meningkatkan output dan produktivitas.
  • Meningkatkan kualitas.
  • Mampu mengambil dan melestarikan keahlian para pakar (terutama termasuk yang keahlian langka).
  • Mampu beroperasi dalam lingkungan yang berbahaya.
  • Memiliki kemampuan untuk mengakses pengetahuan.
  • Memiliki reabilitas.
  • Meningkatkan kapabilitas sistem komputer.
  • Memiliki kemampuan untuk bekerja dengan informasi yang tidak lengkap dan mengandung ketidak pastian.
  • Sebagai media pelengkap dalam pelatihan.
  • Meningkatkan kapabilitas dalam menyelesaikan masalah.
  • Menghemat waktu dalam mengambil keputusan.

Kelemahan Sistem Pakar
Disamping memiliki beberapa keuntungan, sistem pakar juga memiliki beberapa kelemahan (Sri Kusumadewi, 2003), antara lain:
  • Biaya yang diperlukan dalam pembuatan aplikasi sistem pakar dan memeliharanya sangat mahal.
  • Sulit dikembangkan. Hal ini tentu saja erat kaitannya dengan ketersediaan pakar di bidangnya.
  • Sistem pakar tidak 100% bernilai benar.


Penerapan Sistem Pakar dalam Bidang Farmakologi
Implementasi  sistem  pakar  dalam  bidang  farmakologi dan  terapi  sebagai  pendukung  pengambilan  keputusan  berbasis   web   dibuat   dengan   dasar   pemikiran   sebagai   berikut :  farmakologi dan terapi merupakan suatu sistem yang  besar  dan  komplek.    Tugas  farmakologi  dan  terapi  adalah  mencari  dasar  penggunaan  obat  secara  rasional  untuk  tindakan  medis  yang  tepat,  cepat  dan  akurat  pada  saat    diperlukan.    Dasar    penggunaan    obat    tersebut disesuaikan  dengan  diagnosis  penyakit  yang  dilakukan  secara     cermat     berdasarkan     keluhan-keluhan     yang     dirasakan   oleh   pasien.   Implementasi   farmakologi   dan   terapi  di  lapangan  secara  konvensional  dituangkan  dalam  buku   panduan   yang   dikeluarkan   oleh   dokter   yang   bersangkutan  dan  dilaksanakan  oleh  pihak-pihak  yang  bertanggungjawab   terhadap   masalah   farmakologi   dan   terapi. Kenyataannya dengan menggunakan buku panduan terdapat beberapa kelemahan diantaranya :
  • Prosedur    yang    tertulis    sangat    baku    sehingga    memasung inovasi dan improvisasi operator. 
  • Perlu  dilakukan  revisi  secara  berkala  menyesuaikan  kondisi yang ada. 
  • Kurang  komunikatif  bagi  para  operator  yang  belum  berpengalaman.

Kelemahan  seperti  ini  menyebabkan  tidak  jarang  para  operator  melaksanakan  tugasnya  hanya  didasarkan  pada  pengetahuannya    masing-masing,    padahal    tidak    ada    jaminan    mereka    memiliki    kemampuan    yang    sama    (Prakasa,  1996),  khususnya  dalam  hal  farmakologi  dan  terapi. Oleh karena itu perlu dibuat suatu sistem pengolah informasi  yang  berkecerdasan  untuk  membantu  tugas-tugas dokter dalam mendiagnosis suatu penyakit pada saat diperlukan      untuk      kemudian      diambil      keputusan      penggunaan obat yang sesuai.
Implementasi  sistem  pakar  dalam  bidang  farmakologi dan  terapi    sebagai  pendukung  pengambilan  keputusan  berbasis    web    diharapkan    dapat    digunakan    untuk    mendukung  terciptanya  sistem  informasi  berkecerdasan  berbasis    komputer    dalam    bidang    kesehatan    yang    mendudukkan   paramedis   non   dokter   dan   mahasiswa   kedokteran   sebagai   dokter   pada   saat   diperlukan   dan   membantu     tugas-tugas     dokter     dalam     memberikan     pelayanan kesehatan pada masyarakat.
Secara    garis    besar    sistem    pakar    dalam    bidang    farmakologi   dan   terapi   dibuat   dengan   tuntutan   untuk   melakukan  tugas  sebagai  berikut  :  (1).  Mengambil  data-data  hasil  pemeriksaan  kondisi  pasien,  (2).  Memasukan  dan  membandingkan  data-data  tersebut  ke  dalam  kaidah-kaidah yang telah dituliskan dalam basis pengetahuan, (3).Mendeskripsikan  kondisi  pasien  berdasarkan  kesimpulan  yang didapat dari hasil membandingkan seperti yang telah dilakukan   pada   tugas   (2).      Deskripsi   kondisi   pasien   sebagai  output  sistem  pakar  dalam  bidang  farmakologi  dan   terapi   memuat   kondisi   umum   pasien,   diagnosis   penyakit  dan  terapi-terapi  yang  dapat  dilakukan,  baik  dengan obat, herbal maupun suplemen.
Implementasi  sistem  pakar  dalam  bidang  farmakologi dan  terapi  sebagai  pendukung  pengambilan  keputusan  berbasis  web  merupakan  suatu  program  yang  terdiri  dari  dua  jenis  program.    Kedua  jenis  program  tersebut  adalah  program    konvensional    dan    program    sistem    pakar.        Program konvensional digunakan untuk proses iterasi dan untuk  mengolah  basis  data,  sedangkan  program  sistem  pakar   digunakan   dalam   proses   inferensial   dan   untuk   mengolah  basis  pengetahuan.



Sumber Terkait
  • http://web.if.unila.ac.id/purmanailuswp/2015/09/13/pengertian-artificial-intelligence-kecerdasan-buatan/
  • http://informatika.web.id/sistem-pakar-expert-system.htm
  • http://nazrul.staff.ugm.ac.id/pakar_farmakologi.pdf


.

- Copyright © 2013 Arc Omega - Powered by Blogger - Designed by Aziz Musyaffa -