Tekhnik Pemrograman

It's our

Powered By Blogger

Sabtu, 26 Maret 2011

Blogger Buzz: Express yourself with the Blogger Template Designer

Blogger Buzz: Express yourself with the Blogger Template Designer
Diposkan oleh Taufik Hidayat di Sabtu, Maret 26, 2011 Tidak ada komentar:
Kirimkan Ini lewat EmailBlogThis!Berbagi ke TwitterBerbagi ke Facebook
Link ke posting ini
Blog ini : 
Beranda
Langganan: Entri (Atom)

Taufik Hidayat

Taufik Hidayat

Tekhnik Pemrograman Abstract Data

Abstract Data type Apa yang Dimaksud dengan Abstract Data Type? Abstract Data Type (ADT) adalah kumpulan dari elemen-elemen data yang disajikan dengan satu set operasi yang digambarkan pada elemen-elemen data tersebut. Stacks, queues dan binary trees adalah tiga contoh dari ADT. Stacks Stack adalah satu set atau urutan elemen data dimana manipulasi data dari elemen - elemen hanya diperbolehkan pada tumpukan teratas dari stack. Hal ini merupakan perintah pengumpulan data secara linier yang disebut “last in, first out” (LIFO). Stacks berguna untuk bermacam-macam aplikasi seperti pattern recognition dan pengkonversian antar notasi infix, postfix dan prefix . Dua operasi yang dihubungkan dengan stacks adalah operasi push dan pop. Push berarti memasukkan data kedalam stacks yang paling atas dimana pop sebagai penunjuk/pointer untuk memindahkan elemen ke atas stacks. Untuk memahami bagaimana cara kerja stacks, pikirkan bagaimana Anda dapat menambah atau memindakan sebuah data dari tumpukan data. Pikiran Anda akan memberitahu Anda untuk menambah atau memindahkan data hanya pada stack yang paling atas karena jika menggunakan cara lain, dapat menyebabkan tumpukan stack akan terjatuh. Ilustrasi Stack Stack akan berarti penuh jika jangkauan cell teratas disimbolkan dengan n-1. Jika nilai teratas / top sama dengan -1, stack berarti kosong. Pengenalan Pemrograman 2 5 Queues Queues adalah contoh lain dari ADT. Hal ini merupakan perintah pengumpulan data yang disebut “first-in, first-out”. Aplikasi ini meliputi jadwal pekerjaan dalam operating system, topological sorting dan graph traversal. Enqueue dan dequeue merupakan operasi yang dihubungkan dengan queues. Enqueu menunjuk pada memasukkan data pada akhir queue dimana dequeue berarti memindahkan elemen dari queue tersebut. Untuk mengingat bagaimana queue bekerja, ingatlah arti khusus dari queue yaitu baris. Berikut ini bagaimana cara kerja queue. Siapa yang akan mendapatkan kesempatan pertama untuk bertemu bintang idolanya dari mereka yang sedang menunggu dalam sebuah barisan? Seharusnya orang pertama yang berada pada barisan tersebut. Orang ini mendapat kesempatan pertama untuk meninggalkan barisan. Hubungkan hal tersebut dengan bagaimana queue bekerja. Berikut ini merupakan ilustrasi dari bagaimana tampilan dari queue. 0 1 2 3 4 5 6 7 8 9 ... n-1 Eve Jayz KC Jojo Toto Kyla DMX frot end Ilustrasi Queue Queue akan kosong jika nilai end kurang dari front. Sementara itu, akan penuh jika end sama dengan n-1. 3.3.4 Sequential and Linked Representation ADTs biasanya dapat diwakilkan menggunakan sequential dan linked representation. Hal ini memudahkan untuk membuat sequential representation dengan menggunakan array. Bagaimanapun juga, masalah dengan menggunakan array adalah pembatasan size, yang membuatnya tidak fleksibel. Dengan menggunakan array, sering terjadi kekurangan atau kelebihan space memory. Mempertimbangkan hal tersebut, Anda harus membuat sebuah array dan mendeklarasikannya agar mampu menyimpan 50 elemen. Jika user hanya memasukkan 5 elemen, maka 45 space pada memory akan sia-sia. Disisi lain, jika user ingin memasukkan 51 elemen, space yang telah disediakan didalam array tidak akan cukup. Dibandingkan dengan sequential representation, linked representation lebih sedikit rumit tetapi lebih fleksibel. Linked representation menyesuaikan memory yang dibutuhkan oleh user. Penjelasan lebih lanjut pada linked representation akan didiskusikan pada bab berikutnya. Sequential Representation dari Integer Stack class SeqStack { int top = -1; /* initially, the stack is empty */ int memSpace[]; /* storage for integers */ int limit; /* size of memSpace */ SeqStack() { memSpace = new int[10]; limit = 10; } SeqStack(int size) { memSpace = new int[size]; limit = size; } boolean push(int value) { top++; /* check if the stack is full */ if (top < limit) { memSpace[top] = value; } else { top--; return false; } return true; } int pop() { int temp = -1; /* check if the stack is empty */ if (top >= 0) { temp = memSpace[top]; top--; } else { return -1; } return temp; } public static void main(String args[]) { SeqStack myStack = new SeqStack(3); myStack.push(1); myStack.push(2); myStack.push(3); myStack.push(4); System.out.println(myStack.pop()); System.out.println(myStack.pop()); System.out.println(myStack.pop()); System.out.println(myStack.pop()); } } Linked Lists Sebelum mengimplementasikan linked representation dari stacks, pertama mari kita pelejari bagaimana membuat linked representation. Dalam hal ini, kita akan menggunakan linked lists. Linked list merupakan struktur dinamis yang berlawanan dengan array, yang merupakan struktur statis. Hal ini berarti linked list dapat tumbuh dan berkurang dalam size yang bergantung pada kebutuhan user. Linked list digambarkan sebagai kumpulan dari nodes, Yang masing-masing berisi data dan link atau pointer ke node berikutnya didalam list. Berikut ini merupakan contoh dari non-empty linked list dengan 3 node. Gambar 3.6b: Non-empty linked list dengan tiga node Berikut ini bagaimana class node diimplementasikan. Class ini dapat digunakan untuk membuat linked list. class Node { int data; /* integer data contained in the node */ Node nextNode; /* the next node in the list */ } class TestNode { public static void main(String args[]) { Node emptyList = null; /* create an empty list */ /* head points to 1st node in the list */ Node head = new Node(); /* initialize 1st node in the list */ head.data = 5; head.nextNode = new Node(); head.nextNode.data = 10; /* null marks the end of the list */ head.nextNode.nextNode = null; /* print elements of the list */ Node currNode = head; while (currNode != null) { System.out.println(currNode.data); currNode = currNode.nextNode; } } } Linked Representation dari Integer Stack Sekarang Anda telah mempelajari tentang linked list. Maka Anda telah siap untuk menerapkan apa yang telah Anda pelajari untuk implementasi linked representation dari stack. class DynamicIntStack{ private IntStackNode top; /* head or top of the stack */ class IntStackNode { /* node class */ int data; IntStackNode next; IntStackNode(int n) { data = n; next = null; } } void push(int n){ /* no need to check for overflow */ IntStackNode node = new IntStackNode(n); node.next = top; top = node; } int pop() { if (isEmpty()) { return -1; /* may throw a user-defined exception */ } else { int n = top.data; top = top.next; return n; } } boolean isEmpty(){ return top == null; } public static void main(String args[]) { DynamicIntStack myStack = new DynamicIntStack(); myStack.push(5); myStack.push(10); /* print elements of the stack */ IntStackNode currNode = myStack.top; while (currNode!=null) { System.out.println(currNode.data); currNode = currNode.next; } System.out.println(myStack.pop()); System.out.println(myStack.pop()); } } Berita baik bahwaabstract data types telah siap untuk diimplementasikan dan dimasukkan dalam Java. Class Stack dan LinkedList diperbolehkan digunakan tanpa pengertian yang lengkap dari konsep ini. Bagaimanapun juga, sebagai ilmuwan komputer, sangat penting untuk mengerti konsep dari abstract data types. Oleh karena itu, penjelasan terperinci masih disampaikan dalam bagian yang terdahulu. Dengan peluncuran dari J2SE5.0, queue interface telah tersedia. Untuk detail pada class dan interface ini, dapat dilihat pada dokumentasi Java API. Kepada kita, Java telah menyajikan Collection classes dan interfaces yang lain, yang semuanya dapat ditemukan di java.util package. Contoh dari Collection classes termasuk LinkedList, ArrayList, HashSet dan TreeSet. Class tersebut benar-benar implementasi dari collection interfaces yang berbeda. Induk hirarki dari collection interfaces adalah collection interfaces itu sendiri. Sebuah collection hanya sebuah grup dari object yang diketahui sebagai elemennya sendiri. Collection memperbolehkan penggandaan/salinan dan tidak membutuhkan pemesanan elemen secara spesifik. SDK tidak menyediakan implementasi built-in yang lain dari interface ini tetapi mengarahkan subinterfaces, Set interfaces dan List interfaces diperbolehkan. Sekarang, apa perbedaan dari kedua interface tersebut. Set merupakan collection yang tidak dipesan dan tidak ada penggandaan didalamnya. Sementara itu, list merupakan collection yang dipesan dari elemen-elemen dimana juga diperbolehkannya penggandaan. HashSet, LinkedHashSet dan TreeSet suatu implementasi class dari Set interfaces. ArrayList, LinkedList dan Vector suatu implementasi class dari List interfaces. Collection Set List

Erlini

Erlini

Tekhnik pemrograman

Tekhnik Pemrograman Rekursif

Apa yang dimaksud dengan Rekursif?
Rekursif adalah teknik pemecahan masalah yang powerful dan dapat digunakan ketika inti dari masalah terjadi berulang kali. Tentu saja, tipe dari masalah ini dapat dipecahkan
mengunakan perkataan berulang-ulang (i.e., menggunakan konstruksi looping seperti for, while dan do-while).
Sesungguhnya, iterasi atau perkataan berulang-ulang merupakan peralatan yang lebih efisien jika dibandingkan dengan recursif tetapi recursion menyediakan solusi yang lebih
baik untuk suatu masalah. Pada rekursif, method dapat memanggil dirinya sendiri. Data yang berada dalam method tersebut seperti argument disimpan sementara kedalam stack sampai method pemanggilnya diselesaikan.

Rekursif Vs. Iterasi
Untuk pengertian yang lebih baik dari rekursif, mari kita lihat pada bagaimana macam - macam dari teknik iterasi. Dalam teknik-teknik tersebut dapat juga kita lihat penyelesaian sebuah loop yang lebih baik menggunakan rekursif dari pada iterasi. Menyelesaikan masalah dengan perulangan menggunakan iterasi secara tegas juga digunakan pada struktur kontrol pengulangan. Sementara itu, untuk rekursif, task diulangi dengan memanggil sebuah method pengulangan. Maksud dari hal tersebut adalah untuk menggambarkan sebuah masalah kedalam lingkup yang lebih kecil dari
pengulangan itu sendiri. Pertimbangan suatu perhitungan yang faktorial dalam penentuan bilangan bulat.

Definisi rekursif dari hal tersebut dapat diuraikan sebagai
berikut:
factorial(n) = factorial(n-1) * n; factorial(1) = 1. Sebagai contohnya, nilai
faktorial dari 2 sama dengan fatorial (1)*2,
dimana hasilnya adalah 2.
Faktorial dari 3 adalah 6,
dimana sama dengan faktorial dari (2)*3.

Pengenalan Pemrograman Rekursif

Dengan iterasi, proses diakhiri ketika kondisi loop gagal atau salah. Dalam kasus dari penggunaan rekursif, proses yang berakhir dengan kondisi tertentu disebut permasalahan dasar yang telah tercukupi oleh suatu pembatasan kondisi. Permasalahan yang mendasar merupakan kejadian yang paling kecil dari sebuah masalah.
Penggunaan dari iterasi dan rekursif dapat bersama-sama memandu loops jika hal ini tidak digunakan dengan benar.
Keuntungan iterasi dibandingkan recursion adalah performance yang lebih baik. Hal tersebut lebih cepat untuk recursion sejak terbentuknya sebuah parameter pada sebuah
method yang disebabkan oleh suatu CPU time. Bagaimanapun juga, rekursif mendorong practice software engineering yang lebih baik, sebab teknik ini biasanya dihasilkan pada
kode yang singkat yang lebih mudah untuk dimengerti dan juga mempromosikan reuseability pada suatu solusi yang telah diterapkan.
Memilih antara iterasi dan rekursif merupakan masalah dari menjaga keseimbangan antara baiknya sebuah performance dan baiknya software engineering.
Listing program berikut ini menunjukkan bagaimana menghitung faktorial menggunakan teknik iterasi.
class FactorialIter {
static int factorial(int n) {
int result = 1;
for (int i = n; i > 1; i--) {
result *= i;
}
Pengenalan Pemrograman Rekursif
J.E.N.I.
return result;
}
public static void main(String args[]) {
int n = Integer.parseInt(args[0]);
System.out.println(factorial(n));
}
}

Dibawah ini merupakan listing program yang sama tetapi menggunakan rekursif.
class FactorialRecur {
static int factorial(int n) {
if (n == 1) { /* The base case */
return 1;
}
/* Recursive definition; Self-invocation */
return factorial(n-1)*n;
}
public static void main(String args[]) {
int n = Integer.parseInt(args[0]);
System.out.println(factorial(n));
}
}

Print n in any Base:
Contoh yang lain Sekarang, pertimbangan dari masalah dalam pencetakkan suatu angka desimal yang
nilai basenya telah ditetapkan oleh pengguna. Ingat bahwa solusi dalam hal ini untuk menggunakan repetitive division dan untuk menulis sisa perhitungannya. Proses akan berakhir ketika sisa hasil pembagian kurang dari base yang ditetapkan. Dapat diasumsikan jika nilai input desimal adalah 10 dan kita akan mengkonversinya menjadi base 8. Inilah solusinya dengan perhitungan menggunakan pensil dan kertas.

Dari solusi diatas
, 10 adalah sama dengan 12 base 8.
Contoh berikutnya. Nilai input desimalnya adalah 165 dan akan dikonversi ke base 16.
Pengenalan Pemrograman Rekursif
J.E.N.I.
165 adalah sama dengan A5 base 16. Catatan: A=10.
Berikut ini merupakan solusi iterative untuk masalah diatas.
class DecToOthers {
public static void main(String args[]) {
int num = Integer.parseInt(args[0]);
int base = Integer.parseInt(args[1]);
printBase(num, base);
}
static void printBase(int num, int base) {
int rem = 1;
String digits = "0123456789abcdef";
String result = "";
/* the iterative step */
while (num!=0) {
rem = num%base;
num = num/base;
result = result.concat(digits.charAt(rem)+"");
}
/* printing the reverse of the result */
for(int i = result.length()-1; i >= 0; i--) {
System.out.print(result.charAt(i));
}
}
}

Berikut ini merupakan recursion untuk masalah yang sama dengan solusi sebelumnya.
class DecToOthersRecur {
static void printBase(int num, int base) {
String digits = "0123456789abcdef";
/* Recursive step*/
if (num >= base) {
printBase(num/base, base);
}
/* Base case: num < base */
System.out.print(digits.charAt(num%base));
}
public static void main(String args[]) {
int num = Integer.parseInt(args[0]);
int base = Integer.parseInt(args[1]);
printBase(num, base);
}
}

Nitalis

Nitalis

Pemrograman Generik

Bagaimana caranya menghindari "reinventing the wheel", atau membuat kembali sesuatu yang sudah ditemukan? Banyak struktur data dan algoritma, seperti yang sudah dibahas pada bab sebelumnya telah dipelajari, diprogram, dan diprogram ulang oleh mahasiswa ilmu komputer dalam beberapa generasi. Ini adalah kesempatan belajar yang sangat baik.

Sayangnya, algoritma dan data stuktur ini juga diprogram dan diprogram ulang oleh profesional komputer. Mereka menghabiskan waktu yang tidak perlu untuk memrogram ulang sesuatu yang sudah ada, bukannya membuat sesuatu yang lebih inovatif dan kreatif.

Programmer yang perlu menggunakan list atau pohon biner, seharusnya tidak perlu lagi membuat data struktur ini dari awal. Struktur data ini sudah banyak dimengerti dan diprogram ribuan kali sebelumnya. Masalahnya adalah bagaimana agar struktur data yang tangguh tersedia dan siap digunakan oleh programmer. Di bagian ini kita akan melihat bagaimana Java menyelesaikan masalah ini.

Pemrograman generik adalah penulisan kode yang bisa digunakan oleh berbagai macam tipe data. Kita telah menemukan istilahnya pada bagian sebelumnya tentang array dinamis integer. Kode yang ditulis di sana untuk array dinamis integer hanya bisa bekerja untuk tipe data int. Akan tetapi kode array dinamis untuk double, String, atau tipe data lainnya hampir sama. Akan sangat tidak nyaman apabila kita harus mengkopi kodenya berulang-ulang untuk tipe data yang berbeda-beda.

Seperti disebutkan sebelumnya, Java mencoba menyelesaikan masalah ini dengan membuat kelas ArrayList. Kelas ini pada dasarnya merupakan array dinamis dengan tipe Object. Karena semua kelas merupakan kelas turunan dari Object, maka objek yang bertipe kelas apapun bisa disimpan dalam ArrayList.

Ini adalah contoh pemrograman generik : kode untuk kelas ArrayList cukup ditulis satu kali, tetapi bisa digunakan untuk objek dengan tipe data yang berbeda-beda (akan tetapi, tidak bisa digunakan untuk tipe data primitif, seperti int atau double.)

Kelas ArrayList hanyalah satu dari beberapa kelas dan interface yang merupakan pemrograman generik pada Java. Kita akan lihat beberapa kelas lain dan bagaimana kelas-kelas ini digunakan. Semua kelas yang didiskusikan pada bagian ini merupakan bagian dari paket java.util dan kita perlu menambahkan pernyataan import di awal program untuk bisa menggunakannya. (Sebelum kita menggunakan perintah import java.util.*; di semua program, kita harus tahu bahwa beberapa kelas di dalam java.util memiliki nama yang sama pada pake lain. Misalnya, java.util.List dan java.awt.List adalah kelas yang bernama sama dengan paket yang berbeda).

Adalah sesuatu hal yang tidak mudah untuk mendesain pustaka untuk pemrograman generik. Solusi yang disediakan Java memiliki banyak fitur bagus, akan tetapi bukan berarti cara ini adalah cara satu-satunya. Sudah pasti bukan yang terbaik, akan tetapi dalam konteks desain Java secara keseluruhan, mungkin lebih cocok disebut optimal. Untuk dapat memberikan gambaran seperti apa pemrograman generik secara umum, mungkin akan lebih baik untuk melihat sekilas pemrograman generik di bahasa pemrograman lain.

Pemrograman Generik pada Bahasa Pemrograman Lain

Posted Sen, 03/30/2009 - 21:23 by belajarprogram
Versi ramah cetakVersi ramah cetak

Pemrograman Generik pada Smalltalk

Smalltalk adalah salah satu bahasa pemrograman berorientasi objek pertama. Bahasa ini masih digunakan hingga kini. Meskipun tidak menjadi sepopuler Java atau C++, bahasa ini adalah sumber ide yang diadopsi banyak bahasa pemrograman. Pada Smalltalk, pada dasarnya semua pemorgraman adalah generik, karena dua sifat bahasa ini.

Pertama, variabel pada Smalltalk tidak memiliki tipe. Suatu nilai memiliki tipe, seperti integer atau string, tetapi variabel tidak memiliki nilai. Suatu variabel bisa menampung jenis data apa saja. Parameter juga tidak memiliki tipe, sehingga subrutin bisa digunakan pada parameter apa saja. Demikian juga dengan struktur data bisa menampung data apa saja. Misalnya, sekali kita mendefinisikan struktur data pohon biner pada Smalltalk, kita bisa menggunakannya untuk integer, string, tanggal, atau data apa saja. Kita tidak perlu menulis kode baru untuk masing-masing tipe data.

Kedua, semua nilai adalah objek, dan semua operasi pada objek dilakukan dengan metode dalam kelas. Hal ini juga berlaku bahkan untuk tipe data primitif seperti integer. Ketika operator "+" digunakan untuk menjumlah integer, operasi ini dilakukan dengan memanggil metode pada kelas integer. Ketika kita membuat kelas baru, kita bisa membuat operator "+" sendiri kemudian kita bisa menjumlahkan dua objek dengan tipe kelas tersebut dengan menggunakan "a + b" seperti kita menjumlahkan angka seperti biasa.

Sekarang misalnya kita membuat subrutin baru yang menggunakan operator "+" untuk menjumlahkan masing-masing item di dalam list. Subtuin ini bisa digunakan untuk list integer, tapi juga bisa digunakan ke tipe data apapun yang mendefinisikan "+". Demikian juga dengan subrutin yang menggunakan operator "<" untuk mengurutkan list juga bisa digunakan untuk list yang mengandung tipe data apapun yang memiliki definisi "<". Kita tidak perlu menulis subrutin pengurutan untuk masing-masing tipe data.

Jika kedua fitur ini kita gabungkan, kita bisa memiliki bahasa di mana struktur data dan algoritmanya akan bekerja untuk jenis tipe data apapun (yang masuk akal), yaitu jika operasi yang sesuai telah didefinisikan. Inilah yang merupakan pemrograman generik yang sesungguhnya.

Mungkin ini terdengar sangat baik, dan Anda mungkin bertanya-tanya kenapa tidak semua bahasa pemrograman bekerja seperti ini. Kebebasan pemrograman seperti ini akan memudahkan kita membuat program, akan tetapi akan lebih sulit untuk membuat program yang benar dan tangguh.

Sekali kita membuat struktur data yang bisa menampung tipe data apa saja, akan sulit untuk menjamin ia bisa menampung tipe data yang kita inginkan. Jika kita ingin suatu subrutin mengurutkan tipe data apapun, maka akan sangat sulit untuk menjamin bahwa subrutin ini hanya digunakan untuk data di mana operator "<" telah didefinisikan. Lebih khusus, kompiler tidak bisa memastikannya. Masalah ini akan muncul di saat program dijalankan ketika kita mencoba untuk menjalankan operasi tertentu pada suatu tipe data yang belum ada, kemudian program akan crash.

Pemrograman Generik pada C++

Tidak seperti Smalltalk, C++ adalah bahasa pemrograman dengan tipe kuat, bahkan lebih kuat dari Java. Setiap variabel memiliki tipe, dan hanya bisa menampung tipe data itu saja. Artinya pemrograman generik seperti pada Smalltalk tidak mungkin diterapkan.

Lebih Jauh, C++ tidak memiliki sesuatu yang mirip dengan kelas Object pada Java. Artinya, tidak ada kelas yang merupakan kelas super dari semua kelas. Artinya C++ tidak bisa menggunakan pemrograman generik seperti Java.

Akan tetapi, C++ memiliki sistem pemrograman geneik yang canggih dan fleksibel, yaitu yang disebut template. Dalam C++, kita tidak membuat subrutin pengurutan yang berbeda untuk setiap tipe data. Akan tetapi kita bisa mmebuat template subrutin. Template ini bukan subrutin; akan tetapi mirip seperti pabrik pembuat subrutin. Kita lihat contoh berikutnya, karena sintaks C++ mirip dengan Java :

template<class TipeItem>
void urut( TipeItem A[], int banyak ) {
// Urut banyak item dalam array A, ke dalam urutan menaik
// Algoritma yang digunakan adalah pengurutan pilihan
for (int i = banyak-1; i > 0; i--) {
int posisi_maks = 0;
for (int j = 1; j <= banyak; j++)
if ( A[j] > A[posisi_maks] )
posisi_maks = j;
TipeItem temp = A[banyak];
A[banyak] = A[posisi_maks];
A[posisi_maks] = temp;
}
}

Dalam kode di atas, kita mendefinisikan template subrutin. Jika kita menghapus baris pertama, yaitu template<class TipeItem>", dan mengganti kata "TipeItem" dengan "int", pada semua isi template, maka kita bisa mendapatkan subrutin untuk mengurut array int. (Meskipun kita tulis seperti "class TipeItem", kita bisa menggantinya dengan tipe apapun, termasuk tipe primitif). Jika kita mengganti "TipeItem" dengan string, maka kita bisa mendapatkan subrutin untuk mengurut array string. Ini yang sebenarnya dilakukan oleh compiler.

Jika program kita menyebut "urut(list,10)" di mana list adalah array int, maka kompiler menggunakan template ini untuk membuat subrutin untuk mengurut array int. Jika kita sebut "urut(kartu,10)" di mana kartu adalah array objek bertipe Kartu, maka kompiler akan membuat subrutin untuk mengurutkan array Kartu.

Template di atas menggunakan operator ">" untuk membandingkan nilai. Jika operator ini didefinisikan untuk nilai bertipe Kartu, maka kompiler akan menggunakan template dengan sukses. Jika ">" tidak didefinisikan untuk kelas Kartu, maka kompiler akan gagal, akan tetapi ini akan terjadi pada saat program dikompilasi bukan seperi Smalltalk di mana program akan crash pada saat dijalankan.

C++ juga memiliki template untuk membuat kelas. Jika kita menulis template untuk pohon biner, kita bisa menggunakan template itu untuk membuat kelas pohon biner int, pohon biner string, pohon biner tanggal, dan seterusnya -- semua dari satu template. Versi paling baru C++ memiliki template bawaan yang cukup komplit yang disebut dengan Pustaka Template Standar (Standard Template Library atau STL). STL sendiri cukup kompleks, dan bahkan beberapa orang mengatakan sangat amat kompleks. Akan tetapi ini juga fitur paling menarik dari C++
.

Aryani Sarah

Aryani Sarah

Tekhnik pemrograman JAVA

Bab III - Memulai Java

Posted Sab, 02/07/2009 - 16:06 by belajarprogram
Versi ramah cetakVersi ramah cetak

Program komputer adalah rangkaian instruksi yang diberikan agar komputer dapat bekerja. Suatu pekerjaan yang mungkin sederhana bagi manusia tidak dapat dimengerti oleh komputer. Manusia harus memberikan petunjuk kepada komputer bagaimana melakukan suatutugas dalam bentuk bahasa pemrograman. Bahasa pemrograman berbeda dengan bahasa manusia, karena komputer membutuhkan aturan yang lebih baku apa yang boleh dan apa yang tidak boleh dalam suatu bahasa pemrograman. Aturan ini disebut sintaks bahasa.

Sintaks bahasa pemrograman ditentukan berdasarkan apa yang bisa dilakukan oleh komputer, misalnya loop (perulangan), cabang (branch), atau fungsi. Hanya program dengan sintaks yang benar yang dapat dikompilasi atau diinterpretasi yang pada akhirnya bisa dijalankan di komputer. Kompiler akan memberikan pesan kesalahan apabila ada kesalahan dalam sintaks sehingga kita memperbaikinya.

Untuk menjadi programmer yang sukses, kita harus mengerti secara detail sintaks dari bahasa pemrograman yang kita akan gunakan. Tetapi, sintaks hanya sebagian cerita. Kita ingin program yang kita buat berjalan sesuai dengan yang kita inginkan. Artinya program tersebut harus benar secara logika. Program yang benar secara logika disebut memiliki semantik yang benar.

Di situs ini kita akan mempelajari tentang sintaks dan semantik dari dari setiap bahasa pemrograman Java. Sintaks mudah dihafal, tetapi semantik lebih seperti perasaan. Untuk itu, coba download dan jalankan contoh-contoh program sehingga kita dapat memahami bagaimana setiap program bekerja.

Melihat lebih dekat “SelamatDatang”

Aplikasi SelamatDatang memiliki 4 komponen, yaitu :

  • definisi paket (package)
  • komentar
  • definisi kelas (class)
  • metode main
package selamatdatang;

public class SelamatDatang {

/**
* @param args
*/

public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("Selamat Datang!");
}

}

Mari kita bahas satu per satu.

Definisi paket (package)

package selamatdatang;

Package dalam Java merupakan kumpulan dari berbagai kode yang terangkum dalam satu paket. Untuk memudahkan penulisan dan pembagian logika suatu program, satu paket terbagi menjadi beberapa berkas (file) di mana setiap file memiliki fungsi atau tugas yang sangat khusus, misalnya satu file berfungsi untuk mendeklarasikan konstanta dan kelas, sementara file yang lain berisi implementasi kelas dan prosedurnya.

Pada contoh aplikasi SelamatDatang di atas, paket ini hanya berisi satu buah file yang isinya terdiri dari satu kelas dan satu metode.

Definisi paket tidak selalu diperlukan, tetapi hal ini merupakan kebiasaan baik untuk melatih kita berfikir secara logis dan sistematis.

Komentar

	/**
* @param args
*/

// TODO Auto-generated method stub

Komentar tidak akan diproses oleh kompiler tetapi berguna bagi programmer lain. Bahasa Java memiliki 3 jenis komentar :

  • /* text */ — Compiler akan mengabaikan kata kata antara /* dan */
  • /** documentation */ — Ini merupakan komentar yang dipergunakan khusus untuk dokumentasi. Kompiler akan mengabaikan komentar dari /* hingga */. Alat bantu javadoc akan memproses komentar dokumentasi untuk membuat dokumentasi secara otomatis dari sumber program.
  • // text — Kompiler akan mengabaikan segala sesuatu dari // hingga akhir baris

Definisi Kelas

public class SelamatDatang {
...
}

Kelas merupakan bagian integral dari bahasa Java karena Java merupakan bahasa berorientasi objek. Setiap aplikasi harus terdiri dari satu kelas. Di sini kita definisikan kelas SelamatDatang sebagai kelas utama.

Metode main

Dalam bahasa pemrograman Java, setiap aplikasi harus memiliki satu buah metode main yang bentuknya seperti berikut :

	public static void main(String[] args) {
...
}

Metode main mirip dengan fungsi main pada bahasa C/C++ di mana fungsi ini merupakan pintu gerbang dimulanya suatu program. Metoda main dapat dipanggil dengan menyertakan variabel, baik hanya satu variabel, banyak variabel atau bahkan tidak ada sama sekali.

Yang terakhir adalah perintah berikut untuk menampilkan Selamat Datang pada komputer Anda.

		System.out.println("Selamat Datang!");

Perintah tersebut menggunakan pustaka inti Java, yaitu kelas Sistem.

Variabel dan Tipe Data

Posted Min, 02/08/2009 - 01:10 by belajarprogram
Versi ramah cetakVersi ramah cetak

Nama merupakan hal penting dalam teknik pemrograman. Dalam suatu program, nama digunakan untuk menyebut sesuatu. Untuk menggunakan "sesuatu" tersebut, programmer harus mengerti bagaimana aturan pemberian nama dan aturan untuk menggunakan nama tersebut dalam programnya. Atau dengan kata lain, programmer harus mengerti sintaks dan semantik dari nama.

Menurut aturan sintaks Java, nama merupakan rangkaian dari 1 atau lebih karakter. Harus dimulai dengan huruf dan harus terdiri dari huruf, angka atau karakter garis bawah '_'. Berikut ini adalah contoh nama yang diperbolehkan:

        N   n   rate  x15   quite_a_long_name   HelloWorld

Hurus kecil dan huruf besar dianggap berbeda, sehingga HelloWorld, helloworld, HELLOWORLD, dan heLLOwoRLD adalah nama yang berbeda-beda. Beberapa kata tertentu merupakan nama yang memiliki kegunaan tertentu oleh Java, dan tidak dapat dipergunakan oleh programmer. Kata-kata ini disebut reserved words (kata-kata cadangan) misalnya: class, public, static, if, else, while, dan lain-lain.

Hal lain yang penting adalah compound names atau nama campuran, yaitu yang merupakan nama biasa yang dihubungkan dengan titik, misalnya System.out.println. Idenya adalah "sesuatu" pada Java dapat terdiri dari "sesuatu" yang lain. Nama System.out.println artinya System menampung out dan out menampung println. Kita sebut "sesuatu" sebagai identifier (pengenal) tidak peduli apakah ia berupa nama tunggal atau campuran.


Program melakukan manipulasi data yang disimpan dalam memori. Dalam bahasa mesin, data hanya bisa diambil dengan menyebut alamatnya di memori. Dalam bahasa pemrograman tingkat tinggi seperti Java, nama bisa digunakan untk mengganti alamat data tersebut di memori. Tugas komputer adalah untuk melacak di mana data tersebut di simpan, sedangkan programmer menggunakan nama untuk memerintahkan komputer mengambil data tersebut dari memori. Nama yang digunakan seperti ini disebut variable.

Variabel sebenarnya berarti lebih kompleks. Variabel bukan isi dari data, tapi lokasi di memori yang menyimpan data tersebut. Variabel bisa diibaratkan sebagai kotak penyimpanan data, bukan isi kotaknya. Karena data di dalam kotak bisa berubah, variabel hanya dapat dipercaya pada satu saat saja, walaupun tempatnya selalu sama.

Dalam bahasa Java, satu-satunya cara untuk memasukkan data ke dalam variabel adalah dengan menggunakan assignment statement, atau pernyataan pemberian nilai. Pernyataan ini berbentuk:

variable = ekspresi;

di mana ekspresi menyatakan apapun yang berhubungan dengan nilai suatu data. Ketika komputer menjalankan instruksi ini, komputer akan menghitung dan menyimpan hasilnya ke dalam variabel. Contoh:

kecepatan = 40;

Variable dalam pernyataan di atas adalah kecepatan dan ekspresinya adalah angka 40. Komputer menghitung pernyataan ini dan menyimpan 40 ke dalam variabel kecepatan, dan mengganti apapun yang telah disimpan sebelumnya.

Sekarang misalnya kita ingin melakukan perhitungan yang lebih kompleks:

jarak = kecepatan * waktu

Di sini, * merupakan operasi perkalian. Komputer mengambil data yang disimpan dalam variabel kecepatan dan waktu, melakukan perkalian, dan menyimpan hasilnya dalam jarak.

Variabel dalam bahasa Java didesign untuk menyimpan hanya 1 jenis tipe data. Kompiler akan menampilkan kesalahan sintax apabila variabel ini dicoba untuk diberi tipe data jenis lain. Oleh karena itu Java disebut bahasa pemrograman bertipe kuat atau strongly typed language.

Ada 8 tipe data primitif dalam bahasa Java.

Jenis Data Deskripsi Ukuran Minimum Maksimum
boolean Hanya bisa berisi benar atau salah 1-bit
char Karakter Unicode 16-bit
byte Bilangan bulat
8-bit -127 128
short Bilangan bulat
16-bit -32768 32767
int Bilangan bulat 32-bit -2147483648 2147483647
long Bilangan bulat
64-bit -9223372036854775808 9223372036854775807
float Bilangan riil 32-bit 1.40129846432481707e-45 3.40282346638528860e+38
double Bilangan riil 64-bit 4.94065645841246544e-324 1.79769313486231570e+308

Suatu variabel baru dapat digunakan apabila telah dideklarasikan. Pernyataan deklarasi variabel digunakan untuk mendeklarasikan satu atau lebih variabel dan memberinya nama. Ketika komputer mengeksekusi deklarasi variabel, komputer akan menyediakan ruangan di memori kemudian menyimpan alamat ini sesuai dengan nama variabel yang diberikan. Deklarasi variable berbentuk seperti :

nama_tipe nama_variabel;

nama_variabel dapat berupa sebuah nama variabel atau beberapa nama sekaligus yang dipisah dengan koma. Gaya pemrograman yang baik yaitu dengan mendeklarasikan satu variabel dalam satu pernyataan, kecuali variabel tersebut berhubungan erat satu sama lain. Misalnya:

float num;
String nama;
String nama;
boolean bol;
int x,y;

Atau pendeklarasian variabel bisa juga dilakukan sekaligus dengan pemberian nilainya, seperti pada contoh berikut:

int num = 1000;
char ch = 'e';
float angka = -1.504;
boolean bol = true;

Jenis-jenis Variabel

Java memiliki beberapa jenis variabel yang dapat dikelompokkan sebagai berikut :

  • Instance Variables (tidak statis). Dalam bahasa pemrograman berorientasi objek, objek menyimpan variabel yang tidak dideklarasikan dengan kata kunci static dalam kategori non-statis, atau dapat berubah-ubah. Suatu kelas dapat dijelmakan ke dalam beberapa objek. Nilai yang terkandung dalam variabel tak-statis ini berbeda untuk setiap objeknya.
  • Class Variables (statis). Variabel ini merupakan bagian integral dari suatu kelas, dan tidak ada satu objek pun yang dapat menyatakan kepemilikan atas variabel ini. Variabel yang dideklarasikan sebagai statis digunakan bersama oleh semua objek. Variabel ini lebih bersifat global yang nilainya sama untuk setiap objek pada kelas yang bersangkutan.
  • Local Variables. Variabel ini didefinisikan di dalam suatu metoda (method) atau dalam suatu prosedur. Variabel ini bersifat lokal karena hanya dapat diakses oleh metoda atau prosedur tersebut.
  • Parameter. Paramater atau argumen adalah variabel yang digunakan pada saat suatu metoda atau prosedur dipanggil. Parameter berguna untuk memberikan nilai awal untuk diteruskan (pass) ke dalam suatu prosedur atau metoda.


Literal

Pada bagian ini akan dijelaskan tentang literal, yaitu rangkaian kata atau huruf yang menyatakan suatu nilai. Misalnya

int angka = 10;

Pada pernyataan di atas, yang dinamakan literal adalah 10, karena 10 berarti bilangan bulat atau integer. Pada bahasa pemrograman java, terdapat beberapa jenis literal yang melambangkan bilangan bulat, riil, kalimat, atau boolean.

Literal Bilangan Bulat

Bilangan bulat dapat dilambangkan dalam beberapa bentuk. Bilangan bulat biasa dilambangkan dengan deretan angka yang dimulai dengan angka yang bukan nol.

int angka = -10;

Bilangan oktal adalah bilangan bulat berbasis 8, yang berarti hanya dapat terdiri dari angka-angka 0 hingga 7. Bilangan oktal ditulis seperti bilangan bulat biasa dimulai dengan 0.

// 22 basis delapan atau 18 dalam desimal
int angka = 022;

Bilangan heksadesimal adalah bilangan berbasis 16. Bilangan heksadesimal dilambangkan dengan 0 hingga 9 dan a hingga f dan dimulai dengan 0x.

// 2a heksadesimal atau 42 dalam desimal
int angka = 0x2a;

Long integer. Seperti dijelaskan pada bab terdahulu long integer membutuhkan memori sebesar 64bit, yang artinya kita dapat menyimpan bilangan bulat hingga 2 ^ 64. Untuk merepresentasikan long integer, tambahkan huruf L pada akhir bilangan.

int angka = 22L;

Literal Karakter

Kita dapat melambangkan suatu karakter dengan tanda petik tunggal misalnya ‘a’ atau ‘3′ atau ‘=’. Suatu karakter dapat juga dilambangkan dengan kode ASCII nya. Caranya dengan memulainya dengan \u00 (garis miring terbalik) kemudian diikuti dengan kode ASCII nya dalam bentuk heksadesimal.

// huruf 'A' dalam ASCII
char huruf = '\u0041';

Selain itu ada beberapa karakter lain selain alfabet yang dapat dilambangkan dengan escape sequence. Berikut ini beberapa contohnya.

\n = tombol enter atau baris baru.

\r = carriage return.

\t = tombol tab.

\b = tombol backspace.

\\ = karakter \

\’ = karakter ‘

\” = karakter ”

Literal Boolean

Nilai true dan false pada java merupakan literal boolean. Suatu variabel bertipe boolean hanya dapat memiliki nilai true atau false.

boolean ok = true;

Ingat bahwa boolean true atau false TIDAK menggunakan tanda petik tunggal seperti ekspresi pada karakter.

Literal Bilangan Riil

Bilangan riil, misalnya -0.00127 atau 415.842, pada java dapat disimpan baik sebagai float atau double. Bilangan real dapat direpresentasikan dalam bentuk desimal biasa, pecahan, atau eksponen (dilambangkan dengan e atau E).

TipeUkuranRentangPresisi (jumlah digit)
bytesbit
float432+/- 3.4 x 10386-7
double864+/- 1.8 x 1030815

Imbuhan akhir d atau D dan f atau F dapat pula ditambahkan untuk menentukan tipenya secara eksplisit. Berikut beberapa contohnya.

double d = 3.27E+32;
float f = 4f;
float pi = 3.14159;

Literal String

String merupakan untaian huruf dan angka yang tersusun menjadi satu kalimat. Dalam bahasa java, string bukan merupakan tipe primitif, tetapi merupakan kelas. String pada java tidak disimpan dalam bentuk array seperti pada C. Java menyediakan beberapa metoda untuk melakukan penggabungan, modifikasi, atau perbandingan. String ditulis di antara dua tanda petik ganda seperti contoh berikut.

String salam = "Selamat Datang";

String juga dapat mengandung karakter spesial seperti dibahas pada literal karakter. Misalnya

String hallo = "Selamat Datang \"Bapak Presiden\"";
System.out.println("Hallo Bambang\nSelamat pagi,\nSemoga hari anda cerah\n";

Berikut ini adalah beberapa contoh lainnya.

// Contoh string kosong
String teks = "";

// Contoh string berisi "
teks = "\"";

// String dapat juga dipisah menjadi beberapa baris
teks = "ini baris pertama " +
"dan ini lanjutannya."

Literal Null

Literal terakhir pada bahasa java adalah literal null. Null merupakan kondisi di mana suatu objek tidak diberi alokasi memori. Pada saat suatu objek dideklarasikan, komputer akan mengalokasikan memori untuk objek tersebut. Apabila objek tersebut telah selesai dipergunakan, kita dapat melepas lokasi memori yang digunakan oleh objek tersebut sehingga memori itu dapat digunakan oleh objek lain. Berikut ini adalah contohnya

obj = null;

Literal null berfungsi memberi tahu garbage collector (pemulung memori) bahwa objek tersebut tidak lagi terpakai. Kemudian memori akan dilepaskan agar dapat digunakan oleh objek lain.

package bungabank;

public class BungaBank {

/**
* @param args
*/

public static void main(String[] args) {
// TODO Auto-generated method stub

/* Deklarasi variable */
double pokok; // nilai investasi
double sukubunga; // suku bunga bank
double bunga; // nilai bunga

/* Perhitungan */
pokok = 20000;
sukubunga = 0.10; // sama dengan 10%
bunga = pokok * sukubunga;

pokok = pokok + bunga;

/* Cetak hasil keluaran */
System.out.print("Bunga yang dihasilkan adalah Rp. ");
System.out.println(bunga);
System.out.print("Nilai investasi setelah 1 tahun adalah Rp. ");
System.out.println(pokok);




Yohana Susanti

Yohana Susanti

Tekhnik Pemrograman Bahasa Pemrograman

Bahasa Pemrograman

Perangkat Lunak Bahasa Pemrograman

Oleh Faisal Akib

Generasi Bahasa Pemrograman

Generasi Bahasa Pemrograman

Bahasa pemrograman adalah software bahasa komputer yang digunakan dengan cara merancang atau membuat program sesuai dengan struktur dan metode yang dimiliki oleh bahasa program itu sendiri. Komputer mengerjakan transformasi data berdasarkan kumpulan printah program yang telah dibuat oleh program. Kumpulan perintah ini harus dimengerti oleh komputer, berstruktur terntentu (syntax), dan bermakna. Bahasa pemrograman merupakan notasi untuk memberikan secara tepat program komputer. Berbeda dengan bahasa, misalkan Bahasa Indonesia dan Inggris yang merupakan bahasa alamiah (natural language), sintaksis dan semantik bahasa pemrograman komputer ditentukan secara jelas dan terstruktur, sehingg bahasa pemrograman juga disebut sebagai bahasa formal (formal language).

Menurut tingkatannya, bahasa pemrograman dibagi menjadi 3 tingkatan, yaitu:

  • Bahasa pemrograman tingkat rendah (low level language), merupakan bahasa pemrograman generasi pertama, bahasa pemrograman jenis ini sangat sulit dimengerti karena instruksinya menggunakan bahasa mesin. Biasanya yang mengerti hanyalah pembuatnya saja karena isinya programnya berupa kode-kode mesin.
  • Bahasa pemrograman tingkat menengah (middle level language), merupakan bahasa pemrograman dimana pengguna instruksi sudah mendekati bahasa sehari-hari, walaupun begitu masih sulit untuk dimengerti karena banyak menggunakan singkatan-singkatan seperti “STO” artinya simpan (STORE) dan “MOV” artinya pindahkan (MOVE). Yang tergolong dalam bahasa ini adalah assembler.
  • Bahasa pemrograman tingkat tinggi (high level language) merupakan bahasa yang mempunyai ciri lebih terstruktur, mudah dimengerti karena menggunakan bahasa sehari-hari, contoh bahasa level ini adalah: Delphi, Pascal, ORACLE, MS-SQL, Perl, Phyton, Basic, Visual Studio (Visual Basic, Visual FoxPro), Informix, C, C++, ADA, Java, PHP, ASP, XML, dan lain-lain. Bahasa seperti Java, PHP, ASP, XML biasanya digunakan untuk pemrograman pada internet, dan masih banyak lagi yang terus berkembang yang saat ini biasanya dengan ekstensi .net (baca: dot net) seperti Visual Basic.NET dan Delphi.Net yang merupakan bahasa pemrograman yang dikembangkan pada aran berbasis internet

Sejauh ini bahasa pemrograman dikelompokkan menjadi lima generasi. Setiap generasi bahasa pemrograman memiliki karakteristik tersendiri. Semakin maju generasinya maka orientasi bahasa pemrograman ini akan semakin dekat ke manusia.

Gambar di atas menunjukkan terjadinya kecenderungan pergeseran orientasi dalam bahasa-bahasa pemrograman, dari pendekatan yang berorientasi kepada mesin menuju ke pendekatan yang berorientasi pada manusia.

Bahasa Pemrograman Generasi I

Bahasa pemrograman generasi pertama berorientasi pada mesin. Program disusun dengan menggunakan bahasa mesin. Tentu saja program generasi ini sangat sulit untuk dipahami oleh orang awam dan sangat membosankan bagi pemrogram. Pemrogram harus benar-benar menguasai operasi komputer secara teknis. Namun bahasa generasi ini memberikan eksekusi program yang sangat cepat. Selain itu, bahasa mesin sangat bergantung pada mesin (machine dependent), artinya, bahasa mesin antara satu mesin dengan mesin lainnya akan berbeda.

Kode dalam Bahasa Mesin

Kode dalam Bahasa Mesin

Bahasa Pemrograman Generasi II

Bahasa pemrograman generasi kedua menggunakan bahasa rakitan (assembly). Sebagai pengganti kode-kode biner, digunakanlah kependekan dari kata-kata. Misalkan “MOV” untuk menyatakan “MOVE” dan JNZ yang berarti “jump non-zero”. Setiap instruksi dalam bahasa rakitan sebenarnya identik dengan satu instruksi dalam bahasa mesin. Bahasa ini sedikit lebih mudah dipahami daripada bahasa mesin. Bahasa ini sedikit lebih mudah dipahami daripada bahasa mesin mengingat perintah dalam bentuk kata-kata yang dipendekkan lebih mudah daripada mengingat deretan angka biner.

Berikut adalah contoh instruksi yang ditulis dalam bahasa rakitan akan menjadi seperti berikut:

Tampak bahwa penggunaan notasi seperti MOV AH, 02 jauh lebih mudah diingat atau dipahami daripada penulisan instruksi dalam bahasa mesin: B402 atau 1011 0100 0000 0010.

Kode dalam Bahasa Rakitan

Kode dalam Bahasa Rakitan

Bahasa Pemrograman Generasi III

Bahasa pemrograman generasi ketiga menggunakan pendekatan prosedural. Sebagai bahasa prosedural, pemrogram perlu menuliskan instruksi-instruksi yang rinci agar komputer melaksanakan tugasnya. Program ditulis dengan menggunakan kata-kata yang biasa dipakai manusia, seperti WRITE untuk menampilkan sesuatu di layar dan READ untuk membaca data dari keyboard.

Bahasa generasi ketiga seringkali disebut sebagai high level language disebabkan bahasa ini menggunakan kata-kata yang biasa digunakan manusia. Beberapa contoh bahasa pemrograman yang masuk dalam kategori generasi ketiga yaitu ADA, ALGOL, C, BASIC, COBOL, FORTRAN, dan PASCAL.

Bahasa Pemrograman Generasi IV

Bahasa pemrograman generasi keempat dirancang untuk mengurangi waktu pemrograman dalam membuat program sehingga diharapkan produktifitas pemrogram jadi meningkat dan program dapat dibuat dalam waktu yang lebih singkat. Alhasil, bahasa pemrograman generasi keempat yang dikenal dengan sebutan 4GL dapat dipakai oleh pemakai yang kurang mengetahui hal-hal teknis tentang pemrograman tanpa bantuan pemrogram profesional. Sebagai contoh pemrogram dapat membuat program dengan Microsoft Access di lingkungan PC dengan mudah.

Bahasa pemrograman generasi keempat biasa disebut sebagai high level language atau bahasa berorientasi pada masalah (problem oriented language) karena memungkinkan pemakai menyelesaikan masalah dengan sedikit penulisan kode dibandingkan pada bahasa prosedural. Bahasa pemrograman generasi keempat menggunakan pendekatan non-prosedural. Untuk mendapatkan suatu hasil, seorang pemakai tidak perlu memberitahukan secara detail tentang bagaimana mendapatkannya. Gambar di bawah ini memberikan contoh yang menunjukkan perbedaan bahasa prosedural dan non-prosedural dalam memperoleh data tentang seorang mahasiswa.

Bahasa Prosedural dan Non Prosedural

Bahasa Prosedural dan Non Prosedural

Bahasa Pemrograman Generasi V

Bahasa pemrograman generasi kelima merupakan kelompok bahasa-bahasa pemrograman yang ditujukan untuk menangani kecerdasan buatan (artificial intelligence). Kecerdasan buatan adalah disiplin dalam ilmu komputer yang mempelajari cara komputer meniru kecerdasan manusia. Berbagai aplikasi kecerdasan manusia adalah sebagai berikut:

  • Pemrosesan bahasa alami (natural language processing), yakni mengatur komputer agar bisa berkomunikasi dengan manusia melalui bahasa manusia (Indonesia, Inggris, Spanyol, Prancis, dan sebagainya).
  • Pengedalian robotika dan sensor mata.
  • Aplikasi sistem pakar (expert system) yang meniru seorang pakar di bidang tertentu sehingga bisa menghasilkan nasehat atau pemikiran yang setara dengan seorang pakar.

Dengan menggunakan bahasa generasi kelima dimungkinkan untuk melakukan perintah dengan cara percakapan seperti berikut:

“Tampilkan semua nama mahasiswa yang IPK-nya di atas 3,0 dan urutkan berdasarkan IP secara descending”

PROLOG dan LISP merupakan dua contoh bahasa pemrograman yang ditujukan untuk menangani kecerdasan buatan

Powered By Blogger

Berita Yahoo

Loading...

Siapa artis cantik pilihan anda ??

Video Taufik

Loading...

Tampilan slide

Loading...

Cari Blog Gw

Memuat...

Laman Taufik

  • Beranda

Total Tayangan Laman

Sparkline

Entri Ngetop

  • Blogger Buzz: Express yourself with the Blogger Template Designer
    Blogger Buzz: Express yourself with the Blogger Template Designer

Join to MyEmail

Yahoo News: Top Stories

Fish

Arsip Blog

  • ▼  2011 (1)
    • ▼  Maret (1)
      • ▼  26 (1)
        • Blogger Buzz: Express yourself with the Blogger Te...

Mengenai Saya

Foto Saya
Taufik Hidayat
Jakarta Pusat, DKI Jakarta, Indonesia
@Baik @Ramah @Pemaaf @Dll
Lihat profil lengkapku

Pengikut

Taufik Hidayat. Template Awesome Inc.. Gambar template oleh jangeltun. Diberdayakan oleh Blogger.
Ada kesalahan di dalam gadget ini

Share it

Amazon MP3 Clips