Selasa, 30 Juni 2009

Pertemuan Terakhir - Penggabungan (LinkList-Array-Sort)

<html>
<head>
<title>Struktur Data Linked List</title>
</head>
<body>
<script language = "JavaScript">
<!--

function LinkedList()
{
this._panjang = 0;
this._kepala = null;
}

LinkedList.prototype =
{
constructor: LinkedList,

//Membuat Metode untuk Menambah Data Kedalam List
Tambah: function (data)
{
//Membuat Node List
var node = {data: data, next: null}, NodeTanda;

//Periksa Isi List
if (this._kepala === null)
{
this._kepala = node;
}
else
{
NodeTanda = this._kepala;
while (NodeTanda.next)
{
NodeTanda = NodeTanda.next;
}
NodeTanda.next = node;
}
this._panjang++
},



//Membuat metode Untuk Menunjuk Item Data
Item: function (index)
{
if (index > -1 && index < this._panjang)
{
var NodeTanda = this._kepala,
i = 0;
while (i++ < index)
{
NodeTanda = NodeTanda.next;
}
return NodeTanda.data;
}
else
{
return null;
}
},


//Membuat metode Untuk Membuang Elemen List
Buang: function (index)
{
if (index > -1 && index < this._panjang)
{
var NodeTanda = this._kepala, previous, i = 0;
if (index === 0)
{
this._kepala = NodeTanda.next;
}
else
{
while (i++ < index)
{
previous = NodeTanda;
NodeTanda = NodeTanda.next;
}

previous.next =NodeTanda.next;
}
this._panjang--;
return NodeTanda.data;
}
else
{
return null;
}
},


//Membuat metode Untuk Mengetahui Jumlah Elemen List
Ukuran: function()
{
return this._panjang;
},


//Membuat metode Untuk Membentuk Array
toArray: function()
{
var result = [],
NodeTanda = this._kepala;

while (NodeTanda)
{
result.push (NodeTanda.data);
NodeTanda = NodeTanda.next;
}
return result;
},


//Membuat metode Untuk Konversi ke String
toString: function()
{
return this.toArray().toString();
}

}
var list = new LinkedList ();


list.Tambah("1");
list.Tambah("8");
list.Tambah("2");

document.write("Isi Linked List <br>");
document.write("--------------- <br>");
for (i=0; i<3; i++)
{
document.write(list.Item(i) + "<br>");
}
document.write("--------------- <br>");

document.write("Isi Array = " + list.toArray());

function urutkan (form)
{
DataKosong = false;
DataInputan = form.Data.value;
InputData = DataInputan.split(",");
for (var i=0; i < InputData.length; i++)
{
InputData[i] = parseInt (InputData[i], 10);
if (isNaN (InputData[i]))
{
DataKosong = true;
break;
}
}

InputData = bubbleSort (InputData, 0, InputData.length - 1);
if (DataKosong)
{
alert ("Silakan entri dulu Data, Pisahkan dengan tanda Koma");
form.Data.focus();
}
else
form.Hasil.value = DataString (InputData, 0);
}


function DataString (ArrayData, Angka)
{
if ((ArrayData.length - 1) >= Angka)
return (ArrayData[Angka] + "," + DataString (ArrayData, (Angka+1)));
else
return "";
}

function bubbleSort (ArrayData, Mulai, MulaiBaru)
{
for (var i = MulaiBaru - 1; i >= Mulai; i--)
{
for (var j = Mulai; j <= i; j++)
{
if (ArrayData[j+1] < ArrayData[j])
{
var DataTemporer = ArrayData[j];
ArrayData[j] = ArrayData[j+1];
ArrayData[j+1] = DataTemporer;
}
}
}
return ArrayData;
}


//-->
</script>
<form>
<input type=text name=Data size=30 value="1,8,2">
<br>
<br>
<input type=button value="urutkan" onClick="urutkan(this.form)">
<br>
<br>
<br>
Hasil Pengurutan :
<hr>
<input type=text name=Hasil size=30>

</form>
</body>
</html>

Lanjuuuutt...

Minggu, 28 Juni 2009

Pengelompokan Software Aplikasi Pemrograman di Linux

Sebenarnya, di Linux banyak banget bahasa pemrograman dan pendukung lainnya seperti database server dan IDE, bahkan banyak banget yang gratis.
Tool untuk pengembangan aplikasi teks, misalnya :
1. Free Pascal, jadi nggak perlu pake Turbo Pascal lagi, perintah-perintahnya persis sama. Download aja di http://freepascal.org
2. GCC dan G++, inilah compiler C dan C++ yang sangat mendunia dan tua di Unix (Linux, FreeBSD dan marga *Nix lainnya). Biasanya sudah terinstal, atau kalo belum bagi g++, jika menggunakan paket Fedora (termasuk Redhat, CentOS), SuSE, Debian (yang full, atau Ubuntu dengan Repo), silakan langsung diupdate.
3. Shell programming, seperti batch file di DOS tapi jauh lebih lengkap.
4. Python, Perl, Ruby, ini sudah umum di Linux…yang terakhir memang masih kurang penggunanya. Python dan Perl banyak digunakan untuk mengadmnistrasi sistem, termasuk bikin Mail Server, Bandwitdh management, network management, dll.

untuk aplikasi grafis, misalnya:
1.Gambas, VB-nya Linux
2.Lazarus, Delphi under Linux. Download di http://lazarus.freepascal.org. Dulu ada Kylix, keluaran borland tapi nggak update dan sepertinya dah mati.

Ada yang lain? :t untuk pemrograman GUI juga bisa pake Python yang dipadukan dengan GTK atau C++ dengan library QT. Pokoknya banyak pilihan, tapi dua yang terakhir perlu jiwa heroik dikit :D . Mau pake PHP bikin aplikasi grafis juga bisa, padukan dengan GTK.

Ada bahasa lain yang belum disebut, yaitu Java dan PHP. PHP banyak digunakan untuk membangun aplikasi web karena simple, termasuk kemudahan konek ke database, apalagi ke MySQL. Ada juga Perl untuk web, tapi kurang ngetop sejak ada PHP.

Kalo Java? :t itu masih serba bisa, mau teks based OK, grafis jalan, web juga bisa. Kalo teks, pemrogramannya lebih sederhana. Kalo grarif pakai library Swing tapi tetap agak repot. Gampangin pake IDE Eclipse atau Netbeans yang keduanya gratis…tis…tis. Kalo untuk web, hasilnya dapat applet, servlet atau script JSP (ini juga diterjemahkan ke servlet saat eksekusi).

Di Linux tuh lengkap banget. Kalo database server yang ngetop itu MySQL yang sangat cepat dan mudah digunaan. Ada juga PostGreSQL yang sedikit lebih sulit tapi super lengkap.. kalo dilengkapin :D . Ada database dari Oracle, namanya BerkeleyDB, versi Embedednya malah free dan langsung dapat disatukan ke dalam program Java. Oh ya..kalo tertarik dengan dot Net juga ada, namanya Mono.

nyontek dari : "http://komputasi.wordpress.com/-" :z

Lanjuuuutt...

Pengelompokan Software Aplikasi Perkantoran di Linux

1. OpenOffice
OpenOffice.org adalah sebuah paket aplikasi perkantoran berkode sumber terbuka (open source) yang dapat diperoleh secara gratis. Paket tersebut termasuk komponen-komponen pengolah kata, lembar kerja, presentasi, ilustrasi vektor, dan gudang data. OpenOffice.org ditujukan sebagai pengganti bagi Microsoft Office dan dapat dijalankan di atas berbagai platform, di antaranya Windows, Solaris, Linux, dan Mac OS X. OpenOffice mendukung standar dokumen terbuka untuk pertukaran data, dan dapat digunakan tanpa biaya.
Tampilan-tampilan seluruh aplikasi OpenOffice.org dibuat sedemikian rupa sehingga mirip dengan Microsoft Office. Hal ini menyebabkan pengguna yang baru memulai menggunakan OpenOffice.org dan sebelumnya menggunakan Microsoft Office dapat langsung beradaptasi dengan mudah.
Paket aplikasi OpenOffice.org terdiri dari
1. OpenOffice.org Writer, aplikasi pengolah kata, merupakan padanan dari Microsoft Word.
2. OpenOffice.org Calc, aplikasi lembar kerja (spreadsheet), padanan dari Microsoft Excel.
3. OpenOffice.org Impress, aplikasi presentasi, padanan dari Microsoft PowerPoint.
4. OpenOffice.org Base, aplikasi basis data, padanan dari Microsoft Access.
5. OpenOffice.org Draw, aplikasi editor grafis dan percetakan.


2.SIAG Office
SIAG Office merupakan suatu paket office yang bersifat free untuk platform Unix termasuk di dalam paket SIAG ini adalah wordprocessor PW (Phatetic Writer), Spreadsheet SIAG, dan program animasi Egon.
1. Spreadsheet Siag berbasiskan X dan Scheme. Awalnya ditulis untuk mengatasi kebutuhan aplikasi spreadsheet pada Linux. Program ini berbasiskan program Calc yang ditulis di akhir 80-an, dan telah ada di berbagai platform seperti SunOS, vt52 Atari TOS, GEM, TurboC DOS, dan juga untuk X-lib untuk Linux dan kini dengan library Xt untuk Linux.
2. Pathetic Writer suatu wordprocessor untuk Unix. Menggunakan Scheme suatu dialek Lisp sebagai bahasa ekstensi, yang memudahkan untuk membuat suatu fungsi baru. Sehingga kemampuan dari wordprocessor ini dapat ditambahkan dengan mudah. Hak cipta program ini dimiliki oleh Ulric Eriksson, tetapi program ini bebas untuk digunakan tanpa perlu membayar kepadanya.
3. Egon Animator merupakan perangkat bantu pembuat animasi di lingkungan Unix. Setiap obyek seperti kotak, garis, pixel dapat ditambahkan pada suatu lapisan. Dan lalu obyek tersebut dapat diatur hendak diletakkan di lokasi yang diinginkan.

3. KOffice
KOffice merupakan suatu aplikasi perkantoran (Office) yang terpadu untuk KDE (K Desktop Environment), sehingga tersedia dengan lisensi GNU GPL. Di dalamnya termasuk :
1. KWord, suatu aplikasi pengolah kata seperti FrameMaker
2. KChart, aplikasi untuk menggambar chart dan diagram
3. KSpread, suatu aplikasi spreadsheet
4. KPresenter, aplikasi untuk presentasi
5. KIllustrator, aplikasi menggambar vektor
6. KImageShop, aplikasi menggambar bitmap
7. Katabase, aplikasi database
8. KFormula, aplikasi menulis rumus matematika
9. KImage, untuk menampilkan image
Seluruh komponen KOffice dapat bekerja sama, dan dapat disisipkan ke dalam komponen KOffice lainnya. Ini dimungkinkan dengan menggunakan model obyek KParts.
Sebagai tambahan pada aplikasi KOffice saat ini, KLyX akan menjadi komponen KOffice di masa mendatang. Tidak ada program pembaca email atau news khusus pada KOffice, sebab telah tersedia KMail dan KRN pada KDE. Begitu juga tidak ada browser khusus karena telah tersedia Konqueror, dan juga aplikasi untuk organizer yaitu KOrganizer.

4. GNOME Office
GNOME Office merupakan sekumpulan program aplikasi pada desktop GNOME. Yang ditujukan untuk menyediakan aplikasi produktifitas dengan software free. Saat ini GNOME OFfice terdiri dari AbiWord, GnuMeric, GIMP, DIa, Gill, EOG, GNOME-PIM, dan GNOME-DB. Abiword merupakan suatu pengolah kata (dibahas tersendiri), Gnumeric merupakan aplikasi lembar kerja, dan GIMP merupakan program pengedit image yang handal. Dia dapat digunakan untuk menggambar diagram terstruktur, Gill dapat menganggambar grafik vektor terskala, dan Eye of GNOME merupakan viewer image, GNOME-PIM merupakan suatu pengelola informasi pribadi (Personal Information Manager - PIM), dang GNONE-DB menyediakan konekifitas database.
Sebagian dari komponen GNOME office masih dalam taraf pengembangan, tetapi sudah dapat digunakan.
1. GNOME Office - Gnumeric, Spreadsheet Gnumeric merupakan suatu spreadsheet kualitas tinggi yang dikembangkan dalam proyek GNOME OFfice. Gnumeric didisain untuk menggantikan spreadsheet komersial yang ada pada saat ini. Bila pengguna telah terbiasa menggunakan Excel, maka tak akan mengalami kesulitan dalam menggunakana Gnumeric ini.
2. GNOME Office - Dia, Dia merupakan program untuk menggambar yang didisain mirip program komersial Visio. Dapat digunakan untuk berbagai jenis diagram. Pada versi pertamanya saja telah tersedia diagram tuntuk UML, database, rangkaian, flowchart, network dan lainya. Program ini mudah digunakan dan dapat ditambahkan koleksi obyek baru ke dalamnya dengan menggunakan format file yang berbasiskan XML. Awalnya ditulis oleh Alexander Larsson dan kini dimaintain oleh James Henstridge. Dia telah banyak digunakan dan program ini telah cukup stabil.
3. GNOME Office - GIMP, GIMP ini merupakan GNU Image Manipulation Program, suatu perangkat lunak yang cocok untuk melakukan pemrosesan gambar, seperti melakukan retouching foto, komposisi citra, dan juga membuat gambar baru. Memiliki kemampuan yang sangat handal, dan dapat digunakan sebagai program untuk menggambar yang sederhana, program penolah foto, pemrosesan gambar secara batch, merender image, ataupun suatu pengkonversi format image. GIMP dapat ditambahkan kemampuannya dengan mudah melalui plug-in dan extension. Interface skrip memungkinkan dilakukannya tugas yang sngat kompleks secara udah.
4. GNOME Office - GNOME-PIM, GNOME-PIM ini merupakan paket pengelola informasi pribadi. Saat ini memiliki aplikasi kalender, dan buku alamat.
5. GNOME Office - GNOME-DB, GNOME-DB ini merupakan aplikasi lengpak yang memungkinkan akses secara mudah ke beragan sistem database. GNONE-DB merupakan suatu framework yang dapat digunakan untuk membuat aplikasi database. Menyediakan API dasar dengan back end yang dapat dipasang bergantung pada berbagai database dan juga berbagai widget untuk mengangai berbagai tugas database. Backend dari GNOME berdasarkan CORBA. GNOME-DBN ini mendukung berbagai database seperti Postgres, MySQL, dan lainnya.
GHOME-DB terdiri dari tiga bagian layer yang terpisah dan tidak saling bergantung. Layer tersebut adalah :
• Layer terbawah adalah database server yang merupakan server CORBA yang memetakan dari API yang bergantung pada database ke model GDA.
• Layer menengah adalah library client CDA, yang berada pada bagian atas dari interface CORBA, yang memungkinkan dapat dilakukannya akses secara mudah aplikasi klien, bersama dengan library GDA UI, yang menyediakan cara mudah mengakses library client, dari aplikasi GNOME.
• Layer di atasnya, dibentuk dari gabungan aplikasi yang menggunakan layer tengah, sebagai contoh, aplikasi rolodex, front-end SQL.

Lanjuuuutt...

Selasa, 23 Juni 2009

Praktikum 12 - Modul 8 - bubbleSort - Descending

<html><head>
<script Language = "JavaScript">

function urutkan (form)
{
DataKosong = false;
DataInputan = form.Data.value;
InputData = DataInputan.split(",");
for (var i=0; i < InputData.length; i++)
{
InputData[i] = parseInt (InputData[i], 10);
if (isNaN (InputData[i]))
{
DataKosong = true;
break;
}
}

InputData = bubbleSort (InputData, 0, InputData.length - 1);
if (DataKosong)
{
alert ("Silakan entri dulu Data, Pisahkan dengan tanda Koma");
form.Data.focus();
}
else
form.Hasil.value = DataString (InputData, 0);
}


function DataString (ArrayData, Angka)
{
if ((ArrayData.length - 1) >= Angka)
return (ArrayData[Angka] + "," + DataString (ArrayData, (Angka+1)));
else
return "";
}

function bubbleSort (ArrayData, Mulai, MulaiBaru)
{
for (var i = MulaiBaru - 1; i >= Mulai; i--)
{
for (var j = Mulai; j <= i; j++)
{
if (ArrayData[j+1] > ArrayData[j])
{
var DataTemporer = ArrayData[j];
ArrayData[j] = ArrayData[j+1];
ArrayData[j+1] = DataTemporer;
}
}
}
return ArrayData;
}

</script></head>

<body>
<center>
<form>
Masukkan Deretan Angka, Pisahkan dengan Koma :
<hr>
<input type=text name=Data size=30 value="5,6,8,5,12,4,8,4,20">
<br>
<br>
<input type=button value="urutkan" onClick="urutkan(this.form)">
<br>
<br>
<br>
Hasil Pengurutan :
<hr>
<input type=text name=Hasil size=30>

</form>
</center>
</body>
</html>

Lanjuuuutt...

Praktikum 12 - Modul 8 - bubbleSort - Ascending

<html><head>
<script Language = "JavaScript">

function urutkan (form)
{
DataKosong = false;
DataInputan = form.Data.value;
InputData = DataInputan.split(",");
for (var i=0; i < InputData.length; i++)
{
InputData[i] = parseInt (InputData[i], 10);
if (isNaN (InputData[i]))
{
DataKosong = true;
break;
}
}

InputData = bubbleSort (InputData, 0, InputData.length - 1);
if (DataKosong)
{
alert ("Silakan entri dulu Data, Pisahkan dengan tanda Koma");
form.Data.focus();
}
else
form.Hasil.value = DataString (InputData, 0);
}



function DataString (ArrayData, Angka)
{
if ((ArrayData.length - 1) >= Angka)
return (ArrayData[Angka] + "," + DataString (ArrayData, (Angka+1)));
else
return "";
}

function bubbleSort (ArrayData, Mulai, MulaiBaru)
{
for (var i = MulaiBaru - 1; i >= Mulai; i--)
{
for (var j = Mulai; j <= i; j++)
{
if (ArrayData[j+1] < ArrayData[j])
{
var DataTemporer = ArrayData[j];
ArrayData[j] = ArrayData[j+1];
ArrayData[j+1] = DataTemporer;
}
}
}
return ArrayData;
}

</script></head>

<body>
<center>
<form>
Masukkan Deretan Angka, Pisahkan dengan Koma :
<hr>
<input type=text name=Data size=30 value="5,6,8,5,12,4,8,4,20">
<br>
<br>
<input type=button value="urutkan" onClick="urutkan(this.form)">
<br>
<br>
<br>
Hasil Pengurutan :
<hr>
<input type=text name=Hasil size=30>

</form>
</center>
</body>
</html>

Lanjuuuutt...

Praktikum 11 - Modul 7 - Graph /Graf

<html>
<head><title>Dijkstra Algoritma</title>
<script>
<!--
alert ("Taet Dijkstra");
//-->

</script>
</head>
<body>
<script language = "javascript">

var NilaiAcuan = 10000;
var TakTerdefinisi = -1;
var NamaVerteks = new Array ('A','B','C','D','E','F');
var Matriks = new Array (6);

function Bobot (a,b)
{
return Matriks [a] [b];
}

function Dijkstra (JumlahVerteks,Awal,d)
{
var Posisi = new Array (JumlahVerteks);
var i;
var Kunjungan = new Array (JumlahVerteks);
var Sebelum = new Array (JumlahVerteks);

for (i=0; i<JumlahVerteks; i++)
{
Posisi [i] = NilaiAcuan;
Sebelum [i] = TakTerdefinisi;
Kunjungan[i] = false;
}
Posisi [Awal] = 0;

var Verteks;
for (Verteks =0; Verteks<JumlahVerteks; Verteks++)
{
var JarakTerpendek = NilaiAcuan, Berhenti = -1;
for (i=0; i<JumlahVerteks; i++)
{
if (!Kunjungan[i])
{
if (Posisi[i] <= JarakTerpendek)
{
JarakTerpendek = Posisi[i]; Berhenti = i;
}
}
}

Kunjungan[Berhenti] = true;
for (i=0; i<JumlahVerteks; i++)
{
if (!Kunjungan[i])
{
var w = Bobot (Berhenti, i);
if (Posisi [Berhenti]+ w <Posisi[i])
{
Posisi[i] = Posisi[Berhenti] + w;
Sebelum [i] = Berhenti;
}
}
}
}

i=d;
if (Posisi [i] <NilaiAcuan)
{
var Lintasan = NamaVerteks [i];
var Verteks = i;
while (Verteks>0)
{
Verteks = Sebelum [Verteks];
if (Verteks>0) Lintasan = NamaVerteks[Verteks] + '->' + Lintasan;
{
message ("Jarak :" +Posisi[i]+' ('+Lintasan+')'+'<br>');
}
else
{
message ("Tidak ada Jalur");
}
}

function init () {
var X = NilaiAcuan;
Matriks [0] = new Array (0,2,3,X,x,x);
Matriks [1] = new Array (2,o,3,6,x,x);
Matriks [2] = new Array (3,3,0,3,5,x);
Matriks [3] = new Array (x,6,3,0,1,3);
Matriks [4] = new Array (x,x,5,1,0,1);
Matriks [5] = new Array (x,x,x,3,1,0);

var Awal='<pre>';
Awal = Awal + 'A--2-B-6--D--3-F'+'<br>';
Awal = Awal + ' \ | /| / '+'<br>';
Awal = Awal + ' 3 3 3 1 1 '+'<br>';
Awal = Awal + ' \ | / | / '+'<br>';
Awal = Awal + ' \|/ |/ '+'<br>';
Awal = Awal + ' C--5-E '+'<br>;
Awal = Awal +'</pre>';

message (Awal.replace (/(\d)+/g, '<font color="red">$1</font>');
}
init ();
var Dari=0; // A
var Ke =5; // F
Dijkstra(Matriks.length,Dari,Ke);
//-->
</script>
</body>
</html>

Lanjuuuutt...

Praktikum 10 - Modul 6 - Doubly Linked List

<html>
<head>
<title>Struktur Data Linked List</title>
</head>
<body>
<script language = "JavaScript">
<!--
function DoublyLinkedList()
{
this._Kepala = null;
this._Ekor = null;
this._Panjang = 0;
}

DoublyLinkedList.prototype =
{
constructor: DoublyLinkedList,


Tambah: function (data)
{
var node = {data: data, next: null, prev: null};

if (this._Panjang == 0)
{
this._Kepala = node;
this._Ekor = node;
}
else
{
this._Ekor.next = node;
node.prev = this._Ekor;
this._Ekor = node;
}
this._Panjang++;

},

ItemList: function(index)
{
if (index > -1 && index < this._Panjang)
{
var NodeTanda = this._Kepala,
i = 0;

while(i++ < index)
{
NodeTanda = NodeTanda.next;
}

return NodeTanda.data;
}
else
{
return null;
}
},

Buang: function(index){

if (index > -1 && index < this._Panjang)
{
var NodeTanda = this._Kepala, i = 0;

if (index === 0)
{
this._Kepala = NodeTanda.next;
if (!this._Kepala)
{
this._Ekor = null;
}
else
{
this._Kepala.prev = null;
}

}
else
if (index === this._Panjang -1)
{
NodeTanda = this._Ekor;
this._Ekor = NodeTanda.prev;
this._Ekor.next = null;
}
else
{
while(i++ < index)
{
NodeTanda = NodeTanda.next;
}
NodeTanda.prev.next = NodeTanda.next;
}
this._Panjang--;
return NodeTanda.data;

}
else
{
return null;
}


},

Ukuran: function(){
return this._Panjang;
},

toArray: function(){
var result = [],
NodeTanda = this._Kepala;

while(NodeTanda){
result.push(NodeTanda.data);
NodeTanda = NodeTanda.next;
}

return result;
},

toString: function(){
return this.toArray().toString();
}
}

var List = new DoublyLinkedList();


List.Tambah("Teknik Informatika");
List.Tambah("Teknik Komputer");
List.Tambah("Komputerisasi Akuntansi");
List.Tambah("Computer Networking");


document.write("Isi LinkedList <br>");
document.write("--------------- <br>");
for (i=0; i<4; i++)
{
document.write(List.ItemList(i) + "<br>") ;
}
document.write("--------------- <br>");


alert("Isi LinkedList Awal =" + List.ItemList(0));
alert("ItemList 1 pada Linked List diBuang, yaitu = " +List.ItemList(1));
List.Buang(1);



document.write("<br>Isi LinkedList Terakhir <br>");
document.write("--------------- <br>");
for (i=0; i<4; i++)
{
document.write(List.ItemList(i) + "<br>") ;
}
document.write("--------------- <br>");

//-->
</script>
</body>
</html>

Lanjuuuutt...