468x60 Ads

Minggu, 07 Juni 2015

Tugas Praktikum Struktur Data

PRAKTIKUM STRUKTUR DATA
NAMA : I Putu Lingga Yastina Iswara
NIM : 140010021

KELAS : AB141

Nama Dosen :IB KETUT SURYA ARNAWA, S.Kom 
Asisten Dosen :Steven Anthony


SEKOLAH TINGGI 

MANAJEMEN INFORMATIKA DAN TEKNIK KOMPUTER (STMIK) STIKOM BALI

TAHUN 2015


DAFTAR ISI 
1.                  Variable
2.                  Array Satu Dimensi dan Dua Dimensi
3.                  Stack
4.                  Queue
5.                  Shorting, Insertion Sort & Selection Sort
6.                  Seaching, Sekuensial & Binary Seach 


VARIABLE
Pengertian Variabel
       Variabel adalah tempat untuk menampung data di dalam memory yang mempunyai nilai atau data yang dapat berubah-ubah selama proses program berjalan. Ada dua jenis variabel yaitu variabel Global dan variabel Lokal.

        Variabel Global variabel yang dapat dikenali oleh semua lingkungan dalam program, sedangkan variabel lokal variable hanya dikenali oleh satu fungsi saja. Variabel lokal tidak dapat dikenali oleh lingkungan lingkungan luar di dalam program tersebut.

Aturan Penamaan Variabel
· Tidak boleh ada spasi, dan dapat menggunakan Underscore (_) sebagai penghubung.
·  Tidak boleh diawali oleh angka.
· Tidak boleh sama dengan nama keywod reserved, function, dan harus unik.
·   Maksimal 32 karakter.
· Membedakan huruf besar dan huruf kecil (case sensitive).
Deklarasi Variabel
     Deklarasi variabel adalah proses memperkenalkan variabel kepada program dan pendeklarasian tersebut bersifat mutlak karena jika tidak diperkenalkan terlebih dahulu maka program tidak akan menerima variabel tersebut. Pendeklarasian variabel meliputi tipe variabel (char,int,float,double,logint), dan pemberian nama variabel. Dan variabel harus di akhiri dengan tanda titik koma(;).
Penulisan variabel
Tipe_data Nama_variabel;

Contoh penulisan variabel
Void main(){
char mahasiswa;
char IPK;
float rata-rata;
int nilai;}
memberikan nilai ke variabel
Nama_variabel = nilai;
Contoh pemberian nilai variabel
Var_bilangan = 31;

Deklarasi Variabel dalam Bahasa C++

#include<iostream.h>
#include<conio.h>
void main()
{
int L=1500; cout<<"Tampilkan Nilai Dari L = "<<G;
getch();
}


ARRAY SATU DIMENSI
Larik atau Array  merupakan sekumpulan data. data yang terkandung dalam suatu larik (Array) harus bertipe sama , sekumpulan data semacam itu bisa melibarkan tipe data yang berbeda - beda
Larik (Array) disebut jg variabel berindeks. nilai suatu data dalam array ditentukan oleh nama dan indeksnya. Array banyak digunakan pada operasi yg melibatkan indeks seperti pada statistik.
di dalam arlgoritma aray dinyatakan dengan awalan huruf kapital dan notasi [] dipakai untuk menyatakan data di dalam array.

Contoh :

A [1.2.4.5.]
menyatakan bahwa Array A berisi data 1,2,4 dan 5
pada contoh di atas Array A memiliki empat buat elemen.
untuk menyatakan sebuah elemen dalam array atau Pengaksesan elemen array dapat menggunakan notasi :

Nama_array [indeks]

indeks digunakan untuk menyatakan posisi elemen. Posisi pertama berawalan dari 0 dan posisi kedua berawalan dari 1 dan seterusnya

Deklarasi Array Satu Dimensi dengan Bahasa C++

#include<iostream.h>
#include<conio.h>
        void main ()
{
        int nilai[6];
   for(int i=0; i<6;i++)
   {
        cout<<"Masukan Nilai Index Ke ["<<i<<"] = ";
      cin>>nilai[i];
   }
        cout<<"============================"<<endl;

        for (int b=0; b<6;b++)
   {
        cout<<"Hasil Nilai Index Ke ["<<b<<"]="<<b<<endl;
   }
getch();
}


ARRAY DUA DIMENSI
Array berdimensi 2 sering digambarkan sebagai sebuah matriks. Dimana array berdimensi 1 hanya terdiri dari satu baris dan banyak kolom, sedangkan array berdimensi 2 terdiri dari banyak baris dan banyak kolom yang bertipe sama.

Pendeklarasian array 2 Dimensi
Tipe_data Nama_array[jumlah_baris] [jumlah_kolom];
Dimana Tipe_data menyatakan jenis tipe data elemen array (int,char,float). Nama_array menyatakan nama variabel yang dipakai. Jumlah_baris menunjukan jumlah maksimal baris. Jumlah_kolom menunjukan jumlah maksimal kolom.

Inisialisasi array
Memberikan nilai awal trhadap suatu variabel.
Tipe_data Nama_array[jumlah_elemen] = (nilai_array)
Contoh: int data [2][5]={{2.3.4.5.6},{4,5,3,6,7}};

Deklarasi Array Dua Dimensi dalam Bahasa C++

#include<iostream.h>

void main()
{
    int A[10];
    int i,jml,max;

    //isi data
    jml=0;
    for(i=0;i<=9;i++)
    {
        cout<<"Inputkan data ke-"<<i<<":";
        cin>>A[i];
        jml=jml+A[i];
    }

    //tampilkan data
    for(i=0;i<=9;i++)
    {
        cout<<A[i]<<" ";
    }
    cout<<endl;
    for(i=0;i<=9;i++)
    {
        cout<<&A[i]<<" ";
    }

    cout<<endl;
    cout<<"Hasil penjumlahan = "<<jml<<endl;

    max=A[0];
    for(i=1;i<=9;i++)
    {
        if (A[i]>max)
            max=A[i];
    }
    cout<<"Bilangan terbesar = "<<max<<endl;

}


STACK
          Stack adalah suatu daftar atau urutan elemen yang elemennya dapat diambil dan ditambah hanya hanya melalui satu jalur saja, yaitu bagian depan list.
Contoh dalam kehidupan sehari-hari adalah tumpukan buku di perpustakaan yang tumpukannya dapat ditambah pada bagian paling atas dan mengambilnya dari bagian paling atas pula.
yaitu Benda yang terakhir masuk ke dalam stack akan menjadi benda pertama yang dikeluarkan dari stack

Ada 2 operasi paling dasar yang penting dari stack yang dapat dilakukan, yaitu :


1. Operasi push yaitu operasi menambahkan elemen data pada urutan terakhir (paling     atas).
2. Operasi pop yaitu operasi mengambil sebuah elemen data pada urutan terakhir dari     stack.

          Tumpukan disebut juga “Push Down Back” yaitu penambahan elemen baru (push) dan penghapusan elemen dari tumpukan (pop) Untuk mengimplementasikan stack,  bisa menggunakan linked list atau juga array, tergantung pada permasalahan yang dihadapi. Apabila permasalahan yang dihadapi adalah permasalahan tumpukan (stack)  dimana jumlah elemen maksimum dibatasi, maka bisa digunakan array. Apabila jumlah elemen maksimumnya tidak dibatasi, maka linked list lebih tepat digunakan.
Salah satu konsep yang efektif untuk menyimpan dan mengambil data adalah “terakhir masuk sebagai yang pertama keluar akan menjadi elemen yang akan dihapus. ” (Last in First
Out/LIFO). Dengan konsep ini, pengambilan data akan berkebalikan urutannya dengan penyimpanan data.


Deklarasi Stack dengan Bahasa C++

   #include<iostream.h>
#define n 10
void main()

{
    int S[n];
    int x,top;

    top=-1;

    while (top<=n-1)
    {
        cout<<"Inputkan isi stack : ";
        cin>>x;
        top=top+1;
        S[top]=x;
    }

    cout<<"Isi stack : "<<endl;
    while (top>=0)
    {
        x=S[top];
        cout<<x<<" ";
        top=top-1;
    }

}


QUEUE
Pengertian Queue
                Queue adalah kumpulan data dengan penambahan data hanya melalui satu sisi,yaitu sisi blakang dan penghapusan data hanya melalui sisi depan. Queue merupakan salah satu struiktur data yang memiliki sistemkerja FIFO (Fisrt In First Out). Dimana data yang pertama kali masuk maka data tersebut akan keluar lebih dulu.

Di dalam Queue mempunyai dua kata kunci yaitu Head dan Tail. Head adalah penanda urutan paling depan. Tail adalah penanda urutan paling belakang.

Deklarasi Queue

                Variabel yang digunakan adalah data, head, tail. Nilai dari head dan tail dimulai dari -1 yang menandakan Queue kosong. Contoh Queue menggunakan  maksimal 5 data.
Operasi Queue
1. IsEmpty : Mengecek apakah Queue kosong atau tidak.
2. IsFull : Mengecek apakah Queue sudah penuh atau tidak.
3. EnQueue : Menabah data di Queue.
4. Dequeue : Mengambil data dari Queue.
5. Clear : Menghapus data dalam elemn.
6. View : Meliahat data dalam antrian.
·   IsEmpty
   IsEmpty digunakan untuk mengecek apakah Queue Kosong atau tidak. Indikator bahwa Queue kosong adalah nilai dari head dan tail adalah -1.

·   IsFull
   IsFull digunakan untuk mengecek apakah antrian sudah penuh atau tidak. Indicator kalau Queue penuh adalah nilai tail = max-1

·   Enqueue
   Enqueue digunakan untuk memasukkan data kedalam Queue. Sebelum memasukkan data ke dalam antrian , harus dipastikan apakah antrian penuh atau tidak. Kalau antrian tidak penuh maka dilakukan pengecekan apakah head sudah berada di nilai 0 atau belum.

·   Dequeue
   Dequeue digunakan untuk mengambil data yang sudah masuk di urutan pertama. Sehingga Tinggal membaca data yang ada di posisi head.cek apakah queue kosong atau tidak, jika ada isinya ,setelah data di ambil data dibelakangnya digeser ke depan.

·   Clear
   Clear digunakan untuk menghapus data di dalam queue. Caranay mengubah nilai pada head dan tail menjadi -1.

·    View
    View digunakan untuk melihat data yang didalam Queue. Caranya dengan mambaca data pada indeks yang terdapat diantara head sampai tail.

Deklarasi Queue dalam Bahasa C++

#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
#define n 10
int Q[n],L,R,x;
void awal()
{
    R=-1;L=0;
}

void insertkiri()
{
    cout<<"Inputkan data :";cin>>x;
    if (L>0)
    {
        L--;
        Q[L]=x;
    }
    else
        cout<<"Antrian penuh kiri";
}

void insertkanan()
{
    cout<<"Inputkan data :";cin>>x;
    if (R<n-1)
    {
        R++;
        Q[R]=x;
    }
    else
        cout<<"Antrian penuh kiri";
}

void deletekiri()
{
    if (L<R+1)
    {
        x=Q[L];
        L++;
        cout<<x;
    }
    else
        cout<<"Antrian kosong";
}

void deletekanan()
{
    if (L<R+1)
    {
        x=Q[R];
        R--;
        cout<<x;
    }
    else
        cout<<"Antrian kosong";
}


void main()
{
    int pilih;
    char jawab;
    awal();
    jawab='y';
    while ((jawab=='y')||(jawab=='Y'))
    {
     clrscr();
     cout<<"1.INSERT KIRI"<<endl;
     cout<<"2.INSERT KANAN"<<endl;
     cout<<"3.DELETE KIRI"<<endl;
     cout<<"4.DELETE KANAN"<<endl;
     cout<<"5.EXIT"<<endl;
     cout<<"Inputkan pilihan :";cin>>pilih;
     switch (pilih)
     {
        case 1:
            insertkiri();
            break;
        case 2:
            insertkanan();
            break;
        case 3:
            deletekiri();
            break;
        case 4:
            deletekanan();
            break;
        case 5:
            exit;
            break;
     }
     cout<<endl<<"Ulangi proses lagi ? [y/t]";
     cin>>jawab;
    }
}


SORTING
METODE PENGURUTAN (SHORTING)
Sorting adalah penyortiran atau memilih-milih. Pada struktur data Sorting adalah sebuah metode untuk pengurutan data, misalnya dari data yang terbesar ke data yang terkecil.
Dengan cara program yang dibuat harus dapat membandingkan antar data yang di inputkan.
Artinya jika ada deretan data, maka data yang pertama akan membandingkan dengan data yang kedua. Jika data yang pertama lebih besar dari pada data yang kedua maka data yang pertama akan bertukar posisi dengan data yang kedua,  begitu seterusnya sampai benar-benar data terurut dari yang terbesar hingga yang terkecil.

SELECTION SORT
Pengurutan seleksi (selection sort) mempunyai mekanisme mekanisme sebagai berikut :
Mula-mula  suatu petunjuk (diberi nama posAWAL), yang menunjuk ke lokasi awal pengurutan data, diatur agar berisi indeks dalam array. Selanjutnya dicari bilangan terkecil yang terletak antara posisi sesudah yang di tunjuk oleh penunjuk tersbut  sehingga elemen yang trakhir dalam array , lokasi bilangan ini ditunjukan oleh posMIN. lalu di tukarkan nilai bilangan terkecil tersebut dengan nilai yang ditunjuk oleh PosAWAL. proses seperti itu diulang dari posAWAL bernilai 0 hingga n-2
dengan menyertakan jumlah elemen dari array

INSERTION SORT
Insertion sort adalah sebuah metode pengurutan data dengan menempatkan setiap elemen data pada pisisinya dengan cara melakukan perbandingan dengan data – data yang ada.
Pengurutan dengan metode penyisipan (insertion sort) adalah suatu metode yang melakukan pengurutan dengan cara menyisipkan data yang belum urut ke dalam bagian data yang telah diurutkan.
konsep seperti ini biasa dilakukan pada permainan kartu. ketika sebuah kartu baru didapatkan (hasil pembagian pengocokan kartu) kartu akan disisipkan oleh pemain pada posisi yang tepat
sehingga penambahan kartu tersebut membuat semua kartu tetap terurut
Dalam pengurutan data, metode ini dipakai bertujuan untuk menjadikan bagian sisi kiri array terurutkan sampai dengan seluruh array diurutkan.


Deklarasi Insertion Sort dan Selection Sort dalam Bahasa C++

1.  #include<iostream.h>
2.  #include<conio.h>
3.  int data[10];
4.  int n;
5.   
6.  void tukar(int a, int b)
7.  {
8.          int t;
9.     t=data[b];
10.    data[b]=data[a];
11.    data[a]=t;
12. }
13.  
14. void selection_sort()
15. {
16.         int pos,i,j;
17.    for(i=0;i<n-1;i++)
18.    {
19.         pos=i;
20.       for(j=i+1;j<n;j++)
21.       {
22.         if(data[j]<data[pos])pos=j;
23.       }
24.       if(pos!=i)
25.       {
26.         tukar(pos,i);
27.       }
28.    }
29.    cout<<"selection sort selesai !"<<endl;
30.    cout<<"Data : "<<endl;
31.    for(int i=0;i<n;i++)
32.    {
33.         cout<<data[i]<<" ";
34.    }
35.    cout<<endl;
36. }
37.  
38.  
39. void insertion_sort()
40. {
41.         int temp,i,j;
42.    for(i=1;i<n;i++)
43.    {
44.         temp=data[i];
45.       j=i-1;
46.       while(data[j]>temp && j>=0)
47.    {
48.         data[j+1]=data[j];
49.       j--;
50.    }
51.         data[j+1]=temp;
52. }
53.         cout<<"Insertion short selesai ! "<<endl;
54.    cout<<"Data : "<<endl;
55.    for(int i=0;i<n;i++)
56.    {
57.         cout<<data[i]<<" ";
58.    }
59.  
60.    cout<<endl;
61. }
62.  
63.  
64. void input()
65. {
66.         cout<<"Masukkan jumlah data = ";
67.    cin>>n;
68.    for(int i=0;i<n;i++)
69.    {
70.         cout<<"Masukkan data ke - "<<(i+1)<<" = " ;
71.       cin>>data[i];
72.    }
73. }
74.  
75.  
76. void main()
77. {
78.         int pil;
79.    clrscr();
80.    do
81.    {
82.       clrscr();
83.         cout<<"1. Input Data"<<endl;
84.         cout<<"2. Selection Sort"<<endl;
85.       cout<<"3. Insertion Sort"<<endl;
86.         cout<<"4. Exit"<<endl;
87.       cout<<"Masukkan Pilihan anda = ";
88.       cin>>pil;
89.  
90.         switch(pil)
91.         {
92.         case 1: input();break;
93.         case 2: selection_sort();break;
94.          case 3: insertion_sort();break;
95.         }
96.         getch();
97.    }
98.    while(pil!=4);
99. }


SEARCHING
Searching adalah metode pencarian informasi . searching digunakan untuk pencarian informasi khusus dari table pada saat lokasi yang pasti dari informasi tersebut sebelumnya tidak di ketahui. Pencarian selalu dinyatakan dengan referensi pada adanya sekelompok data tersebut .

Ada dua Teknik searching yaitu sequential search dan binary search.

·  Sequential search
   Pencarian Sequential search pada dasarnya hanya melakukan pengulangan dari 1 samapai dengan jumlah data. Pada setiap perulangan dibandingkan data ke-I dengan data yang dicari.. apabiala sama berarti data telah ditemuakan, dan sebaliknya apabila samapai akhir pengulanagn tidak ada data yang sama berarti data tersebut tidak ada.
Prinsip sequential search, data yang dibandingkan satu persatu secara berurutan dengan data yang dicari.

Deklarasi Sequential search dalam Bahasa C++

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

void main()
{
//deklarasi variabel
int a[10],index[10], i,j,k;
//proses penginputan data
for(i=1;i<=10;i++)
{
cout<<"Data ke ["<<i<<"] = ";
cin>>a[i];
}
//memasukkan data yang akan dicari ke dalam K
cout<<endl;
cout<<"Masukkan data yang akan anda cari = ";
cin>>k;
cout<<endl;
//proses pencarian data
j=0;
for (i=1;i<=10;i++)
{
if(a[i]==k)
{
index[j]=i;
j++;
}
}
//jika data ditemukan dalam array
if (j>0)
{
cout<<"Data "<<k<<" yang dicari ada "<<j<<" buah"<<endl;
cout<<endl;
cout<<"Data tersebut terdapat dalam index ke : ";
for(i=0;i<j;i++)
{
cout<<"  "<<index[i];
}
cout<<endl;
cout<<endl;
}
//jika tidak ditemukan
else
{
cout<<"Data tidak ditemukan dalam array"<<endl;
}
getch();
}

·   Binary search
    Dalam binary search data yang ada harus sudah terurut. Apabila data belum terurut maka pencarian biner tidak dapat dilakukan.
Proses pencarian biner
1. Dari posisi awal = 1dan posisi akhir = n
2. Kemudian cari posisi data tengah dengan rumus . posisi tengah= (posisi awal + posisi akhir)div2
3. Kemudian data yang dicari di bandingkan dengan data tengah.
4. Jika sama maka data ditemukan dan proses selesai.
5. Jika lebih kecil maka proses dilakukan kembali tetapi posisi akhir dianggap sama dengan posisi tengah.
6. Jika lebih besar maka proses dilakuakn kembali tetapi posisi alwal dianggap sama dengan posisi tengah.
7. Ulangi langkah tersebut hingga data ditemukan atau tidak.
8. Pencarian data akan berakhir jika data ditemuakn pada posisi awal lebih beasr dari posisi akhir.

Deklarasi Binary search dalam Bahasa C++

 #include<iostream>

int main ()
{
 int n, angka[12], kiri, kanan, tengah, temp, key;
 bool ketemu = false;

 cout<<"inputkan jumlah data yang anda inginka : ";
 cin>>n;

 for(int i=0; i<n; i++)
 {
  cout<<"Angka ke - ["<<i<<"] : ";
  cin>>angka[i];
 }
 for (int i=0; i<n; i++)
 {
  for(int j=0; j< n-i-1; j++)
  {
   if(angka [j] > angka [j+1])
   {
    temp=angka[j];
    angka[j]=angka[j+1];
    angka[j+1]=temp;
   }
  }
 }
 cout<<"Data telah diurutkan : ";
 for(int i=0; i<n; i++)
 {
  cout<<angka[i]<<" ";
 }
 cout<<"\n angka yang dicari : ";
 cin>>key;

 kiri=0;
 kanan=n-1;

 while(kiri<=kanan)
 {
  tengah=(kiri + kanan)/2;
  if(key == angka[tengah])
  {
   ketemu=true;
   break;
  }
  else if (key < angka [tengah])
  {
   kanan = tengah -1;
  }
  else
  {
   kiri = tengah +1;
  }
 }
 if (ketemu == true)
  cout<<"Angka diketahui!";
 else
  cout<<"Angka tidak diketahui";
  return 0;
 }


DAFTAR PUSTAKA
Sumber :
Algoritma Pemograman Menggunakan C++
Visual Microsoft C++ 2010
10 Langkah belajar  logika dan algoritma, menggunakan bahasa C dan C++
Kumpulan lengkap syntax untuk programmer pemula menggunakan bahasa C++

0 komentar:

Posting Komentar