Struktur Data – Pengertian Stack
Secara bahasa, Stack berarti tumpukan. Jika dikaitkan dengan struktur data, Stack berarti sekumpulan data yang organisasi atau strukturnya bersifat tumpukan atau menyerupai tumpukan.
Secara ilustrasi, stack dapat digambarkan dengan gambar di samping.
“Top “ merupakan pintu untuk keluar masuknya elemen – elemen stack. A, B, dan C merupakan suatu koleksi. Dari ilustrasi dapat digambarkan bahwa C merupakan elemen yang terakhir memasuki stack namun pertama keluar dari stack. Begitu sebaliknya dengan A. A merupakan elemen pertama yang memasuki tumpukan namun terakhir saat keluar dari tumpukan.
Di dalam gambar juga terlihat urutan masuk dan keluar yang berkebalikan. Elemen yang masuk pertama akan keluar erakhir dan sebaliknya. Prinsip ini telah dikenal dalam struktur data dengan nama prinsip LIFO (Last In First Out).
Di dalam pengembangannya, stack dapat dikelompokkan menjadi dua bagian. Dua bagian tersebut yaitu Single Stack dan Double Stack.
Single Stack
Single Stack atau Stack Tunggal adalah stack yang hanya terdiri dari satu koleksi. Bila stack ini direpresentasikan dengan array, maka pengisian dan penghapusan harus dilakukan bertahap dari indeks TOP-nya.
Di dalam proses single stack terdapat tiga macam proses utama, yaitu :
- Inisialisasi
- PUSH (Insert, Masuk, Simpan, Tulis)
- POP (Delete, Keluar, Ambil, Baca, Hapus)
INISIALISASI
Proses inisialisasi merupakan proses awal yang dilakukan untuk menyimpan indeks penunjuk stack. Roses ini dilakukan dengan intruksi :
top = -1;
PUSH
Proses push adalah proses memasukkan data baru ke stack indeks selanjutnya. Algoritma dasar proses PUSH adalah :
top = top + 1;
array[top] = variable_tampung;
POP
Proses pop adalah proses mengeluarkan / mengambil data dari stack dengan indeks yang disimpan pada variable top. Algoritma dasar proses POP adalah : variable_tampung = array[top];
top = top – 1;
Double Stack
Double Stack atau Stack Ganda adalah stack yang hanya terdiri dari dua single stack. Bila stack ini direpresentasikan dengan array, maka pengisian dan penghapusan harus melalui salah satu arah.
Di dalam proses double stack terdapat lima macam proses utama, yaitu :
- Inisialisasi
- PUSH1 (Proses Push untuk Single Stack pertama)
- POP1 (Proses Pop untuk Single Stack pertama)
- PUSH2 (Proses Push untuk Single Stack kedua)
- POP2 (Proses Pop untuk Single Stack kedua)
Algoritma dasar masing – masing proses adalah sebagai berikut :
INISIALISASI top1 = -1;
top2 = MAX_ARRAY;
PUSH1 top1 = top1 + 1;
array[top1] = variable_tampung;
POP1 variable_tampung = array[top1];
top1 = top1 – 1;
PUSH2 top2 = top2 – 1;
array[top2] = variable_tampung;
POP2 variable_tampung = array[top2];
top2 = top2 + 1;
Kamis, 17 Maret 2011
Kamis, 10 Maret 2011
tempat yang disukai dan di benci di nusantara
TEMPAT YANG DISUKAI DINUSANTARA
Puncak adalah nama sebuah daerah wisata pegunungan yang termasuk ke dalam wilayah Kabupaten Bogor dan Kabupaten Cianjur. Daerah ini sudah sangat terkenal baik bagi wisatawan domestik maupun wiasatawan mancanegara. Daerah ini dikenal sebagai tempat peristirahatan penduduk kota Jakarta dan sebagai daerah perkebunan teh yang dibangun oleh pemerintah kolonial Belanda. Keindahan daerah ini memukau Presiden Soekarno, sehingga ia membangun sebuah restoran untuk menikmati keindahan alam Puncak, yang kemudian diberi nama Restoran Riung Gunung. Selain itu, terdapat juga tempat-tempat rekreasi dan agrowisata yang indah, antara lain Gunung Mas dan Gantole (Paralayang). Di daerah Puncak juga terdapat berbagai tempat wisata menarik diantaranya Taman Safari, Kebun Bunga, dan terdapat sebuah Masjid yang indah dengan arsitektur yang khas dan sederhana yaitu Masjid Atta'awun. Di daerah ini juga terdapat banyak sekali villa-villa dan hotel yang dimiliki oleh warga sekitar untuk tempat beristirahatnya pengunjung.
TEMPAT YANG DIBENCI DINUSANTARA
jakarta
-.kemacetan
karta, tiada hari tanpa macet. Kecuali tengah malam, namun sebentar lagi Jakarta akan langgeng alias tidak macet. Why? karena sebentar lagi kita akan merayakan hari Raya Idul Fitri. Disaat itulah jakarta rasanya Ueeenakkk bener. Tidak perlu menghabiskan 1 tempat untuk 1 hari [ karena lama di jalan ], tapi bisa kebeberapa lokasi sekaligus.
Biasanya beberapa hari atau H-3 sudah mulai berasa Jakarta sudah mulai agak sepi dari mobil-mobil dan motor-motor hingga H+4 biasanya dan kembali normal [ MACET ] begitu H+7 bahkan setiap tahun setelah H+7 akan bertambah parah. Why? karena terjadi transmigrasi lokal alias dari daerah yang mau ke Jakarta untuk mengadu nasib.
-. kemiskinan
Kemiskinan di DKI Jakarta ditimbulkan oleh adanya urbanisasi yaitu perpindahan penduduk dari desa ke kota, kemiskinan di Jakarta bermacam-macam jenisnya dan yang paling diperhatikan adalah masalah kebutuhan pokok, mereka mengalami kesulitan demi mencukupi kebutuhan pokoknya, pemerintah pun bertindak dalam upaya-upaya memberantas kemiskinan tersebut, dengan cara-cara yang telah diambilnya. Sebelumnya pemerintah berupaya untuk mencari latar belakang apa yang menimbulkan kemiskinn tersebut dan setelah diteliti ternyata kemiskinan tersebut sebagian besar dikarenakan banyaknya urbanisasi yaitu perpindahan penduduk dari desa ke kota, akibat perpidahan penduduk yang tidak sebanding dengan lajunya perpindahan daerah antara lain seperti penyediaan fasilitas kota, kesempatan kerja, dan tanah-tanah pemukiman, namun tahun demi tahun kemiskinan di DKI Jakarta semakin berkurang karena pemerintah telah menerapkan cara-cara hidup agar bisa mencukupi kebutuhan pokoknya cara-cara tersebut antara lain meliputi media massa yaitu televisi, radio, buku-buku dan lain sebagainya yang intinya bagaimana cara mendapatkan kebutuhan pokok agar tercukupi oleh masing-masing rumah tangga.
Sebaiknya pemerintah masih sangat perlu untuk memperhatikan keadaan-keadaan di DKI Jakarta yang masih dilanda kemiskinan dan sebagai pembaca sebaiknya bisa memahami apa yang telah dibahas dalam masalah kemiskinan ini dan bisa sebagai pengajaran dan pengalaman bagi Anda para pembaca agar bisa menyesuaikan dan bagaimana cara-cara dan langkah-langkah dalam mencukupi kebutuhan pokok. Karena tanpa pengetahuan dan langkah-langkah serta pengalaman kita akan mengalami kesulitan dalam mendapat keseimbangan dalam mencukupi kebutuhan pokok tersebut, dan bagi pemerintah sebaiknya lebih memandang ke belakang tentang situasi dan kondisi dalam masyarakatnya apa sudah mempunyai keseimbangan dalam kebutuhan pokoknya
Puncak adalah nama sebuah daerah wisata pegunungan yang termasuk ke dalam wilayah Kabupaten Bogor dan Kabupaten Cianjur. Daerah ini sudah sangat terkenal baik bagi wisatawan domestik maupun wiasatawan mancanegara. Daerah ini dikenal sebagai tempat peristirahatan penduduk kota Jakarta dan sebagai daerah perkebunan teh yang dibangun oleh pemerintah kolonial Belanda. Keindahan daerah ini memukau Presiden Soekarno, sehingga ia membangun sebuah restoran untuk menikmati keindahan alam Puncak, yang kemudian diberi nama Restoran Riung Gunung. Selain itu, terdapat juga tempat-tempat rekreasi dan agrowisata yang indah, antara lain Gunung Mas dan Gantole (Paralayang). Di daerah Puncak juga terdapat berbagai tempat wisata menarik diantaranya Taman Safari, Kebun Bunga, dan terdapat sebuah Masjid yang indah dengan arsitektur yang khas dan sederhana yaitu Masjid Atta'awun. Di daerah ini juga terdapat banyak sekali villa-villa dan hotel yang dimiliki oleh warga sekitar untuk tempat beristirahatnya pengunjung.
TEMPAT YANG DIBENCI DINUSANTARA
jakarta
-.kemacetan
karta, tiada hari tanpa macet. Kecuali tengah malam, namun sebentar lagi Jakarta akan langgeng alias tidak macet. Why? karena sebentar lagi kita akan merayakan hari Raya Idul Fitri. Disaat itulah jakarta rasanya Ueeenakkk bener. Tidak perlu menghabiskan 1 tempat untuk 1 hari [ karena lama di jalan ], tapi bisa kebeberapa lokasi sekaligus.
Biasanya beberapa hari atau H-3 sudah mulai berasa Jakarta sudah mulai agak sepi dari mobil-mobil dan motor-motor hingga H+4 biasanya dan kembali normal [ MACET ] begitu H+7 bahkan setiap tahun setelah H+7 akan bertambah parah. Why? karena terjadi transmigrasi lokal alias dari daerah yang mau ke Jakarta untuk mengadu nasib.
-. kemiskinan
Kemiskinan di DKI Jakarta ditimbulkan oleh adanya urbanisasi yaitu perpindahan penduduk dari desa ke kota, kemiskinan di Jakarta bermacam-macam jenisnya dan yang paling diperhatikan adalah masalah kebutuhan pokok, mereka mengalami kesulitan demi mencukupi kebutuhan pokoknya, pemerintah pun bertindak dalam upaya-upaya memberantas kemiskinan tersebut, dengan cara-cara yang telah diambilnya. Sebelumnya pemerintah berupaya untuk mencari latar belakang apa yang menimbulkan kemiskinn tersebut dan setelah diteliti ternyata kemiskinan tersebut sebagian besar dikarenakan banyaknya urbanisasi yaitu perpindahan penduduk dari desa ke kota, akibat perpidahan penduduk yang tidak sebanding dengan lajunya perpindahan daerah antara lain seperti penyediaan fasilitas kota, kesempatan kerja, dan tanah-tanah pemukiman, namun tahun demi tahun kemiskinan di DKI Jakarta semakin berkurang karena pemerintah telah menerapkan cara-cara hidup agar bisa mencukupi kebutuhan pokoknya cara-cara tersebut antara lain meliputi media massa yaitu televisi, radio, buku-buku dan lain sebagainya yang intinya bagaimana cara mendapatkan kebutuhan pokok agar tercukupi oleh masing-masing rumah tangga.
Sebaiknya pemerintah masih sangat perlu untuk memperhatikan keadaan-keadaan di DKI Jakarta yang masih dilanda kemiskinan dan sebagai pembaca sebaiknya bisa memahami apa yang telah dibahas dalam masalah kemiskinan ini dan bisa sebagai pengajaran dan pengalaman bagi Anda para pembaca agar bisa menyesuaikan dan bagaimana cara-cara dan langkah-langkah dalam mencukupi kebutuhan pokok. Karena tanpa pengetahuan dan langkah-langkah serta pengalaman kita akan mengalami kesulitan dalam mendapat keseimbangan dalam mencukupi kebutuhan pokok tersebut, dan bagi pemerintah sebaiknya lebih memandang ke belakang tentang situasi dan kondisi dalam masyarakatnya apa sudah mempunyai keseimbangan dalam kebutuhan pokoknya
Aspek Trigatra dan Pancagatra Dalam Astagatra / Antargatra - Aspek Bidang Ketahanan Nasional Di Dalam Kehidupan Nasional - PMP
A. Aspek Trigatra yang Merupakan Aspek Alamiah
1. Posisi dan lokasi geografi negara
2. Keadaan dan kekayaan alam
3. Keadaan dan kemampuan penduduk
B. Aspek Pancagatra yang merupakan aspek sosial kemasyarakatan / Ipoleksosbudhankam
1. Ideologi
2. Politik
3. Ekonomi
4. Sosial Budaya / Sosbud
5. Pertahanan Keamanan / Hankam
C. Aspek Astagatra / Antargatra
Merupakan gabungan dari aspek trigatra dan pancagatra / ipoleksosbudhankam di mana antara keduanya terdapat hubungan yang bersifat timbal balik dengan hubungan yang erat / korelasi yang saling ketergantungan / interdependensi.
IDEOLOGI
1. Posisi dan lokasi geografi negara
2. Keadaan dan kekayaan alam
3. Keadaan dan kemampuan penduduk
B. Aspek Pancagatra yang merupakan aspek sosial kemasyarakatan / Ipoleksosbudhankam
1. Ideologi
2. Politik
3. Ekonomi
4. Sosial Budaya / Sosbud
5. Pertahanan Keamanan / Hankam
C. Aspek Astagatra / Antargatra
Merupakan gabungan dari aspek trigatra dan pancagatra / ipoleksosbudhankam di mana antara keduanya terdapat hubungan yang bersifat timbal balik dengan hubungan yang erat / korelasi yang saling ketergantungan / interdependensi.
IDEOLOGI
Tantangan Kedepan Bangsa Indonesia
Menghadapi era globalisasi ekonomi, ancaman bahaya laten terorisme, komunisme dan fundamentalisme merupakan sebuah tantangan tersendiri bagi bangsa Indonesia. Disamping itu yang patut diwaspadai adalah pengelompokan suku bangsa di Indonesia yang kini semakin kuat. Ketika bangsa ini kembali dicoba oleh pengaruh asing untuk dikotak kotakan tidak saja oleh konflik vertikal tetapi juga oleh pandangan terhadap ke Tuhanan Yang Maha Esa.
Pemahaman Nasionalisme yang berkurang
Di saat negara membutuhkan soliditas dan persatuan hingga sikap gotong royong, sebagian kecil masyarakat terutama justru yang ada di perkotaan justru lebih mengutamakan kelompoknya, golonganya bahkan negara lain dibandingkan kepentingan negaranya. Untuk itu sebaiknya setiap komponen masyarakat saling berinterospeksi diri untuk dikemudian bersatu bahu membahu membawa bangsa ini dari keterpurukan dan krisis multidimensi.
Selasa, 08 Maret 2011
memasukan image dalam html
Sering kita jumpai, ketika kita ingin membuat website yang lebih menarik atau tidak hanya monoton tulisan saja, maka kita tambahkan gambar atau image ke dalam webpage kita.
Padahal kalau kita mempelajari script HTML didalamnya hanya ada tulisan perintah-perintah saja, lalu bagaimana kita bisa menambahkan perintah kedalam HTML tersebut agar menampilkan sebuah gambar atau image.
Untuk menampilkan gambar/image di dalam script HTML kita membutuhkan tag <img>. Contoh penggunaanya adalah sebagai berikut
<img src="http://margoutomo.net/bannermargoutomo.jpg" width="200" height="42" />maka akan muncul banner tersebut dengan attribute dimensi image = 200 x 42
Minggu, 06 Maret 2011
Unsur-unsur Wawasan Nusantara.
1. Wadaha. Wujud Wilayah
Batas ruang lingkup wilayah nusantara ditentukan oleh lautan yang di dalamnya terdapat gugusan ribuan pulau yang saling dihubungkan oleh perairan. Oleh karena itu Nusantara dibatasi oleh lautan dan daratan serta dihubungkan oleh perairan didalamnya.
Setelah bernegara dalam negara kesatuan Republik Indonesia, bangsa indonesia memiliki organisasi kenegaraan yang merupakan wadah berbagi kegiatn kenegaraan dalam wujud suprastruktur politik. Sementara itu, wadah dalam kehidupan bermasyarakat adalah lembaga dalam wujud infrastruktur politik.
Letak geografis negara berada di posisi dunia antara dua samudra, yaitu Samudra Pasifik dan Samudra Hindia, dan antara dua benua, yaitu banua Asia dan benua Australia. Perwujudan wilayah Nusantara ini menyatu dalam kesatuan poliyik, ekonomi, sosial-budaya, dan pertahanan keamanan.
b. Tata Inti Organisasi
Bagi Indonesia, tata inti organisasi negara didasarkan pada UUD 1945 yang menyangkut bentuk dan kedaulatan negara kekuasaaan pemerintah, sistem pemerintahan, dan sistem perwakilan. Negara Indonesia adalah negara kesatuan yang berbentuk republik. Kedaulatan di tangan rakyat yang dilaksanakan sepenuhnya oleh Majelis Permusyawaratan Rakyat (MPR).
Sistem pemerintahan, menganut sistem presidensial. Presiden memegang kekuasaan bersadarkan UUD 1945. Indonesia adalah Negara hukum ( Rechtsstaat ) bukan Negara kekuasaan ( Machtsstaat ).
c. Tata Kelengkapan Organisasi
Wujud tata kelengkapan organisasi adalah kesadaran politik dan kesadaran bernegara yang harus dimiliki oleh seluruh rakyat yang mencakup partai politik, golongan dan organisasi masyarakat, kalangan pers seluruh aparatur negara. Yang dapat diwujudkan demokrasi yang secara konstitusional berdasarkan UUD 1945 dan secara ideal berdasarkan dasar filsafat pancasila.
2. Isi Wawasan Nusantara
Isi adalah aspirasi bangsa yang berkembang di masyarakat dan cita-cita serta tujuan nasional yang terdapat pada pembukaan UUD 1945. Untuk mencapai aspirasi yang berkembang di masyarakat maupun cita-cita dan tujuan nasional seperti tersebut di atas, bangsa Indonesia harus mampu menciptakan persatuan dan kesatuan dalam kebhinekaan dalam kehidupan nasional. Isi menyangkut dua hal yang essensial, yaitu:
a. Realisasi aspirasi bangsa sebagai kesepakatan bersama serta pencapaian cita-cita dan tujuan nasional.
b. Persatuan dan kesatuan dalam kebhinekaan yang meliputi semua aspek kehidupan nasional.
Isi wawasan nusantara tercemin dalam perspektif kehidupan manusia Indonesia meliputi :
a. Cita-cita bangsa Indonesia tertuang di dalam Pembukaan UUD 1945 yang menyebutkan :
1) Negara Indonesia yang merdeka, bersatu, berdaulat, adil dan makmur.
2) Rakyat Indonesia yang berkehidupan kebangsaan yang bebas.
3) Pemerintahan Negara Indonesia melindungi segenap bangsa Indonesia dan seluruh tumpah darah Indonesia dan untuk memajukan kesejahteraan umum, mencerdaskan kehidupan bangsa, dan ikut melaksanakan ketertiban dunia yang berdasarkan kemerdekaan, perdamaian abadi dan keadilan sosial.
b. Asas keterpaduan semua aspek kehidupan nasional berciri manunggal, utuh menyeluruh meliputi :
1. Satu kesatuan wilayah nusantara yang mencakup daratan perairan dan dirgantara secara terpadu.
2. Satu kesatuan politik, dalam arti satu UUD dan politik pelaksanaannya serta satu ideologi dan identitas nasional.
3. Satu kesatuan sosial-budaya, dalam arti satu perwujudan masyarakat Indonesia atas dasar “Bhinneka Tunggal Ika”, satu tertib sosial dan satu tertib hukum.
4. Satu kesatuan ekonomi dengan berdasarkan atas asas usaha bersama dan asas kekeluargaan dalam satu sistem ekonomi kerakyatan.
5. Satu kesatuan pertahanan dan keamanan dalam satu system terpadu, yaitu sistem pertahanan keamanan rakyat semesta (Sishankamrata).
6. Satu kesatuan kebijakan nasional dalam arti pemerataan pembangunan dan hasil-hasilnya yang mencakup aspek kehidupan nasional.
3. Tata Laku Wawasan Nusantara Mencakup Dua Segi, Batiniah dan Lahiriah
Tata laku merupakan dasar interaksi antara wadah dengan isi, yang terdiri dari tata laku tata laku batiniah dan lahiriah. Tata laku batiniah mencerminkan jiwa, semangat, dan mentalitas yang baik dari bangsa indonesia, sedang tata laku lahiriah tercermin dalam tindakan , perbuatan, dan perilaku dari bangsa Indonesia. Tata laku lahiriah merupakan kekuatan yang utuh, dalam arti kemanunggalan. Meliputi perencanaan, pelaksanaan, pengawasan dan pengendalian.
Kedua hal tersebut akan mencerminkan identitas jati diri atau kepribadian bangsa indonesia berdasarkan kekeluargaan dan kebersamaan yang memiliki rasa bangga dan cinta kepada bangga dan tanah air sehingga menimbulkan nasionalisme yang tinggi dalm segala aspek kehidupan nasional.
Keanekaragaman Indonesia
Negara kita memang memiliki banyak sekali keanekaragaman adat istiadat dan budaya. Dari mulai bahasa, pakaian adat, hingga rumah adat di masing-masing propinsi berbeda-beda.
Sekedar info, negara kita memiliki salah satu rumah adat yang cukup terkenal hingga ke mancanegara yaitu Rumah Panggung Woloan. Rumah panggung merupakan rumah adat Minahasa yang dapat kita jumpai di kota Tomohon, Sulawesi Utara. Keunikan dari rumah panggung ini adalah rumah panggung ini dapat dipindahtempatkan sesuai keinginan lokasi yang diinginkan. Rumah ini terbuat dari beberapa bagian kayu yang disusun sehingga terbentuk menjadi sebuah rumah. Bagian-bagian kayu ini dapat dibongkar pasang sehingga rumah ini dapat dipindahtempatkan. Karena bahannya terbuat dari kayu maka diperlukan tenaga yang memiliki kreatifitas dan kemampuan indiviu yang tinggi. Kreatifitas dan Kemampuan individu yang tinggi inilah yang membuat harga dari rumah panggung ini bernilai puluhan hingga ratusan juta rupiah.
Meskipun harganya pembuatannya mahal tetapi masyarakat kota Tomohon kebanyakan menggunakan rumah ini sebagai tempat tinggal mereka. Mereka lebih bangga menggunakan rumah panggung ini dibandingkan rumah yang terbuat dari batu bata. Sebagai pribadi yang bukan keturunan minahasa saya salut dan bangga untuk masyarakat kota Tomohon. Semoga tulisan ini dapat menambah wawasan teman2 mengenai rumah panggung woloan dan menambah rasa cinta teman2 untuk Indonesia.
Sekedar info, negara kita memiliki salah satu rumah adat yang cukup terkenal hingga ke mancanegara yaitu Rumah Panggung Woloan. Rumah panggung merupakan rumah adat Minahasa yang dapat kita jumpai di kota Tomohon, Sulawesi Utara. Keunikan dari rumah panggung ini adalah rumah panggung ini dapat dipindahtempatkan sesuai keinginan lokasi yang diinginkan. Rumah ini terbuat dari beberapa bagian kayu yang disusun sehingga terbentuk menjadi sebuah rumah. Bagian-bagian kayu ini dapat dibongkar pasang sehingga rumah ini dapat dipindahtempatkan. Karena bahannya terbuat dari kayu maka diperlukan tenaga yang memiliki kreatifitas dan kemampuan indiviu yang tinggi. Kreatifitas dan Kemampuan individu yang tinggi inilah yang membuat harga dari rumah panggung ini bernilai puluhan hingga ratusan juta rupiah.
Meskipun harganya pembuatannya mahal tetapi masyarakat kota Tomohon kebanyakan menggunakan rumah ini sebagai tempat tinggal mereka. Mereka lebih bangga menggunakan rumah panggung ini dibandingkan rumah yang terbuat dari batu bata. Sebagai pribadi yang bukan keturunan minahasa saya salut dan bangga untuk masyarakat kota Tomohon. Semoga tulisan ini dapat menambah wawasan teman2 mengenai rumah panggung woloan dan menambah rasa cinta teman2 untuk Indonesia.
Senin, 28 Februari 2011
ARRAY (LARIK) DAN RECORD
Array merupakan bagian dasar, yang disebut blok, guna keperluan pembentukan suatu struktur data lain yang lebih kompleks. Hampir setiap jenis struktur data kompleks dapat disajikan secara logik oleh array.
Kita dapat mendefinisikan array sebagai suatu himpunan hingga elemen, terurut dan
homogen. Terurut, kita artikan bahwa elemen tersebut dapat diidentifikasi sebagai elemen pertama, elemen kedua, dan seterusnya sampai elemen ke-n. Sedangkan pengertian elemen yang homogen adalah bahwa setiap elemen dari sebuah array tertentu haruslah mempunyai tipe data yang sama.
Jadi suatu array dapat mempunyai elemen semuanya berupa integer atau dapat pula
seluruhnya berupa untai aksara atau string Bahkan dapat pula terjadi bahwa suatu array mempunyai elemen berupa array pula.
Sebenarnya, pengertian array telah banyak kita kenal, dan kita pelajari dalam matematika. Di sana, array lebih terkenal sebagai matriks. Kadang-kadang ia disebut juga sebagai tabel. Juga pernah kita dengar tentang vektor. Vektor adalah bentuk yang paling sederhana dari array. Vektor merupakan array dimensi satu atau one dimensional array
- ARRAY DIMENSI SATU
Sebuah array dimensi satu, yang misalnya kita beri nama NILAI
Nilai(1) Nilai(2) Nilai(3) - - - Nilai(n)
Subscript atau indeks dari elemen array menyatakan posisi, elemen pada urutan dalam
array tersebut. Notasi yang digunakan bagi elemen array, biasanya adalah nama array
dilengkapi dengan subcript.
Secara umum, suatu array dimensi satu A dengan tipe data T dan subscript bergerak
dari L sampai dengan U, ditulis sebagai A(L:U) = (A(l)), I = L, L+1, L+2,..., U, dan setiap elemen A(l) bertipe data T.
Sebagai contoh, kita dapat menuliskan data hasil pencatatan suhu suatu ruangan setiap
satu jam selama periode 24 jam, dalam sebuah array dimensi satu. Harga minimum dari subscript dari array disebut batas bawah atau lower bound, sedangkan harga maksimumnya disebut batas atas atau upper bound. Jadi pada array di atas, L merupakan batas bawah, dan U batas atas. Sedangkan untuk array ''suhu'' yang elemennya dapat kita tulis sebagai SUHU(I), batas bawahnya adalah 1 dan batas atasnya 24. SUHU(I) menyatakan suhu pada jam ke-1, dan I memenuhi 1 <= I <= 24, I merupakan integer.
Batas bawah dari array, pada beberapa aplikasi, tidak selalu diambil 1. Kadang-kadang diambil batas bawah nol, bahkan juga negatif. Banyaknya elemen sebuah array disebut rentang atau range. Jadi array A(L:U) mempunyai range sebesar U-L+1. Secara
khusus bila L=l dan U=N, maka range dari array A(l:N) adalah N-I+1 = N.
- ARRAY DIMENSI BANYAK
Sebuah array dimensi banyak atau multi-dimensional array didefinisikan sebagai sebuah
array yang elemennya berupa array pula. Misal array B mempunyai M elemen berupa array pula, yang terdiri dari N elemen.
Untuk itu diperlukan dua buah subscript. Yang pertama digunakan untuk menyatakan
posisi baris, sedangkan yang kedua untuk posisi kolom. Secara umum array dimensi dua
B, dengan elemen bertipe data T, subscript baris dari l sampai M, subscript kolom dari l sampai N, ditulis sebagai B(1:M, 1:N) = (B(I,J)), I = 1, 2, ...,M dan J = 1, 2,...,N dengan setiap elemen B(I,J) bertipe data T. Array B tersebut dikatakan berukuran atau berorder M x N. Di sini banyak elemen array adalah M*N.
Contoh dari array dimensi dua sangat banyak kita jumpai. Misalnya nilai ujian 500
mahasiswa Gunadarma tingkat 3, untuk 8 mata kuliah dapat kita sajikan sebagai array
dimensi dua yang berorder 500 x 8. Elemen B(I,J) menyatakan nilai mahasiswa ke-I untuk mata kuliah ke-J. Seperti halnya pada array dimensi satu, pada array dimensi dua batas bawah untuk subscript I maupun J dapat diambil secara umum. Misalnya, batas bawah subscript baris adalah L1 subscript kolom adalah L2 sedangkan batas atas subscript baris adalah U1 dan untuk kolom adalah U2, maka array dimensi dua tersebut dapat dinotasikan sebagai :
B(L1:U1, L2:U2) = (B(I,J)), L1 <= 1 <= U1, L2 <=J <= U2
dengan setiap elemen B(I,J) bertipe data T. Banyaknya elemen pada setiap baris adalah U2 – L2 + 1 dan pada setiap kolom adalah U1–L1+l, sehingga banyaknya elemen pada array B semua ada = (U2-L2 +1) * (U1-L1 +1).
Yang dimaksud dengan cross-section suatu array berdimensi dua adalah pengambilan
salah satu subscript, misalnya subscript baris untuk tetap atau konstan, sementara subscript yang satunya lagi kita ubah-ubah sepanjang rangenya. Notasi yang umum digunakan
Dengan mudah dapat dimengerti bahwa B(11,*) menunjukkan semua elemen pada baris
ke-11. Transpose dari suatu array dimensi dua adalah penulisan baris menjadi kolom (kolom menjadi baris) dari suatu array. Jadi transpose dari array berorder M x N adalah array berorder N x M. Transpose dari array B dinotasikan sebagai BT. Berdasarkan definisi, maka jelas B(I,J) =BT(J,I). Contohnya B(3,5) = BT(5,3).
Pengertian di atas dapat kita perluas untuk array dimensi tiga, dimensi empat, sampai
dimensi N. Array dimensi N kita tulis sebagai :
A(L1:U1, L2:U2, …, LN: UN) = (A(I1, I2, …, IN))
dengan Lk <= Ik <= Uk, untuk setiap k = 1, 2, …, N.
Banyaknya elemen dari array A tersebut adalah :
PI(Uk - Lk + 1) = (U1-L1+1) * (U2 – L2+1) … * (UN -LN + 1)
Contoh array dimensi tiga adalah penyajian data mengenai banyaknya mahasiswa
dari-20 perguruan tinggi di Jakarta, berdasarkan tingkat (tingkat 1, 2 sampai dengan 5), dan jenis kelamin (pria atau wanita). Misalnya array tersebut dinamakan MHS. Ambil sebagai subscript pertama, tingkat : I = 1, 2,...,5; subscript kedua, jenis kelamin (pria = 1, wanita = 2): J = 1,2, dan subscript ke-3, Perguruan Tinggi adalah K = 1,2,...,20. Jadi MHS(4,2,17)
Pengertian cross-section pada array dimensi banyak, adalah sama seperti pada array
dimensi dua. Misalnya MHS(4,*,17) menunjukkan jumlah mahasiswa tingkat 4 dari
perguruan tinggi 17 (masing-masing untuk pria serta wanita). MHS(*,*,3) menun-jukkan
jumlah mahasiswa untuk masing-masing tingkat, pria serta wanita, dari perguruan tinggi 3.
- DEKLARASI ARRAY DALAM BAHASA PEMROGRAMAN
Misalkan kita hendak mendeklarasikan array TEMP yang merupakan array dimensi satu dengan nilai subscript 1 sampai 24, dan masing-masing elemen bertipe data integer (nilainya antara 0 hingga 99 derajat).
Dalam Bahasa COBOL dapat ditulis :
01 TABEL-TEMP
02 TEMP OCCURS 24 TIMES PIC 99.
Dalam bahasa Pascal :
var temp: array l..24)of integer
Dalam Bahasa BASIC, kita dapat mendefinisikan array TEMP tersebut dengan
statement :
DIM TEMP(24)
Tiga hal harus dikemukakan dalam mendeklarasikan suatu array, yakni :
1. nama array
2. range dari subscript
3. tipe data dari elemen array
Bahasa Pascal memperkenankan batas bawah subscript yang bukan =1, contohnya
adalah :
var grafik : array [-100 ..100] of integer
Dalam COBOL subscript harus dimulai dari 1.
Untuk menyatakan elemen ke-I dari array, COBOL dan BASIC menggunakan kurung
biasa, yakni TEMP(I), sedangkan Pascal menggunakan kurung siku, yakni temp[i].
Untuk mendeklarasikan sebuah array nilai dari 500 mahasiswa untuk 8 mata kuliah,
dalam COBOL ditulis
01 TABEL-NILAI
02 MHS OCCURS 500 TIMES
03 NILAI OCCURS 8 TIMES
PIC 99V9.
Dalam Pascal ditulis :
var nilai : Array[1..500,1..8] of real
dan dalam BASIC dapat ditulis
DIM NILAI(500,8)
Dalam COBOL maksimum dimensi yang dapat diterima adalah 3 (three dimensional),
contohnya :
01 MHS-TABEL
02 TINGKAT OCCURS 5 TIMES
03 SEX OCCURS 2 TIMES
04 MHS OCCURS 20 TIMES PIC 9(5).
dan dalam Pascal :
var mhs : Array[1..5, 1..2, 1..20] of integer
Dalam bahasa pemrograman seperti FORTRAN dan COBOL, alokasi untuk array
dalam storage memerlukan waktu dalam proses kompilasi, karenanya batas bawah dan
batas atas harus dikemukakan ketika mendefinisikan array.
COBOL dan Pascal (juga bahasa lain yang memungkinkan pendeklarasian array)
mempunyai fasilitas untuk melakukan manipulasi antarelemen array. Operasi yang sesuai
dengan tipe data array tersebut dapat dikerjakan dengan mudah,
contohnya dalam COBOL
COMPUTE TOTAL_UPAH(I) = UPAH_PER_JAM(I) * JUMLAH-JAM(l)
Terlihat bahwa ketiga variabel di atas adalah array.
Beberapa bahasa pemrograman memperkenankan operasi array. Sebagai contoh, A
adalah array (bertipe real) yang dideklarasi dalam PL/1, maka A=A+2 adalah operasi
untuk menambah setiap elemen dari A dengan bilangan 2.
Juga dikenal operasi A = A * B. Operasi ini menghasilkan array A baru yang
elemennya merupakan hasil kali elemen array A (lama) dengan elemen array B yang
posisinya bersesuaian. Order array A dan B harus sama.
Perhatikan bahwa perkalian array ini bukan perkalian matriks yang telah kita kenal.
Dalam PL/1, operasi dapat pula dilakukan terhadap cross-section.
Sebagai contoh adalah operasi yang menyebabkan NILAI seluruh baris 20 menjadi nol, berikut ini :
NILAI(20,*)= 0
Operasi VEKTOR(*)= ARRAY1(I,*) *ARRAY(*,J) akan memperkalikan elemen
baris ke-I dari ARRAY1 dengan elemen kolom ke-j dari ARRAY2.
Operasi di atas mempunyai efek yang sama seperti loop dalam Bahasa BASIC :
FOR K = 1 TO N
VEKTOR(J)
- PEMETAAN ARRAY DIMENSI SATU KE STORAGE
Seperti halnya struktur data yang lain, ada beberapa cara untuk menyajikan array di dalam memori. Skema penyajian dapat dievaluasi berdasarkan 4 karakteristik, yakni :
1. kesederhanaan dari akses elemen
2. mudah untuk ditelusuri
3. efisiensi dari utilitasi storage
4. mudah dikembangkan
Umumnya tidaklah mungkin untuk mengoptimalkan keempat faktor tersebut
sekaligus. Pandang array satu dimensi NOPEG dengan batas bawah subscript 1, dan batas
atas subscript = N. Salah satu cara untuk menyimpan array ini adalah sedemikian sehingga urutan fisik dari elemen sama dengan urutan logik dari elemen. Storage untuk elemen NOPEG(I+1) adalah berdampingan dengan storage untuk elemen NOPEG(I), untuk setiap I = 1, 2, 3,..., N-1. Untuk menghitung alamat (address) awal dari elemen NOPEG(I), diperlukan untuk mengetahui 2 hal yakni :
1. address awal dari ruang storage yang dialokasikan bagi array tersebut.
2. ukuran dari masing-masing elemen array.
Address awal dari array, kita nyatakan dengan B, disebut juga base-location. Misalkan
bahwa masing-masing elemen dari array menduduki S byte.
Maka, address awal dari elemen ke-I adalah :
B + (I-1) * S
Sekarang kita perluas persamaan di atas untuk mendapat address dari elemen ke-I dari
array yang mempunyai batas bawah subscript tidak sama dengan 1. Perhatikan array
Z(4:10), maka address awal dari Z(6) adalah :
B + (64) * S
Untuk array Z2 (-2:2) misalnya, address awal dari Z2(l) adalah :
B + (I -(-2)) * S
Maka secara umum, untuk array :
ARRAY(L:U),
elemen ARRAY(I) mempunyai address awal
B + (U-L) * S
- PEMETAAN KE STORAGE TERHADAP ARRAY DIMENSI BANYAK
Karena memori komputer adalah linear, maka array dimensi banyak harus dilinearkan
apabila akan dipetakan ke dalam storage. Salah satu alternatif untuk pelinearan tersebut adalah menyimpan pertama kali baris pertama dari array, kemudian baris ke-2, baris ke-3 dan seterusnya. Ini disebut row major order.
Misalkan B adalah base-location dari array RATE tersebut, dan masing-masing elemen
dari array berukuran S. Address awal dari elemen RATE(I,J) adalah :
B + (I-1) * 6 * S + (J-1) * S
karena ada I-1 baris, masing-masing dengan panjang 6 * S, sebelum baris elemen
RATE(I,J) terletak, dan terdapat J- 1 elemen, masing-masing dengan panjang S sebelum
elemen RATE(I,J) pada baris ke-I. Jadi, pada contoh di atas RATE(2,4) mempunyai
address awal :
B+ (2-1) * 6 * S + (4-1) * S = B + 9 * S
Secara umum elemen ARRAY(I,J) dari array yang didefinisikan sebagai
ARRAY(L1:U1, L2 : U2) mempunyai address awal :
B + (I-L1) * (U2 -L2+ 1) * S + (J-L2) * S
Terdapat 2 baris (I-L1, 0 – (-2)) sebelum baris nol, yang masing-masing panjangnya 3*
S(U2-L2+1 = 6-4+1) dan terdapat 2 elemen (J-L2 = 6-4) pada baris ke nol sebelum elemen Z (0,6). Jadi address awal dari Z(0,6) adalah :
B + 2 * 3 * S + 2 * S = B + 8 * S
Alternatif lain untuk melinearkan array dimensi dua adalah dengan menyimpan
elemen dalam column major order, yakni pertama kali menyimpan kolom pertama, lalu
kolom kedua, kolom ketiga dan seterusnya.
Dengan mudah dapat diterangkan bahwa pada array RATE di atas, elemen RATE(I,J)
mempunyai address awal B + (J - 1) * 4 * S + (I - 1) * S, sehingga RATE(2,4) akan
mempunyai address awal B + (4-1) * 4 * S + (2-1) * S = B + 13 * S. Jadi kita harus
waspada andaikata kita mempunyai array yang ditulis dalam rutin FORTRAN, kemudian
akan kita tulis dalam bahasa lain (COBOL, PL/1 atau Pascal). Secara umum, elemen
ARRAY(I,J) dari array yang didefinisikan sebagai ARRAY(L1:U1,L2 :U2), menggunakan address awal :
B + (J-L2) * (U1-L1 +1) * S + (I-L1) * S
Misalkan array A berorder 50 x 225. Hendak dihitung jumlah / total elemennya. Kalau
dipergunakan column-major storage, dapat kita buat, dalam COBOL.
COMPUTE TOTAL = 0.
PERFORM SUM-UP VARYING J
FROM 1 BY 1 UNTIL J > 225
AFTER 1 FROM 1 BY 1 UNTIL I > 50.
dalam hal ini
SUM-UP.
TOTAL = TOTAL + A(I,J).
Dalam Pascal dapat kita tulis :
Total := 0;
for j = 1 to 225 do
for i = 1 to 50 do
total := total + a[I,j];
Kalau dipergunakan row-major storage, kita dapat tulis dalam COBOL sebagai berikut :
COMPUTE TOTAL = 0.
PERFORM SUM-UP VARYING 1
FROM 1 BY 1 UNTIL I > 50
AFTER J FROM 1 BY 1 UNTIL J > 225
dalam hal ini
SUM-UP.
TOTAL = TOTAL + A(I,J).
dan dalam Pascal dapat ditulis
total:=0;
for i := 1 to 50 do
for j := 1 to 225 do
total := total + a[i,j];
- TRINGULAR ARRAY (ARRAY SEGITIGA)
Akan kita tinjau beberapa aspek pelinearan suatu array yang khusus, yakni tringular
array. Tringular array dapat merupakan upper tringular (seluruh elemen di bawah
diagonal utama = 0) ataupun lower tringular (seluruh elemen di atas diagonal utama =0).
Dalam array lower triangular dengan N baris, jumlah maksimum elemen <> 0 pada
baris ke-I adalah 1, karenanya total elemen <> 0, tidak lebih dari :
N
Σ I = N(N+1)/2
I = 1
Gambar 2.10 menunjukkan triangular array berorder 6 x 6.
X X X X X X X 0 0 0 0 0
0 X X X X X X X 0 0 0 0
0 0 X X X X X X X 0 0 0
0 0 0 X X X X X X X 0 0
0 0 0 0 X X X X X X X 0
0 0 0 0 0 X X X X X X X
(a) (b)
Gambar 2.10 (a) Upper triangular array (b) Lower triangular array
Rumus ini berlaku pula untuk array upper tringular dengan N baris. Kalau N besar,
alangkah baiknya kalau elemen nol tidak usah kita simpan dalam memori. Suatu
pendekatan terhadap problema ini adalah dengan pelinearan array, dan dengan hanya
menyimpan bagian array yang tidak nol. Misalkan kita menyimpan array upper tringular T secara baris dalam array satu dimensi S, dengan batas subscript I sampai N(N+I)/2. Elemen T(1,1) disimpan sebagai S(1), elemen T(1,2) sebagai S(2) dan seterusnya, sehingga elemen T(1,N) disimpan sebagai S(N). Maka elemen T(2,2) disimpan sebagai S(N+1) (karena T(2,1) = 0).
Terakhir sekali, elemen T(N,N) akan disimpan sebagai S(N(N+1)/2). Kadang-kadang suatu program menggunakan lebih dari satu array tringular. Untuk itu kita dapat menyimpan 2 array sekaligus. Misalnya array A upper triangular berorder
N x N dan array B lower triangular berorder (N-1) x (N-1). Mereka dapat kita simpan sebagai array C berorder N x N. Di sini C(l,J) = A(l,J) untuk I <= J dan C(I+1,J) = B(I,J) untuk I >= J.
Sekarang apabila array A upper tringular berorder N x N sedangkan array B lower
tringular, juga berorder N x N, maka array C yang mengandung keduanya harus berorder
N x (N+1). Di sini elemen A(I,J) disimpan sebagai C(I,J+1) untuk I <= J, dan B(I,J)
disimpan sebagai C(I,J) untuk I >= J.
Perhatikan contoh berikut array A berorder (3 x 3) merupakan upper tringular.
1 2 3
0 4 5
0 0 6
Array B berorder (2 x 2) merupakan lower tringular,
7 0
8 9
maka mereka disimpan bersama dalam array C sebagai
1 2 3
7 4 5
8 9 6
Contoh berikut,
1 2 3 7 0 0
A = 0 4 5 B = 8 9 0
0 0 6 11 12 13
dapat disimpan sebagai array C berorder (3 x 4)
7 1 2 3
8 9 4 5
11 12 13 6
Misalkan sekarang ada 2 array, sama-sama upper tringular, yakni array A1 dan A2.
Kita dapat menyimpan mereka bersama-sama dengan melakukan transpose terhadap salah
satu array tersebut, misalnya A2 menjadi A2T. A2T adalah array lower tringular. Array C berorder N x (N+1) akan menyimpan elemen A1(I,J) sebagai C(I,J+1) untuk I <= J, dan elemen A2(I,J) akan disimpan sebagai C(J,I) untuk I >= J.
Sebagai contoh adalah array :
1 2 3 7 8 9
A1 = 0 4 5 A2 = 0 11 12
0 0 6 0 0 13
7 0 0
maka A2T = 8 11 0
9 12 13
dan mereka tersimpan sebagai :
7 1 2 3
C = 8 11 4 5
9 12 13 6
- DEFINISI RECORD
Sebuah record merupakan koleksi satuan data yang heterogen, yakni terdiri dari berbagai
type. Satuan data tersebut sering disebut sebagai field dari record. Field dipanggil dengan
menggunakan namanya masing-masing. Suatu field dapat terdiri atas beberapa subfield.
Sebagai Contoh, data personalia dari seorang pegawai suatu perusahaan di Amerika
Serikat, merupakan sebuah record yang dapat terdiri dari berbagai field, dan subfield
seperti berikut ini :
1 NOMOR-JAMINAN-SOSIAL
2 NAMA, yang terdiri atas :
NAMA-BELAKANG
NAMA-DEPAN
NAMA-TENGAH
3 ALAMAT, terdiri atas :
JALAN
NOMOR RUMAH
NAMA-JALAN
KOTA
NEGARA-BAGIAN
KODE-POS
4 MENIKAH
Pada record tersebut di atas, satuan data seperti NAMA BELAKANG ataupun KOTA
merupakan tipe data string, sedangkan data lain seperti GAJI POKOK, TUNJANGAN
JABATAN dan berbagai data yang akan diolah secara matematis akan disimpan dengan
tipe data numerik, bisa integer maupun real. Data MENIKAH bisa digunakan tipe data
boolean atau logikal.
Seperti telah kita paparkan terdahulu, array berbeda dengan record, yakni array
bersifat homogen (terdiri dari tipe data yang sama), dan komponen array tidak memiliki
nama sendiri, dan hanya diberi identifikasi oleh posisi mereka di dalam array. Penggunaan
keduanya di dalam program juga berbeda, jika penggunaan array pada umumnya akan
disimpan di memori utama komputer (bersifat sementara), sedangkan record biasanya
digunakan dalam filing yang akan disimpan di memori sekunder komputer, seperti hard
disk, disket, dan lainnya.
Sebuah record memberi informasi tentang berbagai kondisi dari obyek pada
permasalahan yang nyata sehari-hari. Setiap field memberi uraian tentang satu atribut dari
obyeknya. Sebuah record biasanya diberi identifikasi oleh key-nya. Key atau kunci adalah
salah satu atau lebih field yang dipilih untuk tujuan penyampaian informasi yang terjadi di
dalam record yang bersangkutan.
Koleksi dari record yang sama struktur fieldnya disebut suatu file atau berkas. Jadi,
koleksi dari record semua pegawai perusahaan membentuk sebuah file personalia. Pada
umumnya record disimpan membentuk file, dalam urutan sesuai dengan nilai dari key
masing-masing. Di dalam suatu file PERSONALIA, field NOMOR JAMINAN SOSIAL
dari seorang pegawai dapat digunakan sebagai key. Di dalam bahasa pemrograman tingkat
tinggi, record dapat dinyatakan sebagai struktur data (COBOL dan PL/1) dapat diadakan
spesifikasi tentang nama record, field dan subfield yang bersangkutan.
Record tersebut juga diberi nomor seperti diperlihatkan di dalam contoh di bawah ini.
Deklarasi berikut ini dapat digunakan untuk menuliskan record dari file PERSONALIA di
atas.
01 PEGAWAI
02 NOMOR-JAMINAN-SOSIAL
02 NAMA
03 NAMA-BELAKANG
03 NAMA-DEPAN
03 NAMA-TENGAH
02 ALAMAT
03 JALAN
04 NOMOR RUMAH
04 NAMA-JALAN
03 KOTA
03 NEGARA-BAGIAN
03 KODE-POS
02 MENIKAH
Langganan:
Postingan (Atom)






