Not seeing a Scroll to Top Button? Go to our FAQ page for more info. My Imaginations

My Imaginations

-
Follow Me

Hallo, kali ini saya akan membagikan sebuah kode PHP berupa fungsi yang digunakan untuk membuat format angka desimal sesuai dengan format yang digunakan sehari - hari (Region Indonesia) pastinya.

Berikut fungsinya

public function getNumberFloat($val,$count = 2,$usage='id')
 {
  if($val == null || $val == '')
   return 0;
  $locale=($usage == 'id')?'id_ID':'en_EN';
  if ($usage == 'en') {
   if(strstr($val,',')){
    $val=str_replace(',','.',$val);
   }
  }
  $fmt = new NumberFormatter($locale, NumberFormatter::DECIMAL);
  $fmt->setAttribute(\NumberFormatter::MIN_FRACTION_DIGITS, 0);
  $fmt->setAttribute(\NumberFormatter::MAX_FRACTION_DIGITS, $count);
  $val=$fmt->format((float)$val);
        return $val;
 }

Selamat mencoba
Struct,  Fungsi dan Array

Membuat sebuah program C++ untuk database mahasiswa menggunaka struct, fungsi dan Array
silahkan di compile

#include <iostream>

using namespace std;

struct m{
string n;//nama mahasiswa
string a;//alamat
float ip;//ip
};
struct nm{
struct m m1[5];
int jm = 0;//jumlah data mahasiswa
};
void menu()
{
cout<<"\n----------------------SELAMAT DATANG----------------------\n";
cout<<"|| 1. Tambahkan Data Mahasiswa ||"<<endl;
cout<<"|| 2. Cari Data Mahasiswa ||"<<endl;
cout<<"|| 3. Hapus Data Mahasiswa ||"<<endl;
cout<<"|| 4. Menyisipkan Data Mahasiswa ||"<<endl;
cout<<"|| 5. Tampilkan Data Mahasiswa ||"<<endl;
cout<<"|| 0. keluar ||"<<endl;
cout<<"----------------------------------------------------------\n";
cout<<"Masukkan pilihan : ";
}
void td(struct nm &df){//tambah data mahasiswa
if (df.jm < 5){
cout<<"\nMasukkan Nama Mahasiswa\t\t: ";
getline(cin, df.m1[df.jm].n);
cout<<"Masukkan Alamat Mahasiswa\t: ";
getline(cin, df.m1[df.jm].a);
cout<<"Masukkan IP Mahasiswa\t\t: ";
cin>>df.m1[df.jm].ip;
if (df.m1[df.jm].ip >4 )
cout<<"\nMaaf Silahkan Cek Kembali Data Yang Anda Masukkan";

df.jm++;
}
else
cout<<"\nMaaf Data Sudah Penuh\n";
}
void tm(struct nm &df){//tampilkan data mahasiswa
for (int i = 0; i < df.jm;i++ )
{
cout<<"Data Mahasiswa ke-"<<i<<": \n";
cout<<"Nama\t: "<<df.m1[i].n<<endl;
cout<<"Alamat\t: "<<df.m1[i].a<<endl;
cout<<"IP\t: "<<df.m1[i].ip<<endl;
}
}
void hp(struct nm &df){//fungsi hapus
int ind;//deklarasi nama
cout<<"Masukkan Index Yang Akan dihapus : ";
cin>>ind;
for (int i =0;i<df.jm;i++){
df.m1[i].n= df.m1[i+1].n;
df.m1[i].a= df.m1[i+1].a;
df.m1[i].ip= df.m1[i+1].ip;
}
df.jm--;
}

int cari(struct nm &df ){//fungsi cari
int in = -1;
string cari;
cout<<"Masukkan Nama Yang di Cari\t:";
getline(cin, cari);
for (int i =0;i<df.jm;i++){
if(df.m1[i].n==cari){
in = i;
break;
}
}
return in;
}
void ss(struct nm &df){//fungsi
if (df.jm < 5){
for (int i=df.jm-1;i>=0;i--){
df.m1[i+1].n=df.m1[i].n;
df.m1[i+1].a=df.m1[i].a;
df.m1[i+1].ip=df.m1[i].ip;
}
cout<<"\nMasukkan Nama Mahasiswa\t\t:";
getline(cin, df.m1[df.jm].n);
cout<<"Masukkan Alamat Mahasiswa\t:";
getline(cin, df.m1[df.jm].a);
cout<<"Masukkan IP Mahasiswa\t\t:";
cin>>df.m1[df.jm].ip;
if (df.m1[df.jm].ip >4 )
cout<<"\nMaaf Silahkan Cek Kembali Data Yang Anda Masukkan";

df.jm--;
}
else
cout<<"Data Penuh";
}
int main()
{
struct nm df;
int p;
do{
menu();
cin>>p; cin.ignore();
switch (p)
{
case 1 : td(df);break;
case 2 : {
int i = cari(df);
if (i != -1)
cout<<"\nData ditemukan pada index ke-"<<i<<endl;
else
cout<<"\nMaaf Silahkan Cek Data Yang Anda Masukkan"<<endl;break;
}
case 3 : hp(df);break;
case 4 : ss(df);break;
case 5 : tm(df);break;
}
}while(p!=0);
}
Saya kali ini akan membagi tutorial bagaimana cara untuk forwarding pada sebuah switch yang bisa dijadikan sebagai implementasi Software Define Network, saya menggunakan emulator yang dapat di install pada ubuntu 14.04 atau sistem operasi linux yang lain, berikut tutorial dan sourcecode yang sudah saya pelajari selama kuliah.

Forrwarding : Meneruskan suatu paket yang dikirimkan oleh host ke interface lain sesuai dengan tujuan yang sudah ditentukan oleh pengirim paket.
Topologi :

Gambar 1 : Topologi 3 switch 6 host




Prosedur :
      1.      Membuka software miniedit pada terminal dengan cara
   $sudo ~/mininet/examples/miniedit.py
      2.      Membuat topologi 6 host 3 switch dan 1 kontroller seperti pada gambar 1.
      3.      Membuat file python pada folder /pyretic/pyretic/modules dengan nama Forwarding1.py (nama file bisa dirubah sesuai dengan keinginan) sesuai dengan source code dibawah ini.
      4.      Run topologi yang sudah dibuat dengan cara klik run pada pojok kiri bawah
      5.      Export PYTHONPATH dengan cara
  $export PYTHONPATH=$HOME/pox:$HOME/mininet:$HOME/pyretic
      6.      Jalankan Forwarding1.py dengan cara
·         Masuk directory pyretic 
$cd pyretic
·         Jalankan perintah
$python pyretic.py –m p0 pyretic.modules.forwarding1
      7.       Lakukan ping ke host lain di terminal host miniedit dengan klik kanan host yang dipilih dan klik terminal.
Source Code Forwarding1.py :
1    
2  
3  
4  
5  
6  
7  
8  
9  
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
from pyretic.lib.corelib import *
from pyretic.lib.std import *
from pyretic.lib.query import *

ip1= IPAddr('10.0.0.1')
ip2= IPAddr('10.0.0.2')
ip3= IPAddr('10.0.0.3')
ip4= IPAddr('10.0.0.4')
ip5= IPAddr('10.0.0.5')
ip6= IPAddr('10.0.0.6')

sw1 =      ((match(dstip=ip1) >> fwd(1))+
     (match(dstip=ip2) >> fwd(2))+
     (match(dstip=ip3) >> fwd(3))+
     (match(dstip=ip4) >> fwd(3))+
     (match(dstip=ip5) >> fwd(3))+
     (match(dstip=ip6) >> fwd(3)))

sw2 = ((match(dstip=ip1) >> fwd(3))+
     (match(dstip=ip2) >> fwd(3))+
     (match(dstip=ip3) >> fwd(1))+
     (match(dstip=ip4) >> fwd(2))+
     (match(dstip=ip5) >> fwd(4))+
     (match(dstip=ip6) >> fwd(4)))

sw3 = ((match(dstip=ip1) >> fwd(3))+
     (match(dstip=ip2) >> fwd(3))+
     (match(dstip=ip3) >> fwd(3))+
     (match(dstip=ip4) >> fwd(3))+
     (match(dstip=ip5) >> fwd(1))+
     (match(dstip=ip6) >> fwd(2)))

l3forward = (if_(match(switch=1),sw1) + (if_(match(switch=2),sw2)) + (if_(match(switch=3),sw3)))

def main():
     return l3forward


Penjelasan :
            Pada program forwarding1.py pertama dilakukan import library pyretic dan inisialisasi awal untuk  ip address pada semua host, kemudian dilakukan inisialisasi pada masing – masing switch, switch pertama mempunyai alur kerja jika tujuan ke ip1 maka akan dilakukan forward pada port 1, ip2 ke port 2, ip3, ip4, ip5 ke port 3, switch kedua jika tujuan ke ip1 dan ip2 akan di forward pada port 3, ip3 ke port 1, ip4 ke port 2, ip5 dan ip6 ke port 4, sedangkan switch ketiga jika tujuan ke ip1, ip2, ip3, ip4 akan diforward ke port 3 dan jika tujuan ke ip5 dan ip6 masing-masing akan di forward ke port 1 dan 2. Kemudian dilakukan pengkondisian jika paket yang dituju ada pada port switch 1 maka akan di teruskan ke switch 1 dan untuk paket yang menuju switch 2 maka akan diforward ke switch 2 dan begitu pun untuk switch 3.
Screenshoot :


Gambar 2 : Menjalankan forwarding1.py





Gambar 3 : Ping ke semua host

Oke selamat mencoba, semoga berhasil.
Teori Dasar Aplikasi Jaringan Komputer
Linux Centos
Fedora adalah sebuah distro Linux berbasis RPM dan yum yang dikembangkan oleh
Fedora Project yang didukung oleh komunitas pemrogram serta disponsori oleh Red
Hat. Nama Fedora berasal dari karakter fedora yang digunakan di logo Red Hat. Pada
rilis 1 sampai 6 distro ini bernama Fedora Core yang kemudian berubah menjadi Fedora
pada rilis ke-7. Fedora dikenal di dunia Linux sebagai sebuah distro yang menjadi
pioneer dalam penggunaan teknologi terkini dan merupakan distro yang digunakan oleh
Linus Trovalds.
Salah satu visi utama Fedora tidak hanya mengandung software dibawah lisensi
software open source dan gratis, tetapi juga menjadi teknologi yang mutakhir.
Pengembang fedora lebih membuat perubahan yang signifikan daripada hanya
memperbaiki khususnya untuk bahwa update Fedora dapat digunakan oleh semua
linux.
Pada tahun 2008, Linus Trovalds, pemilik dari Linux kernel, mengatakan bahwa dia
menggunakan Fedora karena Fedora memiliki dukungan yang cukup bagus untuk
arsitektur prosesor PowerPC, yang dia rasakan setiap waktu.
Fedora Project sendiri telah mengeluarkan beberapa versi beta yang bisa dikatakan
merupakan kelanjutan dari Red Hat Linux 9.0, yaitu Fedora Core 1.0 pada 5 November
2003. Project ini memiliki periode waktu pengembangan yang lebih cepat, yaitu 4-6
bulan, dibandingkan Red Hat Linux yang membutuhkan 6-8 bulan atau Red Hat
Enterprise Linux yang membutuhkan 12-18 bulan. Sementara itu, usia hidup produknya
boleh dibilang sangat singkat, yaitu 2-3 bulan dari release produk terbarunya
dibandingkan dengan lifetime produk Red Hat Enterprise Linux yang mencapai 5 tahun.
Oracle Virtual Box
VirtualBox adalah salah satu software virtualisasi populer yang didistribusikan
secara gratis. Aplikasi ini sangat powerful untuk membuat virtual machine dan
menjalankan banyak sistem operasi pada satu komputer. VirtualBox mendukung hampir
semua sistem operasi meliputi Windows OS, Linux OS, Solaris, Mac OS X, Unices dan
sistem operasi lainnya.
Penggunaan VirtualBox biasanya untuk mengatasi masalah-masalah yang dihadapi
para pengguna seperti halnya sebagai berikut :
Ingin melakukan percobaan software sebelum menginstallnya pada komputer.
Ingin mencoba atau belajar sistem operasi baru tanpa ingin mengganti sistem
operasi yang saat ini sedang digunakan.
Ingin menjalankan software yang dicurigai tidak aman jika dijalankan di komputer
secara langsung.
Ingin menginstall software yang tidak support dengan sistem operasi yang sedang
digunakan saat ini.
Wireshark
a) Tujuan
Mendeskripsikan fungsi dari Wireshark sebagai salah satu network analysis tool.
Melakukan capture dengan Wireshark
b) Latar Belakang
Wireshark merupakan packet analyzer yang bersifat free dan open source.
Aplikasi ini digunakan untuk troubleshooting jaringan, analisa paket data dan
pengembangan protokol komunikasi. Wireshark merupakan aplikasi cross-platform,
menggunakan GTK+ widget toolkit pada user interfacenya dan menggunakan pcap
untuk menangkap paket data. Selain dapat digunakan di Windows, aplikasi ini juga
dapat berjalan di lingkungan Unix seperti Linux, Mac OS X, BSD dan Solaris. Aplikasi
lain yang sering digunakan untuk tujuan yang sama dengan Wireshark adalah
TCPdump, hanya saja TCPdump bekerja di command line Linux dan tidak memiliki
user interface.
Packet sniffer sendiri diartikan sebagai sebuah program atau tool yang memiliki
kemampuan untuk ‘mencegat’ dan melakukan pencatatan terhadap traffic data
dalam jaringan. Selama terjadi aliran data dalam, packet sniffer dapat menangkap
protocol data unit (PDU), melakukan dekoding serta melakukan analisis terhadap isi
paket berdasarkan spesifikasi RFC atau spesifikasispesifikasi yang lain. Wireshark
sebagai salah satu packet sniffer diprogram sedemikian rupa untuk mengenali
berbagai macam protokol jaringan. Wireshark mampu menampilkan hasil
enkapsulasi dan field yang ada dalam PDU.
Enkapsulasi dan Dekapsulasi Data
Enkapsulasi adalah suatu proses untuk menyembunyikan atau memproteksi suatu
proses dari kemungkinan interferensi atau penyalahgunaan dari luar sistem sekaligus
menyederhanakan penggunaan sistem itu sendiri, juga membuat satu jenis paket data
jaringan menjadi jenis data lainnya. Enkapsulasi terjadi ketika sebuah protokol yang
berada pada lapisan yang lebih rendah menerima data dari protokol yang berada pada
layer yang lebih tinggi dan meletakkan data ke format data yang dipahami oleh protokol
tersebut. Akses ke internal sistem diatur sedemikian rupa melalui seperangkat interface.
Dengan enkapsulasi data menjadi memiliki identitas. Contoh sederhana proses
enkapsulasi dalam proses pengiriman surat, jika sebuah surat akan dikirim namun tanpa
adanya amplop, alamat dan perangko. Surat tersebut hendaknya memiliki identitas agar
dapat sampai ke tujuan, jika tidak memiliki identitas maka surat tersebut tidak akan
dapat sampai ke tujuan. Amplop dengan alamat dan perangko sama dengan enkapsulasi
pada data.
Proses enkapsulasi data:
1. Awalnya data dibuat, ketika memulai proses pengiriman, data turun melalui
Application layer (layer 7) yang bertanggung jawab dalam pertukaran informasi
dari komputer ke jaringan, pada dasarnya layer ini merupakan interface antara
jaringan dengan aplikasi yang digunakan user. Dapat juga disebut bahwa layer ini
berfungsi untuk mendefinisikan request dari user. Kemudian data diteruskan ke
layer Presentation (layer 6), yang mana layer ini bertanggung jawab dalam
menentukan apakah ia perlu untuk melakukan enkripsi terhadap request ini
ataupun ke bentuk lain dari translasi data. Jika proses sudah lengkap, selanjutnya
ditambahkan informasi yang diperlukan. Lalu di lanjutkan ke Session layer (layer 5)
yang mana layer ini akan memeriksa apakah aplikasi meminta suatu informasi dan
memverifikasi layanan yang diminta itu pada server. Setiap informasi yang akan
dilewatkan akan ditambahkan header setiap turun 1 layer. Namun, pada
pemrosesan layer 5, 6 dan 7 terkadang tidak diperlukan adanya header. Ini
dikarena-kan tidak ada informasi baru yang perlu diproses.
2. Sampailah data di Transport layer (layer 4), memastikan bahwa ia mempunyai
suatu koneksi yang sudah tepat dengan server dan memulai proses dengan
mengubah informasi itu ke bentuk segment. Pengecekan error dan penggabungan
data yang berasal dari aplikasi yang sama dilakukan di layer transport ini serta
keutuhan data di jamin pula di sini. Terbentuk L4PDU dari proses ini.
3. Selanjutnya segment tersebut diteruskan ke Network layer (layer 3), disini diterima
segment-segment tadi dan ditambahkan alamat network untuk station yang merequest dan alamat network untuk server yang di-request. Segment-segment
tersebut akan diubah menjadi packet-packet, Kemudian layer Network membuat
header Network, dimana didalamnya terdapat juga alamat layer Network, dan
ditempatkan L4PDU dibaliknya, dan terbentuklah L3PDU.
4. Kemudian packet-packet tadi dilewatkan ke layer Data Link (layer 2) dan paketpaket tadi diatur dan kemudian akan dibungkus lagi ke dalam individual frame,
salah satu contoh dalam proses ini adalah memberikan alamat MAC tujuan dan
MAC address sumber yang kemudian informasi tersebut digunakan untuk
membuat trailer. Dikarenakan suatu paket dapat dikirimkan melalui banyak sekali
perangkat dan router, disinilah peran MAC Address dalam mengirimkan paket
antara satu router dan router lainnya. Kemudian akan ditransmisikan ke media.
Seluruh informasi yang ditambahkan oleh tiap layer sebelumnya (sebagai suatu
actual file request) harus sesuai ke dalam ukuran 46-1500 byte data field pada
frame ethernet. Data link layer bertanggung jawab untuk mengirimkan frame
menurut topologi yang digunakan. Terbentuklah L2PDU pada proses ini.
5. Terakhir, sampailah data di layer Physical (layer 1), informasi akan dibawa dari
source menuju destination. Karena Physical layer tidak mengenal frame, ia akan
melewatkan informasi itu ke bentuk bit. Tidak terjadi penambahan header pada
layer ini. Layer Physical ini berhubungan dengan perangkat keras. Akhirnya bit-bit
tersebut nantinya akan disinkronisasi dan kemudian diubah menjadi sinyal listrik
yang berupa tinggi rendahnya tegangan dan selanjutnya ditransmisikan melalui
media. Misalnya dari kabel ke tujuan, hal ini sesuai dengan karakteristik lapisan
Physical layer yang menentukan rangkaian kejadian dimana arus bit berpindah
melalui medium fisik.
Pada tiap layer terdapat LxPDU (Layer N Protocol Data Unit), dimana merupakan
bentuk dari byte pada header-trailer pada data. PDU merupakan proses-proses pada
setiap layer dari model OSI. Pada tiap-tiap layer juga terbentuk bentukan baru, pada
layer 2 PDU termasuk header dan trailer disebut bentukan frame. Pada layer 3 disebut
paket (packet). Sedangkan pada layer 4 disebut segmen (segment). Setelah dilakukan
proses enkapsulasi, lalu dikirimkan ke server dan server akan melakukan proses tadi
secara terbalik, yaitu dari Physical layer ke Application layer, proses ini disebut
dekapsulasi. Jika pada enkapsulasi dilakukan pembungkusan, maka pada de-enkapsulasi
akan melakukan pembukaan dari bungkus-bungkus tadi melalui layer-layer nya.
Proses Dekapsulasi merupakan kebalikan dari proses Enkapsulasi. Proses Enkapsulasi
merupakan proses pembungkusan data sedangkan Dekapsulasi merupakan proses
pembukaan bungkus. Prosesnya pun terbalik dari proses Enkapsulasi. Proses Enkapsulasi
bermula dari layer yang paling atas (Application Layer) hingga layer yang paling bawah
(Physical Layer) sedangkan proses Dekapsulasi bermula dari layer yang paling bawah
(Physical Layer) menuju layer yang paling atas (Application Layer).
Model TCP/IP Layer
Tidak seperti model OSI, model TCP/IP bukan internasional standard dan definisinya
dapat berbeda-beda. Namun demikian, sering dipakai sebagai model praktis untuk
mengerti dan mencari kesalahan dalam jaringan internet. Mayoritas internet memakai
TCP/IP, dan oleh sebab itu kita dapat membuat beberapa asumsi tentang jaringanjaringan yang lebih mudah untuk mengerti. Model TCP/IP dari jaringan digambarkan
dalam empat lapisan berikut:
Layer Nama Layer Keterangan
4 Application Merupakan lapisan terakhir dalam arsitektur TCP/IP
yang berfungsi mendefinisikan aplikasi-aplikasi yang
dijalankan pada jaringan. Karena itu, terdapat banyak
protokol pada lapisan ini, sesuai dengan banyaknya
aplikasi TCP/IP yang dapat dijalankan
3 Transport Mendefinisikan cara-cara untuk melakukan pengiriman
data antara end to end host secara handal. Lapisan ini
menjamin bahwa informasi yang diterima pada sisi
penerima adalah sama dengan informasi yang
dikirimkan pada pengirim.
2 Internet Mendefinisikan bagaimana hubungan dapat terjadi
antara dua pihak yang berada pada jaringan yang
berbeda seperti Network Layer pada OSI. Pada jaringan
Internet yang terdiri atas puluhan juta host dan ratusan
ribu jaringan lokal, lapisan ini bertugas untuk menjamin
agar suatu paket yang dikirimkan dapat menemukan
tujuannya dimana pun berada. Oleh karena itu, lapisan
ini memiliki peranan penting terutama dalam
mewujudkan internetworking yang meliputi wilayah
luas (worldwide Internet).
1 Network Access Mempunyai fungsi yang mirip dengan Data Link layer
pada OSI. Lapisan ini mengatur penyaluran data frameframe data pada media fisik yang digunakan secara
handal. Lapisan ini biasanya memberikan servis untuk
deteksi dan koreksi kesalahan dari data yang
ditransmisikan.
Tabel 1.2 TCP/IP Layer
Dari sisi model OSI, lapisan kelima hingga ketujuh tergabung menjadi lapisan paling
atas (lapisan aplikasi). Sementara empat lapisan yang pertama di kedua model identik.
Banyak teknisi jaringan berfikir bahwa segalanya di atas lapisan empat "hanya data"
yang berubah-ubah dari aplikasi ke aplikasi. Karena ketiga lapisan pertama interoperable
di antara seluruh pembuat peralatan, dan lapisan keempat bekerja di antara semua
mesin yang memakai TCP/IP, dan semua di atas lapisan keempat cenderung untuk
digunakan di aplikasi yang spesifik, hal ini menyederhanakan model yang bekerja pada
saat membuat dan mencari permasalahan di jaringan TCP/IP.
A.    Definisi Tree
Tree diartikan sebagai satu kumpulan dari elemen salah satunya disebut dengan akar atau root, dan sisa elemen lainnya terpecah menjadi sejumlah himpunan yang paling tidak berhubungan satu sama lain, yang disebut dengan sub pohon, atau disebut juga cabang. Jika kita melihat pada subpohon, maka subpohon ini juga mempunyai akar dan sub-subpohonnya masing-masing, tree bisa juga disebut sebagai sebuah struktur data yang secara bentuk menyerupai sebuah pohon, yang terdiri dari serangkaian node (simpul) yang saling berhubungan. Node-node tersebut dihubungkan oleh sebuah penghubung yang dinamakan vektor. Setiap node dapat memiliki 1 atau lebih node anak. Sebuah node yang memiliki node anak disebut node induk (parent). Sebuah node anak hanya memiliki satu node induk. Sesuai konvensi ilmu komputer, tree bertumbuh ke bawah, tidak seperti pohon di dunia nyata yang tumbuh ke atas. Dengan demikian node anak akan digambarkan berada di bawah node induknya.
Cara penggunaan Tree :
notasi kurung
diagram venn
notasi tingkat
notasi garis

                Sehingga dari data diatas dapat disimpulkan bahwa, tree dapat didefinisikan sebagai kumpulan simpul atau node dengan satu elemen yang disebut akar (root) dan cabang (node) atau disebut juga sub tree atau sub pohon. Sehingga secara sederhana pohon bisa didefinisikan sebagai kumpulan elemen yang salah satu elemennya disebut dengan akar (root) dan elemen yang lainnya (simpul), terpecah menjadi sejumlah himpunan yang saling tidak berhubungan satu dengan yang lainnya.
Dibawah ini adalah istilah – istilah umum yang digunakan dalam tree :
a) Prodecessor : node yang berada diatas node tertentu.
b) Successor : node yang berada di bawah node tertentu.
c) Ancestor : seluruh node yang terletak sebelum node tertentu dan terletak pada jalur yang sama.
d) Descendant : seluruh node yang terletak sesudah node tertentu dan terletak pada jalur yang sama.
e) Parent : predecssor satu level di atas suatu node.
f) Child : successor satu level di bawah suatu node.
g) Sibling : node-node yang memiliki parent yang sama dengan suatu node.
h) Subtree : bagian dari tree yang berupa suatu node beserta descendantnya dan memiliki semua  karakteristik dari tree tersebut.
i) Size : banyaknya node dalam suatu tree.
j) Height : banyaknya tingkatan/level dalam suatu tree.
k) Root : satu-satunya node khusus dalam tree yang tak punya predecssor.
l) Leaf : node-node dalam tree yang tak memiliki seccessor.
m) Degree : banyaknya child yang dimiliki suatu node.
Dikutip dari (Struktur Data TREE dan Penjelasaanya Secara Lengkap   New Funday.htm)
B.     Implementasi
         Implementasi dalam pemrograman, dalam pokok bahasan ini akan dibicarakan untuk pohon biner saja. Asumsi awal adalah data yang hendak dimasukkan ke dalam node, bertipe data integer.
1.  Deklarasi Tree
Karena tree tersusun oleh node-node, maka yang perlu kita deklarasikan adalah komponen node itu sendiri. Dalam contoh dibawah, akan kita namai Node.
Contoh deklarasi Source code:
Struct node {
   Int data;
   node *kanan;
   node *kiri;
};
Variabel data adalah untuk menyimpan nilai, sedangkan kiri dan kanan, bertipe pointer, masing-masing yang akan menunjuk ke node anak kiri dan kanan.
2.  Inisialisasi Tree
Untuk pertama kali, saat kita akan membuat sebuah pohon biner, asumsi awal adalah pohon itu belum bertumbuh, belum memiliki node sama sekali, sehingga masih kosong.
3.  Menambahkan Node Pada Tree
Karena pohon yang kita buat merupakan sebuah pohon biner, maka untuk menambahkan sebuah
node, secara otomatis penambahan tersebut mengikuti aturan penambahan node pada pohon biner:
1.      Jika pohon kosong, maka node baru ditempatkan sebagai akar pohon.
2.      Jika pohon tidak kosong, maka dimulai dari node akar, dilakukan proses pengecekan berikut:
a.  Jika nilai node baru lebih kecil dari nilai node yang sedang dicek, maka lihat ke kiri node tersebut. Jika kiri node tersebut kosong (belum memiliki kiri), maka node baru menjadi kiri node yang sedang dicek. Seandainya kiri node sudah terisi, lakukan kembali pengecekan a dan b terhadap node kiri tersebut. Pengecekan ini dilakukan seterusnya hingga node baru dapat ditempatkan.
b.  Jika nilai node baru lebih besar dari nilai node yang sedang dicek, maka lihat ke kanan node tersebut. Jika kanan node tersebut kosong (belum memiliki kanan), maka node baru menjadi kanan  node  yang  sedang  dicek.  Seandainya  kanan  node  sudah  terisi,  lakukan  kembali pengecekan a dan b terhadap node kanan tersebut. Pengecekan ini dilakukan seterusnya hingga node baru dapat ditempatkan.
Binary Tree
         Pohon biner bisa didefinisikan sebagai suatu kumpulan simpul yang mungkin kosong atau mempunyai akar dan dua subpohon yang saling terpisah yang disebut dengan subpohon kiri dan sub pohon kanan. Subpohon disebut juga sebagai cabang. Karakteristik dari pohon biner ialah bahwa setiap simpul paling banyak hanya mempunyai dua buah anak. Dengan kata lain derajat tertinggi dari sebuah pohon biner adalah dua. Pengertian daun, root, level, tinggi dan derajad yang berlaku pada pohon juga berlaku pada binary tree. Penyajian binary tree pada komputer di gunakan double link list. Pengertian lain dari Pohon biner adalah sebuah tree yang pada masing-masing simpulnya hanya dapat memiliki maksimum 2 (dua) simpul  anak.  Tidak  boleh  lebih.  Pada  pohon  biner,  umumnya  kedua  node  anak  disebut  dengan posisinya, yaitu kiri dan kanan.
         Pada setiap simpul pohon biner hanya berisi dua buah pointer yang menunjuk ke cabang kiri dan cabang kanan, dengan melihat hal tersebut maka lebih baik struktur double link list dapat digunakan dalam binary tree ini.
·  Operasi pada Binary Search Tree
a.Searching/Pencarian
Pencarian pada BST dapat dilakukan dengan cara rekursif atau iteratif.
Langkah –langkah pencarian:
1. Periksa apakah nilai pada simpul yang sekarang sedang diperiksa sesuai dengan yang dicari. Jika ya maka nilai ditemukan, jika tidak:
2. Jika nilai yang dicari lebih kecil daripada nilai yang sedang diperiksa sekarang: jika simpul yang sekarang sedang diperiksa tidak memiliki anak kiri, maka nilai yang dicari tidak ada pada BST.
Jika ada, ulangi langkah yang sama pada anak kiri.
3. Jika nilai yang dicari lebih besar daripada nilai yang sedang diperiksa sekarang , periksa anak kanan. Jika simpul yang sedang diperiksa tidak punya anak kanan maka nilai yang dicari tidak ada dalam BST. Jika punya, ulangi lankah yang sama pada anak kanan.
b. Insertion/Penyisipan
Awal dari cara kerja penyisipan sama dengan pencarian, jika akar yang sedang diperiksa tidak sama dengan nilai yang ingin disisipi, kunjungi anak pohon kiri atau kanan hingga akhirnya kita menemukan simpul eksternal dan menyisipkan nilai sebagai anak kiri atau kanan—bergantung dari nilai.
c.   Deletion/Penghapusan
Terdapat 3 kasus yang mungkin dan perlu diatasi dalam penghapusan elemen pohon BST:
- Menghapus simpul yang merupakan daun
- Menghapus simpul dengan 1 anak
- Menghapus simpul dengan 2 a
Jadi dapat disimpulkan bahwa pohon biner adalah jenis dari struktur data pohon dimana setiap node hanya bisa paling banyak memiliki 2 anak node. Seperti struktur data lainnya, pohon digunakan untuk menyimpan informasi. Tidak seperti struktur data Stack dan Queue, yang keduanya adalah struktur data linear, pohon (biner) adalah struktur data hirarkis. Untuk mengatakan bahwa struktur data pohon hirarkis berarti elemen pohon terurut diatas atau dibawah elemen lainnya.

Formulir Kontak

Nama

Email *

Pesan *

Advertisement

Disqus Shortname