Kamis, 12 Maret 2015

Pengaplikasian Struktur Data Pada Berbagai Bidang

Hai kawan! Untuk yang kesekian kali, jari - jemariku 'dipaksa' kembali untuk menari dipanggung keyboard laptopku. Pada postingan ini, saya akan menuliskan artikel (yang sebenarnya adalah tugas perkuliahan) tentang pengaplikasian Struktur Data pada berbagai macam bidang. Tetapi sebelum membahasnya, kalian harus tahu apa itu Struktur Data.

Struktur Data adalah cara penyimpanan data di dalam komputer agar dapat dipakai secara efisien. Sedangkan data adalah representasi dari fakta dunia nyata. Fakta atau keterangan tentang kenyataan yang disimpan, direkam atau direpresentasikan dalam bentuk tulisan, suara, gambar, sinyal, atau simbol. Struktur Data yang biasanya digunakan di bidang informatika adalah sebagai berikut:
  • Struktur Data sederhana, contohnya Array dan Record
  • Struktur Data majemuk yang terdiri dari : Stack dan Queue(Linier), Pohon biner dan Graph (Non- Linier).
Sedangkan untuk contoh pengaplikasiannya, saya hanya memberikan contoh pada Struktur Data majemuk yang linier.
 
 
Stack
 
Merupakan sebuah kumpulan data dimana hanya data yang baru dimasukan yang dapat diakses. Stack dikenal dengan istilah "Last-In, First-Out" (LIFO). Contohnya adalah saat pengemasan roti tawar. Dimana potongan roti yang pertama dimasukan ke dalam kemasan akan menempati bagian paling bawah pada kemasan, sedangkan potongan roti yang dimasukan terakhir akan menempati bagian paling atas pada kemasan roti. Kemudian setelah roti sampai pada konsumen, maka konsumen akan membuka dan memakan roti pertama yang terakhir tadi dimasukan.

Bungkusan roti tawar (dengan merek disensor)
 
Contoh lainnya adalah Menara Hanoi. Apa itu Menara Hanoi?. Apakah sebuah menara yang berada di ibukota Negara Vietnam?.  Tentu saja bukan kawan!. Menara Hanoi adalah sebuah permainan teka-teki menjengkelkan yang mungkin saja bisa membuat kalian menjadi gila... XD. Permainan yang terdiri dari tiga buah tiang dan beberapa cakram yang berbeda - beda bentuk ini tujuannya adalah memindahkan seluruh tumpukan ke tiang lain dengan mengikuti aturan sebagai berikut:
  •   Hanya satu cakram yang boleh dipindahkan dalam satu waktu.
  •  Setiap perpindahan berupa pengambilan cakram teratas dari satu tiang dan  memasukkannya ke tiang lain, di atas cakram lain yang mungkin sudah ada di tiang  tersebut.
  •  Tidak boleh meletakkan cakram di atas cakram lain yang lebih kecil.

  • Permainan 'Menara Hanoi'

Queue

Atau juga bisa disebut dengan antrian adalah sebuah kumpulan data dimana hanya data yang terakhir yang dimasukan yang bisa diakses. Queue dikenal dengan istilah” First-In, First-Out”. Contohnya adalah antrian kertas yang akan di salin menggunakan mesin penyalin (photo copy). Dimana kertas yang pertama kali di pindai/scan akan pertama keluar.

Mesin penyalin (Photo Copy)
Contoh lainnya adalah berbagai macam jenis antrian: antrian membeli tiket, antrian membeli sembako, antrian mengambil zakat, dll. Contoh yang lainnya lagi yang lebih ‘serius’ adalah saat kalian memutar sebuah playlist musik secara urut pada aplikasi pemutar musik (contoh: winamp, iTunes, Windows Media Player, dll).

Antrian pembeli tiket
contoh aplikasi pemutar musik


Oke, cukup sampai disini pertunjukan penari jari ini berakhir. Semoga bermanfaat!   ^_^

Sumber: bisikan akal, mbah google, wikipedia.

Ditulis oleh: M. Fakhrul Amin      (06.2014.1.06429)
                    Moch. Ipnu Fajar H.     (06.2014.1.06372)

Minggu, 26 Oktober 2014

Kendali Program C++

Setelah sekian lama jari - jemariku tak 'menari' unuk menulis di blog ini. Akhirnya saya kembali lagi untuk menulis artikel dengan sangat terpaksa karena tugas di kampus. -_- Jadi ceritanya, sang bapak dosen yang masih muda itu memberi sebuah tugas untuk merangkum materi pada mata kuliah 'Pemograman Terstruktur' yang materinya tentang bahasa pemograman C++. Dimana si mahasiswa boleh memilih materi yang akan dirangkum dari beberapa referensi dan kemudian ditulis pada blog milik mahasiswa masing - masing.

Oke deh, berkaitan dengan hal tersebut saya akan membahas tentang materi 'Kendali Program pada C++'. Sebuah program tentunya tidak terbatas pada instruksi terurut saja. Namun juga memiliki beberapa keputusan yang akan bermuara untuk melanjutkan bagaimana sebuah program nantinya akan berjalan. Atau ketika kita bermain game dan kemudian kita kalah, maka kita akan diberi kesempatan untuk mengulangi kembali permainan pada game tersebut atau tidak. Begitulah contoh dari kendali program.

Dalam hal - hal tersebut disebut dengan proses terjadinya percabangan, pengulangan, dan pemberi keputusan pada sebuah program. Untuk memenuhi kebutuhan tersebut C++ memiliki pernyataan - pernyataan yang dapat mengatasi kebutuhan tersebut. Berikut berbagai bentuk pernyataan tersebut:

1. FOR
Pernyataan FOR digunakan untuk melakukan perulangan pada sebuah operasi dengan cara melakukan pemeriksaan terlebih dahulu sebuah proses yang akan dijalankan.


Bentuk umum dari pernyataan FOR :

for (ekpresi1;ekpresi2;ekpresi3)
       Pernyataan;

Dimana:
  • Ekspresi 1 dipakai untuk inisialisasi dari variabel yang dipakai untuk mengontrol ulangan eksekusi dari blok pernyataan yang ada di dalam pernyataan FOR ---> nilai awal dari pengulangan.
  • Ekspresi 2 dipakai untuk menyatakan suatu kondisi, eksekusi dari blok pernyataan yang ada di dalam pernyataan for akan diulang bila kondisi menghasilkan nilai true.
  • Ekspresi 3 dipakai untuk menambah/mengurangi nilai variabel yang dipakai untu mengontrol eksekusi dari blok pernyataan yang ada di dalam pernyataan FOR.
Berikut contoh penulisan kode dar pernyataan FOR:

#include <stdio.h>
#include <conio.h>
#include <iostream.h>
main()
{
     int nilai;
     clrscr();
     for(nilai=1;nilai<=10;nilai++)
     cout<<nilai;
     getch();
}

Nantinya hasil Output script diatas berupa keluaran angka 1-10 secara berurutan :
1 2 3 4 5 6 7 8 9 10

Pada beberapa program tertentu, kadang diperlukan suatu proses yang berulang dan di dalam perulangan tersebut juga harus dilakukan proses pengulangan. Pernyataan ini disebut 'NESTED FOR' atau FOR dalam FOR. Berikut Bentuk umum dari NESTED FOR:

for(kondisi 1)
     {
      for(Kondisi 2)
        {
          Pernyataan;
       }
    }

Berikut contoh penulisan kode menggunakan NESTED FOR:

//Program Sederhana Dengan Nested FOR
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
main()
{
     int x, y;
     clrscr();
     for(x=1;x<=10;x++)
          {
          printf("\n");
          for(y=x;y<=10;y++)
          cout<<x<<" ";
         }
     getch();
}

Dan ini adalah hasil dari kode program di atas ketika kita melakukan eksekusi:

1 1 1 1 1 1 1 1 1 1
2 2 2 2 2 2 2 2 2
3 3 3 3 3 3 3 3
4 4 4 4 4 4 4
5 5 5 5 5 5
6 6 6 6 6
7 7 7 7
8 8 8
9 9
10

2. WHILE

Pernyataan WHILE digunakan untuk mengulang eksekusi dari suatu blok pernyataan yang jumlah
ulangannya tergantung dari kondisi yang diberikan, sejauh kondisi true.


Maka ulangan eksekusi dari blok tersebut terus dilakukan. Bentuk umum dari pernyataan WHILE adalah sebagai berikut:


while(ekspresi)
{
pernyataan;
}
  • ekspresi merupakan ekspresi logika untuk menentukan kapan berhentinya perulangan.
  • pernyataan  merupakan hasil yang akan di tampilkan di layar, jika atau selama ekspresi masih memenuhi.
Berikut adalah contoh penulisan kode dari pernyataan WHILE:

#include<iostream>

using namespace std;

int main()

{

        
       int n;
     cout <<"Berikan bilangan awal : ";
     cin>> n;

     while(n>0)
     {
       cout<<n<<" ,";
       n--;
     }
     cout<<" selesai";
     endl (cout);

     system("pause");
     return 0;
}

Dan gambar di bawah ini adalah hasil dari kode program di atas ketika kita melakukan eksekusi:


Pebedaan dai perulangan WHILE dengan perulangan FOR adalah perulangan while harus berhati - hati karena nilai awal dan nilai pengulangan harus didefinisikan sendiri dan tempat nilai awal dan nilai pengulangan tidak bersifat tetap dan bisa berbeda-beda setiap program.

3. DO - WHILE
Pernyataan DO - WHILE digunakan untuk mengulang eksekusi dari suatu blok pernyataan yang jumlah ulangannya tergantung dari kondisi yang diberikan sejauh kondisi true.



Maka ulangan eksekusi dari blok tersebut terus dilakukan. Bentuk umum dari pernyataan DO - WHILE adalah sebagai berikut :

do
{
pernyataan;
}
while(ekspresi);
  • do akan di eksekusi sekali terlebih dahulu dan menjalankan pernyataan yang ada di dalamnya
  • pernyataan merupakan suatu hasil yang akan di tampilkan di layar, jika atau selama ekspresi masih memenuhi.
  • while(ekspresi) merupakan bentuk kondisi dari perulangan. Pada bagian ini lah compiler akan membandingkan kondisi. Jika kondisi masih bernilai true, maka kembali ke do dan laksanakan pernyataan, kemudian di bandingkan lagi ke while(ekspresi), jika kondisi bernilai false, maka perulangan berhenti dan lanjut ke proses berikutnya.
Berikut adalah contoh penulisan kode dari pernyataan DO - WHILE :
#include<iostream>
using namespace std;
main(unsigned long x)
{
       do
     {
     std::cout << "Berikan bilangan (0 untuk akhiri) : ";
     std::cin >> x;
     std::cout << "Bilangan yang anda berikan : "<<x;
     endl (std::cout);
     }
     while(x!=0);
     system("pause");
     return 0;
}
Dan gambar di bawah ini adalah hasil dari kode program di atas ketika kita melakukan eksekusi:
Perbedaan perulangan WHILE dengan Perulangan DO - WHILE adalah pada perulangan WHILE, syarat dilihat terlebih dahulu kemudian mengerjakan pernyataan. Sedangkan pada perulangan DO - WHILE pernyataan dikerjakan terlebih dahulu kemudian melihat syaratnya.
3. IF
Pernyataan IF digunakan untuk menentukan jalannya sebuah program ketika menemui dua pernyataan. Jika kondisi sesuai dengan syarat yang di tentukan, maka program akan menjalankan pernyataan yang pertama. Namun apabila kondisi tidak sesuai dengan syarat yang ditentukan, maka program akan menjalankan pernyataan yang kedua. Pernyataan IF memiliki beberapa bentuk yaitu:
  1. if
  2. if .. else
  3. if .. else if (if bertingkat)
Berikut bentuk umumnya:
Berikut adalah contoh penulisan kode dari pernyataan IF:

#include<iostream>
using namespace std;
int main()
{
      int a, b;
     
      cout << "Berikan Bilangan Pertama : ";
      cin >> a;
      cout << "Berikan Bilangan Kedua : ";
      cin >> b;
      
      if(a>b && a%2 == 0 && b%2 == 0)
      {
      cout <<a<<" lebih besar dari  "<<b<<" dan "<<a<<","
      cout <<b<<" adalah bilangan bulat"<<endl;
      }
      if(a>b && a%2 != 0 && b%2 != 0){
      cout <<a<<" lebih besar dari  "<<b<<" dan "<<a<<","
      <<b<<" adalah bilangan ganjil"<<endl;
      }
      else if(a>b && a%2 == 0 && b%2 != 0){
      cout <<a<<" lebih besar dari  "<<b<<" dan "<<a<<"
      bilangan genap, "<<b<<" bilangan ganjil"<<endl;
      }
      else if(a>b && a%2 != 0 && b%2 == 0){
      cout <<a<<" lebih besar dari  "<<b<<" dan "
      <<a<<" bilangan ganjil, "<<b<<" bilangan genap"<<endl;
      }
      
      else if(a<b && a%2 == 0 && b%2 == 0){
      cout <<a<<" lebih kecil dari  "<<b<<" dan "<<a<<", "
      <<b<<" adalah bilangan genap"<<endl;
      }
      if(a<b && a%2 != 0 && b%2 != 0){
      cout <<a<<" lebih kecil dari  "<<b<<" dan "<<a<<","
      <<b<<" adalah bilangan ganjil"<<endl;
      }
      else if(a<b && a%2 == 0 && b%2 != 0){
      cout <<a<<" lebih kecil dari  "<<b<<" dan "<<a<<"
      bilangan genap, "<<b<<" bilangan ganjil"<<endl;
      }
      else if(a<b && a%2 != 0 && b%2 == 0){
      cout <<a<<" lebih kecil dari  "<<b<<" dan "<<a<<"
      bilangan ganjil, "<<b<<" bilangan genap"<<endl;
      }
      else if(a==b){
      cout <<a<<" bernilai sama dengan "<<b<<endl;
      }
      else
      {
            cout<<endl;
        }
      system("pause");
      return 0;
}
Dan gambar di bawah ini adalah hasil dari kode program di atas ketika kita melakukan eksekusi:
                   
 4. SWITCH - CASE

Bentuk dari SWITCH - CASE merupakan pernyataan yang dirancang khusus untuk menangani pengambilan keputusan yang melibatkan sejumlah atau banyak alternatif penyelesaian. Pernyataan SWITCH - CASE ini memiliki kegunaan sama seperti IF - ELSE bertingkat, tetapi penggunaannya untuk memeriksa data yang bertipe karakter atau integer. Bentuk umumya sebagai berikut:
       
    switch (ekspresi)
{
  case (konstanta_1) :
     statement;
     break;
  case (konstanta_n) :
     statement;
     break;
  default :
     statement;
}
  • Ekspresi di eksekusi sekali.
  • Nilai dari ekspresi di bandingkan dengan nilai pada setiap struktur case.
  • Break digunakan untuk mencegah pengeksekusian ke case berikutnya.
  • Default digunakan apabila nilai dari ekspresi tidak ada yang sama dengan nilai diantara struktur case yang tersedia.
 Berikut adalah contoh penulisan kode dari pernyataan SWITCH - CASE:
#include<iostream>
using namespace std;
int main()
{
     int angka;
     cout << "Berikan Angka : ";
     cin >> angka;
     cout<<"\n";
     switch(angka)
     {
     case 1 :
            cout <<"Bulan Januari"<<endl;
            break;
     case 2 :
            cout <<"Bulan Februari"<<endl;
            break;
     case 3 :
            cout <<"Bulan Maret"<<endl;
            break;
     case 4 :
            cout <<"Bulan April"<<endl;
            break;
     case 5 :
            cout <<"Bulan Mei"<<endl;
            break;
     case 6 :
            cout <<"Bulan Juni"<<endl;
            break;
     case 7 :
            cout <<"Bulan Juli"<<endl;
            break;
     case 8 :
            cout <<"Bulan Agustus"<<endl;
            break;
     case 9 :
            cout <<"Bulan September"<<endl;
            break;
     case 10 :
            cout <<"Bulan Oktober"<<endl;
            break;
     case 11 :
            cout <<"Bulan November"<<endl;
            break;
     case 12 :
            cout <<"Bulan Desember"<<endl;
            break;
     default :
            cout <<"Angka tidak sesuai"<<endl;
    }
    cout <<endl;
    system("pause");
    return 0;
}
Dan gambar di bawah ini adalah hasil dari kode program di atas ketika kita melakukan eksekusi:
5. BREAK
Pernyataan BREAK berfungsi untuk keluar dari struktur perulangan (loop). Jika pernyataan BREAK
dikerjakan, maka eksekusi akan dilanjutkan ke pernyataan yang terletak sesudah akhir dari badan 
perulangan (loop). BREAK juga dapat digunakan untuk mengakhiri infinite loop, atau untuk
menyebabkan loop selesai sebelum saatnya. Contoh:
  1. // contoh perulangan break
  2. #include <iostream.h>
  3. int main ()
  4. {
  5.   int nil;
  6.   for (nil=7; nil>0; nil--) {
  7.     cout << nil << ", ";
  8.     if (nil==3)
  9.     {
  10.       cout << " break.";
  11.       break;
  12.     }
  13.   }
  14.   return 0;
  15. }
Dan inilah hasil dari kode program diatas saat kita melakukan eksekusi:
7, 6, 5, 4, 3, break.
6. CONTNUE
Pernyataan CONTNUE digunakan untuk mangarahkan eksekusi ke iterasi (proses) berikutnya pada 
loop yang sama. dengan kata lain mengembalikan proses yang sedang dilaksanakan ke-awal loop 
lagi, tanpa menjalankan sisa perintah dalam loop tersebut. Contoh:
  1. // contoh perulangan continue
  2. #include <iostream.h>
  3. int main ()
  4. {
  5.   for (int nilai=10; nilai>0; nilai--) {
  6.     if (n==5)
  7.     continue;
  8.     cout << nilai << ", ";
  9.   }
  10.   cout << "PROGRAM C++";
  11.   return 0;
  12. }
Dan inilah hasil dari kode program diatas saat kita melakukan eksekusi:
10, 9, 8, 7, 6, 4, 3, 2, 1, PROGRAM  C++
Itulah beberapa pernyataan tentang kendali program yang biasa digunakan pada bahasa pemograman 
C++. Semoga bermanfaat!