Minggu, 30 Maret 2014

Pertemuan 5


Stack and Implementation

Stack
Stack (tumpukan) sebenarnya secara mudah dapat diartikan sebagai list (urutan) dimana penambahan dan pengambilan elemen hanya dilakukan pada satu sisi yang disebut top (puncak) dari stack.
Dengan melihat definisi tersebut maka jelas bahwa pada stack berlaku aturan LIFO (Last In First Out), yaitu elemen yang terakhir masuk akan pertama kali diambil atau dilayani. Salah satu analogi yang dapat dikemukakan di sini adalah tumpukan piring atau barang lain. Pada saat kita hendak menumpuk piring-piring tersebut tentulah yang kita lakukan adalah meletakkan piring pertama pada tempatnya, selsnjutnya meletakkan piring kedua di atas piring pertama dan demikian seterusnya. Pada saat kita hendak mengambil satu piring dari tumpukan tersebut, tentu yang diambil adalah piring teratas (yang terakhir kali ditaruh), bukan yang terbawah (yang pertama kali diletakkan). 

Didalam stack terdapat 2 istilah atau 2 variable yang digunakan yaitu TOP dan MAX yang dimana TOP adalah merupakan data yang paling atas dan MAX merupakan jumlah dari seluruh data yang ada 

Infix,Postfix dan Prefix

Infix      = a+b  (operator terletak di tengah tengah operand)
Postfix = +ab (operand terletak di depan operand )
Prefix   = ab+ (operand terletak di depan operator)

Depth First Search(DFS) dan Breath First Search(BFS)

Depth First Search
adalah sebuah pencarian uninformed yang berlangsung dengan memperluas simpul anak pertama dari pencarian pohon yang muncul dan dengan demikian akan semakin dalam sampai node tujuan ditemukan, atau sampai hits node yang tidak memiliki anak. Kemudian pencarian backtracks , kembali ke node terakhir kebanyakan belum selesai menjelajahi. Dalam implementasi non-rekursif, semua node yang baru diperluas ditambahkan ke stack untuk eksplorasi.


Breath First Search 
adalah algoritma yang melakukan pencarian secara melebar yang mengunjungi simpul secara preorder yaitu mengunjungi suatu simpul kemudian mengunjungi semua simpul yang bertetangga dengan simpul tersebut terlebih dahulu. Selanjutnya, simpul yang belum dikunjungi dan bertetangga dengan simpul-simpul yang tadi dikunjungi, demikian seterusnya. algoritma BFS menggunakan graf sebagai media representasi persoalan, tidak sulit untuk mengaplikasikan algoritma ini dalam persoalan-persoalan teori graf.

contoh DFS dan BFS

DFS

BFS



nama : Setiawan Faisal.K
NIM  :1701307501

www.binus.ac.id || www.skyconnectiva.com




pertemuan 4



Tree

Tree merupakan salah satu bentuk struktur data tidak linear yang menggambarkan hubungan yang bersifat hierarkis (hubungan one to many) antara elemen-elemen. Tree bisa didefinisikan sebagai kumpulan simpul/node dengan elemen khusus yang disebut root atau akar.

Binary Tree

Binary Tree adalah tree dengan syarat bahwa tiap node hanya boleh memiliki maksimal dua subtree dan kedua subtree tersebut harus terpisah. Sesuai dengan definisi tersebut, maka tiap node dalam binary tree hanya boleh memiliki paling banyak dua child.

ada beberapa jenis dari binary tree yatu : 

a) Full Binary Treeb
Binary Tree yang tiap nodenya (kecuali leaf) memiliki dua child dan tiap subtree harus mempunyai panjang path yang sama.


      

b) Complete Binary Tree
    Mirip dengan Full Binary Tree, namun tiap subtree boleh memiliki panjang path yang berbeda. Node kecuali leaf memiliki 0 atau 2 child.
[42.JPG]

c) Skewed Binary Tree
Skewdi Binary Tree adalah tree yang semua nodenya (kecuali leaf) hanya memiliki satu child.
[43.JPG]



Rumus untuk mencari node pada tree :
- mengambil yang bagian kiri      = 2p+1
- mengambil yang bagian kana n = 2p+2
- mengambil parentnya               = (p-1)/2



Expresion Tree Concept

infix     = a + c * b (a+b)
postfix  =-a * cb (+ab)
prefix    =abc-* (ab+)


contoh soal  

c/a*2+3/12+21 tentukan infix, postfix dan prefix

infix     =c/a*2+3/12+21
postfix =++*/ca2/3 12 21
prefix   =21 3 12 /2ca/*++




Setiawan Faisal.K
1701307501










Sabtu, 15 Maret 2014

Sabtu 15-03-2014

Pertemuan 3 

Pada kelas besar kemaren kita kedatangan seorang pembicara Okky pribadi, s.kom dia merupakan lulusan binus yang ingin mengshare beberapa pengalaman dan mengajarkan sedikit materi tentang perbedaan Array dan Linked List.

            
Array

1. Bersifat statis
2. Setiap elemen pada array berisi data saja
3. Cara mengakses nya bersifat random acces
4. Penambahan dan penghapusan data terbatas tergantung jumlah memori yang di pesan


Linked List

1.Bersifat dinamis
2.Setiap elemen pada linked list berisi data dan pointer addres
3. Cara mengakses nya bersifat sequential acces
4. Penambahan dan penghapusan data tidak terbatas


Selebihnya kak Okky hanya bercerita tentang pengalaman pekerjaan nya sekarang ia bekerja sendiri sebagai progarmer seperti yang kak Okky bilang pekerjaan dia hanya mencari costumer yang ingin menggunakan jasa dia untuk membikin sebuah program lalu kak Okky bilang bahwa satu program yang sangat simpel saja ia jual dengan harga puluhan juta blom ditambah tiap bulan ia mengadakan maintance.Lalu kak Okky berkata jangan pernah menyesal untuk masuk ke jurusan teknik informatika karna prospek ke depan nya sangat menjamin.


Nama : Setiawan Faisal.K
NIM  : 1701307501

Sabtu, 08 Maret 2014

LINKED LIST IMPLEMENTATION I



Linked List atau kadang-kadang disebut dengan Senarai berantai dalam ilmu komputer merupakan sebuah struktur datayang digunakan untuk menyimpan sejumlah objek data biasanya secara terurut sehingga memungkinkan penambahan, pengurangan, dan pencarian atas elemendata yang tersimpan dalam senarai dilakukan secara lebih efektif.

Linked list di bagi menjadi 3 yaitu :
1. Single Linked List
2. Double Linked list
3. Circular Linked List

a. Single Linked List 

Adalah sebuah LL yang menggunakan sebuah variabel pointer saja untuk menyimpan banyak data dengan metode LL, suatu daftar isi yang saling berhubungan.
Contoh gambar single LL :


b. Double Linked List

Dalam double LL ( Linked List berpointer ganda ) dapat mengatasi kelemahan-kelemahan single LL tersebut.
Contoh gambar double LL:



c. Circular Linked List
Adalah double / single LL yang simpul terakhirnya menunjuk ke simpul awal, dan simpul awalnya menunjuk ke simpul akhir, atau dapat disebut LL yang dibuat seakan-akan merupakan sebuah lingkaran dengan titik awal dan titik akhir saling bersebelahan jika LL tersebut masih kosong,
Contoh Gambar Circular LL :


d. Push depan dan Push belakang
Di bagian ini biasa nya kita akan memakai 3 variable yaitu head, curr(current), dan tail dalam penggunaan LL biasanya dibagi menjadi 2 yaitu :
1. Push depan yaitu penambahan data yang dilakukan dibagian depan
2. Push belakang yaitu penambahan data yang dilakukan dibagian belakang

berikut contoh koding dari push depan dan push belakang :

*Push depan 

head=tail=curr;
if(head==NULL)
{
      head=tail=curr;
      tail => next = NULL
}
else
{
      curr => next = head;
      head = curr;
}


*Push belakang

head=tail=curr;
if(tail==NULL)
{
      head=tail=curr;
      tail => next = NULL
}
else
{
      tail => next = curr;
      tail = curr;
      tail => next = NULL;
}

e. POP(hapus)

POP(hapus) adalah cara untuk menghapus data dalam menggunakan LL, Pop terbagi menjadi 2 yaitu :
1.POP Depan yaitu menghapus data di bagian awal
2.POP Belakang yaitu menghapus data di bagian akhir

berikut contoh koding dari POP depan dan POP belakang :

*POP depan

void hapusDepan (){
TNode *hapus,*bantu;
if (isEmpty()==0){
int d;
hapus = head;
d = head->data;
if(head->next != head){
bantu = head;
while(bantu->next!=head){
bantu=bantu->next;
}
head = head->next;
delete hapus;
bantu->next = head;
}else{
head=NULL;
}
printf(“%d terhapus\n“,d);
} else printf(”Masih kosong\n“);
}



*POP belakang

void hapusBelakang(){
TNode *hapus,*bantu;
if (isEmpty()==0){
int d;
hapus = head;
if(head->next == head){
head = NULL;
}else{
bantu = head;
while(bantu->next->next != head){
bantu = bantu->next;
}
hapus = bantu->next;
d = bantu->data;
bantu->next = head;
delete hapus;
}
printf(“%d terhapus\n“,d);
} else printf(”Masih kosong\n“);
}




Nama  : Setiawan Faisal.K
Kelas : 02PFT
NIm   : 1701307501


Sabtu, 01 Maret 2014

Pertemuan 1            

 Data Structure (Pointer, Array and Introduction to Data Structure)




Minggu,  02-03-2014


Padahal ini tugas udah seminggu yang lalu dikasih tapi apa kata gua orang nya sibuk jadi baru bisa bikin sekarang, hhm sebenernya gua udah lama ga bikin blog lagi karna ga bisa ngurusnya tapi yasudah lah jadi disini gua mau jelasin apa yang dimaksud dengan Pointer, Array, Struktur data dan ADT(Abstrak Data Type) secara singkat.


*Pointer


Pointer adalah sebuah tipe data yang nilainya mengacu pada nilai yang lain disimpan di tempat lain di memori komputer menggunakan alamatnya.


ada 2 operator yang sangat penting untuk menentukan pointer.
(&)= untuk menentukan alamat operator
(*)= untuk menentukan isi operator


*Array

    Array adalah sekumpulan variabel yang memiliki tipe data yang sama (homogen) dan dinyatakan dengan nama yang sama. Lalu biasa nya array mengunakan indeks integer untuk menentukan elemen elemen nya yang dimana elemen pertama nya dimulai dari indeks ke 0

  Operasi operasi di dalam array :



1. Tranversal

2. Insertion

3. Searching

4. Deletion

5. Marging

6  Sorting


*Struktur data

Struktur data adalah cara penyimpanan, penyusunan dan pengaturan data di dalam media penyimpanan komputer sehingga data tersebut dapat digunakan secara efisien.
Dalam teknik pemrograman, struktur data berarti tata letak data yang berisi kolom-kolom data, baik itu kolom yang tampak oleh pengguna (user) atau pun kolom yang hanya digunakan untuk keperluan pemrograman yang tidak tampak oleh pengguna.

beberapa contoh umum di struktur data :
  • Array : tipe data yang sama (homogen)
  • Linked list : Struktur data yang sangat dinamis di mana elemen dapat ditambahkan atau dihapus dari mana saja
  • Queue : Tumpukan data yang bersifat FIFO(First In First Out)
  • Stacks : Tumpukan data yang bersifat FILO(First In Last Out) atau LIFO(Last In First Out)
  • Binary trees : Sebuah pohon struktur yang biasanya disalah satu cabang nya paling sedikit memiliki dua anak

*Abstrack Data Type (ADT)

Abstract Data Type (ADT) adalah kumpulan dari elemen-elemen data yang disajikan
dengan satu set operasi yang digambarkan pada elemen-elemen data tersebut. 

Contoh ADT :

objects  : an integer x
  functions  :
  bool is_zero()  if ( x == 0 ) return TRUE else return FALSE
  bool equal(y)  if ( x == y ) return TRUE else return FALSE
  void set(y)  x = y
  void add(y)  x = x + y
  int get ()    return x





Nama : Setiawan Faisal.k
NIM   : 1701307501

www.binus.ac.id || www.skyconnectiva