Selasa, 24 Januari 2017

Stack

Stack

Secara bahasa, stack berarti tumpukan. Jika dikaitkan dengan struktur data, stack berarti sekumpulan data yang strukturnya menyerupai tumpukan. Stack harus diberi nama sebagai identifikasi. Konsep penyimpanan data pada stack menganut sistem "yang terakhir masuk sebagai yang pertama keluar" (Last In First Out / LIFO). Dengan konsep ini, urutan pengambilan data akan berkebalikan dengan urutan penyimpanan data. Elemen yang terakhir disimpan akan menjadi yang pertama kali diambil. Dengan konsep ini maka kita tidak dapat mengambil data yang tersimpan dalam stack secara acak. Data dalam stack harus disimpan dan diambil dari satu sisi atau satu pintu saja. Contoh dalam kehidupan sehari-hari adalah tumpukan piring di sebuah restoran yang tumpukannya dapat ditambah pada bagian paling atas dan jika mengambilnya pun dari bagian paling atas pula.

Cara mengakses stack adalah dengan melakukan operasi dasar pada stack yaitu operasi push dan pop. Dimisalkan pintu keluar masuknya data pada stack disebut dengan TOP sebagaimana dilihat pada Gambar 3.8. Operasi push adalah proses memasukkan data baru ke stack melalui pintu TOP sehingga data terbaru akan terletak pada posisi teratas. Operasi pop adalah proses mengeluarkan atau mengambil data dari stack dan data yang diambil adalah data yang terletak di posisi teratas. Dengan konsep LIFO maka ketika operasi
push dilakukan maka informasi yang diperlukan hanyalah isi atau nilai atau elemen yang akan disimpan atau diambil saja. Operasi push dan pop tidak memerlukan informasi posisi data. Sebagai ilustrasi, stack dapat dilihat seperti pada Gambar 3.8, tampak bahwa stack tersebut bernama S.


Bagian Top pada stack merupakan pintu untuk keluar masuknya data – data stack. A, B, dan C merupakan suatu koleksi. Dari ilustrasi dapat diketahui bahwa C merupakan data yang terakhir memasuki stack namun pertama keluar dari stack. Begitu sebaliknya dengan A, A merupakan data pertama yang memasuki tumpukan namun terakhir saat keluar dari tumpukan. Di dalam gambar juga terlihat urutan masuk dan keluar yang berkebalikan. Data yang masuk pertama akan keluar terakhir dan sebaliknya.

Array

Array

Array adalah suatu alokasi beberapa tempat di memori yang tersimpan secara berurutan yang digunakan untuk menyimpan beberapa nilai dengan tipe data yang homogen. Ukuran atau jumlah elemen maksimum array telah diketahui dari awal yaitu ketika array dibuat. Sekali ukuran array ditentukan maka tidak dapat diubah. Ukuran array adalah bilangan bulat positif. Array harus diberi nama sebagai identifikasi. Cara mengaksesnya adalah dengan menyebutkan nama array dan indeksnya. Indeks array dimulai dari 0 sampai dengan n-1 (n adalah ukuran array). Ilustrasi array dapat dilihat pada Gambar 3.4.


Operasi terhadap elemen array dilakukan dengan pengaksesan langsung. Artinya nilai di masing-masing posisi elemen dapat diambil dan nilai dapat disimpan tanpa melewati posisi-posisi lain. Dua operasi paling dasar terhadap satu elemen array adalah penyimpanan nilai elemen ke posisi tertentu di array dan pengambilan nilai elemen dari posisi tertentu di array. Biasanya bahasa pemrograman menyediakan sintaks tertentu untuk penyimpanan dan pengambilan nilai elemen pada posisi tertentu di array. Contohnya
·  NilaiMhs[7] =80, berarti menyimpan nilai 80 ke posisi ke-7 dari array NilaiMhs.
· Nama = Mahasiswa[20], berarti mengambil nilai elemen posisi ke-20 dari array Mahasiswa dan menyimpan nilai tersebut ke variabel yang bernama “Nama”.


Contoh cara mengakses elemen array yang lain dapat dilihat di Gambar 3.5. Contoh penggunaan array dalam permasalahan sederhana adalah pengurutan 3 buah bilangan seperti terlihat pada Gambar 3.6. Untuk mengurutkan tiga buah bilangan dibutuhkan operasi perbandingan yang menghasilkan kondisi benar atau salah (> atau <).

 

Keunggulan array adalah sebagai berikut:
1. Array sangat cocok untuk pengaksesan acak. Sembarang elemen di array dapat diacu secara langsung tanpa melalui elemen-elemen lain.
2. Jika telah berada di suatu lokasi elemen, maka sangat mudah menelusuri ke elemen - elemen tetangga, baik elemen pendahulu atau elemen penerus.

Kelemahan array adalah sebagai berikut:
1. Array mempunyai fleksibilitas rendah, karena array mempunyai batasan harus bertipe homogen. Kita tidak dapat mempunyai array dimana satu elemen adalah karakter, elemen lain bilangan, dan elemen lain adalah tipe-tipe lain
2. Kebanyakan bahasa pemrograman mengimplementasikan array dengan ukuran statik yang sulit diubah ukurannya di waktu eksekusi. Bila penambahan dan pengurangan terjadi terus-menerus, maka representasi statis ini bersifat tidak efisien dalam penggunaan memori.

Dalam bidang pemrograman, array dapat dibuat dengan berbagai macam dimensi. Semisal array dimensi satu akan mirip dengan pola linier seperti pada Gambar 3.4. Sedangkan array 2 dimensi akan tampak seperti tabel atau matrik. Cara mengaksesnya adalah dengan menyebutkan nama matrik serta baris dan kolomnya. Sedangkan array 3 dimensi akan tampak seperti balok. Ilustrasi array 2 dan 3 dimensi dapat dilihat pada Gambar 3.7.

Konstanta dan Variabel

Konstanta dan Variabel

Konstanta dan variabel adalah suatu pengenal (identifier) yang digunakan untuk mewakili suatu nilai tertentu didalam proses program. Berbeda dengan konstanta yang nilainya tidak bisa diubah atau selalu tetap selang eksekusi berlangsung, nilai dari suatu variabel dapat berubah sesuai kebutuhan. Konstanta dan variabel merupakan tempat di memori komputer untuk menyimpan data berupa nilai dengan tipe data tertentu. Konstanta dan variabel harus diberi nama sebagai identifikasi.

Secara logika dapat dibayangkan sebuah konstanta atau variabel sebagai sebuah kotak kosong yang dapat diisi dengan sesuatu tipe data tertentu, misal kita membuat sebuah variabel berupa bilangan bulat, maka dalam logika, kita sedang membuat kotak kosong yang hanya dapat diisi dengan kertas bertuliskan bilangan bulat, tidak boleh jenis bilangan selain bilangan bulat. Ilustrasi logika ini dapat dilihat pada Gambar 3.1. Pada Gambar 3.1 dimisalkan membuat dua buah konstanta atau variabel dengan nama identifier nilai dan X yang masing-masing dapat digunakan untuk menyimpan suatu nilai dalam memori sesuai dengan tipe data yang telah ditentukan.


Semisal nilai di Gambar 3.1 adalah sebuah variabel. Maka variabel nilai yang telah dibuat ini selanjutnya dapat digunakan dalam program, semisal dilakukan operasi aritmatika berupa operasi pembagian (/) atau modulo (%). Gambar 3.2 menunjukkan ilustrasi operasi yang terjadi pada variabel nilai. Dalam hal ini variabel nilai dibagi dengan angka 2, dan hasil operasi pembagian disimpan dalam variabel baru yang bernama hasilbagi. Operasi aritmatika lain yang terjadi pada Gambar 3.2 adalah variabel nilai dimodulo dengan angka 2 dan hasilnya disimpan dalam variabel baru yang bernama sisabagi. Operasi pada suatu konstanta atau variabel tidak hanya terbatas pada operasi aritmatika saja, tetapi juga dapat berupa operasi perbandingan. Misalnya nilai apakah lebih besar dari angka 10 (nilai>10) dan lain - lain. Contoh penggunaan variabel nilai dalam permasalahan sederhana adalah penentuan suatu bilangan termasuk dalam kategori ganjil atau genap seperti terlihat pada Gambar 3.3.