Pages

Subscribe:

Ads 468x60px

♪ ♥ Get Paid Daily - The Best Sites PTC ♥ ♪
DonkeyMails.com: No Minimum Payout
AyuWage Services - Get Paid to Visits Sites and Complete Surveys

Senin, 16 Juli 2012

Queue (Antrian)

Queue (antrian) adalah struktur data dimana data yang pertama kali dimasukkan adalah data yang pertama kali bisa dihapus. Atau bisa juga disebut dengan struktur data yang menggunakan mekanisme FIFO (First In First Out).
queue
Queue dalam kehidupan sehari-hari seperti antrian pada penjualan tiket kereta api, dimana orang yang pertama datang adalah orang yang pertama kali dilayani untuk membeli tiket. Jika ada orang baru yang datang akan membali tiket, maka posisinya berada pada urutan paling belakang dalam antrian tersebut. Orang yang berada pada posisi terakhir dalam antrian adalah yang terakhir kali dapat dilayani dan memperoleh tiket kereta api (kalau kurang beruntung, maka akan kehabisan tiket). Contoh lain adalah nasabah yang antri di teller bank, paket data yang menunggu untuk ditransmisikan lewat internet, antrian printer dimana terdapat antrian print job yang menunggu giliran untuk menggunakan printer, dsb.
Istilah-istilah yang digunakan dalam queue (antrian)
Memasukkan data (insert) disebut juga dengan put, add, atau enqueue. Menghapus data (remove) biasa disebut dengan istilah delete, get, atau dequeue. Bagian belakang queue, dimana data bisa dimasukkan disebut dengan back, tail (ekor), atau end (akhir). Sedangkan bagian depan (front) queue dimana data bisa dihapus juga biasa disebut dengan istilah kepala (head).
Circular Queue
Di dunia nyata apabila seseorang sedang mengantri (misalnya antri tiket kereta api), apabila telah dilayani dan memperoleh tiket, maka ia akan keluar dari antrian dan orang-orang yang berada di belakangnya akan bergerak maju ke dapan. Kita bisa saja menggerakkan setiap item data ke depan apabila kita menghapus data yang terdepan, tetapi hal ini kurang efektif. Sebaliknya kita tetap menjaga setiap item data di posisinya, yang kita lakukan hanyalah merubah posisi front dan rear saja.
Yang menjadi permasalahan adalah apabila posisi rear berada pada bagian akhir dari array (atau pada nomor indeks yang terbesar). Meskipun ada bagian yang kosong di awal-awal array – karena mungkin data telah dihapus, data baru tidak bisa dimasukkan lagi karena rear-nya sudah tidak bisa bergerak lagi. Atau mungkinkah posisi rear nya bisa berpindah? Situasi seperti itu bisa dilihat seperti gambar berikut:
circular queueUntuk menghindari permasalahan seperti itu (tidak bisa memasukkan data baru) – meskipun queue-nya belum penuh, maka front dan rear-nya berputar (kembali) ke bagian awal array. Kejadian seperti ini dinamakan dengan circular queue (atau kadang-kadang disebut juga dengan istilah ring buffer). Kejadian seperti ini seperti terlihat pada gambar berikut:
circular queue
Perhatikan bahwa setelah rear berputar (kembali) ke bagian awal array, posisinya sekarang di bawah front, kebalikan dari posisi aslinya (front berada di bawah rear). Coba hapus beberapa data sehingga pada suatu saat front juga akan berputar (balik) ke bagian awal array, sehingga front dan rear akan ke susunan aslinya (front di bawah rear).
Queue.java
class Queue
{
private int maxSize;
private long[] queArray;
private int front;
private int rear;
private int nItems;
//————————————————————–
public Queue(int s)          // konstruktor
{
maxSize = s;
queArray = new long[maxSize];
front = 0;
rear = -1;
nItems = 0;
}
//————————————————————–
public void insert(long j)   // letakkan item (data) di posisi belakang dari queue
{
if(rear == maxSize-1)         //
rear = -1;
queArray[++rear] = j;         //naikkan rear dan masukkan item (data) pada posisi rear yang baru
nItems++;                     //tambah satu item lagi
}
//————————————————————–
public long remove()         // hapus item (data) yang berada pada posisi front
{
long temp = queArray[front++]; //dapatkan nilainya dan naikkan front
if(front == maxSize)           //
front = 0;
nItems–;                      // item (data) berkurang satu
return temp;
}
//————————————————————–
public long peekFront()      //
{
return queArray[front];
}
//————————————————————–
public boolean isEmpty()    //benar jika queue-nya kosong
{
return (nItems==0);
}
//————————————————————–
public boolean isFull()     // benar jika queue-nya penuh
{
return (nItems==maxSize);
}
//————————————————————–
public int size()           // jumlah ietm (data) dalam queue
{
return nItems;
}
//————————————————————–
}  // end class Queue
QueueApp.java
class QueueApp
{
public static void main(String[] args)
{
Queue theQueue = new Queue(5);  // queue menampung 5 item (data)
theQueue.insert(10);            // masukkan 4 item (data)
theQueue.insert(20);
theQueue.insert(30);
theQueue.insert(40);
theQueue.remove();              // hapus 3 item (data)
theQueue.remove();              //    (10, 20, 30)
theQueue.remove();
theQueue.insert(50);            // masukkan 4 item (data) lagi
theQueue.insert(60);            //    (wraps around)
theQueue.insert(70);
theQueue.insert(80);
while( !theQueue.isEmpty() )    // hapus dan tampilkan
{                            //    all items
long n = theQueue.remove();  // (
System.out.print(n);
System.out.print(“ “);
}
System.out.println(“”);
}  // end main()
}  // end class QueueApp
method insert()
Method insert() mengasumsikan bahwa queue tidak penuh (full). Kita tidak melihatnya dalam main(), tetapi kita bisa memanggil insert() hanya setelah memanggil isFull() dan memperoleh nilai kembalian yang salah. Pengisian data dengan cara menaikkan rear dan mengisikan data baru tersebut pada rear yang baru sekarang. Tetapi, jika rear berada di puncak array, pada maxSize-1, maka harus kembali ke posisi terbawah array sebelum penyisipan dilakukan. Caranya dengan memberi nilai rear=-1, sehingga jika terjadi kenaikan pada pada rear, maka rear akan menjadi 0, dasar dari array. Dan akhirnya, nItem bertambah.
Method remove()
method remove mengasumsikan queue-nya tidak kosong. Untuk meyakinkan bahwa queue-nya tidak kosong, anda harus memanggil method isEmpty(). Penghapusan selalu dimulai dengan memperoleh nilai pada front dan kemudian mengurangi front. Jika front-nya terletak pada akhir array, maka harus kembali ke 0. Kemudian nItems dikurangi.
Method peek()
untuk mendapatkan nilai pada front.
Method isEmpty(), isFull(), and size()
untuk mengecek nItems, apakah kosong atau penuh.

Linked List

Linked List

Ada beberapa algoritma linked list, diantaranya: linked list biasa, doubkle ended linked list dan doubly linked list. Berikut adalah contoh program menggunakan algoritma linked list. Untuk double ended linked list dan doubly linked list akan dibahas di kesempatan lain.
Linked List
Operasi:
  • Penyisipan sebuah item di awal list.
  • Penghapusan sebuah item di awal list.
  • Menampilkan isi list
class Link
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author informatika
*/
class Link
{
public int iData;
public double dData;
public Link next;
// ————————————————————-
public Link(int id, double dd)
{
iData = id;
dData = dd;
}
// ————————————————————-
public void tampilkanLink()
{
System.out.print(“{” + iData + “, ” + dData + “} “);
}
}
class LinkList
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author informatika
*/
class LinkList
{
private Link pertama;
// ————————————————————-
public LinkList()
{
pertama = null;
}
// ————————————————————-
public boolean kosong()
{
return (pertama==null);
}
// ————————————————————-
//======================================
//method sisipPertama()
//======================================
public void sisipPertama(int id, double dd)
{
Link linkBaru = new Link(id, dd);
linkBaru.next = pertama;
pertama = linkBaru;
}
// ———-akhir method sisipPertama() ——————–
//===========================================
//method hapusPertama()
//===========================================
public Link hapusPertama()
{
Link temp = pertama;
pertama = pertama.next;
return temp;
}
// ———akhir method hapusPertama() ———-
// =====================================
//Method tampilkanList()
//======================================
public void tampilkanList()
{
System.out.print(“List (pertama–>terakhir): “);
Link sekarang = pertama;
while(sekarang != null)
{
sekarang.tampilkanLink();
sekarang = sekarang.next;
}
System.out.println(“”);
}
// ———akhir method tampilkanList()————–
}
LinkListApp
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author informatika
*/
class LinkListApp
{
public static void main(String[] args)
{
LinkList listQ = new LinkList();
listQ.sisipPertama(22, 2.99);
listQ.sisipPertama(44, 4.99);
listQ.sisipPertama(66, 6.99);
listQ.sisipPertama(88, 8.99);
listQ.tampilkanList();
while( !listQ.kosong() )
{
Link linkQ = listQ.hapusPertama();
linkQ.tampilkanLink();
System.out.print(” terhapus”);
System.out.println(“”);
}
listQ.tampilkanList();
}
}
output program:
List (pertama–>terakhir): {88, 8.99} {66, 6.99} {44, 4.99} {22, 2.99}
{88, 8.99}  terhapus
{66, 6.99}  terhapus
{44, 4.99}  terhapus
{22, 2.99}  terhapus
List (pertama–>terakhir):
Kenapa list -nya kosong? karena telah kita hapus dengan method hapusPertama() menggunakan perulangan while selama list ada. cara pengecekannya adalah dengan memanggil method kosong(). jadi maksudnya selama list-nya belum kosong (masih ada) maka akan dilakukan proses penghapusan list menggunakan method hapusPertama()

Struktur Data - Binary Tree Di Java

Binary Tree di Java

Terminologi
binary tree
binary tree

maaf saya menggunakan istilah asing untuk terminologinya. soalnya saya sudah terbiasa pakai istilah ini, kalaupun diterjemahkan kuq hasilnya malah jadi aneh… :)

Path

Bayangkan seperti orang yang berjalan dari node ke node lain melalui garis yang menghubungkannya. Garis-garis penghubung yang delewati itulah yang dinamakan dengan path.

Root

Node pada posisi paling atas disebut root. Dalam sebuah tree hanya terdapat satu root saja.
Parent
Setiap node (kecuali root) mempunyai cabang yang menguhubungkan tepat satu node lain di atasnya. Node di atasnya inilah yang disebut parent.
Child
Setiap node bisa mempunyai satu atau lebih cabang yang menghubungkan ke node lainnya. Node di bawahnya inilah yang disebut dengan child.
Leaf
Node yang tidak mempunyai child disebut dengan leaf. Dalam sebuah tree hanya ada satu root saja tetapi bisa mempunyai banyak leaf.
Subtree
Setiap node bisa dipertimbangkan menjadi root nya subtree, yang terdiri dari beberapa children, dan children nya children.
Visiting
Sebuah node dikatakan dikunjungi ketika kendali program sampai pada sebuah node, biasanya untuk tujuan menyelesaikan beberapa operasi pada node, seperti mengecek nilai datanya kemudian menampilkannya.
Traversing
Traverse maksudnya mengunjungi semua node dalam tree untuk tujuan tertentu, misalnya: untuk mengurutkan datanya.
Level
Level node adalah banyaknya generasi node yang dihitung mulai dari root. Jika kita mengasumsikan bahwa root adalah level 0, maka children adalah level 1, grandchildren adalah level 2, dan seterusnya.
Key
Medan data dalam sebuah objek biasanya didesain dengan menggunakan sebuah key. Nilai dari key ini digunakan untuk melakukan pencarian data atau operasi lainnya.
Tree menggunakan Java
Beberapa class untuk mendemonstrasikan binary tree di java
Class Node –> untuk membuat node
class Node
{
int iData;                  // data yang digunakan sebagai kunci
double fData;         // data lain
node childKiri;     // node child kiri
node childKanan;         // node child kanan
public void tampilNode()
{
// (bagian dari tubuh method)
}
}
Class Tree –> membuat susunan Tree nya dimana di dalamnya juga terdapat beberapa method untuk:
pencarian node
penyisipan node
penghapusan node

class Tree
{
private Node root;     // satu-satunya data dalam tree
public void cari(int key)
{
tempat penulisan statemen cari
}
public void sisip(int id, double dd)
{
tempat penulisan statemen sisip
}
public void hapus(int id)
{
tempat penulisan statemen hapus
}
// klo ada method laen tulis di sini
}    // akhir dari kelas tree
Sampai di sini dulu pembahasannya. bersambung… ya… uda magghrib nie… Untuk menjalankan programnya, kita masi perlu membuat satu class lagi dimana fungsi dari class ini untuk memanggil clas-clas yang sudah dibuat sebelumnya. o’ia method-method yang dibuat di class sebelumnya juga blom ada statement-nya

The Power of Opensource Software

Ini contoh objek lain yang didesain menggunakan software GIMP. GIMP alternatif software desain grafis yang bisa diperoleh secara gratis, sehingga kita bisa menggunakannya tanpa khawatir melanggar UU HAKI karena membajak.
IT Button
IT Button
Source: http://mygimptutorial.com/


Abstract Image
Abstract Image
Source: http://gimp-tutorials.net/abstract-gimp-effect

Menggunakan Aplikasi Pengingat Waktu Sholat di Linux Sabily

Di Linux Sabily terdapat aplikasi pengingat waktu sholat yaitu Minbar Prayer Times. Dengan aplikasi tersebut kalau kita sedang beraktifitas di depan komputer, dan telah tiba waktu sholat maka akan terdengar Adzan yang menunjukkan waktu sholat tertentu. Berikut adalah tampilan dari aplikasi tersebut:
Tampilan Aplikasi Minbar Prayer Time
Tampilan Aplikasi Minbar Prayer Time

Aplikasi Minbar Prayer Times terdiri tiga bagian, yaitu: time, location, timetable, dan prefereneces. Time menunjukkan waktu sholat, location menunjukkan arah kiblat dari lokasi/tempat dimana kita berada, timetable digunakan untuk mengetahui kalender waktu sholat dalam satu bulan, dan preference untuk melakukan pengaturan aplikasi.
Tampilan Waktu Sholat Perbulan (Prayer Calendar)
Tampilan Waktu Sholat Perbulan (Prayer Calendar)
Agar Minbar Prayer Times dapat mengingatkan waktu sholat (dengan suara adzan) tepat pada waktunya, maka harus di-setting terlebih dahulu. Berikut adalah cara men-setting kedua aplikasi tersebut.
Setting Minbar Prayer Times
  1. Pertama kali kita jalankan terlebih dulu aplikasi Minbar Prayer Time dengan mengklik Applications → Islamic Software → Minbar Prayer Times sehingga aplikasi tersebut akan terbuka, seperti pada tampilan berikut:
    Aplikasi Minbar Prayer Times
    Aplikasi Minbar Prayer Times
  2. Pada bagian Preferences klik tombol preferences, sehingga di layar monitor akan terdapat tampilan jendela Edit City Detail, seperti pada gambar berikut:
    Pengaturan Lokasi (Latitude dan Longitude) Kota
    Pengaturan Lokasi (Latitude dan Longitude) Kota
  3. Untuk menentukan Latitude dan Longitude kota dimana Anda berada klik tombol Find City, maka akan akan muncul jendela yang digunakan untuk pencarian kota seperti pada gambar berikut:
    Pencarian Kota
    Pencarian Kota

    Kalau kota yang Anda maksud tidak ada dalam daftar, maka dapat dicari di alamat website www.islamicfinder.com. Buka web browser dengan klik Applications → Internet → Firefox Web Browser, kemudian ketik alamat di atas di address bar.

    Mengetik Alamat Website di Address Bar Web Browser
    Mengetik Alamat Website di Address Bar Web Browser
  4. Pada halaman website yang tampil, pilih Indonesia pada combo box Country, seperti pada gambar berikut:
    Menentukan Negara Pada Prayer Finder
    Menentukan Negara Pada Prayer Finder
  5. Setelah menentukan negara, maka pada web browser akan tampil halaman tabel waktu sholat kota-kota di Indonesia. Apabila kota yang Anda maksud tidak ditampilkan, gunakan fasilitas pencarian yang disediakan.
    Menentukan Kota pada Indonesia Prayer Times
    Menentukan Kota pada Indonesia Prayer Times

    Pilihlah nama kota sesuai dengan tempat dimana Anda berada. Untuk contoh dipilih kota Malang, sehingga pada tabel klik kota Malang.
  6. Selanjutnya di halaman web browser akan tampil nama-nama kota sesuai dengan pilihan Anda disertai dengan posisi latitude dan longitude. Pilih nama kota sesuai dengan propinsi, kemudian catat latitude dan longitude. Untuk contoh, Malang (Propinsi: Jawa Timur) berada pada posisi latitude (7.98 S) dan longitude (112.63 E).
    Daftar Kota Menurut Propinsi disertai  Posisi Latitude dan Longitude
    Daftar Kota Menurut Propinsi disertai Posisi Latitude dan Longitude
  7. Masukkan nilai latitude dan longitude yang telah Anda catat ke dalam form City Details, seperti pada gambar berikut:
    input latitude dan longitude
    input latitude dan longitude
    Untuk nama kota (city name) isi sesuai dengan nama kota dimana Anda berada dan zona waktu (time zone) isi dengan 7.0.
  8. Setelah itu masih dalam jendela Edit City Details klin tab Advanced. Di dalam tab Adavanced bisa dilakukan pengaturan fitur notification dan start minimize to tray. Notification digunakan untuk memberi peringatan (berapa menit) sebelum memasuki waktu sholat. Start minimize to tray digunakan untuk menjalankan program dalam mode minimize setiap komputer dijalankan (ditunjukkan dengan adanya indikator icon program Minbar Prayer Times di tray). Beri tanda checkbox (cawang) untuk mengaktifkan kedua fitur tersebut.
  9. Mengaktifkan Fitur Start dan Notification
    Mengaktifkan Fitur Start dan Notification
    Minbar Prayer Times Berjalan dalam Mode Minimize
    Minbar Prayer Times Berjalan dalam Mode Minimize
  10. Kemudian masih di jendela Edit City Details klik tab Athan untuk menentukan suara Adzan.
    Tampilan Menu Tab Athan
    Tampilan Menu Tab Athan
  11. Klik pada tulisan None di sebelah kanan label Normal Athan untuk menentukan lokasi (folder/direktori) file suara adzan dalam hardisk. Program Minbar Prayer Times mendukung file multimedia MP3.
    Klik None untuk Menentukan Letak  File Suara Adzan
    Klik None untuk Menentukan Letak File Suara Adzan

    Memilih File Suara Adzan di Folder Tertentu
    Memilih File Suara Adzan di Folder Tertentu
    Untuk mencoba/mendengarkan file adzan klik tombol Play dan untuk menghentikan klik Stop.
    Mencoba File Adzan
    Mencoba File Adzan
  12. Lakukan dengan cara yang sama untuk menentukan adzan subuh. Klik pada tulisan None di sebelah kanan label Sub Athan kemudian tentukan file suara adzan subuh dengan cara seperti pada langkah sebelumnya (langkah ke-12).
  13. Terakhir, klik OK untuk menutup jendela Preferences kemudian klik Close untuk menutup jendela Minbar Prayer Times (jangan meng-klik Quit, karena akan menyebabkan keluar/menghentikan program).
Unique 1:1 Traffic Exchange

♪ ♥ Ma liste de blogs ♥ ♪

♪ ♥ Please Votes! Thanks. ♪ ♥
×