Rabu, 21 April 2010

Prolog

BAHASA PEMROGRAMAN PROLOG

1.1 Sejarah Prolog
- Prolog singkatan dari Programming in Logic.
- Dikembangkan oleh Alain Colmenraurer dan P.Roussel di Universitas Marseilles Perancis, tahun1972.
- Prolog populer di Eropa untuk aplikasi artificial intelligence, sedangkan di Amerika peneliti mengembangkan aplikasi yang sama, yaitu LISP.

1.2 Perbedaan Prolog dengan Bahasa Lainnya
- Bahasa Pemrograman yang Umum (Basic, Pascal, C, Fortran):
o diperlukan algoritma/prosedur untuk memecahkan masalah (procedural languange)
o program menjalankan prosedur yang sama berulang-ulang dengan data masukan yang berbeda-beda.
o Prosedur dan pengendalian program ditentukan oleh programmer dan perhitungan dilakukan sesuai dengan prosedur yang telah dibuat.

- Bahasa Pemrograman Prolog :
o Object oriented languange atau declarative languange.
o Tidak terdapat prosedur, tetapi hanya kumpulan data-data objek (fakta) yang akan diolah, dan relasi antar objek tersebut membentuk aturan yang diperlukan untuk mencari suatu jawaban
o Programmer menentukan tujuan (goal), dan komputer menentukan bagaimana cara mencapai tujuan tersebut serta mencari jawabannya.
o Dilakukan pembuktian terhadap cocok-tidaknya tujuan dengan data-data yang telah ada dan relasinya.
o Prolog ideal untuk memecahkan masalah yang tidak terstruktur, dan prosedur pemecahannya tidak diketahui, khususnya untuk memecahkan masalah non numerik.
o Prolog bekerja seperti pikiran manusia, proses pemecahan masalah bergerak di dalam ruang masalah menuju suatu tujuan (jawaban tertentu).
o Contoh : Pembuatan program catur dengan Prolog

1.3 Aplikasi Prolog :
- Sistem Pakar (Expert System)
Program menggunakan teknik pengambilan kesimpulan dari data-data yang didapat, layaknya seorang ahli.
Contoh dalam mendiagnosa penyakit
- Pengolahan Bahasa Alami (Natural Languange Processing)
Program dibuat agar pemakai dapat berkomunikasi dengan komputer dalam bahasa manusia sehari-hari, layaknya penterjemah.
- Robotik
Prolog digunakan untuk mengolah data masukanyang berasal dari sensor dan mengambil keputusan untuk menentukan gerakan yang harus dilakukan.
- Pengenalan Pola (Pattern Recognition)
Banyak digunakan dalam image processing, dimana komputer dapat membedakan suatu objek dengan objek yang lain.
- Belajar (Learning)
Program belajar dari kesalahan yang pernah dilakukan, dari pengamataqn atau dari hal-hal yang pernah diminta untuk dilakukan.

1.4 Fakta dan Relasi
- Prolog terdiri dari kumpulan data-data objek yang merupakan suatu fakta.
- Fakta dibedakan 2 macam :
o Menunjukkan relasi.
o Menunjukkan milik/sifat.
- Penulisannya diakhiri dengan tanda titik “.”
- Contoh :


1.5 Aturan (“Rules”)
- Aturan adalah suatu pernyataan yang menunjukkan bagaimana fakta-fakta berinteraksi satu dengan yang lain untuk membentuk suatu kesimpulan.
- Sebuah aturan dinyakatakan sebagai suatu kalimat bersyarat.
- Kata “if” adalah kata yang dikenal Prolog untuk menyatakan kalimat bersyarat atau disimbolkan dengan “:-“.
- Contoh :


- Setiap aturan terdiri dari kesimpulan(kepala) dan tubuh.
- Tubuh dapat terdiri dari 1 atau lebih pernyataan atau aturan yang lain, disebut subgoal dan dihubungkan dengan logika “and”.
- Aturan memiliki sifat then/if conditional
“Kepala(head) benar jika tubuh (body) benar”.
- Contoh : Silsilah keluarga :



1.6 Pertanyaan (“Query”)
-
Setelah memberikan data-data berupa fakta dan aturan, selanjutnya kita dapat mengajukan pertanyaan berdasarkan fakta dan aturan yang ada.
- Penulisannya diawali simbol “?-“ dan diakhiri tanda “.”.
1.7 Predikat (“Predicate”)
- Predikat adalah nama simbolik untuk relasi.
- Contoh : ayah(slamet,amin).
Predikat dari fakta tersebut ditulis : ayah(simbol,simbol).
dimana ayah adalah nama predikat, sedangkan slamet dan amin adalah menujukkan argumen.
Sebuah predikat dapat tidak memiliki atau memiliki argumen dengan jumlah bebas. Jumlah argumen suatu predikat disebut aritas (arity).
ayah(nama) …… aritas-nya 1
ayah(nama1,nama2) ….. aritasnya 2
- Syarat-syarat penulisan nama predikat :
o Harus diawali dengan huruf kecil dan dapat diikuti dengan huruf, bilangan atau garis bawah.
o Panjang nama predikat maksimum 250 karakter.
o Tidak diperbolehkan menggunakan spasi, tanda minus, tanda bintang dan garis miring.
1.8 Variabel
- Varibel adalah besaran yang nilainya dapat berubah-ubah.
- Tata cara penulisan variabel :
1. Nama varibel harus diawali huruf besar atau garis bawah(_)
2. Nama variabel dapat terdiri dari huruf, bilangan, atau simbol dan merupakan kesatuan dengan panjang maksimum 250 karakter.
3. Nama variabel hendaknya mengandung makna yang berkaitan dengan data yang dinyatakannya.
- Contoh : dari silsilah di atas :
?- ayah(slamet,Anak).
Anak=budi ;
Anak=badu
No
Dari query di atas akan dicari siapakah anak dari ayah yang bernama Slamet. Karena mempunyai relasi yang sama (yaitu ayah), variabel Anak akan mencari nilai dari konstanta suatu fakta/aturan yang sepadan.
Tanda “;” digunakan bila terdapat kemungkinan ada lebih dari satu jawaban.
“No” berarti tidak ada lagi kemungkinan jawaban.
Contoh : dari silsilah di atas :
?- ayah(slamet,X),ayah(X,Y).
X=amin
Y=budi ;
X=amin
Y=badu ;
X=anang
Y=didi ;
X=anang
Y=didi
No
Contoh : Silsilah Keluarga
%% FAKTA */
%%orang tua */
ayah(slamet,amin).
ayah(slamet,anang).
ayah(amin,budi).
ayah(amin,badu).
ayah(anang,didi).
ayah(anang,dadi).
ayah(santoso,bu_amin).
ayah(supardi,bu_anang).
ibu(bu_slamet,amin).
ibu(bu_slamet,anang).
ibu(bu_amin,budi).
ibu(bu_amin,badu).
ibu(bu_anang,didi).
ibu(bu_anang,dadi).
ibu(bu_santoso,bu_amin).
ibu(bu_santoso,bu_anang).
%% ATURAN */
%% Kakek adalah kakek Cucu */
kakek(Kakek,Cucu) :-
ayah(Ayah,Cucu),
ayah(Kakek,Ayah).
kakek(Kakek,Cucu) :-
ibu(Ibu,Cucu),
ayah(Kakek,Ibu).
%% Nenek adalah nenek Cucu */
nenek(Nenek,Cucu) :-
ayah(Ayah,Cucu),
ibu(Nenek,Ayah).
nenek(Nenek,Cucu) :-
ibu(Ibu,Cucu),
ibu(Nenek,Ibu).
%% Nama1 adalah saudara kandung Nama2
saudara_kandung(Nama,Name) :-
ayah(Ayah,Nama),
ayah(Ayah,Name),
ibu(Ibu,Nama),
ibu(Ibu,Name),
Nama \= Name.
%% Sdr1 adalah saudara sepupu Sdr2
saudara_sepupu(Sdr1,Sdr2) :-
ayah(Ayah1,Sdr1),
ayah(Ayah2,Sdr2),
saudara_kandung(Ayah1,Ayah2).
saudara_sepupu(Sdr1,Sdr2) :-
ayah(Ayah,Sdr1),
ibu(Ibu,Sdr2),
saudara_kandung(Ayah,Ibu).
saudara_sepupu(Sdr1,Sdr2) :-
ibu(Ibu,Sdr1),
ayah(Ayah,Sdr2),
saudara_kandung(Ibu,Ayah).
saudara_sepupu(Sdr1,Sdr2) :-
ibu(Ibu1,Sdr1),
ibu(Ibu2,Sdr2),
saudara_kandung(Ibu1,Ibu2).

Jumat, 02 April 2010

Algortima Pelatihan Perseptron

Model JST perseptron ditemukan oleh Rosenblatt (1962) dan Minsky – Papert (1969). Model ini merupakan model yang memiliki aplikasi dan pelatihan yang lebih baik pada era tersebut.

Arsitektur Jaringan
Arsitektur jaringan perseptron mirip dengan arsitektur jaringan Hebbian


Jaringan terdiri dari beberapa unit masukan dan sebuah bias, dan memiliki sebuah unit keluaran. Hanya saja fungsi aktivasinya bukan merupakan fungsi biner atau bipolar, tetapi memiliki kemungkinan nilai -1, 0 dan 1:
Untuk suatu harga threshold θ yang ditentukan :


Secara geometris, fungsi aktivasi membentuk 2 garis sekaligus (memisahkan daerah positif dan daerah negatif.
Garis pemisah antara daerah positif dan daerah nol memiliki pertidaksamaan :
x1w1 + .....+ xnwn + b > θ
Garis pemisah antara daerah negatif dan daerah nol memiliki pertidaksamaan :
x1w1 + .....+ xnwn + b < - θ Algortima Pelatihan Perseptron Misalkan : s vektor masukan dan t adalah target keluaran α adalah laju pembelajaran/pemahaman (learning rate) yang ditentukan θ adalah threshold yang ditentukan Algoritma sbb: 0. Inisialisasi semua bobot dan bias (umumnya wi = b =0 ) Set laju pembelajaran α ( 0 < α ≤ 1) (untuk penyederhanaan set α =1) 1. Selama kondisi berhenti benilai FALSE atau selama ada elemen vektor masukan yang respon unit keluarannya tidak sama dengan target (y ≠ t), lakukan langkah-langkah 2 – 6 2. Untuk setiap pasangan (s,t), kerjakan langkah 3 – 5: 3. Set aktivasi unit masukan xi = si (i = 1, ..., n) 4. Hitung respon untuk unit output:
5. Perbaiki bobot dan bias pola jika terjadi kesalahan Jika y ≠ t, maka: wi (baru) = wi (lama) + Δ wi (i = 1...n); dengan Δ wi = α t xi b (baru) = b (lama) + Δb dengan Δ b = α t Jika y = t maka: wi (baru) = wi (lama) b (baru) = b (lama) 6. Test kondisi berhenti: jika tidak terjadi perubahan bobot pada (i) maka kondisi berhenti TRUE, namun jika masih terjadi perubahan maka kondisi berhenti FALSE Ada beberapa hal yang perlu diperhatikan dalam algoritma tersebut: a. Interasi terus dilakukan hingga semua pola memiliki keluaran jaringan yang sama dengan targetnya (jaringan sudah memahami pola). Iterasi TIDAK berhenti setelah semua pola dimasukan seperti yang terjadi pada model Hebbian b. Pada langkah 5, perubahan bobot hanya dilakukan pada pola yang mengandung kesalahan (keluaran jaringan ≠ target). Perubahan tersebut merupakan hasil kali unit masukan dengan target dan laju pembelajaran. Perubahan bobot hanya akan terjadi jika unit masukan ≠ 0 c. Kecepatan iterasi ditentukan oleh laju pembelajaran α ( dengan 0 < α ≤ 1) yang dipakai. Semakin besar α, semakin sedikit iterasi yang diperlukan. Akan tetapi jika α terlalu besar, maka akan merusak pola yang sudah benar sehingga pembelajaran menjadi lambat Algoritma pelatihan perseptron lebih baik dibandingkan model Hebbian karena: a. Setiap kali pola dimasukkan, hasil keluaran jaringan dibandingkan dengan target yang sesungguhnya. Jika terdapat perbedaan, maka bobot akan dimodifikasi. Jadi tidak semua bobot selalu dimodifikasi dalam setiap iterasinya b. Modifikasi bobot tidak hanya ditentukan oleh perkalia antara target dan masukan, tetapi juga melibatkan suatu laju pembelajaran yang besar dapat diatur. c. Pelatihan dilakukan berulang-ulang untuk semua kemungkinan pola yang ada hingga jaringan dapat mengerti polanya (ditandai dengan samanya semua keluaran jaringan dengan target keluaran yang diiinginkan). Satu siklus pelatihan yang melibatkan semua pola disebut Epoch. Dalam jaringan Hebbian, pelatihan hanya dilakukan dalam satu Epoch saja. d. Teorema konvergensi perseptron menyatakan bahwa apabila ada bobot yang tepat, maka proses pelatihan akan konvergen ke bobot yang tepat tersebut. Program Perceptron Nama File : Perceptron.java public class Perceptron { private int[][] x; private int[] w; private int[] t; private int b; private int lRate; private int y; private int epoch; private int net; private boolean stop; private boolean[] bobotBerubah; public Perceptron(){ initial(); printInput(); learning(); } private void printInput(){ System.out.println("Bobot awal dan bias: "+w[0]+" "+w[1]+" "+b); System.out.println("Input data: x1 x2 target"); for(int i=0;i<4;i++){ x =" new" w =" new" b =" 0;" t =" new" lrate =" 1;" y =" 0;" bobotberubah =" new" i="0;i<4;i++){" stop =" false;" epoch =" 0;" stop ="="" i="0;i<4;i++){" net =" x[i][0]" y =" f(net);" stop =" true;"> 0) return 1;
else if(net == 0) return 0;
else return -1;
}

private void perbaikiBobot(int i){
w[0] = w[0] + lRate * t[i] * x[i][0];
w[1] = w[1] + lRate * t[i] * x[i][1];
b = b + lRate * t[i];
}

public void paternRecognize(int x1, int x2){
System.out.println("Pengenalan pola");
int net = x1 * w[0] + x2 * w[1] + b;
System.out.println("Input [x1 x2]: ["+x1+" "+x2+"] gerbang 'AND' dikenal dengan nilai "+f(net));
}
}

Nama File : Main.java

public class Main {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here

Perceptron p = new Perceptron();
p.paternRecognize(1, 1);
p.paternRecognize(1, -1);
p.paternRecognize(-1, 1);
p.paternRecognize(-1, -1);
}
}

sumber : http://farhan-hariri88.blogspot.com/2010/03/algortima-pelatihan-perseptron.html

Source code program penentu Subjek,Predikat dan Objek Kalimat

package id.web.reformation044.app;
import java.awt.Color;
import java.awt.event.KeyEvent;
import java.util.ArrayList;
import javax.swing.DefaultListModel;
import javax.swing.JOptionPane;


/**
*
* @author reformation044
*/
public class Utama extends javax.swing.JFrame {
private DefaultListModel modelSubjek = new DefaultListModel();
private DefaultListModel modelPredikat = new DefaultListModel();
private DefaultListModel modelObjek = new DefaultListModel();
private DefaultListModel modelKeterangan = new DefaultListModel();

private ArrayList himpSubjek = new ArrayList();
private ArrayList himpPredikat = new ArrayList();
private ArrayList himpObjek = new ArrayList();
private ArrayList himpKeterangan = new ArrayList();

private String subjek,predikat,objek,keterangan;
/** Creates new form Utama */
public Utama() {
initComponents();
setLocationRelativeTo(null);
inisialModel();
setVisible(true);
JOptionPane.showMessageDialog(this, "SILAKAN DAFTARKAN KATA-KATA DALAM 4 KOLOM POLA DIBAWAH INI\n" +
"SEBELUM MELAKUKAN SEMANTIC CHECKING", "PENTING COY", JOptionPane.WARNING_MESSAGE);
}

private void inisialModel(){
jList1.setModel(modelSubjek);
jList2.setModel(modelPredikat);
jList3.setModel(modelObjek);
jList4.setModel(modelKeterangan);
}

private void splitKalimat(String kal){
String[] token = kal.split(" ");
subjek = token[0];
predikat = token[1];
objek = token[2];
keterangan = token[3]+" "+token[4];
}

private boolean validasiSubjek(String input){
for(String s:himpSubjek){
if(s.equalsIgnoreCase(input)){
return true;
}
}
return false;
}
private boolean validasiPredikat(String input){
for(String s:himpPredikat){
if(s.equalsIgnoreCase(input)){
return true;
}
}
return false;
}
private boolean validasiObjek(String input){
for(String s:himpObjek){
if(s.equalsIgnoreCase(input)){
return true;
}
}
return false;
}
private boolean validasiKeterangan(String input){
for(String s:himpKeterangan){
if(s.equalsIgnoreCase(input)){
return true;
}
}
return false;
}
private int countToken(){
return textKalimat.getText().split(" ").length;
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// //GEN-BEGIN:initComponents
private void initComponents() {

jPanel1 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
textKalimat = new javax.swing.JTextField();
process = new javax.swing.JButton();
clear = new javax.swing.JButton();
jPanel2 = new javax.swing.JPanel();
jScrollPane1 = new javax.swing.JScrollPane();
info = new javax.swing.JTextArea();
jPanel3 = new javax.swing.JPanel();
jPanel4 = new javax.swing.JPanel();
inSubjek = new javax.swing.JTextField();
jScrollPane2 = new javax.swing.JScrollPane();
jList1 = new javax.swing.JList();
jPanel5 = new javax.swing.JPanel();
inPredikat = new javax.swing.JTextField();
jScrollPane3 = new javax.swing.JScrollPane();
jList2 = new javax.swing.JList();
jPanel6 = new javax.swing.JPanel();
inObjek = new javax.swing.JTextField();
jScrollPane4 = new javax.swing.JScrollPane();
jList3 = new javax.swing.JList();
jPanel7 = new javax.swing.JPanel();
inKeterangan = new javax.swing.JTextField();
jScrollPane5 = new javax.swing.JScrollPane();
jList4 = new javax.swing.JList();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("Simulasi Sederhana Analisa Semantic Kalimat Aktif Transitif (S-P-O-K), reformation044.web.id");
setResizable(false);

jPanel1.setBackground(new java.awt.Color(102, 102, 102));
jPanel1.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.LOWERED));

jLabel1.setForeground(new java.awt.Color(255, 255, 255));
jLabel1.setText("Masukkan Kalimat :");
jPanel1.add(jLabel1);

textKalimat.setColumns(30);
textKalimat.setToolTipText("MASUKKAN 5 KATA");
textKalimat.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyReleased(java.awt.event.KeyEvent evt) {
textKalimatKeyReleased(evt);
}
});
jPanel1.add(textKalimat);

process.setText("semantic checking");
process.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
processActionPerformed(evt);
}
});
jPanel1.add(process);

clear.setText("clear");
clear.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
clearActionPerformed(evt);
}
});
jPanel1.add(clear);

getContentPane().add(jPanel1, java.awt.BorderLayout.NORTH);

jPanel2.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.LOWERED));
jPanel2.setPreferredSize(new java.awt.Dimension(544, 290));
jPanel2.setLayout(new java.awt.BorderLayout());

info.setColumns(20);
info.setRows(10);
jScrollPane1.setViewportView(info);

jPanel2.add(jScrollPane1, java.awt.BorderLayout.PAGE_START);

jPanel3.setBackground(new java.awt.Color(51, 51, 51));
jPanel3.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.LOWERED));

jPanel4.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Subjek", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 0, 11), new java.awt.Color(204, 204, 204))); // NOI18N
jPanel4.setOpaque(false);
jPanel4.setPreferredSize(new java.awt.Dimension(160, 215));
jPanel4.setLayout(new java.awt.BorderLayout());

inSubjek.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent evt) {
inSubjekKeyPressed(evt);
}
});
jPanel4.add(inSubjek, java.awt.BorderLayout.NORTH);

jList1.setEnabled(false);
jScrollPane2.setViewportView(jList1);

jPanel4.add(jScrollPane2, java.awt.BorderLayout.CENTER);

jPanel3.add(jPanel4);

jPanel5.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Predikat", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 0, 11), new java.awt.Color(204, 204, 204))); // NOI18N
jPanel5.setOpaque(false);
jPanel5.setPreferredSize(new java.awt.Dimension(160, 215));
jPanel5.setLayout(new java.awt.BorderLayout());

inPredikat.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent evt) {
inPredikatKeyPressed(evt);
}
});
jPanel5.add(inPredikat, java.awt.BorderLayout.NORTH);

jList2.setEnabled(false);
jScrollPane3.setViewportView(jList2);

jPanel5.add(jScrollPane3, java.awt.BorderLayout.CENTER);

jPanel3.add(jPanel5);

jPanel6.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Objek", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 0, 11), new java.awt.Color(204, 204, 204))); // NOI18N
jPanel6.setOpaque(false);
jPanel6.setPreferredSize(new java.awt.Dimension(160, 215));
jPanel6.setLayout(new java.awt.BorderLayout());

inObjek.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent evt) {
inObjekKeyPressed(evt);
}
});
jPanel6.add(inObjek, java.awt.BorderLayout.NORTH);

jList3.setEnabled(false);
jScrollPane4.setViewportView(jList3);

jPanel6.add(jScrollPane4, java.awt.BorderLayout.CENTER);

jPanel3.add(jPanel6);

jPanel7.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Keterangan", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 0, 11), new java.awt.Color(204, 204, 204))); // NOI18N
jPanel7.setOpaque(false);
jPanel7.setPreferredSize(new java.awt.Dimension(160, 215));
jPanel7.setLayout(new java.awt.BorderLayout());

inKeterangan.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent evt) {
inKeteranganKeyPressed(evt);
}
});
jPanel7.add(inKeterangan, java.awt.BorderLayout.NORTH);

jList4.setEnabled(false);
jScrollPane5.setViewportView(jList4);

jPanel7.add(jScrollPane5, java.awt.BorderLayout.CENTER);

jPanel3.add(jPanel7);

jPanel2.add(jPanel3, java.awt.BorderLayout.CENTER);

getContentPane().add(jPanel2, java.awt.BorderLayout.CENTER);

java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
setBounds((screenSize.width-729)/2, (screenSize.height-488)/2, 729, 488);
}// //GEN-END:initComponents

private void processActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_processActionPerformed
// TODO add your handling code here:
if(!textKalimat.getText().isEmpty()){
textKalimat.setEditable(false);
splitKalimat(textKalimat.getText());
if(validasiSubjek(subjek)&&validasiPredikat(predikat)&&validasiObjek(objek)&&validasiKeterangan(keterangan)){
StringBuilder sb = new StringBuilder();
sb.append("subjek : "+subjek+"\n");
sb.append("predikat : "+predikat+"\n");
sb.append("objek : "+objek+"\n");
sb.append("keterangan : "+keterangan+"\n");
info.setText(sb.toString());
}else{
info.setText("POLA KALIMAT YANG ANDA MASUKKAN TIDAK SESUAI DENGAN S-P-O-K DIBAWAH");
}
}
}//GEN-LAST:event_processActionPerformed


private void inSubjekKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_inSubjekKeyPressed
// TODO add your handling code here:
if(evt.getKeyCode()==KeyEvent.VK_ENTER){
if(!inSubjek.getText().equals(null)){
modelSubjek.addElement(inSubjek.getText());
himpSubjek.add(inSubjek.getText());
inSubjek.setText("");
}
}
}//GEN-LAST:event_inSubjekKeyPressed

private void inPredikatKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_inPredikatKeyPressed
// TODO add your handling code here:
if(evt.getKeyCode()==KeyEvent.VK_ENTER){
if(!inPredikat.getText().equals(null)){
modelPredikat.addElement(inPredikat.getText());
himpPredikat.add(inPredikat.getText());
inPredikat.setText("");
}
}
}//GEN-LAST:event_inPredikatKeyPressed

private void inObjekKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_inObjekKeyPressed
// TODO add your handling code here:
if(evt.getKeyCode()==KeyEvent.VK_ENTER){
if(!inObjek.getText().equals(null)){
modelObjek.addElement(inObjek.getText());
himpObjek.add(inObjek.getText());
inObjek.setText("");
}
}
}//GEN-LAST:event_inObjekKeyPressed

private void inKeteranganKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_inKeteranganKeyPressed
// TODO add your handling code here:
if(evt.getKeyCode()==KeyEvent.VK_ENTER){
if(!inKeterangan.getText().equals(null)){
modelKeterangan.addElement(inKeterangan.getText());
himpKeterangan.add(inKeterangan.getText());
inKeterangan.setText("");
}
}
}//GEN-LAST:event_inKeteranganKeyPressed

private boolean cekIsiDataPolaKalimat(){
if(himpSubjek.isEmpty()||himpPredikat.isEmpty()||himpObjek.isEmpty()||himpKeterangan.isEmpty())
return true;
else
return false;
}

private void textKalimatKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_textKalimatKeyReleased
// TODO add your handling code here:
if(cekIsiDataPolaKalimat()){
textKalimat.setBackground(Color.red);
textKalimat.setText("");
}else{
textKalimat.setBackground(Color.white);
if(countToken()==6){
textKalimat.setEditable(false);
textKalimat.setText(textKalimat.getText().substring(0,textKalimat.getText().lastIndexOf(" ")));
}
}

}//GEN-LAST:event_textKalimatKeyReleased

private void clearActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_clearActionPerformed
// TODO add your handling code here:
textKalimat.setText("");
textKalimat.setEditable(true);
info.setText("");
}//GEN-LAST:event_clearActionPerformed

/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Utama().setVisible(true);
}
});
}

// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton clear;
private javax.swing.JTextField inKeterangan;
private javax.swing.JTextField inObjek;
private javax.swing.JTextField inPredikat;
private javax.swing.JTextField inSubjek;
private javax.swing.JTextArea info;
private javax.swing.JLabel jLabel1;
private javax.swing.JList jList1;
private javax.swing.JList jList2;
private javax.swing.JList jList3;
private javax.swing.JList jList4;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel3;
private javax.swing.JPanel jPanel4;
private javax.swing.JPanel jPanel5;
private javax.swing.JPanel jPanel6;
private javax.swing.JPanel jPanel7;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JScrollPane jScrollPane3;
private javax.swing.JScrollPane jScrollPane4;
private javax.swing.JScrollPane jScrollPane5;
private javax.swing.JButton process;
private javax.swing.JTextField textKalimat;
// End of variables declaration//GEN-END:variables
}

source code scanner kalimat dengan bahasa c

#include
#include
#include

#define SPASI 0x20
#define KOSONG 0x0

int main(int argc, char *argv[])
{
char kalimat[255] = {0};
int jumlah;
printf("Masukkan Kalimat : ");
gets(kalimat);


for(int i=0;kalimat[i] != KOSONG;i++)
{
jumlah = 1;
if(isdigit(kalimat[i]))
{
printf("Error: menemukan angka di dalam kalimat\n");
exit(1);
}
for(int j=i+1;kalimat[j] != KOSONG;j++)
{
if(kalimat[i] != SPASI || kalimat[j] != SPASI)
{
if(kalimat[i] == kalimat[j])
{
kalimat[j] = SPASI;
++jumlah;
}
}
}

if(kalimat[i] != SPASI)
printf("%c = %d\n",kalimat[i],jumlah);
}
return 0;
}

practice in the class

1. The Armory Show, held in New York in 1913, was a important exhibition of modern European art.
2. Ripe fruit is often stored in a place who contains much carbon dioxide so that the fruit will not decay too rapidly.
3. In 1852 Massachusetts passed a law requiring all children from four to eighteen years of old to attend school.
4. The main purpose of classifying animals is to show the most probable evolutionary relationship of the different species to each another.
5. Matthew C Perry, a United States naval commander, gained fame not in war and through diplomacy.
6. One of the most impressive collections of nineteenth-century European paintings in the United States can be found to the Philadelphia Museum of Art.
7. Three of every four migrating water birds in North America visits the Gulf of Mexico's winter wetlands.
8. Charleston, West Virginia, was named for Charles Clendenin, who son George acquired land at the junction of the Elk and Kanawha rivers in 1787.
9. Financier Andrew Mellon donated most of his magnificent art collection to the National Galerry of Art, where it is now locating.
10. Soil temperatures in Death Valley, California, near the Nevada border, have been known to reach 90 of degrees Celcius.

Analisa Leksikal

1.1 Pengertian
Analisis Leksikal/Analisis Linier/Pembacaan Sekilas (Scanner). Dalam kaitan ini aliran karakter yang membentuk program sumber dibaca dari kiri ke kanan dan dikelompokkan dalam apa yang disebut token yaitu barisan dari karakter yang dalam suatu kesatuan mempunyai suatu arti tersendiri..
Analisis ini melakukan penerjemahan masukan menjadi bentuk yang lebih berguna untuk tahap-tahap kompilasi berikutnya. Analisis Leksikal merupakan antarmuka antara kode program sumber dan analisis sintaktik (parser). Scanner melakukan pemeriksaan karakter per karakter pada teks masukan, memecah sumber program menjadi bagian-bagian disebut Token. Analisis Leksikal mengerjakan pengelompokkan urutan-urutan karakter ke dalam komponen pokok: identifier, delimeter, simbol-simbol operator, angka, keyword, noise word, blank, komentar, dan seterusnya menghasilkan suatu Token Leksikal yang akan digunakan pada Analisis Sintaktik.

Model dasar untuk membentuk suatu Analisis Leksikal adalah Finite-State Automata, 2 aspek penting pembuatan Analisis Leksikal adalah:
• Menentukan token-token bahasa.
• Mengenali token-token bahasa dari program sumber.
Token-token dihasilkan dengan cara memisahkan program sumber tersebut dilewatkan ke parser. Analisis Leksikal harus mengirim token ke parser. Untuk mengirim token, scanner harus mengisolasi barisan karakter pada teks sumber yang merupakan 1 token valid. Scanner juga menyingkirkan informasi seperti komentar, blank, batas-batas baris dan lain-lain yang tidak penting (tidak mempunyai arti) bagi parsing dan Code Generator.
Scanner juga harus dapat mengidentifikasi token secara lengkap dan membedakan keyword dan identifier. Untuk itu scanner memerlukan tabel simbol. Scanner memasukkan identifier ke tabel simbol, memasukkan konstanta literal dan numerik ke tabel simbol sendiri setelah konversi menjadi bentuk internal.
Analisis Leksikal merupakan komponen kompilasi independen yang berkomunikasi dengan parser lewat antarmuka yang terdefinisi bagus dan sederhana sehingga pemeliharaan analisis leksikal menjadi lebih mudah dimana perubahan-perubahan terhadap analisis leksikal tidak berdampak pada pengubahan kompilator secara keseluruhan. Agar dapat memperoleh fitur ini, maka antarmuka harus tidak berubah. Kebanyakan kode yang menyusun analisis leksikal adalah sama untuk seluruh kompilator, tidak peduli bahasa.
Pada analisis leksikal yang dituntun tabel (table-driven lexical analyzer), maka satu-satunya yang berubah adalah tabel itu sendiri. Kadang diperlukan interaksi analisis leksikal dan analisis sintaktik yang lebih kompleks. Sehingga analisis leksikal harus dapat menganggap string sebagai token bertipe, bukan identifier. Untuk itu perlu komunikasi tingkat lebih tinggi yang biasanya dilakukan suatu struktur data dipakai bersama seperti tabel simbol. Analisis Sintaktik dapat memasukkan string ke tabel simbol, mengidentifikasi sebagai Type atau typedef, sehingga analisis leksikal dapat memeriksa tabel simbol untuk menentukan apakah lexeme adalah tipe token atau identifier.
1.2 Tugas-tugas Analsis Leksikal
Tugas-tugas Analisis leksikal antara lain sebagai berikut :1. Konversi Program Sumber Menjadi Barisan Token. Mengubah program sumber yang dipandang sebagai barisan byte/karakter menjadi token.
2. Menangani Kerumitan Sistem Masukkan/Keluaran. Karena analisis leksikal biasanya berhubungan langsung dengan kode sumber yang diwadahi file, maka analisis leksikal juga bertindak sebagai benteng untuk komponen-komponen lain di kompilator dalam mengatasi keanehan-keanehan sistem masukkan/keluaran sistem operasi dan sistem komputer.
Optimasi perlu dilakukan agar analisis leksikal membaca karakter degan sekaligus membaca sejumlah besar bagian file. Perangkat masukkan/keluaran benar-benar diisolasi agar tidak terlihat oleh parser dan komponen-komponen kompilator yang lain.
1.3 Tugas-tugas tambahan Analisis Leksikal
Tugas-tugas tambahan Analisis Leksikal antara lain sebagai berikut :1. Penghilangan komentar dan whitespace (tab,spasi,karakter lainnya).Tindakan housekeeping dilakukan scanner sehingga mengisolasikan dari parser dan komponen-komponen kompilator lain.
Peran ini menyederhanakan perancangan parser (dan grammar bahasa pemrograman). Scanner juga mencatat nomor baris saat itu sehingga penanganan kesalahan yang cerdas dapat mengirim pesan kesalahan dengan lebih akurat.
2. Konversi literal/konstanta numerik menjadi tipe data tertentu. Analisis leksikal dapat mengirim token, dan nilainya. Nilai ini biasa disebut atribut. Namun demikian, bila analisis leksikal ditambahin dengan tugas-tugas tambahan yang terlalu banyak juga akan menjadi tidak baik. Karena itu membatasi analisis
leksikal hanya untuk melakukan tugas pengenalan pola token (ditambah membuang komentar) adalah mempermudah pemeliharaan.
1.4 Tahap-tahap Pelaksanaan Analisis LeksikalTahap Pelaksanaan Analisis Leksikal antara lain sebagai berikut :
- Pada single one pass.
Terjadi interaksi antara scanner dan parser. Sacnner dipanggil saat parser memerlukan token berikutnya. Pendekatan ini lebih baik karena bentuk internal program sumber yang lengkap tidak perlu dibangun dan disimpan di memori sebelum parsing dimulai.
- Pada separate pass.
Scanner memproses secara terpisah, dilakukan sebelum parsing. Hasil scanner disimpan dalam file. Dari file tersebut, parsing melakukan kegiatannya.
Scanner mengirim nilai-nilai integer yang mempresentasikan bentuk internal token, bukan nilai-nilai string.
Keunggulan cara ini adalah ukurannya kecil dan tetap. Parser sangat lebih efisien bekerja dengan nilai integer yang mempresentasikan simbol daripada string nyata dengan panjang variabel.

1.5 Implementasi Analisis LeksikalImplementasi Analisis Leksikal antara lain sebagai berikut :
- Pengenalan Token.1. Scanner harus dapat mengenali token
2. Terlebih dahulu dideskripsikan token-token yang harus dikenali
- Pendeskripsian Token.1. Menggunakan reguler grammar. Menspesifikasikan aturan-aturan pembangkit token-token dengan kelemahan reguler grammar menspesifikasikan token berbentuk pembangkit, sedang scanner perlu bentuk pengenalan.
2. Menggunakan ekspresi grammar. Menspesifikasikan token-token dengan ekspresi reguler.
3. Model matematis yang dapat memodelkan pengenalan adalah finite-state acceptor (FSA) atau finite automata.
- Implementasi Analisis Leksikal sebagai Finite Automata.Pada pemodelan analisis leksikal sebagai pengenal yang menerapkan finite automata, analisis leksikal tidak cuma hanya melakukan mengatakan YA atau TIDAK. Dengan demikian selain pengenal, maka analisis leksikal juga melakukan aksi-aksi tambahan yang diasosiasikan dengan string yangsedang diolah.
Analisis leksikal dapat dibangun dengan menumpangkan pada konsep pengenal yang berupa finite automata dengan cara menspesifikasikan rutin-rutin (aksi-aksi) tertentu terhadap string yang sedang dikenali.
- Penanganan Kesalahan di Analisis Leksikal Hanya sedikit kesalahan yang diidentifikasi di analisis leksikal secara mandiri karena analisis leksikal benar-benar merupakan pandangan sangat lokal terhadap program sumber.
Bila ditemui situasi dimana analisis leksikal tidak mampu melanjutkan proses karena tidak ada pola token yang cocok, maka terdapat beragam alternatif pemulihan. yaitu:
1. "Panic mode" dengan menghapus karakter-karakter berikutnya sampai analisis leksikal menemukan token yang terdefinisi bagus
2. Menyisipkan karakter yang hilang
3. Mengganti karakter yang salah dengan karakter yang benar
4. Mentransposisikan 2 karakter yang bersebelahan.
Salah satu cara untuk menemukan kesalahan-kesalahan di program adalah menghitung jumlah transformasi kesalahan minimum yang diperlukan untuk mentransformasikan program yang salah menjadi program yag secara sintaks benar.

Senin, 29 Maret 2010

Penemuan Kapal Nabi Nuh AS

Di sebuah gunung yg sentiasa diselimuti salju yg terletak di Timur Turki, tersembunyi sebuah misteri “berharga” yang berusia lebih dari 5000 tahun.

Peninggalan sejarah yg maha berharga itu bukan saja menarik minat para pengkaji Sejarah saja, namun pihak penyelidik US seperti CIA/KGB pun mencoba untuk melakukan penelitian disana. Sejauh ini CIA telah menggunakan satelite dan pesawat ‘Stealth’ utk mengambil gambar objek yg terdampar di puncak gunung tersebut. Gambar2 itu telah menjadi “rahasia besar” dan tersimpan rapi dengan kawalan yg ketat bersama dengan “rahasia2″ penting yg lain di Pentagon. Sudah beratus2 orang mencoba untuk mendaki Gunung Aghi-Dahl yg kerap dijuluki juga sebagai “Gunung Kesengsaraan” atau dengan nama peta-nya yaitu Mount Ararat, namun hanya beberapa2 orang saja yang berhasil menaklukannya.Sebagian lagi selebihnya hanyalah menambah deretan panjang pendaki-pendaki yang menjadi korban keganasannya. Hingga hari ini, hanya ada beberapa orang pendaki yg dapat sampai ke puncak Mt.Ararat sekaligus dapat menyaksikan dgn mata kepala sendiri sebuah artifak yg ‘mahaberharga’ tersimpan abadi dipuncaknya.

Lalu apakah sebenarnya artifak “mahaberharga” yang terkubur selama ribuan tahun di puncak Ararat itu?
Yup,menurut para ahli kepurbakalaan, mereka menafsirkan bahwa artifak dengan dimensi yang sangat besar tersebut tak lain adalah The Great Noah Ark (Perahu/Bahtera Nabi Nuh)!

Seperti yang kita ketahui bahwa The Great Pyramid of Giza, Mesir telah terkubur didalam tanah selama kurang lebih 2000 tahun lamanya sebelum ditemukan dan dilakukan penggalian terhadapnya. Begitu pula halnya dengan The Great Noah Ark ,sebelum terjadinya sebuah gempa bumi hebat yang melanda daerah itu pada 2 Mei 1988 silam ,artifak tersebut tertimbun di bawah salju hampir selama 5000 tahun lamanya tanpa ada yang mengetahui bahwa sebenarnya tersimpan sebuah rahasia besar didalamnya.

Sebenarnya, zaman Nabi Noah AS dulu tidaklah seprimitif yg kita semua bayangkan. Pada hakikatnya pengetahuan Sains dan teknologi mereka sudah maju pada masa itu.
Contohnya dari beberapa hasil temuan di kaki Mount Ararat, Para Pengkaji dan Scientist Russia telah menemui lebih kurang 500 kesan artifak batu baterai elektrik purba yg digunakan utk menyadurkan logam.Tentunya temuan tersebut bisa membuktikan bahwa masyarakat zaman Nabi Noah/Nuh telah mengenal listrik.

Mengikut perkiraan para ahli ,Nabi Noah AS kira-kira memulai membangun bahteranya pada tahun 2465 B.C dan hujan lebat baru turun dan mengguyur bumi selama bertahun- tahun sehingga mengakibatkan munculnya air bah maha dasyat yang rata-rata dapat mengahiri sebagian populasi manusia dimuka bumi diperkirakan terjadi pada 2345 B.C

Rupa bentuk dari The Great Noah Ark itu sendiri sebenarnya tidak sama dengan bentuk kapal laut masa kini pada umumnya. Menurut para peneliti dan pendaki yg pernah melihat langsung “Noah Ark” di puncak Mt.Ararat serta beberapa image yang diambil dari pemotretan udara,The Great Noah Ark memang merupakan sebuah bahtera yang berdimensi sangat besar dan kokoh.

Kontruksi utamanya tersusun oleh susunan kayu dari species pohon purba yg memang sudah tidak bisa ditemui lagi didunia ini alias sudah punah.Pengukuran obyek yang ditandai mempunyai altitude 7.546 kaki dengan panjang dari bahtera kurang lebih 500 kaki,83 kaki lebar,dan 50 kaki tinggi. Ada juga Para Pengkaji berpendapat,”Noah Ark” berukuran lebih luas dari sebuah lapangan sepak bola.

Luas pada bagian dalamnnya cukup utk menampung ratusan ribu manusia.Jarak dari satu tingkat ke satu tingkat lainnya ialah 12 hingga ke 13 kaki. Sebanyak kurang lebih ribuan sampai pulahan ribu balak kayu digunakan untuk membangunnya.
Totalnya,terdapat kurang lebih ratusan ribu manusia dan hewan dari berbagai species yang ikut menaiki bahtera ini,Mengikuti kajian dari Dr.Whitcomb, kira2 terdiri 3.700 binatang mamalia, 8.600 jenis itik/burung,6300 jenis reptilia,2500 jenis amfibia yg menaiki The Great Noah Ark tersebut,sisanya adalah para kaum Nabi Nuh yang percaya akan ajaran yang dibawanya.Total berat kargo/muatan bahtera itu keseluruhan mungkin mencapai kurang lebih 24,300 ton.

Di sekitar obyek tersebut, juga ditemukan sebuah batu besar dengan lubang pahatan. para peneliti percaya bahwa batu tersebut adalah “drogue-stones”, di mana pada zaman dahulu biasanya dipakai pada bagian belakang perahu besar untuk menstabilkan perahu. Radar dan peralatan mereka menemukan sesuatu yang tidak lazim pada level “iron oxide” atau seperti molekul baja. Struktur baja tersebut setelah dilakukan penelitian bahwa jenis “vessel” ini telah berumur lebih dari 100.000 tahun, dan terbukti bahwa struktur dibuat oleh tangan manusia. Mereka percaya bahwa itu adalah jejak pendaratan perahu Nuh.

Beberapa sarjana berpendapat bahwa kemungkinan besar ‘Noah Ark’ ini dibangun disebuah tempat bernama Shuruppak, yaitu sebuah kawasan yg terletak di selatan Iraq.
Jika ia dibangun di selatan Iraq dan akhirnya terdampar di Utara Turkey,kemungkinan besar bahtera tersebut telah terbawa arus air sejauh kurang lebih 520 Km. Mount Ararat Mt.Ararat itu sendiri bukanlah sembarang gunung,ia adalah sebuah gunung yg unik. Diantara salah satu keunikan yg terdapat pada gunung ini ialah, pada setiap hari akan muncul pelangi pada sebelah utara puncak gunung itu.

Mt.Ararat ini ialah salah satu gunung yg mempunyai puncak yg terluas di muka bumi ini. Statusnya juga merupakan puncak tertinggi di Turki yaitu setinggi 16,984 kaki dari permukaan air laut.Sedangkan puncak kecilnya setinggi 12,806 kaki .Jika kita berhasil menaklukkan puncak besarnya ,kita dapat melihat 3 wilayah negara dari atasnya, yaitu “Russia,Iran, dan Turkey”.
Sebuah “batu nisan” yg didakwa kepunyaan nabi Nuh AS telah dijumpai di Mt.Lebanon di Syria. Batu nisan itu berukuran 120 kaki panjang.

Pada tahun 1917,Maharaja Russia Tsar Nicholas II mengirim sejumlah 150 org pakar dari berbagai bidang yg terdiri dari saintis,arkeolog dan tentara untuk melakukan penyelidikan terhadap The Great Noah Ark tersebut.

Setelah sebulan, tim ekspedisi itu baru sampai ke puncak Ararat. Segala kesukaran telah berhasil mereka lewati, dan akhirnya menemukan perahu Nuh tersebut. Dalam keadaan terkagum, mereka mengambil gambar sebanyak mungkin

Dalam keadaan terkagum, mereka mengambil gambar sebanyak mungkin. Mereka mencoba mengukur panjang perahu Noah dan didapati berukuran panjang 500 kaki, lebar 83 kaki dan tinggi 50 kaki, sebagian lainnya tenggelam di dalam salju. Hasil dari perjalanan itu dibawa pulang dan mau diserahkan kepada Tsar, malangnya sebelum sempat melaporkan temuan itu ke tangan kaisar, Revolusi Bolshevik Komunis (1917) meletus. Laporan itu akhirnya jatuh ke tangan Jenderal Leon Trotsky. Sehingga sampai sekarang masih belum diketahui, apakah laporan itu masih disimpan atau dimusnahkan.

sumber : http://sunatullah.com/tulisan-artikel/penemuan-kapal-nabi-nuh-as.html

PIPELINE

PIPELINE
Arti istilah pipeline dianggap berkaitan erat dengan pengertian berikut :
Teknik yang populer dalam meningkatkan kecepatan CPU. merupakan suatu saluran untuk mengalirkan instruksi ke CPU seperti pada tahapan fetch, decode, execute, store dan hal lainnya. Pada prosesor yang menggunakan pipeline ini, setiap tahapan dari pipeline dilaksanakan berdasarkan clock cycle yang dimiliki oleh prosesor tersebut. Lihat juga Designing a faster CPU, Superscalar, branch, speculation execution.



Ada beberapa istilah lain yang mungkin terkait :

Hyper Pipelined Technology
Bagian dari mikro arsitektur Intel® NetBurst™ prosesor Pentium® 4. Hyper-pipelined technology mengga…

Pixel Tapestry II
Istilah ATi untuk pixel-rendering unit yang terdiri dari empat pipeline.

Intel® NetBurstT micro-architecture
Intel® NetBurst™ micro-architecture memberikan sejumlah fitur baru termasuk Hyper Pipelined Technolo…

Dataflow languages
Bahasa pemrograman yang mempercayakan aliran datanya dikelola oleh suatu program spesifik. Umumnya d…

Media processor
Merupakan salah satu CPU untuk keperluan khusus:CPUs for special purposes, chip ini adalah kombinasi…

Sumber : http://www.total.or.id/info.php?kk=pipeline

Physx

Secara garis besar PhysX berarti FISIKA yaitu kalkulasi yang diterapkan dalam game untuk mensimulasikan benda-benda fisik sehingga berlaku layaknya di dunia nyata. PhysX mengacu pada teknologi di kartu grafis dan juga pada piranti lunak/ software yang digunakan untuk mengembangkan game.
Teknologi PhysX pertama kali dikembangkan oleh Ageia yang kini telah diakuisisi oleh Nvidia. Akibatnya dukungan pada PhysX praktis ‘terikat’ pada kartu grafis dengan prosesor grafis Nvidia. Keunggulan menggunakan PhysX yaitu kinerja pada prosesor tidak terbebani. Hal ini karena perhitungan simulasi fisik dilakukan oleh prosesor grafis – GPU (Graphics Processing Unit), bukan prosesor utama. Akibatnya pemain akan mendapatkan lebih banyak framerate (dalam satuan frame per second / fps) ketika menjalankan game.
Efek PhysX dirasakan dengan jelas ketika pemain menjumpai sebuah ledakan dalam game. Efek kehancuran yang ditimbulkan oleh ledakan itu menjadi lebih detail. Contohnya, dalam game Gears of War ketika pemain melemparkan granat maka ledakan yang ditimbulakan tampak lebih alami, serpihan yang mencuat pun lebih nyata. Efek lainnya yaitu: reruntuhan yang reaktif, tampilan air yang sangat nyata dan tentunya karakter yang lebih hidup.
Beberapa Game yang mendukung PhysX yaitu:

* Age of Empires 3
* Gears of War
* Tom Clancy’s: Ghost Recon Advanced Warfighter
* Farcry 2
* Unreal Tournament 3 (Semua game Unreal)
* Cryostasis
* Batman: Arkham Asylum

Lalu pertanyaannya, apakah graphic card tanpa dukungan PhysX dapat memainkan game-game yang dikembangkan dengan PhysX ? Jangan khawatir, ternyata jawabannya BISA. Game yang dikembangkan dengan teknologi PhysX tetap dapat dimainkan oleh graphic card non-PhysX, tetapi efeknya akan lebih terasa jika dimainkan dengan graphic card PhysX. Berikut ini beberapa seri GPU Nvidia yang mendukung PhysX:

* GeForce® 8600 GT
* GeForce® 8600 GTS
* GeForce® 8800 series: GeForce® 8800 GS, GeForce® 8800 GT, GeForce® 8800 GTS 512, GeForce® 8800 GTS, GeForce® 8800 GTX, GeForce® 8800 Ultra
* GeForce® 9500 GT
* GeForce® 9600 series: GeForce® 9600 GSO, GeForce® 9600 GSO 512, GeForce® 9600 GT
* GeForce® 9800 series: GeForce® 9800 GT, GeForce® 9800 GTX, GeForce® 9800 GTX+, GeForce® 9800 GX2
* GeForce® GTS 250
* GeForce® GTX series: GeForce® GTX 260, GeForce® GTX 275, GeForce® GTX 280, GeForce® GTX 285, GeForce® GTX 295

Ditulis dalam Hardware, IT
sumber : http://thodo.wordpress.com/

Contoh Lamaran Kerja Bahasa Inggris

Jakarta, November 13th, 2009

PO BOX 3633
JAKARTA 10036


For the attention of the HRD Manager

Dear Sir,

Re.: Application for “Supporting Staff (SST)”

I reply to your advertisement in Kompas dated 13th November 2009 that your company has an opening for “Supporting Staff (SST)” and I would like to apply for that position.

Minggu, 14 Maret 2010

Pemrograman Multimedia

1. Textbook, berikan URL lengkap sampai ke file (min.2)
* http://www.dinus.ac.id/download/romi-multmedia-udinus-1desember2007.pdf
*http://p3m.amikom.ac.id/p3m/dasi/maret08/07%20- %20AMIKOM_Yogyakarta_MULTIMEDIA%20DATABASE.pdf
* http://hasan.staff.uad.ac.id/new/attachments/052_Temu1-konsep-multimedia.pdf
* http://gmm.fsksm.utm.my/~sca3103/cgi-bin/bahan_kuliah/anita/Bab%201%20-%20Pengenalan%20MM.pdf
* http://lecturer.ukdw.ac.id/anton/download/multimedia4.pdf
* http://lecturer.ukdw.ac.id/anton/download/multimedia1.pdf
• http://imam_muiz.staff.gunadarma.ac.id/Downloads/files/7623/01+Tinjauan+Singkat+Mengenai+Multimedia.pdf
* http://elista.akprind.ac.id/upload/files/9055_01-Pengantar_MULTIMEDIA.pdf

2. Slide presentasi (.ppt) min.2
* http://eri.staff.gunadarma.ac.id/Downloads/files/5145/objekmulti.ppt
* http://elista.akprind.ac.id/staff/catur/SIJK/2009/00-Pendahuluan.ppt
* www.e-dukasi.net/sosialisasi/files/Multimedia/Multimedia.ppt
* http://www.akademik.unsri.ac.id/download/journal/files/gdr/GUI%20&%20Multimedia.ppt
* http://lecturer.eepis-its.edu/~nonot/babbage/Chapter6-Multimedia%5B1%5D.ppt

3. Artikel di jurnal atau proseding (min.4)
* http://www.masaguz.com/search/Jurnal+UI
* http://id.wikipedia.org/wiki/Multimedia
* http://rosni-gj.staff.gunadarma.ac.id/Downloads/files/9629/multimedia+def.doc
* http://v3.juhara.com/id/artikel/pemrograman-multimedia

4. contoh kasus dan solusi tentang pemrograman multimedia
Mungkin beberapa orng memiliki kendala dengan memory pada hp yang terbatas. Sehingga kita tidak bias memasukan file mp3, video and gambar dengan banyak. Saya dlu termasuk orang yg mengalami kendala tersebut. Tpi ada beberapa software yg dapat membantu saya sehingga saya dpt memsukan mp3, video and gambar dengan banyak. Software-software tersebut antara lain adalah :

* Diet mp3 : software ini dlu sering saya gunakan untuk mengkompresi file mp3 agar sizenya berubah mnjdi kecil, sehingga saya bsa memasukan banyak mp3 pada hp sya yg mmiliki memory kecil.

* photoshop : software ini digunakan untuk mengecilkan size foto2 koleksi saya. Jika kita foto menggunakan digital and kita ingin memaskan ke hp akan membutuhkan file size yg sngt besar, oleh karna itu sya gunakan ini untuk mengubah size nya agar file sizenya menjadi kecil and sehingga dapt muat banyak pada hp saya.

* total video converter : software ini saya gunakan untuk mengubah format video yg awalnya .avi menjadi .3gp. coz HP2 tertntu hnya support terhadap video .3gp. makanya saya gunakan software ini untuk mengkonvertnya dari .avi menjadi .3gp agar videonya dpt diputar dri hp saya.

Acer Perkenalkan Duo Proyektor Berteknologi NVIDIA 3D Vision-Ready

Acer baru saja memperkenalkan 2 video proyektor NVIDIA 3D Vision-Ready yaitu dengan model H5360 yang digunakan sebagai home theater entertainment serta model X1261 yang bisa digunakan di rumah, kantor dan juga sekolah. Di dalam proyektor tersebut sudah ditanamkan teknologi DLP yang mn mendukung teknologi 3D Vision sehingga Anda dapat menonton video 3D di dinding mana saja.

Model H5260 didesain khusus bagi home theater entertainment memiliki fitur beresolusi 1280×720p HD, terdiri dari 2500 lumen, tingkat kontras rasio 3200:1 serta 50-120Hz vertical refresh rate. Fitur lainnya yaitu HDMI port, S-video mini DIN, 3 jack RCA, component video, 2.5mm audio mini-jack dan input D-sub.

Sedangkan dalam model Acer X1261 memang dirancang khusus untuk kebutuhan rumahan, bisnis dan lingkungan sekolah. Model ini memiliki resolusi XGA, terdiri dari 2500 ANSI lumen, tingkat kontras rasio 3700:1 dan 50-120Hz vertical refresh rate serta HDMI input.

Kedua model proyektor Acer terbaru ini mampu memberikan pengalaman menonton video 3D yang nyaris nyata bila dipadukan dengan teknologi NVIDIA 3D Vision yang mana mengubah gambar 2 dimensi menjadi gambar 3 dimensi. NVIDIA 3D Vision merupakan kombinasi dari NVIDIA 3D Vision yang kompatibel dengan kartu grafis dan 3D Vision Kit. Di dalamnya mencakup perangkat lunak yang canggih yang dapat mengubah ratusan game PC game menjadi pengalaman yang luar biasa.

Tertarik mencobanya? Anda kini bisa membelinya di Amazon dengan kisaran harga 699 USD (7 juta rupiah) untuk model Acer H5360 dan 579 USD (5,8 juta rupiah) untuk model X1261.


sumber : http://www.beritateknologi.com/acer-perkenalkan-duo-proyektor-berteknologi-nvidia-3d-vision-ready/

Jumat, 05 Maret 2010

Sekilas Tentang VRML

Pengertian VRML97

VRML97 adalah spesifikasi Virtual Reality Modeling Language yang telah diresmikan oleh ISO (international Standard Organization) pada bulan April 1997 sebagai bahasa VRML standar dunia. Spesifikasi ini masih belum mengalami perubahan, meskipun telah dilakukan upaya-upaya penyempurnaan. Menurut informasi terbaru (juli 1999).

Para pakar VRML telah menyempurnakan desain spesifikasi VRML 1.0 dengan memperbaiki node (perintah dasar VRML) lama dan memberikan berbagai node baru untuk menambah kemampuan interaktif. Selain itu, VRML97 memungkinkan user melakukan desain lingkungan virtual 3D lebih realistis disertai dengan animasi 3D.

Pemrograman ini memiliki keunggulan dalam pembuatan dunia maya, yaitu :

1. Lebih Interaktif

Pada VRML97, suatu objek didalam lingkungan virtual dapat leluasa berinteraksi secara langsung tanpa mempengaruhi objek lain.

2. Lebih Reality

Dalam pemrograman ini objek juga dapat disimulasikan dengan lingkungan serealistis mungkin, sehingga suatu lingkungan virtual 3D dapat diciptakan menyerupai aslinya.

3. Lebih Dinamik

VRML97 dikatakan lebih dinamik karena objek yang dibuat dapat bergerak dari satu tempat ke tempat lain ataupun dapat dibuat perubahan warna objek atau sumber cahaya secara otomatis.

Pada penulisan ini objek yang akan dibuat lebih realistis dan interaktif tetapi tidak dinamis, sebab objek ini adalah suatu bentuk bangunan. Dimana lebih diutamakan keaslian seperti objek sesungguhnya.

Hirarki dan Struktur

Dunia VRML terbangun dari stuktur yang terhirarki. File VRML sendiri adalah hirarki yang paling atas yang terdiri dari header, scene-graph, prototype dan event routing. Struktur yang paling bawah adalah node yang terdiri dari filed yang berisi property dan informasi tentang node yang dimilikinya. Secara garis besar, scene-graph merupakan kumpulan dari node yang dibangun. Tetapi node yang berisikan field inipun bisa juga berisi node lainnya, sehingga dapat membentuk struktur cascading. Pada penulisan ini dibuat contoh bentuk sederhana dari pemrograman VRML97 agar bisa dibayangkan bagaimana bentuk strukturnya.

#VRML V2.0 utf8

Group {

children [

Shape {

Appearance Appearance {

material Material {

diffuseColor 1 0 0

}

}

geometry Box {size 2 2 2}

}

]

}

pada contoh tersebut scenegraph digambarkan menjadi sebuah kotak berwarna merah yang berukuran 2 x 2 x 2 (gambar 2.1)

Gb 2.1 Scene terdiri dari kotak berwarna merah dengan latar belakang gelap

keterangan singkat dari source code pada contoh, Group adalah salah satu jenis node yang mempunyai field children . Dalam field children didefinisikan lagi node Shape yang mempunyai field appearance dan geometry . Dalam field geometry didefinisikan node Box yang mempunyai field size, yang merupakan informasi geometri dari objek kotak. Kalau diperhatikan, node selalu diawali dengan huruf besar, sedang field dengan huruf kecil. Sekarang akan dibahas lebih rinci dari struktur yang membentuk file VRML.

Struktur File VRML

A. Header

Header digunakan untuk mengidentifikasi jenis encoding yang dipakai dalam membangun file VRML. Format header ini seperti berikut:

#VRML V2.0 [optional comment]

Pada versi VRML97 dalam praktiknya hanya digunakan tipe encoding utf8, sedang pada versi 1.0 dipakai ascii. Baris header ini harus ditulis pada baris pertama dari file VRML. Baris berikutnya yang berawalan # akan diinterpretasi sebagai komentar. Untuk diingat, VRML ini mengenal perbedaan antara huruf besar dan kecil. Contoh baris header adalah berikut:

#VRML V2.0 utf8 Pembuatan Objek 3D

#Ini adalah baris komentar

B. Sintaks Pernyataan Node

Node dapat dibayangkan sebagai jenis objek dasar untuk membangun sebuah scene. Sedang kumpulan dari scene-scene ini nantinya akan membentuk dunia virtual. Dengan kata lain, node adalah objek dasar yang diperlukan untuk merealisasikan dunia virtual. Contoh tipe dari objek dasar ini adalah bentuk geometri, tampilan permukaan, latar belakang, sensor dan sebagainya. Dalam VRML terdapat lebih dari 50 tipe node standar yang sudah didefinisikan. Untuk mengklasifikasikan node ini, tentu saja bisa bermacam-macam menurut kategori yang diinginkan. Menurut fungsinya, node akan diklasifikasikan yaitu :

  • Grouping. Dengan node tipe ini node-node lainnya dapat dikelompokkan menjadi satu grup. Tetapi tidak semua node dapat digunakan di sini. Untuk penulisan, node termasuk jenis ini yaitu Transform yang sistem koordinatnya akan dijadikan referensi bagi node-node di dalamnya.
  • Geometri dan penampakan. Dengan node ini maka jenis objek dapat dibangun seperti kubus, silinder, bola, kerucut dan sebagainya. Objek geometri ini dapat mempunyai penampakan, seperti warna, jenis materi, textur yang ditentukan dengan bantuan node Shape, Appearance, dan Material.

Pada penulisan ini klasifikasi node yang digunakan hanyalah sebatas pada penjelasan tadi.

C. Struktur Pernyataan Filed

Filed adalah bagian dari node yang memberikan sifat – sifat (properties) objek (node) pada virtual world. Objek yang berbeda sifat satu sama lain dapat dibentuk dengan filed, meskipun penggunaan node yang sama. Pernyataan suatu field terdiri atas nama filed dan diikuti oleh harga (value) filed itu. Ada dua jenis filed pada spesifikasi VRML97, yaitu filed yang memerlukan hanya satu harga Single-valued Field disingkat SF yang ditulis dalam format:

Contoh : diffuseColor 1 0 0

diffuseColor merupakan namaFiled yang fungsinya untuk memberikan warna dan 1 0 0 merupakan nilaiField yang hasilnya adalah berwarna merah. Sedangkan filed yang menerima lebih dari satu Multi-valued Filed disingkat MF dan ditulis dalam format :

[ ]

Contoh : point [ -4 0 -4, -5 0 -5]

Point merupakan namaFiled yang fungsinya untuk menentukan sebuat titik yang memiliki nilaiField lebih dari satu. Pada sintaks MF terdapat kurung siku “[...]” yang mengapit deretan nilai-nilai field. Jika pemberian harga hanya satu pada filed ini maka boleh dihilangkan kurung siku.

Objek Dasar Geometri

Objek dasar geometri terdiri dari node Box, Cone, Cylnder, Sphere dan Text. Node ini dipakai untuk membuat objek kotak, kerucut, silinder, bola dan text. Field yang dimiliki oleh node ini tentu saja tidak sama, karena untuk membuat objek yang berbeda ini bisa digunakan parameter yang berlainan. Setiap node tersebut memiliki satuan nilai yang sama yaitu meter. Pada pemrograman ini satuan pada nilai objek tersebut tidak perlu ditulis, nilai yang diberikan hanya berupa angka. Pada pembahasan ini, Node yang akan dibahas hanya node Box dan Cylinder.

A. Node Box (Kotak)

Suatu objek kotak 3D dapat diciptakan menggunakan node Box. Jika ingin membuat suatu kotak CPU, lemari es, meja, kursi, ruangan, gedung bertingkat sederhana atau lainnya, maka node Box sangat bermanfaat. Node box hanya memiliki satu field yang mempunyai bentuk sebagai berikut :

Box { size 2 2 2 }

Nilai dari variabel size adalah nilai default jika tidak didefinisikan. Seperti terlihat pada Gambar 2.2, posisi titik asal dari sistem koordinat berada di pusat dari box, yaitu (0,0,0) dari sistem koordinat lokal. Sedang elemen pertama dari ukurannya adalah panjang pada sumbu x, elemen kedua panjang pada sumbu y dan elemen ketiga panjang pada sumbu z.


Gb 2.2. Node Box dengan ukuran dan sistem koordinatnya

B. Node Cylinder (Silinder)

Node Cylinder dipakai untuk membuat objek silinder. Sebagai parameter objek, node ini memiliki filed height dan radius yang bertipe data SFFloat dengan nilai default masing – masing 2 dan 1. Selain itu node ini mempunyai 3 field lainnya masing-masing dari tipe SFBool (tipe data boolean), yaitu top, bottom dan side yang mengindikasikan apakah sisi yang disebut dalam field nyata atau tidak. Jika nilai ini FALSE maka pada sisi yang bersangkutan tidak akan dilakukan proses rendering dan sisi ini tidak dapat dipakai dalam proses deteksi kolisi (collision detection). Letak sistem koordinat dan parameter geometri dari objek ini ditampilkan pada Gambar 2.3.


Gb 2.3. Node Cylinder dengan ukuran dan sistem koordinatnya

Struktur dari node ini adalah seperti berikut.

Cylinder { bottom TRUE

height 2

radius 1

side TRUE

top TRUE

}

Nilai pada filed bottom dan top adalah TRUE. Program dijalankan maka objek silinder ini akan memiliki bidang atas dan bidang bawah. Jika nilai diberi FALSE, maka bidang atas dan bawah tidak ada sehingga bentuk silinder yang dihasilkan akan berlubang. Sedangkan side adalah selimut dari objek silider. Jika nilai diisi FALSE maka bentuk objek silinder tidak akan ada. Untuk filed height merupakan suatu tinggi dari silinder dan untuk radius adalah jari – jari pada silinder yang akan berbentuk bulat.

Transformasi Dari Sistem Koordinat

Transformasi adalah suatu perubahan posisi, orientasi, maupun perubahan bentuk objek. Pada pemrograman VRML97 operasi transformasi dapat dilakukan dengan menggunakan node Transform. Pada node Transform memiliki 3 Filed dasar dalam mentranslasikan objek, yaitu :

Filed translation digunakan untuk menggeser benda dari posisi default ke lokasi tertentu. Harga default adalah (0 0 0) atau tidak ada pergeseran. Masing – masing dari harga filed ini adalah suatu sumbu x, y, dan z.

Filed rotation digunakan untuk mengubah orientasi objek terhadap suatu sumbu rotasi tertentu. Harga default pada filed ini adalah (0 0 1 0). Komponen yang berada didalam field rotation ini adalah (x y z sudut). Jadi arti dari harga default pada field ini yaitu objek diputar pada sumbu Z sebesar 0 radian.

Filed scale digunakan untuk mengubah sekala pada objek. Harga default yang diberikan adalah (1 1 1) apabila harga field ini tidak dituliskan pada program. Komponen yang berada didalam filed ini adalah (x y z) dan masing – masing harus diberi harga lebih besar dari 0.


sumber :

Anwar Bachtiar, Bahasa Pemrograman VRML97, Elex Media Komputindo, Jakarta, 1999.


Selasa, 02 Maret 2010

Konvolusi Image dengan Matlab

Konvolusi adalah salah satu proses filtering image yang sering dilakukan pada proses pengolahan
gambar. Pada MATLAB terdapat banyak sekali cara yang dapat dilakukan untuk melakukan proses
konvolusi. Proses konvolusi dilakukan dengan menggunakan matriks yang biasa disebut mask yaitu
matriks yang berjalan sepanjang proses dan digunakan untuk menghitung nilai representasi lokal
dari beberapa piksel pada image.
Contoh implementasi konvolusi ini yaitu:


gambar=imread('love.jpg');
mask = [-1 -1 -1; -1 8 -1; -1 -1 -1];
gray=rgb2gray(gambar);
thresh=graythresh(gray);
imbw=im2bw(gray,thresh);
hasil=conv2(double(imbw),mask,'valid');
imshow(gambar)
figure, imshow(hasil)


hasil :


Pengenalan Matlab 7.1

MATLAB adalah sebuah bahasa dengan (high-performance) kinerja tinggi untuk komputasi masalah teknik. Matlab mengintegrasikan komputasi, visualisasi, dan pemrograman dalam suatu model yang sangat mudah untuk pakai dimana masalah-masalah dan penyelesaiannya diekspresikan dalam notasi matematika yang familiar. Penggunaan Matlab meliputi bidang-bidang:

Matematika dan Komputasi
Pembentukan Algorithm
Akusisi Data
Pemodelan, simulasi, dan pembuatan prototipe
Analisa data, explorasi, dan visualisasi
Grafik Keilmuan dan bidang Rekayasa

MATLAB merupakan suatu sistem interaktif yang memiliki elemen data dalam suatu array sehingga tidak lagi kita dipusingkan dengan masalah dimensi. Hal ini memungkinkan kita untuk memecahkan banyak masalah teknis yang terkait dengan komputasi, kususnya yang berhubungan dengan matrix dan formulasi vektor, yang mana masalah tersebut merupakan momok apabila kita harus menyelesaikannya dengan
menggunakan bahasa level rendah seperti Pascall, C dan Basic. Nama MATLAB merupakan singkatan dari matrix laboratory. MATLAB pada awalnya ditulis untuk memudahkan akses perangkat lunak matrik yang telah dibentuk oleh LINPACK dan EISPACK. Saat ini perangkat MATLAB telah menggabung dengan LAPACK dan BLAS library, yang merupakan satu kesatuan dari sebuah seni tersendiri dalam perangkat lunak untuk komputasi matrix. Dalam lingkungan perguruan tinggi teknik, Matlab merupakan perangkat standar untuk memperkenalkan dan mengembangkan penyajian materi matematika, rekayasa dan kelimuan. Di industri, MATLAB merupakan perangkat pilihan untuk penelitian dengan produktifitas yang tingi, pengembangan dan analisanya. Fitur-fitur MATLAB sudah banyak dikembangkan, dan lebih kita kenal dengan nama toolbox. Sangat penting bagi seorang pengguna Matlab, toolbox mana yang mandukung untuk learn dan apply technologi yang sedang dipelajarinya. Toolbox toolbox ini merupakan kumpulan dari fungsi-fungsi MATLAB (Mfiles) yang telah dikembangkan ke suatu lingkungan kerja MATLAB untuk memecahkan masalah dalam kelas particular. Area-area yang sudah bisa dipecahkan dengan toolbox saat ini meliputi pengolahan sinyal, system kontrol, neural networks, fuzzy logic, wavelets, dan lain-lain.

Rabu, 24 Februari 2010

Lumbricus Rubellus


Diantara lebih dari 1800 jenis cacing yang dikenal oleh para ilmuwan ada dua jenis cacing yang biasa kita pakai di dalam budidaya cacing dan proses pembuatan pupuk organik, yaitu jenis Caing Lumbricus Rubellus dan Eisenia Fetida (cacing Tiger/harimau)
Cacing tanah jenis Lumbricus Rubellus adalah cacing tanah yang tergolong dalam kelompok binatang avertebrata (tidak bertulang belakang) yang hidupnya di tanah yang gembur dan lembab. Cacing ini adalah salah satu jenis cacing yang termasuk dalam kelompok cacing epigeic. Kedua jenis cacing ini sangat mudah untuk diternak ,selain itu perkembangbiakannya sangat cepat dibanding dengan jenis cacing lain.
Limbah kotoran sapi sangat bagus untuk pertumbuhan berat badan dan perkembangbiakan cacing lumbricus Rubellus. Apa bila kita masukan 1 kg cacing lumbricus Rubellus pada satu kotak yang berisi media campuran 1 kg serbuk gergaji yang telah kita rendam dalam air dengan tujuan untuk menghilangkan getah dan bau, dengan 3 kg kotoran sapi yang sudah lama atau sudah menghitam. Lalu kita berikan pakan dari ampas tahu atau ampas aren, maka dalam jangka waktu dua minggu cacing tersebut akan bertelur.
Setelah terlihat telurnya matang atau terlihat kekuningan, kita pisahkan antara cacing induk dengan telornya, induknya kita simpan kemedia yang baru dan telor yang berada dimedia tadi kita biarkan selama kurang lebih dua minggu, maka telor tersebut akan menetas setelah menetas baru kita kasih pakan secara rutin, dalam waktu satu bulan kemudian atau paling lambat 6 minggu cacing tersebut telah jadi dewasa dan siap bertelur seperti induknya.
Sementara itu, Induknya yang sudah bertelur, setelah dua minggu kemudian dia akan bertelur lagi. Terus begitu, bila pakannya bagus induk cacing tersebut setiap dua atau tiga minggu sekali ia akan bertelur. Dalam dua bulan dia akan menghasilkan empat keturunan, bila kita punya induk sebanyak 100kg dalam dua bulan kita akan punya 800kg calon anak cacing, bahkan bisa saja lebih karena setiap satu butir telur cacing lumbricus rubellus berisi 4 ekor anak cacing.
Cacing tanah menyimpan banyak khasiat. Kenyataannya, banyak orang yang mengonsumsinya untuk menyembuhkan beberapa penyakit, tanpa efek samping.
Menurut para ahli cacing Lumbricus Rubellus mengandung kadar protein sangat tinggi sekitar 76%. Kadar ini lebih tinggi dibandingkan daging mamalia (65%) atau ikan (50%).

Beberapa penelitian telah membuktikan adanya daya antibakteri dari protein hasil ekstrasi cacing tanah yang dapat menghambat pertumbuhan bakteri gram negatif Escherichia coli, Shigella dysenterica, Staphylococcus aureus dan Salmonella thyp
Dari berbagai sumber para ahli dan pakar cacing mengatakan bahwa banyak sekali manfaat dan khasiat dari cacing tanah ini . Diantaranya untuk :
Sembuhkan Typus
Menurunkan kadar kolesterol
Meningkatkan daya tahan tubuh
Menurunkan tekanan darah tinggi
Meningkatkan nafsu makan
Mengobati infeksi saluran pencernaan seperti typus, disentri, diare, serta gangguan perut lainnya seperti maag
Mengobati penyakit infeksi saluran pernapasan seperti: batuk, asma, influenza, bronchitis dan TBC
Mengurangi pegal-pegal akibat keletihan maupun akibat reumatik
Menurunkan kadar gula darah penderita diabetes
Mengobati wasir, exim, alergi, luka dan sakit gigi. (diolah dari beberapa sumber).