Senin, 21 Desember 2009

modul sda 6

Modul 6

Binary Search Tree

Tujuan Praktikum:

1. Memahami Binary search tree dan operasi – operasi terhadap tree

2. Memahami beberapa cara tree treversal

3. Memanfaatkan tree pada persoalan pemrograman tertentu

4. Memahami pembuatan tree dengan array dan linked list

Teori:

Binary tree adalah abstraksi tree dengan aturan setiap node paling banyak memiliki 2 anak node. Binary tree disebut full binary tree jika setiap dahan pada aras yang sama dan setiap node memiliki 2 anak. Jika sebuah full binary memiliki tinggi h maka akan memiliki 2 pangkat h dahan. Sebuah binary tree complit (lengkap adalah sebuah pohon biner penuh atau lainnya yang dapat dibuat penuh hanya pada aras terbawah.

Pohon biner dapat dikunjungi anak – anaknya dengan beberapa cara:

1. Preorder

a. Kunjungi Root

b. Jika tree disebelah kiri tidak kosong, maka lakukan kunjungan preorder padanya.

c. Jika tree disebelah kanan tidak kosong, maka lakukan kunjungan preorder padanya

2. PostOrder

a. Jika tree disebelah kiri tidak kosong, maka lakukan kunjungan postorder padanya

b. Jika tree disebelah kanan tidak kosong, maka lakukan kunjungan postorder padanya

c. Kunjungi Root

3. Inorder

a. Jika Tree disebelah kiri tidak kosong, maka lakukan kunjungan inorder padanya,

b. Kunjungi root

c. Jika tree disebelah kanan tidak kosong, maka lakukan kunjungan inorder padanya.

Praktikum:

Alat dan Bahan:

- IDE C++ (Integrated Development Environtment) seperti Borland C++

- System Operasi Windows

Langkah – langkah Praktikum :

1. Buat Project baru, beri nama Lab06_01 (seperti langkah 1 s/d 5 pada Lab01_01)

2. Buatlah source code berikut:

/************************/

/* Lab06_01.cpp */

/************************/

#include

#include

#include

struct simpul

{

char info;

struct simpul *right;

struct simpul *left;

};

struct tree

{

struct simpul *root;

};

void makeTree(char c, tree *T)

{

simpul *node;

node = (simpul *) malloc(sizeof (simpul));

node->info = c;

node->right = NULL;

(*T).root = node;

}

void addRight(char c, simpul **root)

{

if((*root)->right == NULL)

{

/*jika sub pohon kanan kosong*/

simpul *node;

node = (simpul *) malloc(sizeof (simpul));

node->info = c;

node->right = NULL;

node->left = NULL;

(*root)->right = node;

}

else

{

printf("sub pohon kanan telah terisi \n");

}

}

void addLeft(char c, simpul **root)

{

if((*root)->left == NULL)

{

//Jika sub pohon kiri kosong

simpul *node;

node = (simpul *) malloc(sizeof (simpul));

node->info = c;

node->right = NULL;

node->left = NULL;

(*root)->left = node;

}

else

{

printf("sub pohon kiri telah terisi \n");

}

}

void delRight(simpul **root)

{

simpul *node = (*root)->right;

(*root)->right = NULL;

free(node);

}

void delLeft(simpul **root)

{

simpul *node = (*root)->left;

(*root)->left = NULL;

free(node);

}

void printTreePreOrder(simpul *root)

{

if(root != NULL)

{

printf(" %c ", root->info);

printTreePreOrder(root->left);

printTreePreOrder(root->right);

}

}

void printTreeInOrder(simpul *root)

{

if(root != NULL)

{

printTreeInOrder(root->left);

printf(" %c ", root->info);

printTreeInOrder(root->right);

}

}

void printTreePostOrder(simpul *root)

{

if(root != NULL)

{

printTreePostOrder(root->left);

printTreePostOrder(root->right);

printf(" %c ", root->info);

}

}

void printTreeLevelOrderNext(simpul *root)

{

if(root != NULL)

{

if(root->left != NULL)

{

printf(" %c ", root->left->info);

}

if(root->right != NULL)

{

printf(" %c ", root->right->info);

}

if(root->left != NULL)

{

printTreeLevelOrderNext(root->left);

}

if(root->right != NULL)

{

printTreeLevelOrderNext(root->right);

}

}

}

void printTreeLevelOrder(simpul *root)

{

if(root != NULL)

{

printf(" %c ", root->info);

printTreeLevelOrderNext(root);

}

}

void copyTree(simpul *root1, simpul **root2)

{

if(root1 != NULL)

{

(*root2) = (simpul *)malloc(sizeof (simpul));

(*root2)->info = root1->info;

if(root1->left != NULL )

{

copyTree(root1->left, &(*root2)->left);

}

if(root1->right != NULL)

{

copyTree(root1->right, &(*root2)->right);

}

}

}

bool isEqual(simpul *root1, simpul *root2)

{

bool hasil = true;

if((root1 != NULL) && (root2 != NULL))

{

if(root1->info != root2->info)

{

hasil = false;

}

else

{

isEqual(root1->left, root2->left);

isEqual(root1->right, root2->right);

}

}

else

{

if((root1 != NULL)||(root2!= NULL))

{

hasil = false;

}

}

return hasil;

}

int main()

{

struct tree T;

makeTree('A', &T);

addLeft('B', &T.root);

addRight('C', &T.root);

addLeft('D', &T.root->left);

addRight('E', &T.root->left);

addRight('F', &T.root->right);

printf("===================\n");

printf("preOrder\n");

printTreePreOrder(T.root);

printf("\n=================\n");

printf("inOrder\n");

printTreeInOrder(T.root);

printf("===================\n");

printf("postorder\n");

printTreePostOrder(T.root);

printf("===================\n");

printf("levelOrder\n");

printTreeLevelOrder(T.root);

printf("===================\n");

tree T2;

copyTree(T.root, &T2.root);

if(isEqual(T.root, T2.root) == true)

{

printf("pohon sama\n");

}

else

{

printf("pohon tidak sama\n");

}

delRight(&T.root->left);

delLeft(&T.root->left);

printf("====================\n");

printf("preOrder setelah dihapus\n");

printTreePreOrder(T.root);

printf("====================\n");

getch();

return 0;

}

Pertanyaan Praktikum:

1. Jelaskan dan berikan analisis pada keluaran Lab06_01.cpp!

2. Jelaskan algoritma:

a. makeTree()

b. addLeft() dan addRight()

c. printTreePreOrder()

d. printTreeInOrder()

e. printTreePostOrder()

f. copyTree()

g. delLeft() dan delRight()

Modul 5 SDA

Modul 5

Queue

Tujuan Praktikum :

1. Memahami queue dan operasi-operasi terhadap queue

2. Memanfaatkan queue pada persoalan pemrograman tertentu

3. Memahami pembuatan stack dengan array dan linked-list

Teori :

Queue adalah sebuah struktur data yang mengimplementasikan protokol FIFO (First In First Out). Artinya adalah objek yang dapat diakses dalam queue adalah objek pertama yang dimasukkan. Analogi queue adalah sebuah antrian di bank atau di jalan tol.

Queue sering dipakai dalam simulasi misalnya untuk mensimulasikan pelanggan yang mengantri diteller bank atau antrian paket internet.

Praktikum :

Alat dan Bahan:

- IDE C++ (Integrated Development Environtment) seperti Borland C++

- System Operasi Windows

Langkah-langkah Praktikum :

1. Buat project baru beri nama Lab05_01 (seperti langkah 1 s/d 5 pada Lab01_01)

2. Buatlah source code Lab05_01.cpp

#include

#include

#include

struct nilaiMatkul

{

char nim[10];

char nama[50];

float nilai;

};

struct queue

{

int first;

int last;

nilaiMatkul data[10];

};

void createEmpty(queue *Q)

{

(*Q).first = -1;

(*Q).last = -1;

}

bool isEmpty(queue Q)

{

bool hasil = false;

if(Q.first == -1)

{

hasil = true;

}

return hasil;

}

bool isFull(queue Q)

{

bool hasil = false;

if(Q.last == 9)

{

hasil = true;

}

return hasil;

}

void add(char nim[], char nama[], float nilai, queue *Q)

{

/*Jika queue kosong*/

if(isEmpty(*Q) == true)

{

(*Q).first = 0;

(*Q).last = 0;

strcpy((*Q).data[0].nim, nim);

strcpy((*Q).data[0].nama,nama);

(*Q).data[0].nilai = nilai;

}

else

{

/*Jika queue tidak kosong*/

if(isFull(*Q) != true)

{

(*Q).last = (*Q).last +1;

strcpy((*Q).data[(*Q).last].nim,nim);

strcpy((*Q).data[(*Q).last].nama,nama);

(*Q).data[(*Q).last].nilai = nilai;

}

else

{

printf("Queue penuh\n");

}

}

}

void del(queue *Q)

{

if((*Q).last == 0)

{

(*Q).first = -1;

(*Q).last = -1;

}

else

{

/*Menggeser elemen kedepan*/

int i;

for(i = ((*Q).first + 1); i <= (*Q).last; i++)

{

strcpy((*Q).data[i-1].nim,(*Q).data[i].nim);

strcpy((*Q).data[i-1].nama,(*Q).data[i].nama);

(*Q).data[i-1].nilai = (*Q).data[i].nilai;

}

(*Q).last = (*Q).last -1;

}

}

void printQueue(queue Q)

{

if(Q.first != -1)

{

printf("------isi queue------\n");

int i;

for(i=Q.last; i>=Q.first; i--)

{

printf("====================\n");

printf("elemen ke : %d\n", i);

printf("nim : %s\n",Q.data[i].nim);

printf("nama : %s\n",Q.data[i].nama);

printf("nilai : %f\n",Q.data[i].nilai);

}

printf("---------------------\n");

}

else

{

/*Proses jika queue kosong*/

printf("queue kosong\n");

}

}

int main()

{

queue Q;

createEmpty(&Q);

printQueue(Q);

printf("=================\n");

//Gunakan nama dan NIM masing-masing

add("06406002", "Ana", 90, &Q);

add("06406017", "Rara", 70,&Q);

add("06406018", "clew", 80, &Q);

printQueue(Q);

printf("=================\n");

del(&Q);

del(&Q);

printQueue(Q);

printf("=================\n");

getch();

return 0;

}

Pertanyaan Praktikum:

1. Jelaskan keluaran Lab05_01.cpp!

2. Jelaskan kegunaan fungsi kelas Queue berikut:

a. add()

b. del()

c. printQueue()

d. createEmpty()

Pertanyaan Singkat Modul 5:

1. Apakah Queue bersifat LILO (Last In Last Out) atau bersifat FILO (First In Last Out)?

2. Sebutkan dalam contoh pemrograman apa queue sering diigunakan!

Rabu, 16 Desember 2009

The Princess And The Frog (CAM) )!!!!

Hi Guys...

Here iam...

I love this day and this morning..

make me smile in my world...

i miss someone that i love ...

i was watched the princess and the frog..

i love that movie!!!

i wanna get my prince and hapily ever after...

so make my dream to be come true...

i really dont know what i feel...

i really enjoy to love man...

but im man too...

yeah i know that's so hard to believe for u...

my blog just blog..

he can answered my question...

what happend to me..?


MY God is ALLAH S.W.T

Allah never make a mistake..

Allah always right...

Allah is everything...

Allah try me to get the strength in my life and make me grown up... because Allah love me...

I know what i feel with the man is SIN ... but i dont know how to make this feeling lost and go far away from me...

i wanna turn to the real MAN... but i really dont know how to make that...

i think i need some MUSE, MIRACLE, and HIDAYAH ...

Hidayah is something that Allah give to get people realize what they doing is wrong!!!


and the most important....


"HUMAN IS NOT PERFECT!!!"

never Perfect!!!

"Syukurilah semua nya yang kau dapati dari Allah"

i dont know how tro translate my message that... but u can translate that in my translate...

if u wanna download the princess and the frog.. u can download here FREE or Here !!!

dont forget to give me a comment about my blog...

okay thanks...

by the way the princess and the frog still cam and i didnt get subtitle in there...

thanks...


* nulis ini sedang puasa sunnah senin kamis di malam satu suro!!! *

* Nanti malem mau mandi kembang kayaknya *


Sincerely...



Rengga

Sabtu, 05 Desember 2009

*** S.E.L.I.N.G.K.U.H ***

Lupakan ak.. jngan prnah kau mncintaiku lagi karena ak seorang pendusta hati.. bye...bye my love..bye..bye.. my love...bye..bye.. my love...

Bibin kuh... semua aku akui di blog ini...
aku SELINGKUH!
aku nyesel banget sama semuanya...

aku gak bisa jalanin semua ini sama kamu kalau kita terus-terusan jauh.

mungkin cara ini yang paling sulit bagi pasangan LONG DISTANCE RELATIONSHIP...

menurut ku kita itu persis banget sama Radhitya Dika di blog nya Kambing Jantan,,,

sekali lagi maafkan aku yah yang gak bisa kasih kamu cinta...
mungkin udah satnya kali yah untuk kamu punya yang LEBIH BAIK DAN KAYAKNYA EMANG KAMU SALAH PILIH ... AKU GAK PANTES BANGET MILIKIN KAMU...


harusnya emang waktu itu kita gak usah kenalan dan .... tapi nasi sepertinya nasi udah jadi lembek...

sebentar lagi itu nasi jadi BASI Semua orang aja bilang aku tuh gak pantes untuk kamu...

apkah aku ini emang terlalu buruk untuk mendapatkan orang seperti kamu?

sekarang aku sadar dengan satu hal yang pasti aku terlalu kehilangan kamu hingga aku mencari pengganti kamu...

tapi GAK ADA YANG SEPERTI KAMU...

kamu TAKKAN PERNAH TERGANTI DAN AKAN SELALU DI HATIKU...

bmakasih banget untuk semuanya... tulisan di blog ini aku tulis dengan sesingkat-singkatnya dan di bawah kesadaran...

dan juga tanpa adanya paksaan dari siapaun...

so thankyou so much ...
I'M SORRY GOOD BYE...


your Ex LOVE.