Senin, 30 Maret 2015

STATIC ROUTING menggunakan Paket Tracer

Membuat jaringan sederhana Static Routing di Packet Tracer
  1.  Langkah pertama buatlah skema jaringan (Topologi) seperti gambar dibawah ini:

2.  Sebelumnya hal terpenting dalam merouting sebuah jaringan adalah dengan membuat Tabel Routing terlebih dahulu sebelum memulai proses routing, seperti berikut ini.
3. Setelah itu mulailah mengkonfigurasi Router0 menggunakan kabel console di PC0. Klik pada PC0, menu Desktop dan pilih terminal, klik OK.
4. Ketikan konfigurasi di bawah ini untuk menambahkan Alamat IP pada Jaringan yang terhubung di PC0:
Router>enable
Router#configure terminal
Router(config)#interface fa0/0
Router(config-if)#ip address 10.1.1.1 255.0.0.0
Router(config-if)#no shutdown
Router(config-if)#exit
Router(config)#interface fa0/1
Router(config-if)#ip address 192.168.10.1 255.255.255.0
Router(config-if)#no shutdown
Router(config-if)#exit


5. Pada tahap ini close terminal, masuk pada sub menu IP Configuration dan isikan ip sesuai dengan network yang sudah dibuat pada table. Dan lakukan tahap IP Configuration ini pada PC0 dan PC1.
6. Selanjutnya untuk konfigurasi Router1 seperti tahap sebelumnya, menggunakan kabel console di PC2. Klik pada PC2, menu Desktop dan pilih terminal, klik OK. Ketikan konfigurasi di bawah ini untuk menambahkan Alamat IP pada Jaringan yang terhubung di PC2:
Router>enable
Router#configure terminal
Router(config)#interface fa0/0
Router(config-if)#ip address 10.1.1.2 255.0.0.0
Router(config-if)#no shutdown
Router(config-if)#exit
Router(config)#interface fa0/1
Router(config-if)#ip address 192.168.20.1 255.255.255.0
Router(config-if)#no shutdown
Router(config-if)#exit

7.  Pada tahap ini close terminal, masuk pada sub menu IP Configuration dan isikan ip sesuai dengan network yang sudah dibuat pada table. Dan lakukan tahap IP Configuration ini pada PC2 dan PC3.
1.      8. Selanjutnya kita masuk pada tahap routing. Untuk Router0 konfigurasi routing akan dilakukan pada PC0, sesuai dengan kabel console yang terhubung pada Router0 tersebut. Ketikan pada terminal PC0 seperti dibawah ini:
Router(config)#ip route 192.168.20.0 255.255.255.0 10.1.1.2

9. Untuk Router1 konfigurasi routing akan dilakukan pada PC2, sesuai dengan kabel console yang terhubung pada Router0 tersebut. Ketikan pada terminal PC2 seperti dibawah ini:
Router(config)#ip route 192.168.10.0 255.255.255.0 10.1.1.1
10. Setelah konfigurasi selesai, lalukan tes koneksi pengiriman paket terlebih dahulu untuk melihat success atau failed data yang dikirim.
11.  Lakukan tes koneksi ke Router dari masing – masing PC yang tidak terhubung langsung, contohnya seperti dibawah ini.

12.  Jika tes koneksi Reply from … Maka Static Routing menggunakan Packet Tracer ini berhasil dilakukan.





Kamis, 09 Januari 2014

BUBBLE SORT


Bubble Sort adalah salah satu algoritma untuk sorting data, atau kata lainnya mengurutkan data dari yang terbesar ke yang terkecil atau sebaliknya (Ascending atau Descending).
Bubble sort (metode gelembung) adalah metode/algoritma pengurutan dengan dengan cara melakukan penukaran data dengan tepat disebelahnya secara terus menerus sampai bisa dipastikan dalam satu iterasi tertentu tidak ada lagi perubahan. Jika tidak ada perubahan berarti data sudah terurut. Disebut pengurutan gelembung karena masing-masing kunci akan dengan lambat menggelembung ke posisinya yang tepat.
                Metode pengurutan gelembung (Bubble Sort) diinspirasikan oleh gelembung sabun yang berada dipermukaan air. Karena berat jenis gelembung sabun lebih ringan daripada berat jenis air, maka gelembung sabun selalu terapung ke atas permukaan. Prinsip di atas dipakai pada pengurutan gelembung.
Algoritma bubble sort adalah salah satu algoritma pengurutan yang paling simple, baik dalam hal pengertian maupun penerapannya. Ide dari algoritma ini adalah mengulang proses pembandingan antara tiap-tiap elemen
array dan menukarnya apabila urutannya salah. Pembandingan elemen-elemen ini akan terus diulang hingga tidak perlu dilakukan penukaran lagi. Algoritma
ini termasuk dalam golongan algoritma comparison sort, karena menggunakan perbandingan dalam operasi antar elemennya. Berikut ini adalah gambaran dari algoritma bubble sort. Misalkan kita mempunyai sebuah array dengan.  Elemen-elemen “4 2 5 3 9”. Proses yang akan terjadi apabila digunakan algoritma bubblesort adalah sebagai berikut.
Pass pertama
(4 2 5 3 9) menjadi (2 4 5 3 9)
(2 4 5 3 9) menjadi (2 4 5 3 9)
(2 4 5 3 9) menjadi (2 4 3 5 9)
(2 4 3 5 9) menjadi (2 4 3 5 9)
Pass kedua
(2 4 3 5 9) menjadi (2 4 3 5 9)
(2 4 3 5 9) menjadi (2 3 4 5 9)
(2 3 4 5 9) menjadi (2 3 4 5 9)
(2 3 4 5 9) menjadi (2 3 4 5 9)
Pass ketiga
(2 3 4 5 9) menjadi (2 3 4 5 9)
(2 3 4 5 9) menjadi (2 3 4 5 9)
(2 3 4 5 9) menjadi (2 3 4 5 9)
(2 3 4 5 9) menjadi (2 3 4 5 9)
Dapat dilihat pada proses di atas, sebenarnya pada pass kedua, langkah kedua, array telah terurut. Namun algoritma tetap dilanjutkan hingga pass kedua berakhir. Pass ketiga dilakukan karena definisi terurut dalam algoritma bubblesort adalah tidak ada satupun penukaran pada suatu pass, sehingga pass ketiga dibutuhkan untuk memverifikasi keurutan array tersebut.
B.      Algoritma Bubble Sort
1.    Membandingkan data ke-i dengan data ke-(i+1) (tepat bersebelahan). Jika tidak sesuai maka tukar (data ke-i = data ke-(i+1) dan data ke-(i+1) = data ke-i). Apa maksudnya tidak sesuai? Jika kita menginginkan algoritme menghasilkan data dengan urutan ascending (A-Z) kondisi tidak sesuai adalah data ke-i > data ke-i+1, dan sebaliknya untuk urutan descending (A-Z).
2.    Membandingkan data ke-(i+1) dengan data ke-(i+2). Kita melakukan pembandingan ini sampai data terakhir. Contoh: 1 dgn 2; 2 dgn 3; 3 dgn 4; 4 dgn 5 … ; n-1 dgn n.
3.    Selesai satu iterasi, adalah jika kita sudah selesai membandingkan antara (n-1) dgn n. Setelah selesai satu iterasi kita lanjutkan lagi iterasi berikutnya sesuai dengan aturan ke-1. mulai dari data ke-1 dgn data ke-2, dst.
4.    Proses akan berhenti jika tidak ada pertukaran dalam satu iterasi.
Contoh Kasus Bubble Sort :
Misalkan kita punya data seperti ini: 6, 4, 3, 2 dan kita ingin mengurutkan data ini (ascending) dengan menggunakan bubble sort. Berikut ini adalah proses yang terjadi:
Iterasi ke-1: 4, 6, 3, 2 :: 4, 3, 6, 2 :: 4, 3, 2, 6 (ada 3 pertukaran)
Iterasi ke-2: 3, 4, 2, 6 :: 3, 2, 4, 6 :: 3, 2, 4, 6 (ada 2 pertukaran)
Iterasi ke-3: 2, 3, 4, 6 :: 2, 3, 4, 6 :: 2, 3, 4, 6 (ada 1 pertukaran)
Iterasi ke-4: 2, 3, 4, 6 :: 2, 3, 4, 6 :: 2, 3, 4, 6 (ada 0 pertukaran) ---> selesai
Di bawah ini merupakan prosedur yang menggunakan metode buble secara ascending :
#include <iostream.h>
int total,data[10];
void input()
{
cout<<”input a value= “;
cin>>total;
for(int a=0; a<total; a++){
cout<<”masukan nilai pada index ke”<<a+1<<”=”;
cin>>data[a];
}
}
void sort(){
int temp;
for(int a=0;a<total-1;a++){
for(int b=0;b<total-1;b++){
if(data[b]>data[b+1]){
temp=data[b+1];
data[b+1]=data[b];
data[b]=temp;
}
}
}
}
void view(){
for(int a=0;a<total;a++){
cout<<data[a];
}
cout<<”\n”;
}
int main(){
input();
cout<<”sebelum di- sorting\n”;
view();
sort();
cout<<”sesudah di- sorting\n”;
view();
}

SELECTION SORT

SELECTION SORT
Pengertian dari selection sort adalah mencari elemen yang tepat untuk diletakkan di posisi yang telah diketahui, dan meletakkannya di posisi tersebut setelah data tersebut ditemukan,
Selection Sort Membandingkan elemen yang sekarang dengan elemen yang berikutnya sampai dengan elemen yang terakhir. Jika ditemukan elemen lain yang lebih kecil dari elemen sekarang
maka dicatat posisinya dan kemudian ditukar.
Pengurutan data dalam struktur data sangat penting untuk data yang beripe data numerik ataupun karakter.Pengurutan dapat dilakukan secara ascending (urut naik) dan descending (urut turun) Pengurutan (Sorting) adalah proses menyusun kembali data yang sebelumnya telah disusun dengan suatu pola tertentu, sehingga tersusun secara teratur menurut aturan tertentu.
Contoh:
Data Acak    : 5 6 8 1 3 25 10
Ascending    : 1 3 5 6 8 10 25
Descending    : 25 10 8 6 5 3 1
Konsep Selection Sort Algoritma pengurutan sederhana salah satunya adalah Selection Sort. Ide dasarnya adalah melakukan beberapa kali pass untuk melakukan penyeleksian elemen struktur data. Untuk sorting ascending (menaik),
elemen yang paling kecil di antara elemen-elemen yang belum urut,  disimpan indeksnya, kemudian dilakukan pertukaran nilai elemen dengan indeks yang disimpan tersebut dengan elemen yang paling depan yang belum urut. Sebaliknya, untuk sorting descending (menurun), elemen yang paling besar yang disimpan indeksnya kemudian ditukar.
Selection Sort diakui karena kesederhanaan algoritmanya dan performanya lebih bagus daripada algoritma lain yang lebih rumit dalam situasi tertentu. Algoritma ini bekerja sebagai berikut:
1. Mencari nilai minimum (jika ascending) atau maksimum (jika descending) dalam sebuah list
2. Menukarkan nilai ini dengan elemen pertama list
3. Mengulangi langkah di atas untuk sisa list dengan dimulai pada posisi kedua. Secara efisien kita membagi list menjadi dua bagian yaitu bagian yang sudah diurutkan, yang didapat dengan membangun dari kiri ke kanan dan dilakukan pada saat awal, dan bagian list yang elemennya akan diurutkan.

contoh program selection sorting descending menggunakan C++ :

#include <iostream.h>
void main()
{
    int i,j,n,data[10],temp,min;
    cout<<"masukan banyak data= ";cin>>n;
    for(i=1;i<=n;i++)
    {
    cout<<"data"<<i<<"=";cin>>data[i];
    }
    for(i=1;i<=n;i++)
    {
    for(j=i+1;j<=n;j++)
    {
    if(data[i]<data[j])
    {
    temp=data[i];
    data[i]=data[j];
    data[j]=temp;
    }
    }
    }
    cout<<"hasil= ";
    for(i=1;i<=n;i++)
    cout<<data[i]<<"";
}

Contoh program selection sorting menggunakan ascending dalam C++:

#include <iostream.h>
void main()
{
    int i,j,n,data[10],temp,min;
    cout<<"masukan banyak data= ";cin>>n;
    for(i=1;i<=n;i++)
    {
    cout<<"data"<<i<<"=";cin>>data[i];
    }
    for(i=1;i<=n;i++)
    {
    for(j=i+1;j<=n;j++)
    {
    if(data[i]>data[j])
    {
    temp=data[i];
    data[i]=data[j];
    data[j]=temp;
    }
    }
    }
    cout<<"hasil= ";
    for(i=1;i<=n;i++)
    cout<<data[i]<<"";
}

Rabu, 08 Januari 2014

QUEUE (ANTRIAN)



Queue (antrian) adalah barisan elemen yang apabila elemen ditambah maka penambahannya berada di posisi belakang (rear) dan jika dilakukan pengambilan elemen dilakukan di elemen paling depan  (front). Oleh karena itu, queue bersifat FIFO (first in first out).




Operasi-operasi dasar dari sebuah qu  eue adalah :
1.   Enqueue : proses penambahan elemen di posisi belakang
2.   Dequeue : proses pengambilan elemen di posisi depan

Selain operasi dasar di atas, ada pula operasi-operasi lain yang dapat dilakukan
terhadap sebuah queue yaitu :
1.   Operasi peme riksaan queue kosong (fungsi kosong)
2.   Operasi peme riksaan queue penuh (fungsi penuh).
3.   Operasi inisialisasi queue (fungsi inisialisasi)

Adapun presentasi queue dapat dilakukan dengan 2 cara yaitu :
1.   Dengan menggunakan array statis
      Operasi-operasi yang dapat dilakukan dalam queue yang menggunakan representasi array statis adalah :

       1.1.  Pendeklarasian sebuah queue
               Setiap queue memiliki elemen-elemen (field) berupa posisi depan, posisi
belakang, elemen antrian, dan maksimal elemennya.
Adapun pendeklarasian queue dalam  bahasa C adalah :


  • Operasi Enqueue
Proses enqueue adalah proses untuk penambahan di posisi belakang. Penam bahan ini dilakukan jika kondisi queue tidak penuh. Jika keadaan masih kosong, maka field depan dan belakang bernilai 1 tetapi jika sudah mempunyai elemen maka yang nilai belakang harus bertambah 1. Kemudian data baru disimpan di array pada posisi belakang. Implementasi dalam C harus melakukan penyesuaian karena elemen array C dimulai dari 0 sehingga ketika queue masih kosong pemberian nilai depan dan
belakang adalah 0 bukan 1. 

  • Operasi Dequeue
Operasi dequeue adalah proses pengambilan elemen queue. Tentunya elemen yang diambil selalu dari elemen pertama  (1). Setelah elemen pertama diambil,
ma ka akan diperlukan proses pergeseran  elemen data setelah elemen data yang
diambil (dari posisi ke-2 sampai posisi paling belakang), dan kemudian posisi 
belakang akan dikurangi 1 karena ada data yang diambil. 

Contoh Program Queue :

#include<iostream.h>
#include<conio.h>

main()
{
    int cek = 0, data [20],x,hapus;
    char pil;
    do {
            clrscr();
            cout<<"1. Tambah Antrian"<<endl;
            cout<<"2. Hapus Antrian"<<endl;
            cout<<"3. Lihat Antrian"<<endl;
            cout<<"4. Keluar"<<endl;

            cout<<"Silahkan Masukan Pilihan Anda=";
            pil=getche();
            cout<<endl;

    if(pil!='1'&&pil!='2'&&pil!='3'&&pil!='4')

            cout<<"Anda salah mengetikan inputan";
            else
            {
                if(pil=='1')  //enqueue
            {
                if(cek==20)
                cout<<"Antrian penuh"<<endl;
                else
            {
                cout<<"Masukan nilai="<<endl;
                cin>>x;
                data[cek]=x;
                cek++;
            }
            }
                else
            {
                if(pil=='2') //dequeue
            {
                if(cek==0)
                cout<<"Antrian kosong"<<endl;
                else
            {
                hapus=data[0];
                for(int v=0;v<cek;v++)
                data[v]=data[v+1];
                data[cek-1]=NULL;
                cek--;
                cout<<"Data dengan nilai"<<hapus<<"terhapus";
            }
    getch();
            }
                else
            {
                if(pil=='3') //cek data
            {
                if(cek==0)
                cout<<"Antrian kosong"<<endl;
                else
            {
                cout<<endl;
                for(int z=0;z<cek;z++)
            {
                cout<<"|";
                cout<<""<<data[z];
                cout<<"|";
            }
            }
    getch();
            }
            }
            }
            }
            }while(pil!='4');
            }


 


STACK (Tumpukan)



Stack adalah suatu urutan elemen yang elemennya dapat diambil dan ditambah hanya pada posisi akhir (top) saja. Contoh dalam kehidupan sehari-hari adalah tumpukan piring di sebuah restoran yang tumpukannya dapat ditambah pada bagian paling atas dan jika mengambilnya pun dari bagian paling atas pula.
 Macam-macam tumpukan
Ada 2 operasi paling dasar dari stack yang dapat dilakukan, yaitu :
1.   Operasi push yaitu operasi menambahkan elemen pada urutan terakhir (paling atas).
2.  Operasi pop yaitu operasi mengambil sebuah elemen data pada urutan terakhir dan menghapus elemen tersebut dari stack.
Sebagai contoh, misalkah ada data sebagai berikut : 1 3 5 6, maka data tersebut dapat tersimpan dalam bentuk sebagai berikut : 

asumsi penyimpanan stack


               



 
Contoh lain adalah ada sekumpulan perintah stack yaitu push(5), push(7), pop, push(3), pop. Jika dijalankan, maka yang akan terjadi adalah :
Selain operasi dasar stack (push dan stack), ada lagi operasi lain yang dapat terjadi dalam stack yaitu :
1.   Proses deklarasi yaitu proses pendeklarasian stack.
2.   Proses isempty yaitu proses pemeriksaan apakah stack dalam keadaan kosong.
3.   Proses isfull yaitu proses pemeriksaan apakah stack telah penuh. 
4.  Proses inisialisasi yaitu proses pembuatan stack kosong, biasanya dengan pemberian nilai untuk top. 
 
Representasi stack dalam pemrograman, dapat dilakukan dengan 2 cara yaitu :
1. Representasi stack dengan array
2. Representasi stack dengan single linked list 


Representasi stack dengan menggunakan single linked list :

                                        

Operasi-operasi stack secara lengkap adalah sebagai berikut :
  •         Pendeklarasian stack
Proses pendeklarasian stack adalah proses pembuatan struktur stack dalam memori. Karena stack dapat direpresentasikan dalam 2 cara, maka pendeklarasian stack pun ada 2 yaitu :
a.       Pendeklarasian stack yang menggunakan array.
Suatu stack memiliki beberapa bagian yaitu
*        top yang menunjuk posisi data terakhir (top)
*        elemen yang berisi data yang ada dalam stack. Bagian ini lah yang berbentuk array.
*        maks_elemen yaitu variable yang menunjuk maksimal banyaknya elemen dalam stack.
Dalam bahasa C, pendeklarasiannya adalah :

  




  • Inisialisasi stack adalah proses pembuatan suatu stack kosong. Adapun langkah-langkah proses tersebut berdasarkan jenis penyimpanannya adalah : 


a.       Inisialisasi stack yang menggunakan array. 

Proses inisialisasi untuk stack yang menggunakan array adalah dengan mengisi nilai field top dengan 0 (nol) jika elemen pertama diawali dengan nomor 1. Kalau elemen pertama array dimulai dengan 0 (contoh bahasa C), maka top diisi dengan nilai -1.
 
 



  •  Operasi IsEmpty
Operasi ini digunakan untuk memeriksa apakah stack dalam keadaan kosong. Operasi ini penting dilakukan dalam proses pop. Ketika suatu stack dalam keadaan kosong, maka proses pop tidak bisa dilakukan. Adapun langkah-langkah operasi ini adalah :
    A.      Operasi IsEmpty pada stack yang menggunakan array.
Operasi ini dilakukan hanya dengan memeriksa field top. Jika top bernilai 0 (untuk elemen yang dimulai dengan index 1) atau top bernilai -1 (untuk elemen yang dimulai dengan index 0), maka berarti stack dalam keadaan empty (kosong) yang akan me-return-kan true (1) dan jika tidak berarti stack mempunyai isi dan me-return-kan nilai false (0)


B. Operasi IsFull pada stack yang menggunakan single linked list. Karena dalam linked list bersifat dinamis, maka pengecekan isFull adalah dengan memeriksa apakah memori masih dapat digunakan untuk alokasi sebuah elemen stack. Jika alokasi dapat dilakukan, maka berarti memori masih belum penuh dan proses push dapat dilakukan. Tetapi jika alokasi memori gagal dilakukan, maka berarti memori penuh dan tidak bisa menambah lagi elemen stack.  

 Operasi Push
Operasi push adalah operasi dasar dari stack. Operasi ini berguna untuk menambah suatu elemen data baru pada stack dan disimpan pada posisi top yang akan mengakibatkan posisi top akan berubah. Langkah operasi ini adalah :
a.    Operasi push pada stack yang menggunakan array.
Langkah operasi push dalam array adalah dengan :
*        Periksa apakah stack penuh (isfull). Jika bernilai false/0 (tidak penuh) maka proses push dilaksanakan dan jika pemeriksaan ini bernilai true/1 (stack penuh), maka proses push digagalkan.
*        Proses push-nya sendiri adalah dengan menambah field top dengan 1, kemudian elemen pada posisi top diisi dengan elemen data baru.
 
b.     Operasi push pada stack yang menggunakan single linked list Operasi push pada stack yang menggunakan single linked list adalah sama dengan proses tambahawal pada operasi linked list. Langkah-langkahnya adalah :
*        Periksa apakah memori penuh (isfull). Jika bernilai false/0 (tidak penuh) maka proses push dilaksanakan dan jika pemeriksaan ini bernilai true/1 (stack penuh), maka proses push digagalkan. 

*        Proses push-nya sendiri adalah dengan cara mengalokasikan suatu elemen linked list (disebut variable baru), kemudian periksa jika stack dalam keadaan kosong maka pointer yang menunjuk ke awal stack diisi dengan pointer baru, dan jika dengan menambah field top dengan 1, kemudian elemen pada posisi top diisi dengan elemen data baru. Tetapi jika pointer penunjuk stack sudah menunjuk ke suatu data, maka sambungkan field pointer bawah (penunjuk ke data sebelumnya) dari pointer baru ke pointer penunjuk posisi akhir stack (top) dan kemudian pindahkah pointer penunjuk posisi akhir stack ke pointer baru. 

  

  
Operasi Pop
Operasi pop adalah salah satu operasi paling dasar dari stack. Operasi ini berguna untuk mengambil elemen terakhir (top) dan kemudian menghapus elemen tersebut sehingga posisi top akan berpindah. Operasi ini biasanya dibuat dalam bentuk function yang me-return-kan nilai sesuai data yang ada di top.

Ini adalah contoh program Stack yang pernah dilakukan dalam Praktikum Struktur data:


#include <iostream.h>
#include <conio.h>
#include <string.h>
struct
{
          char data [15][100], max [15];
          int i,j;
}
stack;
void isi () // push untuk memasukan data
{
          stack.i++;
          cout<<”masukan data: “;
          cin>>stack.max;
          strcpy (stack.data[stack.i],stack.max);
}
void buang () // pop untuk mengambil data
{
          if (stack.i>0)
          {
                cout<<”data yang terambil: “<<stack.data[stack.i]<<endl;
                     stack.i–; stack.j–;
          }
          else
                cout<<”tak ada data yang terambil”<<endl;
}
void muncul (int n)//print untuk menampilkan data
{
          if (stack.j>0)
          {
                for (int e=n; e>=1; e–)
                {
                     cout<<stack.data[e]<<endl;
                }
          }
          else
          cout<<”tak ada data tersimpan”<<endl;
}
void hapus () // clear untuk menghapus data
{
          stack.j=0; stack.i=0;
}
void main ()
{
          int n,plh;
          awal:
          clrscr();
          cout<<”contoh program stack (tumpukan)\n\n”;
          cout<<”maksimal tumpukan data: “; cin>>n;
          stack.data[n];
          stack.i=0;
          stack.j=0;
          pilihan:
          clrscr();
          cout<<”\n1. push \n2. pop \n3. print \n4. clear \n5. quit \n”;
          cout<<”\npilih :”; cin>>plh;
          cout<<”\n”;
          if (plh==1)
                {
                     if (stack.j<n)
                     {
                          stack.j++; isi();
                     }
                     else
                     {
                          cout<<”tumpukan penuh”<<endl; getch();
                     }
                     goto pilihan;
          }
          else if (plh==2)
          {
                     buang(); getch(); goto pilihan;
          }
          else if (plh==3)
          {
                     muncul (stack.i); getch(); goto pilihan;
          }
          else if (plh==4)
          {
                     hapus();  getch(); goto pilihan;
          }
          else if (plh==5)
          {
                     getch(); goto awal;
          }
          else
          {
                     cout<<”input yang anda masukan salah !!!”;
                     getch(); goto awal;
          }
}