Halaman

Halaman

Minggu, 13 Mei 2018

Stack


Stack dapat diartikan sebagai tumpukan dari benda atau data yang seolah-olah diletakkan di atas data yang lain dimana data yang pertama kali masuk akan terakhir. Secara sederhana sebuah stack bisa digambarkan sebagai tumpukan buku yang disimpan dengan cara ditumpuk keatas. Dimana buku yang pertama kali disimpan atau ditumpuk ada di paling bawah dan yang selanjutnya ditumpuk diatasnya. Dan ketika kita melakukan pengambilan buku ototmatis buku yang terkahir ditumpuk atau disimpan terakhir akan mejadi yang pertama diambil, istilah ini kemudian disebut FILO (First In Last Out) dan bertambah atau berkurangnya data melalui satu ujung yang sama yaitu ujung atas tumpukan (Top of Stack). 


Ada 2 operasi 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.
Selain operasi dasar stack (push dan pop), ada lagi operasi lain yang dapat terjadi dalam stack yaitu : 
  1. Proses deklarasi yaitu proses pendeklarasian stack.
  2. Proses inisialisasi yaitu proses pembuatan stack kosong, biasanya dengan pemberian nilai untuk top.
  3. Proses cek kosong yaitu proses pemeriksaan apakah stack dalam keadaan kosong.
  4. Proses cek penuh yaitu proses pemeriksaan apakah stack telah penuh.


Operasi-operasi stack secara lengkap adalah sebagai berikut : 
Pendeklarasian stack dengan array 
Proses pendeklarasian stack adalah proses pembuatan struktur stack dalam memori. Karena stack dapat direpresentasikan dalam 2 cara, maka pendeklarasian stack pun ada 2 yaitu: 
Suatu stack memiliki beberapa bagian yaitu 

  1. top yang menunjuk posisi data terakhir (top)
  2. elemen yang berisi data yang ada dalam stack. Bagian ini lah yang berbentuk array. Deklarasi stack dengan array:

struct stack 
int elemen[10]; //elemen int top; 
}; 
Inisialisasi 
Inisialisasi stack adalah proses pembuatan suatu stack kosong. 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 maka top diisi dengan nilai -1. 
p->top=-1 
Operasi Cek Kosong Stack 
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. Operasi ini dilakukan hanya dengan memeriksa field top. Jika top top bernilai -1, maka berarti stack dalam keadaan empty (kosong). 
if (p->top==-1) 
cout<<"STACK kosong";
return -1; 
Operasi Cek Penuh 
Operasi ini berguna untuk memeriksa keadaan stack apakah sudah penuh atau belum. Operasi ini akan memberikan nilai true (1) jika field top sama dengan size-1. 
if(p->top==size-1)
cout<<"STACK penuh "; 
Operasi Push
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 :

  • Periksa apakah stack penuh. Jika tidak penuh maka proses push dilaksanakan dan jika 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. if(p->top==size-1)
    cout<<"STACK penuh ";
    else
    p->elemen[++p->top]=value;

Operasi Pop
Operasi ini berguna untuk mengambil elemen terakhir (top) dan kemudian menghapus elemen tersebut sehingga posisi top akan berpindah. Langkah operasi pop pada stack yang menggunakan array adalah terlebih dahulu memeriksa apakah stack sedang keadaan kosong, jika tidak kosong maka data diambil pada posisi yang ditunjuk oleh posisi top, kemudian posisi top – 1. 
if (p->top==-1)
{
   cout<<"STACK kosong";
   return -1;
}
else
    return p->elemen[p->top--]; 
Program Lengkap: 

#include<iostream.h>
#include<stdio.h>
#define size 50
#include<conio.h> struct stack {
typedef struct stack STACK;
int elemen[size]; int top; }; // operasi push
cout<<"STACK penuh ";
void push(STACK *p,int value){ if(p->top==size-1) else
if (p->top==-1)
p->elemen[++p->top]=value; } //operasi pop int pop(STACK *p) { {
//menampilkan stack
cout<<"STACK kosong"; return -1; } else return p->elemen[p->top--]; }
cout<<"\nIsi STACK adalah : \n";
void display (STACK *p) { int i; if(p->top==-1) cout<<"\n STACK kosong\n"; else
s.top=-1;
for (i=p->top;i>=0; --i) cout<<p->elemen[i]<<"\n"; } void main() { STACK s ; int x,c,i; do {
cout<<"3: Tampilkan Stack\n";
cout<<"MENU PILIHAN"; cout<<"\n1: Operasi PUSH\n"; cout<<"2: Operasi POP\n"; cout<<"4: Hapus Stasck\n";
case 1: cout<<"\nMasukkan Elemen Stack: ";cin>>x;
cout<<"5: Keluar\n"; cout<<"\n\n Pilihan anda : ";cin>>c; switch(c) { push (&s,x); display(&s);
break;
break; case 2: x=pop(&s); if(x!=-1) cout<<"\nMenghapus Element = "<<x; break; case 3: display(&s); case 4:
for (i=s.top;i>=0; --i)
if(s.top==-1) cout<<endl<<"STACK kosong"; else cout<<endl<<"STACK dihapus"<<endl; //Menghapus STACK
}
cout<<"Elemen yang dihapus adalah : "<<pop(&s)<<endl; s.top=-1; } getch(); clrscr(); }
while(c!=5);
CONTOH PROGRAM
a. Source Code Program
#include<iostream> #include<stdlib.h> #include<cstring> #include<windows.h> #define max 20 using namespace std; struct tong { int top; char tmp[20][max]; } tong; void push (char sampah[20]); void pop(); void awal(); int isEmpty(); int isFull(); int main() { int pilih; char sampah[20]; string i; awal(); do { system("cls"); cout<<"\n\t--------- Program Stack --------\n"; cout<<"\n\t----- Tumpukan Tong Sampah -----\n\n"; cout<<" 1. PUSH(Simpan)"<<endl; cout<<" 2. POP(Ambil)"<<endl; cout<<" 3. EXIT(Keluar)"<<endl; cout<<"___________________________________________________________________\n\n"; if (!isEmpty()) { for(int i = tong.top; i>=0; i--) { cout<<"["<<tong.tmp[i]<<"]"<<endl; } } else { cout<<"[ tong sampah kosong ]"; } cout<<"\nMasukan Pilihan : "; cin>>pilih; switch (pilih) { case 1: cout<<"Buang sampah : "; cin>>sampah; push(sampah); break; case 2: pop (); break; case 3: cout<<"Tekan enter untuk keluar : "; break; default: cout<<"ERROR!"; break; } } while (pilih!=3); } void push (char sampah[20]) { if (!isFull()) { tong.top = tong.top+1; strcpy(tong.tmp[tong.top],sampah); } else cout<<"isi tong sampah penuh"; } void pop () { if (!isEmpty()) { tong.top--; cout<<"Sampah pada tumpukan ke- "<<tong.top+2<<"sudah diambil"; } else cout<<"Sampah dalam tong kosong"; } void awal() { tong.top = -1; } int isEmpty() { if (tong.top==-1) return 1; else return 0; } int isFull() { if (tong.top == max-1) return 1; else return 0; }
b. Output Program

Struck

Struct atau record adalah kumpulan data yang memiliki tipe data yang berbeda. Secara pendeklarasian, struct sangat berbeda dengan array yang hanya memiliki satu buah tipe data untuk setiap kumpulannya. Struct digunakan apabila data yang ingin dikelompokkan memiliki tipe data yang berbeda. Pendeklarasian struct sebagai berikut:
stuct data_mahasiswa
{

   long int nim;
   char nama[100];
   char fakultas[100];
};

data_mahasiswa mahasiswa1, mahasiswa2;
Deklarasi di atas merupakan suatu tipe data yang bernama data_mahasiswa di mana setiap data yang akan dideklarasikan menggunakan tipe data data_mahasiswa akan mempunyai field nim, nama, dan fakultas. Untuk dapat menggunakan tipe data tersebut sebuah variabel harus dideklarasikan menggunakan nama struct nya. Bentuk umum pendeklarasian variabel struct nya adalah sebagai berikut:
struct data_mahasiswa mahasiswa1, mahasiswa2;
Deklarasi dua variabel di atas ada dua variabel bernama Mahasiswa1 dan Mahasiswa2 setiap variabel tersebut mempunyai field sesuai dengan data_mahasiswa.
Selain dekalrasi variabel ada hal yang harus diperhatikan yaitu cara untuk mengisi dan memanggil nilai yang ada di dalam sebuah struct, yaitu sebagai berikut:
//Untuk mengisi nilai struct
cin>>mahasiswa1.nim;

//Untuk memanggil nilai struct
cout<<mahasiswa1.nim<<endl;
CONTOH PROGRAM
a. Source Code Program
#include<iostream>
using namespace std;
main()
{
 struct Mahasiswa
 {
   int Nim;
   char Nama[30];
   char Almt[50];
   char Kelas[6];
   };

 Mahasiswa Mhs;
 cout<<"Program Data Mahasiswa "<<endl;
 cout<<"\nMasukan Data Anda "<<endl;
 cout<<"Masukan NPM    \t: ";cin>>Mhs.Nim;
 cout<<endl<<"Masukan Kelas \t: ";cin>>Mhs.Kelas;
 cout<<endl<<"Masukan Nama   \t: ";cin>>Mhs.Nama;
 cout<<endl<<"Masukan Alamat \t: ";cin>>Mhs.Almt;

 cout<<endl<<endl<<"Data Anda"<<endl;
 cout<<"NPM    \t: "<<Mhs.Nim<<endl;
 cout<<"KELAS \t: "<<Mhs.Kelas<<endl;
 cout<<"NAMA   \t: "<<Mhs.Nama<<endl;
 cout<<"ALAMAT \t: "<<Mhs.Almt<<endl;
return 0;
}

b. Output Program


Looping Dalam C


Pada Bahasa C terdapat 3 buah struktur loop. Pernyataan yang dipakai berupa while,do-while, dan for. Berhubungan dengan penanganan loop ada beberapa pernyataan lain yang berfungsi untuk keluar dari loop yaitu break, goto, dan continue.

do-while
Tahapan Proses :
Mula-mula pernyataan dijalankan dulu, kemudian kondisi di uji, jika kondisi bernilai benar, maka pernyataan dijalankan lagi dan jika kondisi bernilai salah maka prnyataan tidak dijalankan lagi (berhenti)

While
Tahapan proses :
Dari awal langsung dilakukan tes kondisi jika kondisi bernilai benar maka menjalankan pernyataan dan jika kondisi bernilai salah maka keluar dari loop. Jadi pada perulangan menggunakan while memungkinkan sebuah pernyataan tidak dijalankan sama sekali.
Yang membedakan antara perulangan menggunakan do-while dan while, biasanya adalah pada pernyataan while harus diberikan terlebih dahulu inisialisasi terhadap variabel yang akan dijadikan sebagai kondisi dari while.

Pernyataan for
Tahapan proses :
Pernyataan akan dijalankan mulai dari nilai awal (ungkapan1) dan keluar dari
50
 loop jika sudah sesuai dengan nilai akhir (ungkapan2).
Sintaks :
For (ungkapan1; ungkapan2; ungkapan3)
Pernyataan
Ø  Ungkapan1® digunakan untuk memberikan inialisasi terhadap variabel pengendali loop.
Ø  Ungkapan2® digunakan sebagai kondisi untuk keluar dari loop.
Ø  Ungkapan3® digunakan sebagai pengatur kenaikan nilai variabel pengendali loop.

Dasar Teori

 Pernyataan for
            Mengulang suatu proses merupakan tindakan yang banyak dijumpai dalam pemrograman. Pada semua bahasa pemrograman, pengulangan proses ditangani dengan suatu mekanisme yang disebut loop. Dengan menggunakan loop, suatu proses yang berulang misalnya menampilkan tulisan yang sama seratus kali pada layar dapat diimpelementasikan dengan kode program yang pendek.
            Pernyataan pertama yang digunakan untuk keperluan pengulangan proses adalah pernyataan for. Bentuk pernyataan ini :
for (ungkapan1; ungkapan2; ungkapan3) pernyataan;

Kegunaan dari masing-masing ungkapan pada pernyataan for.
·         Ungkapan1  :    digunakan untuk memberikan inisialisasi terhadap variabel pengendali loop.
·         Ungkapan2  :    dipakai sebagai kondisi untuk keluar dari loop.
·         Ungkapan3  :    dipakai sebagai pengatur kenaikan nilai variabel pengendaliloop.
Ketiga ungkapan dalam for tersebut harus dipisahkan dengan tanda titik koma (;).  Dalam hal ini pernyatan bisa berupa pernyataan tunggal berbentuk jamak, maka pernyataan-pernyataan tersebut harus diletakkan di antara kurung kurawal buka ({)
51
dan kurung kurawal tutup (}), sehingga formatnya menjadi :
for (ungkapan1; ungkapan2; ungkapan3)
{
   pernyataan;
   pernyataan;

}

Pernyataan while
Pada pernyataan while, pengecekan terhadap loop dilakukan di bagian awal (sebelum tubuh loop).  Lebih jelasnya, bentuk pernyataan while adalah sebagai berikut :
while (kondisi)
pernyataan;

dengan pernyataan dapat berupa pernyataan tunggal, pernyataan majemuk ataupun pernyataan kosong. 

Pernyataan do-while
Bentuk pernyataan do-while
do
pernyataan;
while (kondisi)

Pada pernyataan do-while, tubuh loop berupa pernyataan,dengan pernyataan bisa berupa pernyataan tunggal, pernyataan majemuk ataupun pernyataan kosong. Pada pernyataan do, mula-mula pernyataan dijalankan. Selanjutnya, kondisi diuji.Sendainya kondisi bernilai benar, maka pernyataan dijalankan lagi, kemudian kondisi diperiksa kembali, dan seterusnya.Kalau kondisi bernilai salah pada saat dites, maka pernyataan tidak dijalankan lagi.

CONTOH PROGRAM
1. While
a.  Source Code Program :
#include<stdio.h>
#include<conio.h>
main()
{
int hitung1,hitung2;
hitung1=0;
while (hitung1<6)
{
printf("nilai hitung %d\n",hitung1);
hitung1=hitung1+1;
}
hitung2=6;
while(hitung2<15)
{
printf("nilai hitung %d\n",hitung2);
hitung2=hitung2+1;
}
gets(0);return (0);
}

b. Output Program

2.  Do While
a. Source Code Program
#include <iostream>
using namespace std;
int main(){
     int deret;
     cout<<"\t== Program Deret Angka (Do-While) ==\n\n";
     cout<<"Banyak deret Angka yang akan ditampilkan : ";
     cin>>deret;
     cout<<endl;
     do{
          cout<<deret<<"  ";

          // Menurunkan nilai variabel deret
          // deret-- ==> deret=deret-1
          deret--;
     }while(deret>0);

     cout<<"\n\n== Deret Selesai Ditampilkan ==\n";

     return 0;
}

b. Output Program

3. For
a. Source Code Program
#include <iostream>
using namespace std;

void output();

int main()
{
    int a,b;
    b=5;
    
    for(a=1; a<=b; a++)
    {
        cout << a <<". Perulangan For";
        if(a%2==0)
        {
            cout<<"   Kukoh Santoso";
        }
        cout <<endl;
    }

}

b. Output Program




Sabtu, 12 Mei 2018

Pengantar bahasa C

Bahasa C merupakan bahasa pemrograman prosedural yang menandai kemunculan bahasa pemrograman modern yang lain. Dari sejarah penciptaannya, bahasa C secara natural merupakan bahasa yang dekat dengan bahasa mesin, karena Bahasa C pada awalnya diciptakan untuk keperluan pemrograman sistem operasi yang kemudian dikenal degan nama Unix

Karena C lahir dari keperluan tersebut maka secara natural bahasa C memiliki sifat berikut:
  1. portabel
  2. Sangat dekat dengan kode mesin
  3. Akses langsung ke memori
  4. Machine-independent

Karena karakter tersebut bahasa C dapat ditemukan pada banyak sistem dan bahkan menjadi bahasa pilihan untuk pengembangan sistem operasi.

Beberapa langkah dalam proses pembuatan suatu program atau software adalah :

1. Mendefinisikan masalah dan menganalisanya


Langkah awal yang harus dilakukan adalah mengidentifikasikan masalah antara lain tujuan dari pembuatan program, parameter-parameter yang digunakan, fasilitas apa saja yang akan disediakan oleh program. Kemudian menentukan metode atau algoritma apa yang akan diterapkan untuk menyelesaikan masalah tersebut dan terakhir menentukan bahasa program yang digunakan untuk pembuatan program.


2. Merealisasikan dengan langkah-langkah berikut :



Algoritma


Algoritma adalah urutan langkah-langkah logika yang menyatakan suatu tugas dalam menyelesaikan suatu masalah atau problem. Contoh : Buat algoritma untuk menentukan apakah suatu bilangan merupakan bilangan ganjil atau bilangan genap. Algoritmanya :

  1. Masukkan sebuah bilangan sembarang
  2. Bagi bilangan tersebut dengan bilangan 
  3. Hitung sisa hasil bagi pada langkah 
  4. Bila sisa hasil bagi sama dengan 0 maka bilangan itu adalah bilangan genap tetapi bila sisa hasil bagi sama dengan 1 maka bilangan itu adalah bilangan ganjil.

Sekilas Tentang Bahasa C dan C++

Bahasa pemrograman yang dapat dikatagorikan menjadi tiga level bahasa, yaitu ;
  • Bahasa tingkat tinggi
  • Bahasa tingkat menengah
  • Bahasa tingkat rendah

Semakin tinggi level bahasa pemrograman maka semakin mudah untuk dipelajari karena dekat dengan bahasa manusia. Sebaliknya semakin rendah bahasa pemrograman maka semakin sulit untuk dipelajari karena semakin dekat dengan bahasa mesin. Bahasa tingkat rendah sebagai contoh adalah assembly.

Bahasa C dibuat oleh Brian W. Kernighan dan Dennis M. Ritchie. Bahasa C merupakan bahasa intermediate yaitu bahasa tingkat menengah dan tidak dikatakan bahasa tingkat tinggi dimana para programmer diberikan aturan main dalam penulisan sintak yang dapat dimengerti oleh manusia. Akan tetapi bahasa C juga dapat dikatagorikan sebagai bahasa tingkat rendah karena disediakan sintak untuk Asembly yang termasuk dalam bahsa tingkat rendah yang digunakan sebagai bahasa mesin.
Bahasa C menyediakan beberapa komponen yang dapat digunakan programmer untuk mengimplementasikan kode-kodenya dengan mudah. Adapaun komponen dari bahasa C adalah sebagai berikut ;

  1. Editor
  2. Interpreter
  3. Compiler
  4. Debugging

Berlanjut ke C++ yaitu bahasa C telah dikembangkan dan tak lepas dari bahasa C yang sebagai nenek moyangnya. C++ diciptakan satu decade dengan C. Diciptakan oleh Bjarne Stroustrup pada tahun 1983. Bahasa ini sama dengan bahasa C. hanya saja pada C++ mendukung pemrograman yang berorientasi objek (OOP-Object Oriented Programing)

Semua bahasa mempunyai kelemahan atau kelebihan sendiri-sendiri. Begitu juga dengan bahasa C dan C++. Adapun kelebihannya adalah sebagai berikut:

  • Banyak memiliki operator untuk mengolah/memanipulasi data.
  • Bahasa C termasuk sebagai bahasa terstruktur sehingga program dapat lebih mudah dipahami atau dikembangkan.
  • Kecepatan eksekusi tinggi.
Dan beberapa kelemahannya adalah sebagai berikut:
  • Banyaknya operator atau cara penulisan program kadang menimbulkan kebingungan para pemakainya.
  • Perlu adanya ketelitian dalam penulisan program karena C dan C++ bersifat Case Sensitive (Membedakan antara huruf kapital dan huruf kecil).
  • Editor
Editor adalah sebuah fasilitas yang disediakan oleh bahasa C dan C++ untuk menuliskan kode yang telah didesain oleh programmer. Editor yang disediakan pada umumnya sama dengan yang disediakan oleh perangkat lunak lainnya yang menangani file TEXT. Akan tetapi untuk beberapa editor terbaru model TEXT ini dapat dibedakan antara keyword, variabel, dan sebagainya.
  • Interpreter
Kebanyakan perangkat lunak bahasa pemrograman menyediakan fasilitas Interpreter. Demikian juga dengan bahasa C. Interpreter digunakan untuk membaca kode yang telah ditulis oleh programmer untuk diterjemahkan oleh Interpreter C dan C++. Sehingga sekumpulan kode yang telah ditulis dapat berjalan sesuai dengan sintaks yang telah ditentukan oleh bahasa C dan C++.
  • Compiler
Tidak semua perangkat lunak bahasa pemrograman menyediakan fasilitas Compiler. Tetapi untuk bahasa C dan C++, fasilitas ini disediakan. Compiler digunakan untuk mentranslator sekumpulan kode yang telah ditulis sesuai dengan sintak yang ditentukan oleh bahasa C ke bentuk yang lain. Dalam hal ini diubah ke dalam bentuk bahasa Assembly sehingga selanjutnya akan menghasilkan suatu file execute (.exe). di mana file tersebut dapat berdiri sendiri tanpa memerlukan perangkat lunak lainnya.
  • Debugging
Bahasa C dan C++ menyediakan fasilitas debugging yang dapat digunakan untuk menelusuri setiap kode yang telah ditulis. Sehingga programmer dapat mengetahui perubahan dan pengaruh serta kesalahan setiap kode per baris yang telah ditulis. Fasilitas debug yang disediakan antara lain:
  1. Debug per baris.
  2. Debug per prosedur/fungsi.
  3. Debug per breakpoint.

  • Software
Ada beberapa software yang dapat digunakan untuk membuat program dengan bahasa C dan C++, antara lain:
  • Turbo C++
  • Borland C++
  • Dev-C++
  • GCC.
Untuk software nomor 1 sampai 3 digunakan pada sistem operasi windows sedangkan untuk software nomor 4 digunakan di sistem operasi Linux.