Selasa, 12 April 2011

KETAHANAN NASIONAL

A. PENGERTIAN KETAHANAN NASIONAL

Ketahanan Nasional adalah suatu kondisi dinamis suatu bangsa yang terdiri atas ketangguhan serta keuletan dan kemampuan untuk mengembangkan kekuatan nasional dalam menghadapi segala macam dan bentuk ancaman, tantangan, hambatan dan gangguan baik yang datang dari dalam maupun luar, secara langsung maupun yang tidak langsung yang mengancam dan membahayakan integritas, identitas, kelangsungan hidup bangsa dan negara serta perjuangan dalam mewujudkan tujuan perjuangan nasional.

B. ASAS-ASAS KETAHANAN NASIONAL INDONESIA

1. Kesejahteraan dan keamanan

2. Komprehensif Integral (Menyeluruh Terpadu)

3. Mawas kedalam dan keluar

4. Kekeluargaan

C. SIFAT-SIFAT KETAHANAN NASIONAL

a. Mandiri, artinya ketahanan nasional bersifat percaya pada kemampuan dan kekuatan sendiri dengan keuletan dan ketangguhan yang mengandung prinsip tidak mudah menyerah serta bertumpu pada identitas, integritas, dan kepribadian bangsa.

Kemandirian ini merupakan prasyarat untuk menjalin kerja sama yang saling menguntungkan dalam perkembangan global.

b. Dinamis, artinya ketahanan nasional tidaklah tetap, melainkan dapat meningkat ataupun menurun bergantung pada situasi dan kondisi bangsa dan negara, serta kondisi lingkungan strategisnya.

Upaya peningkatan ketahanan nasional harus senantiasa diorientasikan ke masa depan dan dinamikanya di arahkan untuk pencapaian kondisi kehidupan nasional yang lebih baik.

c. Manunggal, artinya ketahanan nasional memiliki sifat integratif yang diartikan terwujudnya kesatuan dan perpaduan yang seimbang, serasi, dan selaras di antara seluruh aspek kehidupan bermasyarakat, berbangsa, dan bernegara.

d. Wibawa, artinya ketahanan nasional sebagai hasil pandangan yang bersifat manunggal dapat mewujudkan kewibawaan nasional yang akan diperhitungkan oleh pihak lain sehingga dapat menjadi daya tangkal suatu negara. Semakin tinggi daya tangkal suatu negara, semakin besar pula kewibawaannya.

e. Konsultasi dan kerjasama, artinya ketahanan nasional Indonesia tidak mengutamakan sikap konfrontatif dan antagonis, tidak mengandalkan kekuasaan dan kekuatan fisik semata, tetapi lebih pada sifat konsultatif dan kerjasama serta saling menghargai dengan mengandalkan pada kekuatan moral dan kepribadian bangsa.
D. Ciri-ciri ketahanan nasional

Merupakan kondisi sebagai prasyarat utama bagi negara berkembang Difokuskan untuk mempertahankan kelangsungan hidup dan mengembangkan kehidupan. Tidak hanya untuk pertahanan, tetapi juga untuk menghadapi dan mengatasi tantangan, ancaman, hambatan, dan gangguan, baik yang datang dari luar maupun dari dalam, baik secara langsung maupun tidak. Di dasarkan pada metode astagrata; seluruh aspek kehidupan nasional tercermin dalam sistematika astagarata yang terdiri atas 3 aspek alamiah (trigatra) yang meliputi geografi, kekayaan alam, dan kependudukan dan lima aspek sosial (pancagatra) yang meliputi ideologi, politik, ekonomi, sosial budaya, dan pertahanan keamanan. Berpedoman pada wawasan nasional; Wawasan nusantara merupakan cara pandang bangsa Indonesia terhadap diri dan lingkungannya berdasarkan Pancasila dan Undang Undang Dasar 1945. Wawasan nusantara juga merupakan sumber utama dan landasan yang kuat dalam menyelenggarakan kehidupan nasional sehingga wawasan nusantara dapat disebut sebagai wawasan nasional dan merupakan landasan ketahanan nasional.

1. Konsepsi Ketahanan Nasional
Konsepsi pengembangan kekuatan nasional melalui pengaturan dan penyelenggaraan kesejahteraan dan keamanan yang seimbang, serasi dan selaras dalam seluruh aspek kehidupan secara utuh dan terpadu berlandaskan Pancasila dan UUD 1945 dan wawasan nusantara dengan kata lain konsepsi ketahanan nasional merupakan pedoman untuk meningkatkan keuletan dan ketangguhan bangsa yang mengandung kemampuan mengembangkan kekuatan nasional dengan pendekatan kesejahteraan dan keamanan. Kesejahteraan dapat digambarkan sebagai kemampuan bangsa dalam menumbuhkan dan mengembangkan nilai-nilai nasionalnya demi sebesar-besarnya kemakmuran yang adil dan merata, rohaniah dan jasmaniah. Sedangkan keamanan adalah kemampuan bangsa melindungi nilai-nilai nasional terhadap ancaman dari luar maupun dari dalam..

 Aspek Ekonomi
Ketahanan Ekonomi diartikan sebagai kondisi dinamis kehidupan perekonomian bangsa yang berisi keuletan dan ketangguhan kekuatan nasional dalam menghadapi serta mengatasi segala tantangan, ancaman, hambatan dan gangguan yang datang dari luar maupun dari dalam secara langsung maupun tidak langsung untuk menjamin kelangsungan perekonomian bangsa dan negara berlandaskan Pancasila dan UUD 1945.





 Aspek Sosial Budaya
Ketahanan sosial budaya diartikan sebagai kondisi dinamis budaya Indonesia yang berisi keuletan dan ketangguhan kekuatan nasional dalam menghadapi serta mengatasi segala tantangan, ancaman, hambatan dan gangguan yang datang dari luar maupun dari dalam secara langsung maupun tidak langsung membahayakan kelangsungan kehidupan sosial budaya.

 Aspek Pertahanan dan Keamanan
Ketahanan pertahanan dan keamanan diartikan sebagai kondisi dinamis kehidupan pertahanan dan keamanan bangsa Indonesia mengandung keuletan, ketangguhan, dan kemampuan dalam mengembangkan, menghadapi dan mengatasi segala tantangan dan hambatan yang datang dari luar maupun dari dalam yang secara langsung maupun tidak langsung membahayakan identitas, integritas, dan kelangsungan hidup bangsa dan negara Kesatuan Republik Indonesia.

 Aspek Politik
Ketahanan pada aspek politik diartikan sebagai kondisi dinamis kehidupan politik bangsa Indonesia yang berisi keuletan dan ketangguhan kekuatan nasional dalam menghadapi serta mengatasi segala tantangan, ancaman, hambatan dan gangguan yang datang dari luar maupun dari dalam secara langsung maupun tidak langsung untuk menjamin kelangsungan kehidupan politik bangsa dan negara Republik Indonesia berdasar Pancasila dan UUD 1945.

 Aspek Ideologi
Dapat diartikan sebagai kondisi dinamis kehidupan ideologi bangsa Indonesia. Ketahanan ini diartikan mengandung keuletan dan ketangguhan kekuatan nasional dalam menghadapi serta mengatasi segala tantangan, ancaman, hambatan dan gangguan yang datang dari luar maupun dari dalam secara langsung maupun tidak langsung membahayakan kelangsungan kehidupan ideologi bangsa dan negara Indonesia.

2. Mewujudkan Keberhasilan Ketahanan Nasional

Aspek Ekonomi
Pencapaian tingkat ketahanan ekonomi memerlukan pembinaan sebagai berikut:
• Sistem ekonomi Indonesia diarahkan untuk dapat mewujudkan kemakmuran dan kesejahteraan yang adil dan merata di seluruh wilayah Nusantara melalui eknomi kerakyatan
• Ekonomi kerakyatan harus menghindari sistem free fight liberalism, etatisme, dan monopoli ekonomi
• Pembangunan ekonomi merupakan usaha bersama atas asas kekeluargaan
• Pemerataan pembangunan dan pemanfaatan hasilnya dengan memperhatikan keseimbangan dan keserasian pembangunan antarwilayah dan antar sektor.


Aspek Sosial Budaya
Untuk mewujudkan keberhasilan ketahanan sosial budaya warga negara Indonesia perlu:
• Kehidupan sosial budaya bangsa dan masyarkat Indonesia yang beriman dan bertakwa kepada Tuhan Yang Maha Esa, rukun, bersatu, cinta tanah air, maju, dan sejahtera dalam kehidupan yang serba selaras, serasi dan seimbang serta mampu menangkal penetrasi budaya asing yang tidak sesuai dengan kebudayaan nasional.

Aspek Pertahanan dan Keamanan

Mewujudkan kekuatan Hankam
Untuk mewujudkan keberhasilan Ketahanan Nasional setiap warga negara Indonesia perlu:
• Memiliki semangat perjuangan bangsa dalam bentuk perjuangan non fisik yang disertai keuletan dan ketangguhan tanpa kenal menyerah dan mampu mengembangkan kekuatan nasional dalam rangka menghadapi segala tantangan, ancaman, hambatan, dan gangguan yang datang dari luar maupun dari dalam untuk menjamin identitas, integritas, kelangsungan hidup bangsa dan negara serta pencapaian tujuan nasional.
• Sadar dan peduli akan pengaruh-pengaruh yang timbul pada aspek ideologi, politik, ekonomi, sosial budaya dan pertahanan keamanan.

Aspek Ilmu Pengetahuan
Untuk mecapai percepatan kemandirian dan kesejahteraan berbasis dukungan ilmu pengetahuan dan teknologi ( Iptek )
• Dilakukan lewat penguatan empat pilar knowledge based economy ( KBE ), yaitu :
- Sistem pendidikan
- Sisten inovasi
- Infrastruktur masyarakat informasi
- Kerangka kelembagaan, peraturan perundangan, dan ekonomi
• Perbaikan kualitas pelayanan kesehatan dan pendidikan
• Mewujudkan tumbuhnya masyarakat yang berbudaya iptek

Aspek Ideologi
Upaya memperkuat Ketahanan Ideologi memerulkan memerlukan langkah pembinaan berikut:
• Pengamalan pancasila secara obyektif dan subyektif
• Pancasila sebagai pandangan hidup bangsa dan negara Republik Indonesia
• Pendidikan moral Pancasila
• Sesanti Bhineka Tunggal Ika dan konsep Wawasan Nusantara bersumber dari Pancasila
Aspek Politik
Upaya mewujudkan ketahan pada aspek politik:

Politik Dalam Negeri
• Sistem pemerintahan yang berdasarkan hukum
• Mekanisme politik yang memungkinakan adanya perbedaan pendapat
• Terjalin komunikasi politik timbal balik antara pemerintah dan masyarakat

Politik Luar Negeri
• Hubungan luar negeri ditujukan untuk meningkatkan kerjasama interansional di berbagai bidang
• Politik luar negeri terus dikembangkan menurut prioritas dalam rangka meningkatkan persahabatan dan kerjasama antarnegara
• Peningkatan kualitas sumber daya manusia perlu dilaksanakan dengan pembenahan sistem pendidikan, pelatihan dan penyuluhan
• Perjuangan bangsa Indonesia yangf menyakut kepentingan nasional

Selasa, 29 Maret 2011

kota yang tidak disukai


Polusi udara di Jakarta adalah yang terparah di seluruh Indonesia, sampai-sampai sebagian warga Jakarta memberikan julukan "kota polusi" kepadanya. Munculnya julukan tersebut tentu bukan tanpa alasan sama sekali. Data-data di bawah ini bisa memberikan gambaran tentang parahnya polusi udara di Jakarta.

Pertama, dalam skala global, Jakarta adalah kota dengan tingkat polusi terburuk nomor 3 di dunia (setelah kota di Meksiko dan Thailand). Kedua, masih dalam skala global, kadar partikel debu (particulate matter) yang terkandung dalam udara Jakarta adalah yang tertinggi nomor 9 (yaitu 104 mikrogram per meter kubik) dari 111 kota dunia yang disurvei oleh Bank Dunia pada tahun 2004. Sebagai perbandingan, Uni Eropa menetapkan angka 50 mikrogram per meter kubik sebagai ambang batas tertinggi kadar partikel debu dalam udara. Ketiga, jumlah hari dengan kualitas tidak sehat di Jakarta semakin meningkat dari tahun ke tahun. Pada tahun 2002, Jakarta dinyatakan sehat selama 22 hari, sedangkan pada tahun 2003, Jakarta dinyatakan sehat hanya selama 7 hari. Lebih lanjut, berdasarkan penelitian Kelompok Kerja Udara Kaukus Lingkungan Hidup, pada tahun 2004 dan 2005, jumlah hari dengan kualitas udara terburuk di Jakarta jauh di bawah 50 hari. Namun pada tahun 2006, jumlahnya justru naik di atas 51 hari. Dengan kondisi seperti itu, tidak berlebihan jika Jakarta dijuluki "kota polusi" karena begitu keluar dari rumah, penduduk Jakarta akan langsung berhadapan dengan polusi.

Penyebab paling signifikan dari polusi udara di Jakarta adalah kendaraan bermotor yang menyumbang andil sebesar ±70 persen. Hal ini berkorelasi langsung dengan perbandingan antara jumlah kendaraan bermotor, jumlah penduduk dan luas wilayah DKI Jakarta. Berdasarkan data Komisi Kepolisian Indonesia, jumlah kendaraan bermotor yang terdaftar di DKI Jakarta (tidak termasuk kendaraan milik TNI dan Polri) pada bulan Juni 2009 adalah 9.993.867 kendaraan, sedangkan jumlah penduduk DKI Jakarta pada bulan Maret 2009 adalah 8.513.385 jiwa.

kota yang kusukai

Ada banyak kesenian tradisional di Jogjakarta atau Jawa. Berikut ini beberapa kesenian jawa tradisional Jawa, yang juga merupakan budaya Jawa.
WAYANG Tempat di Indonesia yang saya sukai
Daerah Istimewa Yogyakarta
Daerah Istimewa Yogyakarta (atau Jogja, Yogya, Yogyakarta, Jogjakarta dan seringkali disingkat DIY) adalah sebuah provinsi di Indonesia yang terletak di bagian selatan Pulau Jawa dan berbatasan dengan Provinsi Jawa Tengah di sebelah utara. Secara geografis Yogyakarta terletak di pulau Jawa bagian Tengah. Daerah tersebut terkena bencana gempa pada tanggal 27 Mei 2006 yang mengakibatkan 1,2 juta orang tidak memiliki rumah.
Provinsi DI. Yogyakarta memiliki lembaga pengawasan pelayanan umum bernama Ombudsman Daerah Yogyakarta yang dibentuk dengan Keputusan Gubernur DIY. Sri Sultan HB X pada tahun 2004.
KESENIAN YANG ADA DI YOGYAKARTA


Wayang dalam bentuk yang asli merupakan kreasi budaya orang Jawa yang berisi berbagai aspek kebudayaan Jawa. Wayang sudah ada jauh sebelum masuknya kebudayaan Hindu ke Indonesia. Pada jaman Neolitikum pertunjukan wayang awalnya terdiri atas upacara-upacara keagamaan yang berlangsung di malam hari untuk persembahan kepada “Hyang”. Pertunjukan wayang ceritanya menggambarkan jiwa kepahlawanan para nenek moyang yang ada dalam mitologi.
Pada masa sekarang pertunjukan wayang sudah sangat berbeda jika dibandingkan dengan pertunjukan yang sama dimasa lampau. Dahulu wayang digambarkan sesuai dengan wajah nenek moyang.
Orang Jawa gemar sekali menonton wayang karena ceritanya berisi pelajaran-pelajaran hidup yang sangat berguna yang dapat dijadikan pedoman dan tuntunan di dalam menjalani hidup di masyarakat. Berdasarkan cerita dan penyajian kira-kira ada 40 jenis wayang yang ada di Indonesia, diantaranya wayang beber, wayang klithik, wayang kulit, wayang krucil dan wayang thengul atau wayang golek. Pementasan wayang selalu diiringi dengan musik gamelan.


Makanan Khas Yogyakarta / Jogja


Bagi yang mencari jajanan ringan berupa makanan khas Yogyakarta untuk oleh-oleh, dapat dengan mudah mendapatkannya di sepanjang jalan Pathuk. Di sepanjang jalan ini akan ditemui penjual berbagai makanan khas, terutama Bakpia yang terkenal dengan sebutan Bakpia Pathuk.

Senin, 28 Maret 2011

GATRA

Pendekatan Asta Gatra
Pendekatan Asta Gatra yaitu sebuah pendekatan yang melihat kehidupan nasional sebagai sebuah sistem yang terdiri dari 8 (delapan) gatra yang saling mempengaruhi satu sama lain. Delapan gatra itu meliputi aspek alamiah (tri-gatra) dan aspek sosial (panca-gatra).
a. Aspek Alamiah (tri-gatra)
Aspek alamiah ketahanan nasional terdiri dari :
(1)Letak geografis negara
(2)Kekayaan alam
(3)Keadaan dan kemampuan penduduk
b. Aspek sosial (panca-gatra)
Aspek sosial ketahanan nasional terdiri dari :
(1) Ideologi
(2) Politik
(3) Ekonomi
(4) Sosial budaya
(5) Pertahanan dan keamanan
Sebagai insan berbudaya, manusia menjalin hubungan dengan tuhan dan alam sekitarnya dalam rangka mempertahankan kelangsungan hidupnya. Jalinan hubungan itu mewujud dalam berbagai aspek kehidupan, yaitu :
(1) Hubungan manusia dengan tuhan, mewujud dalam kehidupan beragama/kepercayaan.
(2) Hubungan manusia dengan cita-cita bersama, mewujud dalam kehidupan ideologi.
(3) Hubungan manusia dengan kekuasaan, mewujud dalam kehidupan politik
(4) Hubungan manusia dengan pemenuhan kebutuhan hidup, mewujud dalam kehidupan ekonomi.

aspek alamiah
kekayaan alam indonesia

Sebagai warga negara Indonesia kita harus bangga karena Indonesia memiliki banyak kelebihan jika dibandingkan dengan negara lain. Berikut ini 10 daftar rekor yang dimiliki oleh negara ini.
1. Republik Indonesia merupakan Negara kepulauan terbesar di dunia yang terdiri dari 17.504 pulau, termasuk 9.634 pulau yang belum diberi nama dan 6.000 pulau yang tidak berpenghuni.

Indonesia
2. Indonesia memiliki 3 dari 6 pulau terbesar didunia, yaitu Pulau Kalimantan (pulau terbesar ketiga di dunia dgn luas 539.460 km2), Pulau Sumatera (473.606 km2) dan Pulau Papua (421.981 km2)

Pulan Kecil
3. Indonesia adalah Negara maritim terbesar di dunia dengan perairan seluas 93 ribu km2 dan panjang pantai sekitar 81 ribu km2 atau hampir 25% panjang pantai di dunia.

INDONESIA SEXY

INDONESIA SEXY
Ke indahan alam yang ada di Indonesia.
Pulau Komodo, NTT

Taman Nasional Komodo (TN. Komodo) merupakan kawasan yang terdiri dari beberapa pulau dengan perairan lautnya. Pulau-pulau tersebut merupakan habitat satwa komodo (Varanus komodoensis) yaitu reptil purba yang tersisa di bumi. Kondisi alamnya unik, terdapat padang savana yang luas dengan pohon lontarnya (Borassus flabellifer).

Kepulauan Raja Ampat, Papua Barat

Kepulauan Raja Ampat merupakan kepulauan yang berada di barat pulau Papua di provinsi Papua Barat, tepatnya di bagian kepala burung Papua. Kepulauan ini merupakan tujuan penyelam-penyelam yang tertarik akan keindahan pemandangan

Kepulauan Raja Ampat, Papua Barat

Kepulauan Raja Ampat merupakan kepulauan yang berada di barat pulau Papua di provinsi Papua Barat, tepatnya di bagian kepala burung Papua. Kepulauan ini merupakan tujuan penyelam-penyelam yang tertarik akan keindahan pemandangan

Green Canyon, Jawa Barat


Green Canyon menyimpan pesona luar biasa. Perpaduan antara sungai, lembah hijau, hutan lindung, dan aneka stalaktit-stalakmit. Keindahan berbalut kesunyian, bagai surga yang tersembunyi. Green Canyon mulai dikembangkan pada tahun 1989.

Jumat, 11 Maret 2011

Stack ( Tumpukan )

Dalam ilmu komputer, stack atau tumpukan merupakan sebuah koleksi objek yang menggunakan prinsip LIFO (Last In First Out), yaitu data yang terakhr kali dimasukkan akan pertama kali keluar dari stack tersebut. Stack dapat diimplementasikan sebagai representasi berkait atau kontigu (dengan tabel fix).

Secara sederhana stack di artikan sebagai :
•sebagai tumpukan dari benda
•sekumpulan data yang seolah-olah diletakkan di atas data yang lain
•koleksi dari objek-objek homogen

Ciri Stack :
1. Elemen TOP (puncak) diketahui
2.penisipan dan penghapusan elemen selalu dilakukan di TOP
3 LIFO

Pemanfaatan Stack :
Perhitungan ekspresi aritmatika (posfix)
algoritma backtraking (runut balik)
algoritma rekursif.

Empat operasi dasar yang berlaku pada stack :
1. CREATE(stack)
2. ISEMPTY(stack)
3. PUSH(elemen, stack)
4. POP(stack)

1. CREATE
Adalah operator yang menunjukkan suatu stack kosong dengan nama S.
Jadi : NOEL(CREATE(S)) = 0
TOP(CREATE(S)) adalah TIDAK TERDEFINISI.

2. ISEMPTY
adalah operator yang menentukan apakah stack S kosong.
Operandnya terdiri dari type data stack. Hasilnya merupakan type data Boolean:
ISEMPTY(S) = True. Jika S hampa, yakni bila NOEL(S) = 0.

3. PUSH
adalah operator yang menambahkan elemen E pada puncak stack S.
Hasilnya merupakan stack yang lebih besar.
PUSH(E,S). E ditempatkan sebagai TOP(S).

4. POP(stack)
adalah operator yang menghapus sebuah elemen dari puncak stack S.
Hasilnya merupakan stack yang lebih kecil.
• POP(S) mengurangi NOEL(S)
• POP(CREATE(S)) → kondisi error
• POP(PUSH(E,S)) = S


CONTOH PEMANFAATAN STACK
• Notasi Infix Prefix
• Notasi Infix Postfix
Pemanfaatan stack antara lain untuk menulis ungkapan dengan menggunakan notasi tertentu.
Contoh :
( A + B ) * ( C – D )
Tanda kurung selalu digunakan dalam penulisan ungkapan numeris untuk mengelompokkan bagian mana yang akan dikerjakan terlebih dahulu.
Dari contoh ( A + B ) akan dikerjakan terlebih dahulu, kemudian baru ( C – D ) dan terakhir hasilnya akan dikalikan.
A + B * C – D
B * C akan dikerjakan terlebih dahulu, hasil yang didapat akan berbeda dengan hasil notasi dengan tanda kurung.
Notasi Infix Prefix
Cara penulisan ungkapan yaitu dengan menggunakan notasi infix, yang artinya operator ditulis diantara 2 operator.
Seorang ahli matematika bernama Jan Lukasiewiccz mengembangkan suatu cara penulisan ungkapan numeris yang disebut prefix, yang artinya operator ditulis sebelum kedua operand yang akan disajikan.
Contoh :
Proses konversi
dari infix ke prefix :
= ( A + B ) * ( C – D )
= [ + A B ] * [ - C D ]
= * [ + A B ] [ - C D ]
= *+AB – C D
Penggunaan notasi postfix dalam stack, misal :
2 14 + 5 * = 80

Senin, 28 Februari 2011

aray dan record

ARRAY (LARIK) DAN RECORD
ARRAY
Salah satu struktur data yang teramat penting adalah array atau larik. 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, dapat kita bayangkan
berbentuk seperti Gambar 2.1.
Nilai(1) Nilai(2) Nilai(3) - - - Nilai(n)
Gambar 2.1. Array berdimensi satu

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. Kadangkadang
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. Kalau hal tersebut kita gambarkan, akan terbentuk
baris dan kolom.

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
adalah notasi * (asterisk) bagi subscript yang berubah-ubah nilainya tersebut.
Contohnya, penulisan B(*,4) menyatakan semua elemen pada kolom ke-4, yakni
(B(1,4),B(2,4), B(3,4) ...., B(M,4)).
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) menyatakan jumlah mahasiswa tingkat 4, wanita, dari perguruan tinggi ke
17.


MENDEKLARASIKAN 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) = ARRAY1(I,K)* ARRAY2(K,J)
NEXT K

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


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.

Skema seperti di atas digunakan dalam COBOL, Pascal ataupun PL/1.
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

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 XX 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


SPARSE ARRAY (ARRAY JARANG)

Suatu array yang sangat banyak elemen nolnya, dikenal sebagai sparse array, contohnya
adalah array A pada Gambar 2-11 :
0 0 0 0 1 0 0 2 0 0
0 1 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 4 0 0 0 0 0 0
0 0 0 0 0 0 0 2 0 0
0 0 0 0 0 0 0 0 0 0
2 1 0 0 0 0 0 0 0 0
Gambar 2-11. Sparse array A
Array hanya mempunyai 8 elemen yang bukan 0 dari 80 elemen yang ada. Kadangkadang
ada array berorder 1000 x 1000, yang hanya mengandung 1500 elemen bukan 0.
Tentu saja akan sangat menguntungkan apabila kita cukup menyimpan elemen yang bukan
0 saja.

Ada dua alternatif yang dapat kita lakukan. Masing-masing elemen yang bukan 0 pada
array berdimensi dua kita simpan sebagai tripel, dengan bentuk :
(subscript baris, subscript kolom, nilai elemen)
Tripel tersebut kita simpan sebagai vektor.

Apabila sparse array tersebut adalah array berdimensi satu, maka masing-masing
elemen <> 0 dinyatakan dalam pasangan. Secara umum untuk array berdimensi N, elemen
<> 0 dinyatakan dengan tripel-N. Operasi terhadap vektor memperhatikan informasi
tentang baris dan kolom.

Kekurangan dari penyajian ini adalah bila dilakukan updating. Elemen array yang
tadinya <> 0, diubah menjadi 0 atau sebaliknya, yang tadinya 0 sekarang menjadi <> 0,
menimbulkan kesulitan. Urutan dari vektor perlu diperbaiki. Misalnya elemen dengan
subscript (1,8) diupdate nilainya menjadi bernilai 0, maka vektor V(3) hingga V(8)
berubah urutannya sebagai vektor V(2) hingga V(7).

Juga misalnya elemen bersubcript (4,6) diupdate sehingga bernilai 7, maka vektor
V(5) hingga V(8) berubah menjadi V(6) hingga V(9), sedangkan V(5) diisi oleh tripel
(4,6,7). Penyajian yang lain dari sparse array adalah menggunakan daftar berkait atau
linked list. Hal ini akan dibicarakan khusus dalam bab mengenai Linked List.


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
dan sebagainya lagi.

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 homo