Selasa, 12 April 2016

Pertemuan 5 - (Binary Search Tree)

BINARY SEARCH TREE

adalah sebuah pohon biner dimana value yang lebih kecil diletakan dikiri dari root sedangkan yang lebih besar terletak dikanan root.

Operasi - operasi yang dapat dilakukan dengan binary search tree :
- Insert
- Delete
- View 
- Search

Insert

- Jika value yang di insert lebih kecil, maka pergi ke kiri
- Jika menemukan leaf, maka buat node baru
- Selain itu pergi ke kiri

lakukan hal tersebut berulan kali hingga menemukan leaf.

Delete

- Cari node dengan value yang ingin di hapus
- Jika value tersebut adalah leaf, maka hapus node tersebut
- Jika value tersebut mempunyai satu child, maka  hapus node tersebut lalu sambungkan child tersebut ke node sebelumnya
- Selain itu hapus value, kemudian tuker dengan successor



Search

- Jika tidak ada node, maka kemabalikan nilai NULL
- Jika node sama dengan value yang ingin dicari, maka kembalikan value
- Jika node lebih kecil dari value yang ingin dicari, maka pergi ke kiri
- Selain itu pergi ke kanan

ulangi langkah tersebut samai value yang ingin dicari sama dengan nodenya.




Selasa, 29 Maret 2016

Pertemuan 4 - (Tree Concept and Binary Concept)

Konsep Tree

tree adalah kumpulan node yang terhubung satu sama lain dan membentuk struktur seperti sebuah pohon.

istilah istilah yang sering digunakan dalam tree

  1. Degree = banyak child dalam suatu node
  2. Height = banyak tingkatan dalam suatu tree
  3. Size = banyaknya node dalam suatu tree
  4. Predecesor = node yang berada diatas suatu node tertentu
  5. Successor = node yang berada dibawah suatu node tertentu
  6. Parent = predecesor satu level diatas suatu node
  7. Child = successor satu level dibawah suatu node
  8. Sibling = node - node yang memiliki parent yang sama
  9. Ancestor = seluruh node yang terletak sebelum node tertentu dan terletak pada jalur yang sama 
  10. Descendant = seluruh node yang terletak setelah node tertentu dan terletak pada jalur yang sama


Pembentukan Tree

Dapat dilakukan dengan 2 cara : Rekursif dan Non Rekursif 
Perhatikan kapan node dipasang di kiri dan dipasang di kanan


Jenis Tree ada yang berupa Binary Tree.



Binary Tree

merupakan Tree dengan syarat bahwa tiap nodenya maksimal memiliki dua subpohon dan masing masing subpohon harus terpisah.


Jenis - jenis Binary Tree

  1. Full Binary Tree
tree yang memiliki 2 child dan setiap pohon memiliki panjang yang sama


2. Complete Binary Tree
tree yang mirip dengan Full Binary Tree tetapi setiap subtree boleh memiliki panjang yang berbeda. Full Binary Tree pasti merupakan Complete Binary Tree




3. Skewed Binary Tree
tree yang setiap nodenya hanya mempunyai satu child




Sifat - Sifat Binary Tree

Maksimum node dalam satu level dapat dihitung dengan cara 2^k. dimana k adalah level.

Maksimum node yang ada dalam binary tree dapat dihitung dengan cara 2^(h+1) - 1. Dimana h adalah height atau tingkatannya

Minimum height dapat dihitung dengan cara 2log(n) . Dimana n adalah jumlah node

Maksimum height dapat dihitung dengan cara n-1 . Dimana n adalah jumlah node


Selasa, 22 Maret 2016

Pertemuan 3 - (Stack & Queue)

Push = Enstack = Enqueue
Pop = Destack = Dequeue


KONSEP STACK

Stack mempunyai konsep Last In First Out (LIFO)
dengan kata lain, data yang masuk terakhir akan keluar pertama. Penyisipan selalu dilakukan di paling atas, dan penghapusan juga dilakukan di paling atas.

push : digunakan untuk menambahkan item pada stack pada tumpukan paling atas

pop : digunakan untuk mengambil item pada stack pada tumpukan paling atas

awal pointer pada linked list digunakan sebagai TOP. Jika TOP = NULL, artinya stack kosong.




DEPTH FIRS SEARCH


merupakan suatu algoritma penulusuran struktur graf/pohon beradasarkan kedalaman.




Kelebihan DFS adalah:
• Pemakain memori hanya sedikit, berbeda jauh dengan BFS yang harus menyimpan semua node yang pernah dibangkitkan.
• Jika solusi yang dicari berada pada level yang dalam dan paling kiri, maka DFS akan menemukannya secara cepat.

Kelemahan DFS adalah:
• Jika pohon yang dibangkitkan mempunyai level yang dalam (tak terhingga), maka tidak ada jaminan untuk menemukan solusi (Tidak Complete).
• Jika terdapat lebih dari satu solusi yang sama tetapi berada pada level yang berbeda, maka pada DFS tidak ada jaminan untuk menemukan solusi yang paling baik (Tidak Optimal).


BREADTH FIRST SEARCH

juga merupakan salah satu algoritma penelusuran struktur graf / pohon seperti DFS, namun bedanya BFS melakukan pencarian secara melebar atau per level pohon.


KONSEP QUEUE

Queue memiliki konsep Fisrt In First Out


start pointer linked list sebagai FRONT. Insert pada REAR dan delete pada FRONT. FRONT = REAR = NULL, artinya queue kosong.









Sabtu, 12 Maret 2016

Pertemuan 2 - (Big Data, Arduini, Raspberry Pi, Cloud, Augmented Relaity)

Big Data

Merupakan data yang berukuran sangat besar, sangat variatif, sangat cepat pertumbuhannya, dan tidak terstruktur.

karena begitu besarnya sehingga sulit untuk memproses dengna menggunakan teknik database dan perangkat lunak biasa.

contoh big data adalah seperti petabyte dan exabyte (kapasitas diatas terabyte)

Google bisa dikatakan sebagai pelopor big data. Google meluncurkan Google bigtable. Dengan triliyunan user, google harus mampu menyimpan data berskala besar dan dapat memprosesnya secara cepat.



Arduino


Merupukan sebuah Mikrokontroler. Mikrokontroler adalah sebuah sistem komputer fungsional dalam sebuah chip.

Arduino merupakan sebuah rangkaian elektronik yang bersifat open source. Arduino dapat mengenali lingkungannya dengan sebuah sensor dan dapat mengendalikan lampu, motor,  dan berbagai jenis aktuator lainnya.

Berikut adalah gambaran fungsi Arduino :



Raspberry Pi


Merupakan sebuah mini kit  yang bisa dijadikan komputer mini. OS nya bisa macam - macam, salah satunya Linux. Ukurannya sangat kecil hanya sebesar kartu kredit. 

Berikut adalah contoh hasil karya dengna menggunakan Raspberry Pi atau biasa disebut Raspi :





Cloud


Merupakan gabungan pemanfaatan teknologi komputer dalam suatu jaringan dengan pengembangan internet.

Teknologi komputer yang berbasis seperti ini menggunakan internet sebagai pusat server untuk mengelola data dan juga aplikasi user
.

Berikut adalah manfaat dari teknologi cloud :


  1. Semua data tersimpan secara terpusat di server
  2. Keamanan data
  3. Fleksibilitas dan Skalabilitas yang tinggi
  4. Investasi jangka panjang

Augmented Reality

atau dalam bahasa indonesia disebut sebagai realitas tambahan merupakan teknologi yang menggabungkan benda maya dua dimensi atau tiga dimensi dengan dunia nyata.




 
























Senin, 29 Februari 2016

Pertemuan 1 - (Introduction to Linked List)

Tujuan Pembelajaran :
  • Menjelaskan konsep data struktur dan kegunaannya.
  • Mengaplikasikan penggunaan data struktur.


POINTER 

adalah penunjuk dari suatu alamat yang berada dalam memory.

dengan adanya pointer kita dapat memanipulasi data yang berada pada alamat tertentu dalam memory. berbeda dengan variabel dimana jika kita menyimpan suatu data maka akan disimpan secara acak oleh sistem, sedangkan pointer kita dapat menunjuk letak penyimpanannya.


STRUCTURE 


adalah user-defined data type yang bisa menyimpan berbagai macam tipe data (heterogen) secara bersamaan. Struct terdiri dari beberapa anggota yang disebut dengan member atau variabel.

berbeda dengan array yang hanya dapat menampung tipe data yang sejenis.

  • Memberikan nilai pada structure

untuk memberikan nilai pada struct dapat digunakan operator . (dot) untuk mengakses anggota dari suatu struct.

contoh : 

struct mhs{

char nama[100];
char nim[10];
int age;

};

mhs binus;

strcpy(binus.nama,"Renaldo");
strcpy(binus.nim,"1901559520");
binus.age = 19;

  • Nested Structure 

adalah struct yang bertingkat dimana terdapat struct didalam sebuah struct.

contoh :



struct profile {

  int   age;
  char  name[100];
};
struct student {
  struct profile p;
  int  score;
  char grade;
};

----------------------------------------------------------------------------


DATA STRUKTUR

adalah dalam istilah ilmu komputer, sebuah struktur data adalah cara penyimpanan, penyusunan dan pengaturan data di dalam media penyimpanan komputer sehingga data tersebut dapat digunakan. secara efisien.

Berikut adalah contoh - contoh data struktur :


  1.  Array
  2. Linked Lists
  3. Queues
  4. Stacks
  5. Binary Trees
  6. Hash Tables

ARRAY

adalah kumpulan data yang bertipe sejenis (Homogen). Isi dari array disimpan pada memori yang berurutan dan tersusun berdasarkan index.

array index dimulai dari nol.

  • Pendeklarasian Array 

contoh :

char nama[100];

  • Pengaksesan Array

contoh :

nama[2] = 'F';
nama[3] = 'E';
nama[4] = 'R';



LINKED LIST 

adalah tipe data struktur yang terdiri dari urutan data records yang tersusun secara sekuensial, saling sambung-menyambung dan terbatas.

linked list saling terhubung dengan bantuan variabel pointer.

member dalam linked list disebut node. Node biasanya berupa struct yang memiliki beberapa field.



didalam linked list  biasa terdapat istilah head dan tail.Head adalah elemen yang berada pada posisi pertama suatu linked list. Kebalikannya, tail adalah elemen yang  berada pada posisi terakhir suatu linked list.

berikut adalah contoh Linked List :



  • Single Linked List
adalah Linked List yang menggunakan sebuah variabel pointer saja untuk menyimpan banyak data. Hanya ada satu pointer yang menghubugkan setiap node (satu arah "next").

single linked list dibagi menjadi 2 :
- Single linked list circular
- Single linked list non circular.

cara untuk mendeklarasikan Single Linked List :
- Buat Struct
- Deklarasi variable pointer
- Alokasikan memori
- Isi data

  • Single Linked List : Insert
Melakukan penyisipan data pada linked list, dilakukan dengan cara menghapus rantai hubungan terlebih dahulu lalu memberikan angka baru dan selanjutnya memberikan rantai hubungan baru.






  • Single Linked List : Delete
untuk menghapus suatu nilai kita harus temukan terlebih dahulu lokasi node yang akan kita hapus, hilangkan dahulu node tersebut lalu hubungkan kembali node nya.

ada dua kondisi yang harus kita perhatikan :
- apakah node yang akan kita hapus berada di Head. 
- apakah node yang akan kita hapus berada tidak berada di Head.

contoh :

struct tnode *curr = head;


}
// if x is in head node
if ( head->value == x ) {
  head = head->next;
  free(curr);


// if x is not in head node, find the location
else {
  while ( curr->next->value != x ) curr = curr->next;
  struct tnode *del = curr->next;
  curr->next = del->next;
  free(del);

}









LINKED LIST vs ARRAY

ARRAY 
- Kumpulan data
- Statis
- Dapat diakses secara random berdasarkan index
- Letaknya berurutan

LINKED LIST 
- Kumpulan node
- Dinamis
- Harus diakses secara berurutan
- Letaknya random


QUEUE

anggota yang masuk pertama adalah anggota yang akan keluar pertama. Atau biasa dikenal dengan istilah First In First Out (FIFO).

ada beberapa jenis Queue :
- Circular Queue : Queue yang kedua ujungnya saling terhubung.
- Priority Queue : Terdapat suatu anggota/elemen yang diprioritaskan.




STACKS

stacks dapat direpresentasikan sebagai array yang bertumpuk. Dimana setiap anggota yang masuk pertama adalah anggota yang akan keluar terakhir. Atau biasa dikenal dengan istilah First In Last Out (FILO).

BINARY TREES 

adalah kumpulan elemen yang disebut dengan node. Setiap elemen mempunyai pointer kiri dan pointer kanan.








MEMORY ALLOCATION

jika anda butuh untuk mengalokasikan memori pada saat run time, anda dapat menggunakan keyword malloc di C/C++.

untuk mende-alokasikannya anda dapat menggunakan keyword free.


Nama : Renaldo Akhira Ruslan 
Nim : 1901509520