jam

Wednesday, 29 April 2015

Stack atau Tumpukan



STACK (TUMPUKAN)
           Stack (tumpukan) sebenarnya secara mudah dapat diartikan sebagai list (urutan) dimana penambahan dan pengambilan elemen hanya dilakukan pada satu sisi yang disebut top (puncak) dari stack.
            Stack berlaku aturan LIFO (Last In First Out), yaitu elemen yang terakhir masuk akan pertama kali diambil atau dilayani.
            Salah satu analogi:
https://gugunawan.files.wordpress.com/2013/12/sda-8.jpg
Ilustrasi tumpukan piring. Pada saat kita hendak menumpuk piring-piring tersebut tentulah yang kita lakukan adalah meletakkan piring pertama pada tempatnya, selanjutnya meletakkan piring kedua di atas piring pertama dan demikian seterusnya. Pada saat kita hendak mengambil satu piring dari tumpukan tersebut, tentu yang diambil adalah piring teratas (yang terakhir kali ditaruh), bukan yang terbawah (yang pertama kali diletakkan).
Dua operasi dasar pada stack:
             1.     PUSH (operasi pemasukan elemen ke dalam stack),
             2.     POP (operasi pengambilan satu elemen dari dalam stack).
Di bawah ini diberikan contoh pemakaian operasi PUSH dan POP dan isi stack untuk setiap selesai eksekusi satu operasi.
(Untuk mempermudah penulisan, di bawah ini isi stack tidak dituliskan secara bertumpuk, tetapi dengan kesepakatan:
  • elemen paling kanan adalah elemen yang ada pada TOS (Top Of the Stack)
  • stack yang dipakai bernama S
  • PUSH(S,B) berarti memasukkan elemen B ke dalam stack S
  • POP(B,S) berarti mengambil elemen dari stack S dan menaruhnya ke dalam variabel B
Operasi yang dilakukan
Isi Stack
Keterangan
Kondisi Awal
kosong
-
PUSH('A',S)
A
-
PUSH('B',S)
AB
-
PUSH('C',S)
ABC
-
POP(Data,S)
AB
Variabel Data berisi 'C'
PUSH('D',S)
ABD
-
POP(Data,S)
AB
Data berisi 'D'
POP(Data,S)
A
Data berisi 'B'


LINIER LIST

         Daftar linear atau linear list, merupakan suatu struktur data umum yang terbentuk dari barisan hingga (yang terurut) dari satuan data ataupun dari record. Untuk mudahnya, elemen yang terdapat di dalam daftar disebut dengan simpul atau node. Daftar disebut linear (lurus), karena elemen tampak seperti berbaris, yakni bahwa setiap simpul, kecuali yang pertama dan yang terakhir, selalu memiliki sebuah elemen penerus langsung (suksesor langsung) dan sebuah elemen pendahulu langsung (predesesor langsung).

        Di sini, banyak simpul atau elemen, tersebut dapat berubah-ubah, berbeda dengan array yang banyak elemennya selalu tetap. Kita menyatakan linear list A yang mengandung T elemen pada suatu saat, sebagai A = [A1, A2, …AT]. Jika T = 0, maka A disebut list hampa atau null list.

          Suatu elemen dapat dihilangkan atau dihapus (deletion) dari sembarang posisi dalam linear list, dan suatu elemen baru dapat pula dimasukkan (insertion) sebagai anggota list pada posisi sembarang (di mana saja).

          File, merupakan salah satu contoh dari daftar linear yang elemen-elemennya berupa record. Selain file, contoh lain dari daftar linear adalah stack atau tumpukan, queue atau antrean, dan daftar berkait atau linear linked list atau one- way list.

OPERASI PADA STACK

        Terdapat empat operasi pada stack, yakni CREATE (stack), ISEMPTY(stack), PUSH(elemen, stack), dan POP (stack). CREATE(S) adalah operator yang menyebabkan stack S menjadi satu stack hampa. Jadi NOEL(CREATE(S)) adalah 0, dan TOP(CREATE(S)) tak terdefinisi.

        Sedangkan operator ISEMPTY(S) bermaksud memeriksa apakah stack S hampa atau tidak. Operandnya adalah data bertipe stack, sedangkan hasilnya merupakan data bertipe boolean. ISEMPTY(S) adalah true, jika S hampa, yakni bila NOEL(S) = 0, dan false dalam hal lain. Jelas bahwa ISEMPTY(CREATE(S)) adalah true.

        Operator PUSH (E,S) akan bekerja menambahkan elemen E pada stack S. E ditempatkan sebagai TOP(S). Operator POP(S) merupakan operator yang bekerja mengeluarkan elemen TOP(S) dari dalam stack. POP(S) akan mengurangi nilai NOEL(S) dengan 1. Suatu kesalahan akan terjadi apabila, kita mencoba melakukan POP(S) terhadap stack S yang hampa.

         Kesalahan overflow akan terjadi jika kita melakukan operasi pemasukan data (PUSH) pada stack yang sudah penuh (dalam hal ini jika banyaknya elemen yang kita masukkan ke dalam sebuah stack sudah melampaui batas kemampuan memori atau telah didefinisikan sebelumnya). Sebaliknya, kesalahan underflow akan terjadi jika stack sudah dalam keadaan hampa, kita lakukan operasi pengeluaran atau penghapusan (POP).



DEKLARASI STACK


           Meskipun stack amat luas digunakan, banyak bahasa pemrograman tidak mempu-nyai tipe data stack secara built-in. Dalam hal ini, Pemrogram harus memanipulasi sendiri fasilitas yang dimiliki bahasa pemrograman tersebut, untuk dapat melakukan operasi stack terhadap variabel stack.

       Mungkin cara yang paling sederhana adalah membentuk stack dalam bentuk se-macam array. Jelas kita harus membedakan suatu stack dengan suatu array yang sesungguhnya. Pemrogram harus memaksakan berlakunya aturan LIFO bagi stack. Selain itu juga, penempatan stack dalam bentuk array mengakibatkan suatu keterbatasan, yakni bahwa elemen stack harus homogen. Keterbatasan lain yang timbul adalah keharusan Pemrogram untuk menentukan batas atas dari subscript array , walaupun stack secara teori tidak memiliki batas maksimum dalam jumlah elemen. Jika diinginkan, seharusnya kita dapat membuat stack yang panjangnya tak hingga.

Satu hal yang nyata membedakan stack dengan array adalah banyaknya elemen stack yang dapat bertambah atau berkurang setiap waktu, sementara banyaknya elemen sebuah array selalu tetap.


APLIKASI STACK

    Stack sangat luas pemakaiannya dalam menyelesaikan berbagai macam problema. Kompilator, sistem operasi, dan berbagai program aplikasi banyak menggunakan konsep stack tersebut. Salah satu contoh adalah problema Penjodohan Tanda Kurung atau matching parantheses.

Sebuah kompilator mempunyai tugas, salah satu di antaranya adalah menyelidiki apakah Pemrogram telah dengan cermat mengikuti aturan tata bahasa, atau sintaks dari bahasa pemrograman yang bersangkutan. Misalnya untuk parantheses kiri (tanda kurung buka) yang diberikan, harus dipastikan adanya parantheses kanan (tanda kurung tutup) yang bersangkutan.

Stack dapat digunakan dalam prosedur matching yang digunakan. Algoritmanya sederhana, kita amati barisan elemen dari kiri ke kanan. Bila kita bertemu dengan suatu parantheses kiri, maka parantheses kiri tersebut kita PUSH ke dalam sebuah stack. Selanjutnya bila kita bertemu dengan suatu parantheses kanan, kita periksa stack, apakah hampa atau tidak. Kalau stack hampa, berarti terdapat parantheses kanan tanpa adanya parantheses kiri. Suatu kesalahan, atau error, apabila stack tidak hampa, berarti tidak diperoleh sepasang parantheses kiri, dan kanan, kita POP elemen ke luar stack.

 

Wednesday, 31 December 2014

KOMPONEN DARI SISTEM PADA PT. SETIAJAYA MOBILINDO CIBUBUR

NamaKelompok:
1.      Aliza Indriani Pratiwi (40212652)
2.      Endah Dahlia (42212490)
3.      Linati Zindriasih (44212216)
4.      Rismawati (46212475)
5.      Steffy Apriyanti (48212089)

KOMPONEN DARI SISTEM PADA PT. SETIAJAYA MOBILINDO CIBUBUR

Ada beberapa elemen yang membentuk sebuah sistem, yaitu : tujuan, masukan, proses, keluaran, batas, mekanisme pengendalian dan umpan balik serta lingkungan. Berikut penjelasan mengenai elemen-elemen yang membentuk sebuah sistem pada PT. Setiajaya Mobilindo Cibubur :
1.      Tujuan

Pada PT. Setiajaya Mobilindo Cibubur terdapat tujuan dari sebuah sistem yaitu penjualan kredit mobil yang bekerjasama dengan pihak lising.
2.      Masukan
Masukan (input) sistem adalah segala sesuatu yang masuk ke dalam sistem dan selanjutnya menjadi bahan untuk diproses. Berikut contoh inputan dari PT. Setiajaya Mobilindo Cibubur:


3.      Proses
Proses merupakan bagian yang melakukan perubahan atau transformasi dari masukan menjadi keluaran yang berguna dan lebih bernilai. Adapun jaringan prosedur penjualan kredit mobil dengan menggunakan software SAP pada PT. Setiajaya Mobilindo Cibubur adalah sebagai berikut :
            Tampilan cover software SAP pada PT. Setiajaya Mobilindo Cibubur

 Pada tampilan awal software SAP PT.Setiajaya Mobilndo Cibubur, ada beberapa moduls yaitu Administration, Sales A/R, Purchasing A/P, Business Partners, Banking, Inventory seperti ditunjukkan oleh gambar di bawah ini.

Lalu, pilih sales-A/R---->Sales Quotation, digunakan untuk menginput data pelanggan baru yang melakukan pembelian mobil secara tunai maupun kredit yang dilakukan oleh Sales Counter dan isikan datanya seperti gambar di bawah.

Masih pada tampilan software Sales – A/R ----> Sales Order, untuk proses pembuatan SPK dan perhitungan nilai penjualan baik harga kendaraan, discount maupun PO (Purchase Order) yang dilakukan oleh bagian gudang (pengiriman). 

 
 Masih pada tampilan software  Sales – A/R ---> Delivery yaitu Pengalokasian kendaraan yang akan dikirim pada pelanggan setelah melalui proses Sales Order, proses ini masih dilakukan oleh bagian gudang (pengiriman).
 Masih pada tampilan software Sales – A/R ---> A/R Invoice alur yang melanjutkan dari proses   delivery untuk pencatatan penjualan baik penjualan tunai maupun kredit apabila penjualan kredit ada dua tahap penginputan A/R  Invoice penginputan  yang dilakukan oleh bagian penjualan, seperti yang ditunjunkkan gambar di bawah ini.
  •  Tahap Satu


  •  Tahap Dua


4.      Keluaran
Keluaran (output) merupakan hasil dari pemrosesan. Pada sistem informasi, keluaran bisa berupa suatu informasi, saran, cetakan laporan, dan sebagainya.
Adapun keluaran di PT. Setiajaya Mobilindo Cibubur adalah informasi bahwa barang tersebut sudah dapat dikirim dengan dikeluarkannya bukti serah terima barang dari pihak lising.
5.      Batas
Batas (boundary) sistem adalah pemisah antara sistem dan daerah di luar sistem (lingkungan). Adapun pertumbuhan pada PT. Setiajaya Mobilindo Cibubur dipengaruhi oleh pembelian konsumen, gerakan pesaing dan keterbatasan dana dari pihak leasing. Tentu saja batas sebuah sistem dapat dikurangi atau dimodifikasi sehingga akan mengubah perilaku sistem. Sebagai contoh dengan memperbanyak kerjasama dengan pihak leasing, maka sebuah perusahaan dapat mengurangi keterbasaan dana.
6.      Mekanisme pengendalian dan umpan balik
Umpan balik ini digunakan untuk mengendalikan baik masukan maupun proses. Tujuannya adalah untuk mengatur agar sistem berjalan sesuai dengan tujuan. Dengan adanya pengendalian sistem internal yang baik pada PT. Setiajaya Mobilindo Cibubur maka akan meningkatkan kinerja perusahaan agar mencapai tujuan perusahaan yaitu memperoleh omset yang tinggi dan memberikan kepuasan kepada konsumen.
7.      Lingkungan
Lingkungan adalah segala sesuatu yang berada di luar sistem. Lingkungan bisa berpengaruh terhadap operasi sistem dalam arti bisa merugikan atau menguntungkan sistem itu sendiri.
Lingkungan yang berada di luar sistem dari PT. Setiajaya Mobilindo Cibubur adalah konsumen sebagai item  terhadap sistem yang dapat menguntungkan bagi pihak perusahaan dan kelangsungan kinerja perusahaan misalnya konsumen merasa puas dengan pelayanan perusahaan. Tetapi apabila konsumen merasa tidak puas akan menimbulkan pencintraan tidak baik bagi perusahaan dan ini dapat merugikan bagi perusahaan.