Wanna $10??? klik & register now!!!

Jumat, 09 April 2010

TUGAS SISTEM BASIS DATA

TUJUAN
  1. Mengerti yang dimaksud dengan Sistem Basis Data dan komponen-komponennya
  2. Mengetahui abstraksi data yang menunjukkan bagaimana para pemakai melihat data
  3. Mengetahui bahasa basis data yang menjadi perantara user untuk berinteraksi dengan basis data
  4. Mengetahui struktur sistem basis data secara keseluruhan

PENGERTIAN

Merupakan sistem yang terdiri atas kumpulan file (table) dalam sebuah basis data di sebuah sistem komputer yang saling berhubungan dan sekumpulan program pengelola basis data (DBMS :Database Management System) yang memungkinkan beberapa pemakai dan atau program lain untuk mangakses dan memanipulasi file-file (table-table) tersebut

BAHASA BASIS DATA

  1. Terdiri dari sejumlah perintah (statement) yang diformulasikan dan dapat diberikan oleh pengguna dan dikenali/diproses oleh DBMS untuk melakukan suatu aksi/pekerjaan tertentu.
  2. Komponen Bahasa Basis Data: Data Definition Language (DDL) & Data Manipulation Language (DML)

DATA DEFENITION LANGUAGE

Data Definition Language (DDL) adalah bahasa dalam DBMS yang digunakan untuk membuat atau mendefinisikan obyek-obyek di dalam database. Secara umum digunakan untuk membuat obyek table dan view. Secara khusus, di dalam DBMS tertentu digunakan untuk :

1. Membuat trigger

2. Membuat stored procedure

3. Membuat database, index, rule, schema dll (tergantung DBMS)

4. Digunakan untuk mespesifikasikan struktur/skema basis data yang menggambarkan/mewakili desain basis data secara keseluruhan.

5. Hasil kompilasi perintah DDL adalah kamus data >>File yang berisi metadata (data yang mendeskripsikan data sesungguhnya)

6. Struktur penyimpan dan metode akses yang digunakan oleh sistem basis data disebut dengan data storage and definition language

Contoh sintaks DDL :

Untuk Tabel:

1. Untuk Membuat Tabel

CREATE TABLE (
|
)

2. Untuk menghapus table

DROP TABLE

Untuk Memodifikasi Tabel:

3. Untuk menambahkan kolom baru

ALTER TABLE
ADD

4. Untuk menghapus kolom

ALTER TABLE
DROP

Untuk View:

5. Untuk membuat view

CREATE VIEW AS

6. Untuk menghapus view

DROP VIEW

Untuk Trigger:

7. Untuk membuat trigger

CREATE TRIGGER ON TABLE ON [DELETE] [,] [INSERT] [,] [UPDATE] AS

Contoh Objek Basis Data yang termasuk DDL:

Tabel

Tabel terdiri dari field-field atau kolom-kolom dengan tipe data tertentu dan baris-baris yang digunakan sebagai penyimpan data.

Contoh : tabel Mahasiswa yang terdiri dari field-field : NRP (primary key), Nama, Alamat, JenisKel, NIPDosen (foreign key dari field NIP pada tabel Dosen).

Sintaks DDLnya :

CREATE TABLE Mahasiswa (
NRP char(8),
Nama varchar(20) NOT NULL,
Alamat varchar(30),
JenisKel char(1) DEFAULT “L”,
NIPDosen char(9),
PRIMARY KEY (NRP),
CONSTRAINT fk_mhs_dosen FOREIGN KEY (NIPDosen) REFERENCES Dosen(NIP) ON DELETE RESTRICT ON UPDATE CASCADE ON INSERT RESTRICT
);

View

View adalah tabel bayangan. Tidak menyimpan data secara fisik. Biasanya berupa hasil query dari tabel-tabel dalam sebuah database.

Contoh : view MahasiswaPria yang diambil dari tabel Mahasiswa di mana field JenisKel = “L”.

Sintaks DDLnya :

CREATE VIEW MahasiswaPria AS
SELECT * FROM Mahasiswa WHERE JenisKel = “L”

Trigger

Trigger adalah sebuah obyek dalam database yang berupa prosedur yang merespon setiap kali terdapat proses modifikasi (insert, update, dan delete) pada tabel.

Contoh : trigger tLogUbahNilai melakukan penambahan data pada tabel LogHistoris untuk setiap penambahan / update data pada tabel PesertaKul.

Sintaks DDLnya :

CREATE TRIGGER tLogUbahNilai ON TABLE PesertaKul
FOR UPDATE, INSERT AS
INSERT INTO LogHistoris (Tanggal, Proses) VALUES (getdate(), ‘Terjadi proses perubahan data nilai’)

Dengan menggunakan sintaks SQL, buatlah DDL untuk rancangan berikut ini :



Keterangan :

· Emp_name dan dep_name tidak boleh dikosongi

· Isi default emp_name = pegawai baru

· Isi default emp_address = surabaya

create table DEP (
DEP_ID CHAR(6) not null,
DEP_NAME VARCHAR2(20),
constraint PK_DEP primary key (DEP_ID)
);

create table EMP (
EMP_ID CHAR(8) not null,
DEP_ID CHAR(6),
EMP_NAME VARCHAR2(25) default ‘pegawai_baru’,
EMP_ADDRESS VARCHAR2(35) default ’surabaya’,
constraint PK_EMP primary key (EMP_ID),
constraint FK_EMP_WORK_AT_DEP foreign key (DEP_ID) references DEP (DEP_ID)
);

DATA MANIPULATION LANGUAGE

1. Data Manipulation Language (DML) merupakan bahasa basis data yang berguna untuk melakukan modifikasi dan pengambilan data pada suatu basis data.

2. Bentuk manipulasi:

-Pencarian kembali data lama

-Penyisipan data baru

-Penghapusan data

-Pengubahan data

3. Jenis DML:

-Prosedural

-Non Prosedural

Contoh penggunaan Data Manipulation Language:

a. Penambahan Data

Instruksi SQL untuk melakukan penambahan data adalah menggunakan syntax:

INSERT INTO [(field1, field2, …)]

VALUES (field1 [,field2, …]) | SQL-SELECT

Keterangan

· à nama tabel yang akan ditambahkan datanya

· [(field1, field2, …)] àfield-field di dalam tabel yang akan diisikan nilainya

· VALUES (nilai1 [,nilai2, …]) | SQL-SELECT à nilai yang diisikan

Jika mengisikan sebuah data tunggal saja yang tidak diambil dari tabel lain, gunakan:

VALUES (nilai1 [,nilai2, …])

Contoh :

Untuk mengisikan data pada tabel penerbit:

INSERT INTO penerbit (PN_ID, PN_Nama) ¿

VALUES (91, 'CV Angkasa')

Contoh di atas menyebutkan field-field yang diisikan pada tabel penerbit, sehingga nilai-nilai yang ditulis setelah klausa VALUES juga harus mengikuti field-field tersebut.

b. Mengubah Data

Instruksi SQL untuk melakukan perubahan data adalah menggunakan syntax:

UPDATE

SET = [ , = , …]

[WHERE ]

Keterangan

· à nama tabel yang akan ditambahkan datanya

· SET = [,=,... ] à nilai baru yang akan diisikan pada field tertentu

· [WHERE ] à filter yang berlaku untuk menentukan data mana saja yang diupdate

Contoh :

n Untuk melakukan update massal (berlaku untuk seluruh field), yakni menaikkan seluruh harga sebesar 110% pada koleksi:

UPDATE koleksi SET KL_Harga=KL_Harga*1.1

c. Menghapus Data

Instruksi SQL untuk menghapus data adalah menggunakan syntax:

DELETE FROM

[WHERE ]

Keterangan

· namaTabel> à nama tabel yang akan ditambahkan datanya

· [WHERE ] à filter yang berlaku untuk menentukan data mana saja yang dihapus

Contoh :

n Untuk menghapus seluruh data peminjaman:

DELETE FROM Peminjaman

d. Contoh Tabel

Contoh Data:

Tabel Mahasiswa:



Tabel Dosen:


Jumat, 12 Februari 2010

Jurnal Heap

Penerapan heap tree dalam heap sort dan penggunaannya
Studi Kasus pada Penggunaan heap sort menggunakan algoritma
Adi Kurniawan¹, Mery Anggraini², Deniel Christ Evhant M³
Program Studi Sarjana Tekhnik Informatika
Fakultas Ilmu Komputer, Universitas Pembangunan Nasional
adink16_donuts@yahoo.com, merycute59@yahoo.com, christ_evhant@yahoo.co.id.

Abstract
Mahasiswa Teknik Informatika dan orang-orang lain yang berkecimpung dalam bidang pemrograman (programming) sering sekali menghadapi masalah pengurutan dalam membangun sebuah program aplikasi. Misalnya saja dalam membangun sebuah aplikasi pengolah data mahasiswa, programmer akan dihadapkan pada masalah pengurutan data mahasiswa berdasarkan atribut tertentu, seperti nama, NIM, nilai, dan sebagainya. Di dalam bidang Teknik Informatika sendiri terdapat banyak sekali jenis-jenis algoritma pengurutan yang dapat digunakan untuk memecahkan masalah pengurutan tersebut, di antaranya adalah bubble sort, merge sort, insertion
sort, quick sort, dan selection sort, serta masih banyak lagi jenis algoritma pengurutan lainnya. Oleh karena itu, teknik dan kejelian untuk memilih algoritma pengurutan yang tepat dan sesuai dengan permasalahan pengurutan yang dihadapi sangat diperlukan karena masing-masing algoritma pengurutan tersebut memiliki karakteristik yang berbeda-beda. Penulis memilih untuk mengangkat tema Heap Sort dalam makalah ini sebab heap sort merupakan salah satu algoritma pengurutan yang memiliki kompleksitas waktu asimptotik terbaik. Selain itu juga, heap sort menerapkan teknik yang unik di dalam memecahkan masalah pengurutan, yaitu dengan menggunakan heap tree. Pada makalah ini akan dibahas dan dianalisis heap tree dan kegunaanya dalam heap sort, serta contoh sederhana mengenai cara penerapan algoritma pengurutan heap sort dalam memecahkan suatu masalah pengurutan.
Kata kunci: algoritma pengurutan, mangkus, kompleksitas waktu asimptotik, heap sort, heap tree.

Pendahuluan
Untuk memecahkan masalah pengurutan dalam membangun suatu program aplikasi, dibutuhkan algoritma pengurutan. Di dalam bidang Teknik Informatika terdapat banyak sekali jenis-jenis algoritma pengurutan yang dapat digunakan untuk memecahkan masalah pengurutan.
Pengurutan data (data sorting) merupakan bagian dari pengolahan data informasi. Dari data-data yang telah didapat, ada kalanya data tersebut harus diurutkan terlebih dahulu berdasarkan aturan yang lebih dulu ditentukan. Berdasarkan nilai maupun alphabet misalnya.
Metode-metode pengurutan data pun ada berbagai jenis. Mulai dari binary sort, insertion sort, merge sort, heap sort dll. Penggunaan metode mana yang akan dipakai nantinya tergantung dari jenis maupun kuantitas data yang diolah.
Heap sort, algoritma pengurutan, merupakan salah satu metode pengurutan yang sering digunakan. Melalui jurnal ini akan dibahas teknik pencarian ini beserta kelebihan dan kekurangannya.
Oleh karena itu, teknik untuk memilih algoritma pengurutan yang tepat, sesuai dengan kebutuhan, dan mangkus sangat diperlukan karena masing-masing algoritma pengurutan memiliki karakteristik yang berbedabeda. Heap sort merupakan salah satu contoh algoritma pengurutan yang memiliki kompleksitas waktu asimptotik terbaik serta menerapkan teknik yang unik/khas di dalam memecahkan masalah pengurutan, yaitu dengan menggunakan heap tree.

Heap
Pengertian Heap
Pohon heap adalah struktur data yang berbentuk pohon yang memenuhi sifat-sifat heap yaitu jika B adalah anak dari A, maka nilai yang tersimpan di simpul A lebih besar atau sama dengan nilai yang tersimpan di simpul B. Hal ini mengakibatkan elemen dengan nilai terbesar selalu berada pada posisi akar, dan heap ini disebut max heap. (Bila perbandingannya diterbalikkan yaitu elemen terkecilnya selalu berada di simpul akar, heap ini disebut adalah min heap). Karena itulah, heap biasa dipakai untuk mengimplementasikan priority queue. Operasi-operasi yang digunakan untuk heap adalah :
• Delete-max atau delete-min: menghapus simpul akar dari sebuah max- atau minheap.
• Increase-key atau decrease-key : mengubah nilai yang tersimpan di suatu simpul.
• Insert: menambahkan sebuah nilai ke dalam heap.
• Merge: menggabungkan dua heap untuk membentuk sebuah heap baru yang berisi semua elemen pembentuk heap tersebut.







Gambar : Contoh dari max heap


Jenis-jenis Heap :
  1. Binary heap : Binary heap adalah heap yang dibuat dengan menggunakan pohon biner.
  2. Binomial heap : Binomial heap adalah heap yang dibuat dengan menggunakan pohon binomial. Pohon binomial bila didefinisikan secara rekursif adalah:
  • Sebuah pohon binomial dengan tinggi 0 adalah simpul tunggal
  • Sebuah pohon binomial dengan tinggi k mempunyai sebuah simpul akar yang anak-anaknya adalah akar-akar pohonpohon binomial dengan tinggi k-1,k- 2,…,2,1,0.






Gambar : pohon-pohon binomial dengan tinggi (order) 0 s/d 3
3. Fibonacci Heap
Fibonacci heap adalah kumpulan pohon yang membentuk minimum heap. Pohon dalam struktur data ini tidak memiliki bentuk yang tertentu dan pada kasus yang ekstrim heap ini memiliki semua elemen dalam pohon yang berbeda atau sebuah pohon tunggal dengan tinggi n. Keunggulan dari Fibonacci heap adalah ketika menggabungkan heap cukup dengan menggabungkan dua list pohon.








Gambar : Contoh Fibonacci heap

Perbandingan kompleksitas jenis-jenis heap

Tabel 1. Perbandingan macam-macam heap







Heap Sort
Heap Sort adalah sebuah algoritma pengurutan yang paling lambat dari algoritma yang memiliki kompleksitas O(n log n). Tetapi tidak seperti algoritma Merge Sort dan Quick Sort, algoritma Heap Sort tidak memerlukan rekursif yang besar atau menggunakan banyak tabel (array). Oleh karena itu, Heap Sort adalah pilihan yang baik untuk sebuah kumpulan data yang besar.
Algoritma ini bekerja dengan menentukan elemen terbesar (atau terkecil) dari sebuah daftar elemen, dan diletakkan pada akhir (atau awal) dari daftar tersebut. Heap sort menyelesaikan sebuah pengurutan menggunakan struktur data yang disebut heap.
Algoritma ini dimulai dengan membangun sebuah array heap dengan membangun tumpukan dari kumpulan data, lalu memindahkan data terbesar ke bagian belakang dari sebuah tabel hasil. Setelah itu, array heap dibangun kembali, kemudian mengambil elemen terbesar untuk diletakkan di sebelah item yang telah dipindahkan tadi. Hal ini diulang sampai array heap habis.
Jadi secara umum, algoritma ini memerlukan dua buah tabel; satu tabel untuk menyimpan heap, dan satu tabel lainnya untuk menyimpan hasil. Walaupun lebih lambat dari Merge Sort atau Quick Sort, algoritma ini cocok untuk digunakan pada data yang berukuran besar.

1. Algoritma Heapify
Algoritma Heapify adalah membangun sebuah heap dari bawah ke atas, secara berturut-turut berubah ke bawah untuk membangun heap. Permasalahan pertama yang harus kita pertimbangkan dalam melakukan operasi heapify adalah dari bagian mana kita harus memulai. Bila kita mencoba operasi heapify dari akar maka akan terjadi operasi runut-naik seperti algoritma bubble sort yang akan menyebabkan kompleksitas waktu yang ada akan berlipat ganda. Sebuah versi lain adalah membangun heap secara atas-bawah dan berganti-ganti ke atas untuk secara konseptual lebih sederhana untuk ditangani. Versi ini mulai dengan sebuah heap kosong dan secara berturut-turut memasukkan data. Versi lainnya lagi adalah dengan membentuk pohon heap-pohon heap mulai dari subtree-subtree yang paling bawah. Jika subtree-subtree suatu simpul sudah membentuk heap maka pohon dari simpul tersebut mudah dijadikan pohon heap dengan mengalirkannya ke bawah. Setelah diuji, maka ide yang paling efisien adalah versi yang terakhir, yang kompleksitas algoritmanya pada kasus terburuk adalah O(n), sedangkan versi membentuk heap tree-heap tree dari atas ke bawah kompleksitas nya O(n log n).
Jadi, algoritma utama heapify adalah melakukan iterasi mulai dari internal simpul paling kanan bawah(pada representasi larik, adalah elemen yang berada di indeks paling besar) hingga akar, kemudian kearah kiri dan naik ke level di atasnya, dan seterusnya hingga mencapai akar (sebagai larik [0..N-1]). Oleh karena itu, iterasi dilakukan mulai dari j= N/2 dan berkurang satu-satu hingga mencapai j=0. Pada simpul internal tersebut, pemeriksaan hanya dilakukan pada simpul anaknya langsung (tidak pada level-level lain di bawahnya). Pada saat iterasi berada di level yang lebih tinggi, subtreesubtree selalu sudah membentuk heap. Jadi, kasus yang paling buruk adalah restrukturisasi hanya akan mengalirkan simpul tersebut kearah bawah. Dengan demikian, heapify versi ini melakukan sebanyak N/2 kali iterasi, dan pada kasus yang paling buruk akan melakukan iterasi sebanyak ²log(N) kali.

2. Algoritma Remove
Algoritma remove ini menukar akar (yang berisi nilai maksimum) dari heap dengan elemen terakhir. Secara logika, simpul yang berada paling kanabawah dipindahkan ke akar untuk menggantikan simpul akar yang akan diambil.

3. Algoritma Reheapify
Algoritma reheapify ini melakukan pembuatan ulang heap dari atas ke bawah seperti halnya iterasi terakhir dari algoritma metoda heapify. Perbedaan antara metode heapify dengan metode reheapify ada pada iterasi yang dilakukan oleh kedua algoritma tersebut. Algoritma metode reheapify ini hanya melakukan iterasi terakhir dari algoritma heapify. Hal ini disebabkan baik subtree kiri maupun subtree kanannya sudah merupakan heap, sehingga tidak perlu dilakukan iterasi lengkap seperti algoritma heapify. Dan setelah reheapify maka simpul yang akan diiterasikan berikutnya akan berkurang satu.

Penerapan Algoritma Pengurutan Heap Sort

Salah satu contoh penerapan algoritma pengurutan (sorting algorithm) heap sort adalah sebagai berikut: Misalkan terdapat suatu array bilangan bulat yang terdiri dari sepuluh buah anggota dengan nilai data 11, 9, 8, 27, 16, 25, 12, 13, 34, dan 43. Kita akan mengurutkan data diatas dengan menggunakan heapsort. Pertama-tama, array di atas dapat dipandang sebagai suatu Complete Binary Tree (CBT) sebagai berikut:








Selanjutnya algoritma metoda heapify dilakukan dengan iterasi dari subtree node ke-4, ke-3, dan seterusnya berturut-turut hingga mencapai root (akar). Iterasi dilakukan mulai dari node ke-4 karena N/2 dalam contoh di atas adalah 5. Dan elemen kelima dari array memiliki nilai indeks 4 sebab indeks array biasanya diawali dari 0. Penerapan algoritma metoda heapify terhadap Complete Binary Tree (CBT) pada contoh di atas menghasilkan operasi-operasi pertukaran sebagai berikut:
1. Subtree node ke-4: pertukaran 16 dengan 43
2. Subtree node ke-3: pertukaran 27 dengan 34
3. Subtree node ke-2: pertukaran 8 dengan 25
4. Subtree node ke-1: pertukaran 9 dengan 43, lalu pertukaran 9 dengan 16
5. Subtree node ke-0: pertukaran 11 dengan 43, lalu pertukaran 11 dengan 34, serta akhirnya pertukaran 11 dengan 27 Perubahan-perubahan (pertukaran) tersebut dapat digambarkan sebagai berikut:













Semua perubahan di atas terjadi dalam array yang bersangkutan, sehingga pada akhirnya diperoleh tree terakhir yang merupakan heap tree. Sementara itu, dalam iterasi yang melakukan/menerapkan algoritma metoda remove( ) dan algoritma metoda reheapify() akan terjadi pemrosesan berikut:

1. Setelah 43 di-remove dan 9 menggantikan posisi yang ditinggalkan oleh 43, maka terjadi reheapify: penukaran 9 dengan 34, 9 dengan 27, dan 9 dengan 13.





dan data yang telah terurut adalah 43.






2. Setelah 34 di-remove dan 11 menggantikan posisi yang ditinggalkan oleh 34, maka terjadi reheapify: penukaran 11 dengan 27, dan 11 dengan 16.





dan data yang telah terurut adalah 34, 43.






3. Setelah 27 di-remove dan 9 menggantikan posisi yang ditinggalkan oleh 27, maka terjadi reheapify: penukaran 9 dengan 25, dan 9 dengan 12.





dan data yang telah terurut adalah 27, 34, 43.






4. Demikian seterusnya dilakukan algoritma metoda remove dan algoritma metoda reheapify hingga tidak ada lagi node yang tersisa. Dan pada akhirnya akan didapatkan hasil data yang telah terurut adalah 8, 9, 11, 12, 13, 16, 25, 27, 34, 43.

Program Heap Sort & Penjelasannya

<#include <>

void restoreHup(int*,int); // pemanggilan fungsi void restoreHup

void restoreHdown(int*,int,int); //pemanggilan fungsi void restoreHdown

void main()

{ // pembuka void main

int a[20],n,i,j,k; // mendeklarasikan bahwa a[20] ,n,i,j,k adalah integer

printf(" Masukkan jumlah element : ");// untuk menampilkan kelayar perintah memasukkan jumlah element

scanf("%d",&n); // untuk mengidentifikasikan nilai yang dimasukkan melalui keyboard

printf(" Masukkan element : "); //untuk menampilkan kelayar perintah untuk memasukkan element

for(i=1;i<=n;i++) //funsi for dimana jika ketentuan untuk i terpenuhi maka progran di bawahnya akan dijalankan

{ // pembuka fungsi for

scanf("%d",&a[i]); // untuk mengidentifikasi array a

restoreHup(a,i); // a , i dalam fungsi restoreHup

} // penutup fungsi for

j=n; // nilai j sama dengan n

for(i=1;i<=j;i++) //funsi for dimana jika ketentuan untuk i terpenuhi maka progran di bawahnya akan dijalankan

{ // pembuka fungsi for

int temp; // temp sebagai integer

temp=a[1]; // temp sama dengan nilai array a yang pertama

a[1]=a[n]; // nilai array a yg ke 1 sama dengan array a yang ke n

a[n]=temp; // nilai array a yang ke n sama dengan nilay temp

n--; // nilai n selalu berkurang 1

restoreHdown(a,1,n); // a , 1, n dalam fungsi restoreHdown

} // penutup fungsi for

n=j; // n sama dengan nilai j

printf(" Here is it... "); // untuk menampilkan perintah ke dalam layar

for(i=1;i<=n;i++) //funsi for dimana jika ketentuan untuk i terpenuhi maka progran di bawahnya akan dijalankan

printf("%4d",a[i]); // untuk menampilkan nilai array ke i ke layar

} // penutup void main

void restoreHup(int *a,int i) // fungsi void restore Hup

{ // pembuka fungsi foid restoreHup

int v=a[i]; // v sama dengan nilai array a yang ke i

while((i>1)&&(a[i/2]

{ // pembuka fungsi while

a[i]=a[i/2]; // nilai array a yang ke i sama dengan nilai array a yang ke i/2

i=i/2; // nilai i sama dengan nilai i/2

} //penutup fungsi while

a[i]=v; // nilai array a yang ke i sama dengan nilai v

} // penutup fungsi while

void restoreHdown(int *a,int i,int n) // fungsi void restoreHdown

{ // pembuka fungsi void restoreHdown

int v=a[i]; // v sama dengan nilai array a yang ke i sebagai integer

int j=i*2;// nilai j sama dengan i kali 2 ialah integer

while(j<=n) // fungsi while akan dijalankan bila ketentuannya terpenuhi

{ // pembuka fungsi while

if((j

j++; // nilai j akan selalu tambah 1

if(a[j]

break;

a[j/2]=a[j]; // nilai array a yang ke j/2 sama dengan nilai array a yang ke j

j=j*2; // nilai j sama dengan nilai j*2

}// penutup fungsi while

a[j/2]=v;// nilai array a yang ke j/2 sama dengan v

}// penutup fungsi void restorehdown

//Suatu program untuk mengimplementasikan Heap Sort>

Hasil Program diatas :








Kesimpulan
  • Algoritma pengurutan heap sort dapat digunakan untuk menyelesaikan masalah-masalah pengurutan dalam membangun suatu program aplikasi dengan mangkus.
  • Keunggulan algoritma pengurutan heap sort terletak pada kompleksitas waktu asimptotiknya yang sangat baik.
  • Meskipun lebih lambat dari algoritma pengurutan data yang lain, algoritma heap sort memiliki kelebihan ketika menangani data dalam skala yang besar/massive. Karena algoritma ini memiliki kelebihan tidak menggunakan banyak tabel, tetapi hanya satu tabel yang dipakai untuk menyimpan hasil dari pengurutan tersebut.
Referensi / Daftar Pustaka
  • www.google.com
  • http://www.informatika.org/~rinaldi/Matdis/2008-2009/Makalah2008/Makalah0809-046.pdf
  • http://www.informatika.org/~rinaldi/Stmik/Makalah/MakalahStmik08.pdf
  • http://www.ilmu-komputer.net/algorithms/heap-sort-source-code/

neh bagi yg mw download...

Kamis, 10 Desember 2009

#include < stdio.h >
#include < conio.h >
//Pendeklarasian tipe data baru struct Mahasiswa
typedef struct Mahasiswa{
char NIM[9];
char nama[30];
float ipk;
};
void main(){
//Buat variabel mhs bertipe data Mahasiswa
Mahasiswa mhs;
clrscr();
printf("NIM = ");scanf("%s",mhs.NIM);
printf("Nama = ");scanf("%s",mhs.nama);
printf("IPK = ");scanf("%f",&mhs.ipk);
printf("Data Anda : \n");
printf("NIM : %s\n",mhs.NIM);
printf("Nama : %s\n",mhs.nama);
printf("IPK : %f\n",mhs.ipk);
getch();
}
untuk yang mw tau hasilnya dicoba jaa....

progam berdasarkan ADT atau tipe data bentukan

#include < stdio.h >
#include < conio.h >
typedef int angka;
typedef float pecahan;
typedef char huruf;
void main(){
clrscr();
angka umur;
pecahan pecah;
huruf h;
huruf nama[10];
printf("masukkan umur anda : ");scanf("%d",&umur);
printf("Umur anda adalah %d",umur);
printf("\nmasukkan bilangan pecahan : ");scanf("%f",&pecah);
printf("Bilangan pecahan %f",pecah);
printf("\nmasukkan huruf : ");h=getche();
printf("\nHuruf anda %c",h);
printf("\nmasukkan nama : ");scanf("%s",nama);
printf("Nama anda %s",nama);
getch();
}

tugas lagi....

#include< stdio.h >
#include< conio.h >

//menggunakan ADT
typedef int angka;
typedef char huruf;

typedef struct Date{
angka dd;
angka mm;
angka yyyy;
};

//struct utama
typedef struct Rental{
huruf ID[9];
huruf Nama[35];
Date tglRental;
};

//variabel 'sewa'
struct {
angka komik;
angka bayar;
} sewa;

//fungsi yang mengembalikan nilai angka untuk menghitung bayar sewa
angka baySewa(angka x){
angka hargaKomik=2000;
return hargaKomik*sewa.komik;
}

main(){
Rental penyewa;
printf("Input Data Sewa\n");
printf("ID : ");scanf("%s",&penyewa.ID);
printf("Nama : ");scanf("%s",&penyewa.Nama);
printf("Tanggal Sewa\n");
printf("Hari : ");scanf("%d",&penyewa.tglRental.dd);
printf("Bulan : ");scanf("%d",&penyewa.tglRental.mm);
printf("Tahun : ");scanf("%d",&penyewa.tglRental.yyyy);
printf("Jumlah Komik = ");scanf("%d",&sewa.komik);

printf("\n--Data Rental Komik--\n");
printf("ID : %s\n",penyewa.ID);
printf("Nama : %s\n",penyewa.Nama);
printf("Date : %d - %d - %d\n",penyewa.tglRental.dd,penyewa.tglRental.mm,penyewa.tglRental.yyyy);

//panggil fungsi baySewa, nilai kembaliannya dikirim ke bayar sewa asli
sewa.bayar = baySewa(sewa.komik);

//tampilkan bayar sewa asli
printf("Bayar Sewa = %d\n",sewa.bayar);
getch();
}

nih tugas blon komplit...bingung...

hasilnya seadanya dah...

Kamis, 12 November 2009

Multiplication

Matrix Chain MultiplicationReviewPerkalian matriks berantai (Matrix Chain Multiplication), sesuai dengannamanya, adalah perkalian dari serangkaian matriks. Operasi perkalianmatriks adalah operasi yang bersifat asosiatif, yaitu urutan operasi yangdilakukandapatdiubah-ubahdenganbebasdantetaptidakakanberpengaruh pada hasil akhir operasi.Jika kita melakukan perkalian antara dua buah matrix, syaratyangharusdipenuhiadalahbanyaknyajumlahkolompadamatrixpertamaharussamadenganjumlahbaris matrixyangkedua. Yangharus dicari jalan keluarnya dalam hal ini adalah jika kita mengalikanmatriks-matriks tersebut sesuai urutannya, proses yang dilakukan seringkali tidak efektif dan memakan waktu lama. Ini dikarenakan oleh banyaknyaoperasi perkalian integer yang dilakukan.Misalnya diberikan 2 buah matriks :A(3x5)B(5x4)Jumlah perkalian (usaha) yang diperlukan untuk mendapatkan hasilperkalian dari matriks tersebut adalah :3x5x4 = 60 perkalian.Ternyatapilihanurutanperkalianmatriksyangberbedaakanmembutuhkan jumlah perkalian (usaha) yang berbeda pula. Sehinggadenganmemilihurutanperkalianmatriksyangtepat,kitabisamenyelesaikan perkalian matriks berantai tersebut dengan lebih cepat danefisien. Karena dengan memilih urutan perkalian yang tepat, kita dapatmereduksi jumlah perkalian yang harus dilakukan untuk mendapatkan solusiakhir dari perkalian matriks berantai tersebut.Dengan menggunakan metode Matrix Chain Multiplication ini,kita dapat menyelesaikan permasalahan Bagaimana kita mendapatkan rantaiperkalian pada beberapa matrix yang akan menghasilkan biaya komputasiyang paling optimum. MCMini dapat dikerjakan dengan 3 cara yaituiterative (bottom up), memorized, dan rekursif (top down)..Table of scalar multiplications.Split indextable generated by applet.Product computed by applet.Ket gambar :Rumus mencari nilai m adalah sebagai berikut :-1. m [i,j] = 0 -Digunakan apabila indeks ke-i=ke-j2. m[i,j]=m[i,k]+m[k+1,j]+pi-1 pk pj -Digunakan apabila indeks ke-i < ke-j.TujuanMatrixChainMultiplication merupakan contoh Algoritma dariDynamic Programing di mana algoritma MCM tersebut bertujuan untukmenghasilkan biaya komputasi yang paling optimum.

Selasa, 10 November 2009

Algoritma Perkalian Matrix

Algoritma perkalian matrik:
1.Deklarasikan variabel i,j,k,bar_a,kol_a,kol_b,bar_b,mat_a[][],mat_b[][],mat_c[][]
2.masukkan baris_a, kolom_a, baris_b, kolom_b
3.proses looping
bar_a!=kol_b || kol_a!=bar_b
jika y, kolom A=baris B & Baris A=kolom B!!
jika t, cetak nilai matriks A
4.inisialisasi i=0;i5.inisialisasi j=0;j6.masukkan mat_a[i][j]
7.cetak nilai matriks B
8.inisialisasi j=0;j9.inisialisasi k=0;k10.masukkan mat_b[j][k]
11.inisialisasi i=0;i12.inisialisasi k=0;k13.jumlahkan mat_c[i][k]=0
14.inisialisasi j=0;j15.jumlahkan mat_c[i][k]=mat_c[i][k]+(mat_a[i][j]*mat_b[j][k])
16.inisialisasi i=0;i17.inisialisasi k=0;k18.cetak mat_c[i][k]
19.tanya lagi
20.jawab
21.proses looping
jawab=y
jika y, kembali ke proses no 2
jika t, jawab=t