Minggu, 03 April 2016

Contoh Program stack dan algoritma


A. Dasar Teori 

Stack adalah sebuah kumpulan data dimana data yang diletakkan di atas data yang lain.
 Denang demikian stack adalah struktur data yang tersusun secara rapi dan elemen tarkhir yang disimpan dalam stack menjadi elemen yang pertama yang akan diambil. Untuk meletakkan elemen pada bagian atas dari stack melakukan perintah pist. Dan untuk memindahkan dari tempat yang atas melakukan perintah pop.
Untuk gambaran dari stack yaitu kita mempunya dua buah kotak yang kita tumpuk, sehingga kotak kedua tidak taroh ditas kotak pertama. Jika kemudian stack dua buh kotak kita tambah dengan kotak ketiga, maka akan membentuk sebuah elemen stack kotak yang terdiri dari beberapa kotak atau N kotak.

A.1 Reprensentasi Stack dengan Array
Dalam stack kita dapat menggukan array untuk menggukan stack,dengan anggapan bahwa banyaknya elemen max dari stack tidak melebuhi batas banyaknya elemen dalam array. Kalau kita menambahkan data terus menerus akan menaykibatkan overflow. Dengan demikian perlu data tambahan untuk menctat ujung stack, dengan keadaan seperti itu kita dapat menyajikan stack dengan tipe data struktur (struct) yang terdiri dari dua field. Field pertama bertipe array yang berguna untuk menyimpan elemen stack dan yang kedua bertipe interger untuk mencatat posisi ujung stack. Deklarasi stack sebagai berikut.
#define MAXSTACK 100
typedef int ItemType;
/* Definisi struktur stack */
typedef struct
{
int Item[MAXSTACK];
/* Array yang berisi data tumpukan
*/
int Count; /* menunjukkan indeks data paling atas dari
stack */
}Stack;


B. PROGRAM

Sources code program stack

 

Output program


C. Penjelasan program 

#include<stdio.h>
#include<string.h>
#include<conio.h>
#define MAX_toko 10
Program diatas menggukan 3 file heder diantaranya stdio.h yaitu header standar input output untuk menambahkan fungsi-fungsi printf(), scanf() dll dan header conio.h menpilkan hasil antarmukakepada pengguna fungsi-fungsi getch(),getche(),dll hedear string.h yaitu untuk melakukan manipulasi string fungsi-fungsi yang ditampilkan  strcpy() dll. Define MAX_toko 10 berfungsi mendefinisikan suatu konstanta yang nantinya akan digantikan oleh prosesor saat program di-compiler dan bernilai max 10  untuk banyaknya karakter.

typedef struct stack{
    int atas;
    char data[10][10];
};
Sintak diatas yaitu berfungsi untuk medefinisikan struk untuk int atas” yaitu array yang berisi data tumpukan. Dan char data [10][10] yaitu jumlah data yang tersimpan di var data maksimal jumlah setiap data 10
stack tumpuk;
void inisialisasi(){
    tumpuk.atas=-1;
}
Sintak diatas yaitu inisialisasi dari array dari isi atas” bernilai -1 dikarenkan array dimulai dari 0 yang berarti stack dalam keadaan kosong

int penuh(){
    if(tumpuk.atas ==MAX_toko-1)
        return 1;
    else
        return 0;
Sitak diatas berfungsi melakukan pengecekan apakah stack dalam kondisi penuh jadi memeriksa atas” apakah nilainya sama dengn MAX_toko jika bernilai  1 maka full.
int cek(){
    if(tumpuk.atas == -1)
        return 1;
    else
        return 0;
}

Sintak diatas berfungsi melakukan apakan stack dalam keadaan kosong jikan nilai return bernilai 1 makan stack dalam keadaan kosong dan sebaliknya.
void masukkan(char d[10]){
    tumpuk.atas++;
    strcpy(tumpuk.atas[tumpuk.atas],d);
}
Sintak diatas berfungsi untuk memasukkan elemen ketackdan dan elemen tersebut akan menjadi elemn teratas dari stack, nilai atas akan proses incrent setiap kali ada penambahan stack akan menambah satu asalkan stack masih belum penuh.


void ambil(){
    printf("Pengambilan Data =%d\n",tumpuk.data[tumpuk.atas]);
        tumpuk.atas--;
}
Sintak diatas untuk mengambil nilai teratas pada stack dengan mengases array atas dan menampilkan nilai yang akan diambil terlebih dahulu baru akan melakukan decrement sehinggan stack akan erkurang.
void hapus(){
    tumpuk.atas=-1;
}
Sintak diatas untuk menghapus jika nilai sama dengan 1
void tampildata(){
    for(int i=tumpuk.atas;i>=0;i--)
    {
        printf("%d.\t Dta : %s\n",i,tumpuk.data[i]);
    }
}
Sintak diatas digunkan untuk menampilkan elemen-elemen stack disini terdapat proses looping terhadap bilai array jikan ingin menampilkan elemen stack kita harus membaca elemen array dari indek yang paling atas dan setelah itu melakukan decrement terhadap nilai var i
void menu(){
    int pil;
    inisialisasi();
    char dt[10];

    do{
        printf("1. Input Data\n");
        printf("2. Pengambilan Data\n");
        printf("3. Menampilkan Data\n");
        printf("4. Penghapusan Data\n");
        printf("5. EXIT\n");
printf("MENU PILIH :");
scanf("%d",$pil);
Sitak diatas yaitu awal dari program itu sendiri, disini variabel pil dengan tipe data interger yang nantinya digunkan untuk menyimpan hasil dari masukkan data . Dan fungsi inisialisasi dan varibel dt  dengan jumbah max karakter 10 dengan tipr data char
Perintah printf sendiri digunkan untuk memberikan pilhan menu saat pengimputan data 




switch(pil)
{
case 1:if(penuh() !=1)
        {
            printf("Data=");
            scanf("%s",dt);
            masukkan(dt);
        }
    else
            printf("\n Data penuh\n");
    break;
case 2:if(cek() !=1)
            ambil();
    else
            printf("\n Data Kosong\n");
    break;
case 3:if(cek() !=1)
            tampildata();
    else
            printf("\n Data Ksong\n");

    break;
case 4:hapus();
        printf("\nSudah Kosong \n");
    break;
    }
Program tersebut melakukam switch dengan di simpan di varibel pil dan untuk case 1 fungsi penuh jikan nilai tersebut tidak sama dengan 1 makan akan mencetak data yang akan disimpan di var dt, jika tidak menampilkan data penuh untuk case yang 2,3 jika fungsi cek bernilai tidak sama nilai  makan menampilkan data kosong untuk case 4 untuk menghapus data dan memberikan pemberitahuan data sudah kosong.
getch();
    }
    while(pil !=5);
    getch();
}

Sintak diatas digukan untuk menjeda tau pause program sampai user menekan tombol enter atau sembarang program akan kebali ke perintah sebelunya 


D. Algoritma program Stack 

1. Start 
2. Pertama melakukan pemeriksaan apakah stack kosong atau penuh
3. Ketika akan melakukan proses push lakukan pemeriksaan pada tumpukan  apakah tumpukan penuh jika salah makan lakukan proses no.4 jika benar  lakukan proses no.7
4. Masukkan elemen dalam tumpukan tersebut 
5. Ketikan akan melakukan proses pop lakukan pemeriksaan terlebih dahulu  pada tumpukan  apakah tumpukan sudah kosong jika benar maka lakukan  proses no.6 jika salah lakukan no.7
6. Menghapus elemen yang yang ada paling atas
7. Tampilkan pemberitahuan apakah tumpukan sudah penuh atau kosong.

















 




contoh program stack || algoritma program stack || dasar teori stack || dasar teori program stack
Share:

1 komentar:

  1. mantap bang materinya sangat membantu, bisa saling tukar backlink gan, silakan agan bisa kunjungi blog saya , salam kenal :')

    BalasHapus