Kamis, 05 Juli 2012

Simulasi Stack Pada c++

Pada algoritma dan pemrograman (bahasa c) terutama struktur data kita akan mengenal suatu konsep penyusunan data/array/elemen struktur dengan cara penumpukan atau yang biasa disebut dengan stack. Apa sih yang dimaksud dengan stack/tumpukan ini? Silahkan baca post ini selengkapnya

Contoh nyatanya bisa kita lihat di kehidupan sehari-hari misalnya tumpukan piring. Seorang ibu rumah tangga yang akan mencuci piring meletakkan sebuah piring kemudian disusul dengan menumpuk piring yang ke 2 diatas piring pertama dan seterusnya hingga piring ke 5. Ketika piring akan diambil untuk dicuci maka tentu saja yang pertama kali diambil adalah piring yang ke 5 atau tumpukan teratas.

Sama halnya dengan data pada konsep stack di algoritma dan pemrograman. Stack (tumpukan) inilah yang menerapkan konsep yang kita kenal dengan LIFO (Last-In-First-Out) atau FCLS (First-Come-Last-Serve), artinya elemen struktur yang dimasukkan ke dalam rangkaian terakhir kali maka akan muncul pertama kali apabila ditampilkan/dikeluarkan.

Pada konsep Last-In-First-Out, yang terakhir masuk yang pertama kali keluar. Jika ada sebanyak NOEL elemen pada sebuah stack, maka elemen ke-NOEL merupakan elemen TOP.

Berikut ini adalah operator-operator atau nama method yang biasa digunakan dalam pemrograman algoritma stack.

- PUSH: penyisipan (Memasukkan elemen).
- POP: penghapusan (Mengeluarkan elemen puncak).
- IsEmpty: operator yang memeriksa apakah stack kosong.
- IsFull: operator yang memeriksa apakah stack penuh.
- Clear: operator untuk menghapus stack.

Berikut contoh program stack pada c++:

Listing code program 1:

#include "iostream.h"
#include "stdio.h"
#include "conio.h"
#define size 5

struct stack
  {
    int a[size];
    int top;
  };

typedef struct stack STACK;

void push(STACK *p,int value) /* PUSH OPERATION */
  {
    if(p->top==size-1)
      cout<<"Stack Penuh!";
    else
      p->a[++p->top]=value;
  }

int pop(STACK *p) /* POP OPERATION */
  {
    if (p->top==-1)
    {
     cout<<"Stack Kosong!";
     return -1;
    }
    else
     return p->a[p->top--];
  }

void display (STACK *p) /*DISPLAY OPERATION */
  {
    int i;
    if(p->top==-1)
     cout<<"\nStack Kosong!\n";
    else
     cout<<"\nIsi Stack Adalah: \n";
     for (i=p->top;i>=0; --i)
     cout<a[i]<<"\n"; 
  }

void main()
{
  STACK s ;
  int x,i;
  s.top=-1;
  char pil;
  do {
     clrscr();
     printf("1. Tambah\n");
     printf("2. Hapus satu per satu\n");
     printf("3. Lihat Data\n");
     printf("4. Hapus Data\n");
     printf("5. Berhenti\n");
     printf("Silahkan masukkan pilihan anda (1-5)...  ");
     pil=getche();

        if(pil!='1' && pil !='2' && pil !='3' && pil!='4' && pil!='5' )
             printf("\n\nAnda salah mengetikkan inputan...\n");
             else
             {
          if(pil=='1')
          {
             cout<<"\nMasukkan Element: ";cin>>x;
                  push (&s,x);
          }
             else
             {
          if(pil=='2')
          {
             x=pop(&s);
             if(x!=-1)
                cout<<"\nElement yang Dihapus: "<

           getch();
          }
             else
          {
          if(pil=='3')
          {
             display(&s);
             getch();
          }
             else
          {
          if(pil=='4')
          {
             if(s.top==-1)
             printf("\nStack Kosong!\n");
             else
             printf("\nStack Dihapus!\n");
             for (i=s.top;i>=0; --i)
             printf("Element Yang Dihapus adalah %d\n",pop(&s));
             s.top=-1;
             getch();
          }}}
          }}}
             while(pil!='5');
}


Output:



Listing code program 2:


#include "stdio.h"
#include "string.h"
#include "conio.h"
#define DATA_MAX 100
char  nip[DATA_MAX][5];
char  nama[DATA_MAX][31];
char  asal[DATA_MAX][16];
float   gaji[DATA_MAX];
int      urutan;
char  cariNIP[5];
void main()
{
     char pil, menu = 0;
     int i;
     urutan = -1;
     while ( menu != '5' )
     {
         puts( "1. Tambah data" );
         puts( "2. Edit data" );
         puts( "3. Hapus data" );
         puts( "4. Daftar" );
         puts( "5. Keluar" );
         printf( "\nPilihan: " ); scanf( "%c", &menu );
         fflush( stdin );
         switch ( menu ) {
          case '1': ++urutan;
                        puts( "Tambah data" );
                        printf( "NIP: " ); gets( nip[urutan] );
                        printf( "Nama: " ); gets( nama[urutan] );
                        printf( "Asal: " ); gets( asal[urutan] );
                        printf( "Gaji: " ); scanf( "%f", &gaji[urutan] );
                        fflush( stdin );
                        puts( "\nSelesai. Tekan sembarang tombol" );
                        getch();
                        break;
          case '2': puts( "Edit data" );
                        printf( "NIP: " ); gets( cariNIP );
                       for ( i = 0; i <= urutan; i++ )
                            if ( strcmp(cariNIP, nip[i]) == 0 ) {
                                puts( "Ketemu" );
                                printf( "Nama: " ); gets( nama[i] );
                                printf( "Asal: " ); gets( asal[i] );
                                printf( "Gaji: " ); scanf( "%f", &gaji[i] );
                                fflush( stdin );
                                puts( "\nSelesai. Tekan sembarang tombol" );
                                getch();
                        break;
                     }
                  break;
        case '3': puts( "Hapus data" );
                  printf( "NIP: " ); gets( cariNIP );
                   for ( i = 0; i <= urutan; i++ )
                     if ( strcmp(cariNIP, nip[i]) == 0 ) {
                        puts( "Ketemu" );
                        printf( "Nama: %s \nAsal: %s \nGaji: %f", nama[i], asal[i], gaji[i] );
                        printf( "\n\nHapus data (Y/T)? " );
                        pil = getche();
                        if ( pil == 'Y' || pil == 'y' ) {
                         for ( int j = i+1; j <= urutan; j++ ) {
                               strcpy( nip[j-1], nip[j] );
                               strcpy( nama[j-1], nama[j] );
                               strcpy( asal[j-1], asal[j] );
                               gaji[j-1] = gaji[j];
                           }
                           --urutan;
                        }
                        break;
                     }
                  break;
        case '4': puts( "Lihat data" );
                  i = 0;
                 while ( i <= urutan ) {
                      printf( "NIP: %s\n", nip[i] );
                      printf( "Nama: %s\n", nama[i] );
                      printf( "Asal: %s\n", asal[i] );
                      printf( "Gaji: %f\n\n", gaji[i++] );
                  }
                  puts( "Selesai. Tekan sembarang tombol" );
                  getch();
                  break;
       }
    }
}


Output:


Listing code program stack 3:


#include "iostream.h"
#include "conio.h"
#include "stdlib.h"

int top,i;
char key,temp,e;
char stack[10];
void delay();

void pushanim()
{
 for(i=0;i<=17; i++)
 {
gotoxy(22+i,7);cout<<" ";
gotoxy(23+i,7); cout< }
 for(i=1;i<=(14-top);i++)
{
 delay();
gotoxy(40,6+i); cout<<" ";
gotoxy(40,7+i); cout< }
}
void popanim(char temp)
{
for(i=1;i<=(14-top);i++)
 {
 delay();
gotoxy(40,22-i-top); cout<<" ";
gotoxy(40,21-i-top); cout< }
 for(i=1;i<=19;i++)
 {
 delay();
gotoxy(38+i,7); cout<<" ";
gotoxy(39+i,7); cout< }
 gotoxy(58,7);cout<<" ";
}
void push(char e)
{
 top=top+1;
 stack[top]=e;
 pushanim();
}
void pop(char e)
{
 if(top !=0)
 {
  e=stack[top]; popanim(e);
  top=top-1;
 }
 else
 {
gotoxy(1,7); cout<<"stack telah kosong"<gotoxy(1,7);
}
}
void main()
{
clrscr();
cout<<"Animasi Stack"<cout<<"1.Push"<cout<<"2.Pop"<cout<<"3.quit"<//cout<<"pilih [1/2/3] ="<gotoxy(59,6); cout<<"=";
gotoxy(59,8); cout<<"=";
gotoxy(37,9); cout<<"||   ||";
for(i=1;i<=11;i++)
 {
gotoxy(38,10+i);
if(i==11)
cout<<"|___|";
else
cout<<"|   |";
}
top=0;
do
{
input:
gotoxy(1,5);
cout<<"masukkan pilihan anda[1/2/3] : ";
key=getche();
if(int(key)==27 || key=='3')
break;
else if(key=='1')
{
if(top != 10)
{
gotoxy(1,7); cout<<"masukkan suatu huruf : ";
cin>>temp;
push(temp);
gotoxy(1,7); cout<<"                      ";
}
else
{
gotoxy(1,7); cout<<"stack penuh";
getch();
gotoxy(1,7); cout<<" ";
}
}
else if(key=='2')
pop(temp);
else
goto input;
}while(1);
getch();
}
void delay()
{
for(int y=1;y<100;y++)
for(int x=1;x<100;x++)
for(int p=1;p<100;p++)
cout<<"";
}


Output:


DataBase Dalam Visual Basic

A. Pengertian Visual Basic

Microsoft Visual Basic (sering disingkat sebagai VB saja) merupakan sebuah bahasa pemrograman yang menawarkan Integrated Development Environment (IDE) visual untuk membuat program perangkat lunak berbasis sistem operasi Microsoft Windows dengan menggunakan model pemrograman (COM), Visual Basic merupakan turunan bahasa pemrograman BASIC dan menawarkan pengembangan perangkat lunak komputer berbasis grafik dengan cepat, Beberapa bahasa skrip seperti Visual Basic for Applications (VBA) dan Visual Basic Scripting Edition (VBScript), mirip seperti halnya Visual Basic, tetapi cara kerjanya yang berbeda.[1] Para programmer dapat membangun aplikasi dengan menggunakan komponen-komponen yang disediakan oleh Microsoft Visual Basic Program-program yang ditulis dengan Visual Basic juga dapat menggunakan Windows API, tapi membutuhkan deklarasi fungsi luar tambahan.[1] Dalam pemrograman untuk bisnis, Visual Basic memiliki pangsa pasar yang sangat luas.[1]Dalam sebuah survey yang dilakukan pada tahun 2005, 62% pengembang perangkat lunak dilaporkan menggunakan berbagai bentuk Visual Basic, yang diikuti oleh C++, JavaScript, C#, dan Java.

B. Perkembangan Visual Basic

VB 1.0 dikenalkan pada tahun 1991, pendekatan yang dilakukan untuk menghubungkan bahasa pemrograman dengan GUI berasal dari prototype yang dikembang oleh “Alan Cooper” yang di sebut TRIPOD, Kemudian Microsoft mengontrak copper dan asosiasinya untuk mengembangkan tripod agar dapat digunakan di windows 3.0 di bawah nama kode Ruby. Berikut Perjalanan Visual Basic (VB 1.0 Sampai VB 10) : Perjalanan dari Visual Basic (VB1 to VB 10):

1. Proyek “Thunder” dirintis
2. Visual Basic 1.0 (May 1991) di rilis untuk windows pada COMDEX/Windows Wordltrade yg dipertunjukan di Atlanta , Georgia
3. Visual Basic 1.0 untuk DOS dirilis pada bulan September 1992. Bahasa ini tidak kompatibel dengan Visual Basic For Windows. VB 1.0 for DOS ini pada kenyataaanya merupakan versi kelanjutan dari compiler BASIC, QuickBasic dan BASIC Professional Development System.
4. Visual Basic 2.0 dirilis pada November 1992, Cakupan pemrogramannya cukup mudah untuk digunakan dan kecepatannya juga telah di modifikasi. Khususnya pada Form yg menjadikan object dapat dibuat secara seketika, serta konsep dasar dari Class modul yg berikutnya di implementasikan pada VB 4.
5. Visual Basic 3.0 , dirilis pada musim panas 1993 dan dibagi menjadi versi standard dan professional. VB 3 memasukan Versi 1.1 dari Microsoft Jet Database Engine yg dapat membaca serta menulis database Jet (atau access) 1.x
6. Visual Basic 4.0 (Agustus 1995) merupakan versi pertama yg dapat membuat windows program 32 bit sebaik versi 16 bit nya. VB 4 juga memperkenalkan kemampuan untuk menulis non-GUI class pada Visual Basic
7. Visual Basic 5.0 (February 1997), Microsoft merilis secara eksklusif Visual basic untuk versi windows 32 bit . Programmer yg menulis programnya pada versi 16 bit dapat dengan mudah melakukan import porgramnya dari VB4 ke VB5. dan juga sebaliknya, program VB5 dapat diimport menjadi VB4. VB 5 memperkenalakan kemampuan untuk membuat User Control.
8. Visual Basic 6.0 (pertengahan 1998) memperbaiki beberapa cakupan, temasuk kemapuannya untuk membuat Aplikasi Web-based . Visual Basic 6 di jadwalkan akan memasuki Microsoft “fasa non Supported” dimulai pada maret 2008.

1. Visual Basic .NET, dirilis pada tahun 2002, Beberapa yang mencoba pada versi pertama .NET ini mengemukakan bahwa bahasa ini sangat powerful tapi bahasa yg digunakan sangat berbeda dengan bahasa sebelumnya, dengan kekurangan diberbagai area, termasuk runtime-nya yang 10 kali lebih besar dari paket runtime VB6 serta peningkatan penggunan memory.
2. Visual Basic .NET 2003, dirilis dengan menggunakan NET framework versi 1.1.
3. Visual Basic 2005, merupakan itegrasi selanjutnya dari Visual Basic .NET. dan Microsoft memutuskan untuk menghilangkan kata kata .NET pada judulnya. Pada Rilis ini , Microsoft memasukan bebrapa fitur baru, diantaranya : Edit and Continue , mungkin inilah kekurangan fitur terbesar dari VB .NET. pada VB 2005 ini kita diperbolehkan melakukan perubahan kode pada saat program sedang dijalankan Perbaikan pada Konversi dari VB ke VB NET12 Visual Basic .NET 2003 (VB 7.1) , dirilis dengan menggunakan NET Kerangka kerja versi 1.1. IsNot Patent, merupakan salah satu fitur dari Visual Basic 2005 merupakan konversi If=Not X Is Y menjadi If X IsNot Y.
4. Visual Basic 2005 Express , merupakan bagian dari Product Visual Studio. Microsoft membuat Microsoft Visual Studio 2005 Express edition untuk pemula dan yang gemar dengan VB, salah satu produknya adalah Visual Basic 2005 Express yg merupakan produk gratis dari Microsoft.
5. Visual Basic “Orcas”, dijadwalkan akan dirilis pada tahun 2007 dan dibangung diatas .NET 3.5. Pada rilis ini , Microsoft menambahkan beberapa fitur , diantaranya : True Tenary operator , yaitu fungsi If(boolean,value, value) yg digunakan untuk menggantikan fungsi IIF, LINQ Support, Ekspresi Lambda, XML Literals, Nullable types, Type Inference
6. Visual Basic ‘VBx’, Visual Basic 10, yang juga dkenal dengan nama VBx, akan menawarkan dukungan untuk Dynamic Language Runtime. VB 10 direncanakan akan menjadi bagian da 15. an dari SilverLight 1.1

C. Pengertian Database

Database adalah kumpulan beberapa data yang saling berhubungan
berdasarkan kode-kode tertentu sehingga membentuk sebuah sistem.
Secara hirarki database bisa digambarkan sebagai berikut :


Character sebagai satuan data terkecil dikumpulkan menjadi field (kolom),
kumpulan field membentuk sebuah record (baris), beberapa record disimpan dalam file
(tabel), dan kumpulan file akan membentuk sebuah database. Ada beberapa tipe field yang digunakan dalam pembuatan tabel pada database
Visual Basic 6.0 :


ADO Data Control Akses Database Melalui Propertis Objek ADO

A. Mempersiapkan Database

Dalam membuat database kita bisa menggunakan berbagai macam komponen yang terdapat dalam toolbox pada visual basic. Tapi kali ini, saya akan post membuat database dengan menggunakan Adoc Control. Untuk itu buatlah terlebih dahulu file database access dengan nama file Inventori.mdb. Dalam database tersebut buatlah sebuah table dengan nama Pelanggan, dengan struktur data sebagai berikut :


Setelah itu, isilah table tersebut dengan beberapa record saja.

B. Membuat user interface akses database

1. Pilih menu Add-ins, dan pilih visual menager. Maka akan muncul jendela VisData.


2. Pilih menu file, new, Microsoft access lalu pilih Versio 7.0 MDB
3. Pada kotak dialog Select Microsoft Access Database to Create, tentukan folder dan nama database yang ingin disimpan (simpan dengan nama file Inventori). Buat folder tersebut berekstensi .mdb. Lalu pilih save, dan akan muncul kotak dialog seperti berikut:


4. Klik kanan pada properties, lalu pilih new table. dan akan muncul jendela seperti berikut:


5. Ketikan nama tabel dengan nama Data_Pemesanan_Tiket pada table name.
6. Lalu pilih add field.
7. Tambahkan beberapa add field ke dalam jendela add field, sehingga terlihat seperti berikut:


8. Setelah semua add field selesai ditambahkan, plih close.
9. Pada jendela Dynaset:Data_Pemesanan_Tiket, pilih add untuk menambahkan data, dan pilih update untuk menyimpan data.
10. Dalam project tersebut buat form baru (simpan dengan nama file frmPelanggan).
11. Tambahkan objek tool Adodc control dengan memilih menu Project, Components, lalu pilih Microsoft ADO Data Control 6.0 (OLEDB), lalu klik ok.
12. Buatlah objek-objek seperti terlihat pada gambar berikut (beri nama objek sesuai keterangan gambar):


5. Tentukan properties lain tiap objek di atas seperti berikut :


Untuk properti pada objek Adodc1, ubah nilai properti ConnectionString dengan cara berikut :






6. Klik tombol OK, lalu klik OK lagi. Setelah itu ubah properti RecordSource (untuk menentukan nama tabel/query/sql statement sebagai sumber data yang akan diakses) seperti petunjuk gambar berikut :


7. Kemudian tuliskan kode program di bawah ini pada tiap event objek berikut :

Pada Event Adodc1_MoveComplete ketiklah perintah berikut :

Private Sub Adodc1_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)
DataPelanggan.Caption = "Record ke : " & DataPelanggan.Recordset.AbsolutePosition
End Sub

Private Sub Combo1_Change()
If Combo1.Text = "Laki-laki" Then
txtJk = -1
Else
txtJk = 0
End If
End Sub

Private Sub Command1_Click()
DataPelanggan.Recordset.AddNew
Command1.Enabled = False
Command2.Enabled = False
Command3.Enabled = True
Command4.Enabled = True
Command5.Enabled = True
Command6.Enabled = True
End Sub

Private Sub Command2_Click()
Command1.Enabled = False
Command2.Enabled = False
Command3.Enabled = True
Command4.Enabled = True
Command5.Enabled = True
Command6.Enabled = True
End Sub

Private Sub Command3_Click()
DataPelanggan.Recordset.Update
Command1.Enabled = True
Command2.Enabled = True
Command3.Enabled = False
Command4.Enabled = False
Command5.Enabled = False
Command6.Enabled = False
End Sub

Private Sub Command4_Click()
DataPelanggan.Recordset.CancelUpdate
Command1.Enabled = True
Command2.Enabled = True
Command3.Enabled = False
Command4.Enabled = False
Command5.Enabled = False
Command6.Enabled = False
End Sub

Private Sub Command5_Click()
jwb = MsgBox("Yakin mau dihapus ", vbQuestion + vbYesNo, "Hapus Data")
If jwb = vbYes Then
DataPelanggan.Recordset.Delete
End If
End Sub

Private Sub Command6_Click()
Unload Me
End Sub 8.

Jika selesai simpan form dan project Anda, kemudian lihat hasil database dengan menggunakan database adoc control: