Jumat, 25 Februari 2011

ARRAY DAN RECORD

Pengantar Struktur Data Bab 2 – Array & Record
30
ARRAY (LARIK) DAN RECORD
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.
Pengantar Struktur Data Bab 2 – Array & Record
31
2.1 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.
2.2 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 seperti terlihat pada Gambar 2.2.
1 2 N
1
2
M
Gambar 2.2. Array berdimensi dua
Pengantar Struktur Data Bab 2 – Array & Record
32
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)), seperti terlihat pada Gambar 2.3
Gambar 2.3. Cross section array
Pengantar Struktur Data Bab 2 – Array & Record
33
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) menyatakan jumlah mahasiswa tingkat 4, wanita, dari perguruan tinggi ke
17.
Array dimensi tiga dapat kita bayangkan seperti Gambar 2.4.
1
2
3
4
5
1 2 1
2
Tingkat 20
Jenis Kelamin
Perguruan Tinggi
Gambar 2.4. Array berdimensi tiga
Pengantar Struktur Data Bab 2 – Array & Record
34
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.
2.3 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 :
Pengantar Struktur Data Bab 2 – Array & Record
35
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.
Pengantar Struktur Data Bab 2 – Array & Record
36
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
2.4 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
Pengantar Struktur Data Bab 2 – Array & Record
37
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
2.5 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.
Sebagai contoh, array yang dideklarasikan sebagai RATE(1:4,1:6), yang secara logika
tergambar sebagai pada Gambar 2.5 dan secara fisik tergambar pada Gambar 2.6.
1 2 3 4 5 6
1
2
3
4
Gambar 2.5. Array RATE secara logik dalam row major order
RATE (2,4)
Pengantar Struktur Data Bab 2 – Array & Record
38
RATE (2,4)
Baris 1 Baris 2 Baris 3 Baris 4
Gambar 2.6 Array RATE secara fisik dalam 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
Untuk lebih jelasnya, kita lihat array Z(-2:2, 4:6) yang dapat digambarkan pada Gambar
2.7 secara logik dan secara fisik dapat digambarkan pada Gambar 2.8.
4 5 6
-2
-1
0
1
2
Gambar 2.7. Array Z (-2:2, 4:6) secara logik dalam row major order
Z (0,6)
Pengantar Struktur Data Bab 2 – Array & Record
39
Z (0,6)
baris -2 baris -1 baris 0 baris 1 baris 2
Gambar 2.8. Array Z(-2:2,4:6) secara fisik dalam row major order
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. Array RATE pada contoh di atas terlihat
secara fisik dalam column major order seperti pada Gambar 2.9.
RATE (2,4)
Kolom 1 Kolom 2 Kolom 3 Kolom 4 Kolom 5 Kolom 6
Gambar 2.9. Array RATE secara fisik dalam column major order
Skema seperti ini biasa digunakan dalam FORTRAN.
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
Pengantar Struktur Data Bab 2 – Array & Record
40
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];
2.6 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
Pengantar Struktur Data Bab 2 – Array & Record
41
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
Pengantar Struktur Data Bab 2 – Array & Record
42
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
Pengantar Struktur Data Bab 2 – Array & Record
43
2.7 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.
Sebagai contoh, array pada Gambar 2.11 dapat kita sajikan seperti pada Tabel 2.1
Tabel 2.1 Array A disimpan sebagai tripel
Baris Kolom Nilai
V(I)
V(2)
V(3)
V(4)
V(5)
V(6)
V(7)
V(8)
i
1
2
3
5
6
8
8
5
8
2
1
4
8
1
2
1
2
1
1
4
2
2
1
Pengantar Struktur Data Bab 2 – Array & Record
44
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.
2.8 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 :
dan sebagainya lagi.
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
Pengantar Struktur Data Bab 2 – Array & Record
45
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
Pengantar Struktur Data Bab 2 – Array & Record
46
(yang harus dilengkapi dengan Picture masing-masing field dan subfield)
Record tersebut dinyatakan di dalam memori sebagai berikut :
NOMOR
JAM-SOS
NAMA
BLK.
NAMA
DEPAN
NAMA
TENG.
NOMOR
RUMAH
NAMA
JALAN KOTA
NEG.
BAGIAN
KODE
POS
MENIKAH
Secara fisik, field record tersebut biasanya disimpan berurutan di dalam lokasi storage,
bahkan sering disatukan. Record biasanya disimpan sebagai file di dalam storage
pembantu, dan jika perlu, sebagian disimpan di dalam memori utama. File merupakan
organisasi data utama di dalam proses pengolahan informasi.
Sebagai gambaran sederhana, pandang sebuah tabel dengan sejumlah baris dan kolom.
Tabel tersebut dapat disebut sebagai sebuah file, sedangkan setiap baris dari tabel tersebut
disebut dengan record, dan setiap kolom dari tabel disebut dengan field.
Tabel 2.2 Contoh sebuah file TEMAN
NPM NAMA ALM_TEMAN NO_TELP
10102456 Cheriwaty Jl. Puspa No. 30, Keb. Baru 7750658
10102587 Tia Siti Joy Jl. Veteran No. 38, Tebet 8652541
10102965 Yekti Sartanto Jl. Mampang No. 29, Jaksel 78956215
field field field field
record
record
record
Pembahasan mendalam tentang file akan dibahas di mata kuliah-mata kuliah yang
memiliki sub-bahasan mengenai pengorganisasian dan pengaksesan file, perancangan
sistem, perancangan data base, dan sejenisnya.
Pengantar Struktur Data Bab 2 – Array & Record
47
L A T I H A N 2
1. Apa yang dimaksud dengan istilah (a) lower bound, upper bound, dan (c) crosssection
dalam suatu array ?
2. Jelaskan cara mendeklarasikan variabel array di bahasa pemrograman (a) Pascal (b)
BASIC, dan (c) COBOL ?
3. Beda array dengan record adalah, isi dari variabel array harus bersifat (a) homogen
atau (b) heterogen. Jelaskan apa maksud dari homogen dan heterogen tersebut.
4. Kita memiliki matriks M berukuran 200 X 300 yang akan kita simpan ke dalam
memori komputer. Jika elemen awal matriks M(1,1) disimpan di alamat 1000 dan
setiap elemen membutuhkan 8 byte, di alamat mana awal disimpannya elemen
M(191, 280) ? Gunakan perhitungan secara (a) row major order dan (b) colomn
major order.
5. Apa yang dimaksud dengan istilah (a) tringular array, (b) upper tringular, (c) lower
triangular, dan (d) sparse dalam array ?
6. Jelaskan cara untuk menghemat ruang memori untuk menyimpan matriks yang
bersifat sparse array.
7. Berapa jumlah minimal record di dalam sebuah file ?
8. Pada umumnya, file data digunakan untuk menyimpan data apa ?
9. Buatlah program dengan memanfaatkan array untuk menghitung 100 buah padanan
suhu dari Celcius ke Fahrenheit dan Reamur.

Senin, 21 Februari 2011

TUGAS STRUKTUR DATA DAN TIPE DATA


TENTANG STRUKTUR DATA 

Struktur Data adalah cara penyimpanan, penyusunan dan pengaturan data di dalam media penyimpanan komputer sehingga data tersebut dapat digunakan secara efisien. struktur data berarti tata letak data yang berisi kolom-kolom data, baik itu kolom yang tampak oleh pengguna (user) atau pun kolom yang hanya digunakan untuk keperluan pemrograman yang tidak tampak oleh pengguna. Setiap baris dari kumpulan kolom-kolom tersebut dinamakan catatan (record). Lebar kolom untuk data dapat berubah dan bervariasi. Ada kolom yang lebarnya berubah secara dinamis sesuai masukan dari pengguna, dan juga ada kolom yang lebarnya tetap. Dengan sifatnya ini, sebuah struktur data dapat diterapkan untuk pengolahan database (misalnya untuk keperluan data keuangan) atau untuk pengolah kata (word processor) yang kolomnya berubah secara dinamis.

TENTANG TIPE DATA

                                                                 a. Integer ( Bilangan Bulat )
Integer merupakan nilai bilangan bulat baik dalam bentuk desimal maupun hexadecimal. Tipe data numerik yang termasuk integer adalah sebagai berikut :
- Byte : Memiliki nilai integer dari -128 sampai +127 dan menempati 1 byte ( 8 bits ) di memori
- Short : Memiliki nilai integer dari -32768 sampai 32767 dan menempati 2 bytes ( 16 bits ) di memori
- Int : Memiliki nilai integer dari -2147483648 sampai 2147483647 dan menempati 4 bytes ( 32 bits ) di memori
-Long : Memiliki nilai dari -9223372036854775808 sampai 9223372036854775807 dan menempati 8 bytes ( 64 bits ) di memori.

                                                                b. Char
Char adalah karakter tunggal yang didefinisikan dengan diawali dan diakhiri dengan tanda ‘ ( petik tunggal ).

                                                                c. String
Merupakan urutan-urutan dari karakter yang terletak di antara tanda petik tunggal. Nilai data string akan menempati memori sebesar banyaknya karakter string ditambah dengan 1 byte. Bila panjang dari suatu string di dalam deklarasi variabel tidak disebutkan, maka dianggap panjangnya adalah 255 karakter.

                                                               d. Real
Nilai konstanta numeric real berkisar dari 1E-38 sampai 1E+38. E menunjukkan nilai 10 pangkat, dan tipe data ini menempati memori sebesar6 byte.

                                                               e. Boolean
Tipe data boolean terdiri dari dua nilai saja, yaitu true dan false. Boolean sangat penting dalam mengevaluasi suatu kondisi, dan sering digunakan untuk menentukan alur program.

Kamis, 17 Februari 2011

TUGAS APLIKASI WEB

1. Yahoo Email
Fungsinya dari yahoo messanger Penggunaannya lebih mudah, seperti pada Outlook Express. Untuk melihat isi email, kita tinggal klik pada judul email, maka isi email akan muncul pada bagian bawah. Untuk memindah email antar folder kita tinggal drag & drop, pokoknya jadi kaya Windows.
2. Ebuddy
Fungsi dari ebuddy merupakan versi Yahoo Messenger berbasis web. Kita bisa chating seperti di Yahoo Messenger , tanpa harus menginstal Yahoo Messenger. Ketika kita login, maka contact kita yang sudah ada di YM juga sudah ada.
 3. Google Map
Fungsi dari google map :Website ini menyediakan peta dunia secara online. Kita bisa explore ke setiap penjuru dunia. Karena menggunakanAja, maka yang hanya petanya saja yang akan berubah ketika melakukan zoom.
4. Google Docs
Aplikasi ini merupakan versi web untuk Microsoft Word meskipun fitur-fiturnya tidak selengkap Microsoft Word. Keunggulan aplikasi ini adalah adanya fasilitas untuk berkolborasi dengan user untuk sama-sama mengedit suatu dokumen.



Tugas Pendidikan Kewarganegaraan

                                                       DEMOKRASI


Demokratisasi adalah suatu perubahan baik itu perlahan maupaun secara cepat kearah demokrasi. Demokratisasi ini menjadi tuntutan global yang tidak bisa dihentikan. Jika demokratisasi tidak dilakukan, maka bayaran yang harus diterima adalah balkanisasi, perang saudara yang menumpahkan darah, dan kemunduran ekonomi dengan sangat parah (BJ Habibie 2005).

Demokratisai disuatu system pemerintahan memerlukan proses yang tidaklah mudah. Pada saat perubahan terjadi, selalu ada orang yang tidak ingin melakukan perubahan terus menerus, atau ada manusia yang tidak mampu menyesuaikan diri.Dalam kontes demokratisasi, peran individu yang mampu menerima perubahan itu sangat penting. Untuk itulah, individu harus punya tanggung jawab. Apalagi globalisasi yang terus mendorong perubahan yagn tidak bisa ditahan oleh Negara manapun.
Demokratisasi biasanya terjadi ketika ekspektasi terhadap demokrasi muncul dari dalam Negara sendiri, karna warga negaranya melihat system politik yang lebih baik, seperti yang berjalan dinegara demokrasi lain yang telah mapan, akan bisa juga dicapai oleh Negara tersebut. Dengan kata lain, pengaruh internasional dating sebagai sebuah inpirasi yang kuat bagi warga Negara didalam Negara itu.
Sebuah Negara yang sedang menjalani demokratisasi sangat mudah dipengaruhi oleh factor – factor eksternal. Pengaruh internasional dari sebuah proses demokratisasi bisa terjadi dalam beberapa bentuk, seperti : contagion, control dan conditionality.
Contagion terjadi ketika demokratisasi disebuah Negara mendorong gelombang demokratisasi dinegara lain. Proses demokratisasi di Negara – Negara eropa timur setelah perang dingin usai dan juga gelombang demokratisasi dinegara – Negara amerika latin pada tahun 1970 an menajdi contoh signifikan.
Mekanisme control terjadi ketika sebuah pihak diluar Negara berusaha menerapkan demokrasi dinegara tersebut. Misalnya Doktrin Truman 1947 mengharuskan yunani untuk memenuhi beberapa kondisi untuk mendapatkan status sebagai “Negara demokrasi” dan karenanya berhak menerima bantuan anti komunisme dari amerika serikat.
Conditionality yaitu tindakan yang dilakukan organisasi internasional yang memberi kondisi – kondisi tertentu yang harus dipenuhi Negara penerima bantuan.






                                               HAK ASASI MANUSIA 


Hak asasi manusia adalah hak dasar yang dimiliki manusia sejak manusia itu dilahirkan. Hak asasi dapat dirumuskan sebagai hak yang melekat dengan kodrat kita sebagai manusia yang bila tidak ada hak tersebut, mustahil kita dapat hidup sebagai manusia. Hak ini dimiliki oleh manusia semata – mata karena ia manusia, bukan karena pemberian masyarakat atau pemberian negara. Maka hak asasi manusia itu tidak tergantung dari pengakuan manusia lain, masyarakat lain, atau Negara lain. Hak asasi diperoleh manusia dari Penciptanya, yaitu Tuhan Yang Maha Esa dan merupakan hak yang tidak dapat diabaikan.
Sebagai manusia, ia makhluk Tuhan yang mempunyai martabat yang tinggi. Hak asasi manusia ada dan melekat pada setiap manusia. Oleh karena itu, bersifat universal, artinya berlaku di mana saja dan untuk siapa saja dan tidak dapat diambil oleh siapapun. Hak ini dibutuhkan manusia selain untuk melindungi diri dan martabat kemanusiaanya juga digunakan sebagai landasan moral dalam bergaul atau berhubungan dengan sesama manusia.
Pada setiap hak melekat kewajiban. Karena itu,selain ada hak asasi manusia, ada juga kewajiban asasi manusia, yaitu kewajiban yang harus dilaksanakan demi terlaksana atau tegaknya hak asasi manusia (HAM). Dalam menggunakan Hak Asasi Manusia, kita wajib untuk memperhatikan, menghormati, dan menghargai hak asasi yang juga dimiliki oleh orang lain.
Kesadaran akan hak asasi manusia , harga diri , harkat dan martabat kemanusiaannya, diawali sejak manusia ada di muka bumi. Hal itu disebabkan oleh hak – hak kemanusiaan yang sudah ada sejak manusia itu dilahirkan dan merupakan hak kodrati yang melekat pada diri manusia. Sejarah mencatat berbagai peristiwa besar di dunia ini sebagai suatu usaha untuk menegakkan hak asasi manusia.
Sebelum dibahas lebih mendalam mengenai hak asasi manusia di Indonesia, terlebih dahulu kita membahas sekelumit sejarah perkembangan dan perumusan hak asasi manusia di Dunia. Perkembangan atas pengakuan hak asasi manusia ini berjalan secara perlahan dan beraneka ragam. Perkembangan tersebut antara lain dapat ditelusuri sebagai berikut.

1. Hak Asasi Manusia di Yunani
Filosof Yunani, seperti Socrates (470-399 SM) dan Plato (428-348 SM) meletakkan dasar bagi perlindungan dan jaminan diakuinya hak – hak asasi manusia. Konsepsinya menganjurkan masyarakat untuk melakukan sosial kontrol kepada penguasa yang zalim dan tidak mengakui nilai – nilai keadilan dan kebenaran. Aristoteles (348-322 SM) mengajarkan pemerintah harus mendasarkan kekuasaannya pada kemauan dan kehendak warga negaranya.

2. Hak Asasi Manusia di Inggris
Inggris sering disebut–sebut sebagai negara pertama di dunia yang memperjuangkan hak asasi manusia. Tonggak pertama bagi kemenangan hak-hak asasi terjadi di Inggris. Perjuangan tersebut tampak dengan adanya berbagai dokumen kenegaraan yang berhasil disusun dan disahkan. Dokumen-dokumen tersebut adalah sebagai berikut :
ü MAGNA CHARTA
Pada awal abad XII Raja Richard yang dikenal adil dan bijaksana telah diganti oleh Raja John Lackland yang bertindak sewenang–wenang terhadap rakyat dan para bangsawan. Tindakan sewenang-wenang Raja John tersebut mengakibatkan rasa tidak puas dari para bangsawan yang akhirnya berhasil mengajak Raja John untuk membuat suatu perjanjian yang disebut Magna Charta atau Piagam Agung.
Magna Charta dicetuskan pada 15 Juni 1215 yang prinsip dasarnya memuat pembatasan kekuasaan raja dan hak asasi manusia lebih penting daripada kedaulatan raja. Tak seorang pun dari warga negara merdeka dapat ditahan atau dirampas harta kekayaannya atau diasingkan atau dengan cara apapun dirampas hak-haknya, kecuali berdasarkan pertimbangan hukum. Piagam Magna Charta itu menandakan kemenangan telah diraih sebab hak-hak tertentu yang prinsip telah diakui dan dijamin oleh pemerintah. Piagam tersebut menjadi lambang munculnya perlindungan terhadap hak-hak asasi karena ia mengajarkan bahwa hukum dan undang-undang derajatnya lebih tinggi daripada kekuasaan raja.
Isi Magna Charta adalah sebagai berikut :
Ø Raja beserta keturunannya berjanji akan menghormati kemerdekaan, hak, dan kebebasan Gereja Inggris.
Ø Raja berjanji kepada penduduk kerajaan yang bebas untuk memberikan hak-hak sebagi berikut :
à Para petugas keamanan dan pemungut pajak akan menghormati hak-hak penduduk.
à Polisi ataupun jaksa tidak dapat menuntut seseorang tanpa bukti dan saksi yang sah.
à Seseorang yang bukan budak tidak akan ditahan, ditangkap, dinyatakan bersalah tanpa perlindungan negara dan tanpa alasan hukum sebagai dasar tindakannya.
à Apabila seseorang tanpa perlindungan hukum sudah terlanjur ditahan, raja berjanji akan mengoreksi kesalahannya.
ü PETITION OF RIGHTS
Pada dasarnya Petition of Rights berisi pertanyaan-pertanyaan mengenai hak-hak rakyat beserta jaminannya. Petisi ini diajukan oleh para bangsawan kepada raja di depan parlemen pada tahun 1628. Isinya secara garis besar menuntut hak-hak sebagai berikut :
Ø Pajak dan pungutan istimewa harus disertai persetujuan.
Ø Warga negara tidak boleh dipaksakan menerima tentara di rumahnya.
Ø Tentara tidak boleh menggunakan hukum perang dalam keadaan damai.


ü HOBEAS CORPUS ACT
Hobeas Corpus Act adalah undang- undang yang mengatur tentang penahanan seseorang dibuat pada tahun 1679. Isinya adalah sebagai berikut :
Ø Seseorang yang ditahan segera diperiksa dalam waktu 2 hari setelah penahanan.
Ø Alasan penahanan seseorang harus disertai bukti yang sah menurut hukum.
ü BILL OF RIGHTS
Bill of Rights merupakan undang-undang yang dicetuskan tahun 1689 dan diterima parlemen Inggris, yang isinya mengatur tentang :
Ø Kebebasan dalam pemilihan anggota parlemen.
Ø Kebebasan berbicara dan mengeluarkan pendapat.
Ø Pajak, undang-undang dan pembentukan tentara tetap harus seizin parlemen.
Ø Hak warga Negara untuk memeluk agama menurut kepercayaan masing-masing .
Ø Parlemen berhak untuk mengubah keputusan raja.

3. Hak Asasi Manusia di Amerika Serikat
Pemikiran filsuf John Locke (1632-1704) yang merumuskan hak-hak alam,seperti hak atas hidup, kebebasan, dan milik (life, liberty, and property) mengilhami sekaligus menjadi pegangan bagi rakyat Amerika sewaktu memberontak melawan penguasa Inggris pada tahun 1776. Pemikiran John Locke mengenai hak – hak dasar ini terlihat jelas dalam Deklarasi Kemerdekaan Amerika Serikat yang dikenal dengan DECLARATION OF INDEPENDENCE OF THE UNITED STATES.
Revolusi Amerika dengan Declaration of Independence-nya tanggal 4 Juli 1776, suatu deklarasi kemerdekaan yang diumumkan secara aklamasi oleh 13 negara bagian, merupakan pula piagam hak – hak asasi manusia karena mengandung pernyataan “Bahwa sesungguhnya semua bangsa diciptakan sama derajat oleh Maha Pencipta. Bahwa semua manusia dianugerahi oleh Penciptanya hak hidup, kemerdekaan, dan kebebasan untuk menikmati kebhagiaan.
John Locke menggambarkan keadaan status naturalis, ketika manusia telah memiliki hak-hak dasar secara perorangan. Dalam keadaan bersama-sama, hidup lebih maju seperti yang disebut dengan status civilis, locke berpendapat bahwa manusia yang berkedudukan sebagai warga negara hak-hak dasarnya dilindungi oleh negara.
Declaration of Independence di Amerika Serikat menempatkan Amerika sebagai negara yang memberi perlindungan dan jaminan hak-hak asasi manusia dalam konstitusinya, kendatipun secara resmi rakyat Perancis sudah lebih dulu memulainya sejak masa Rousseau. Kesemuanya atas jasa presiden Thomas Jefferson presiden Amerika Serikat lainnya yang terkenal sebagai “pendekar” hak asasi manusia adalah Abraham Lincoln, kemudian Woodrow Wilson dan Jimmy Carter.
Amanat Presiden Flanklin D. Roosevelt tentang “empat kebebasan” yang diucapkannya di depan Kongres Amerika Serikat tanggal 6 Januari 1941 yakni :
ü Kebebasan untuk berbicara dan melahirkan pikiran (freedom of speech and expression).
ü Kebebasan memilih agama sesuai dengan keyakinan dan kepercayaannya (freedom of religion).
ü Kebebasan dari rasa takut (freedom from fear).
ü Kebebasan dari kekurangan dan kelaparan (freedom from want).
Kebebasan- kebebasan tersebut dimaksudkan sebagai kebalikan dari kekejaman dan penindasan melawan fasisme di bawah totalitarisme Hitler (Jerman), Jepang, dan Italia. Kebebasan – kebebasan tersebut juga merupakan hak (kebebasan) bagi umat manusia untuk mencapai perdamaian dan kemerdekaan yang abadi. Empat kebebasan Roosevelt ini pada hakikatnya merupakan tiang penyangga hak-hak asasi manusia yang paling pokok dan mendasar.

4. Hak Asasi Manusia di Prancis
Perjuangan hak asasi manusia di Prancis dirumuskan dalam suatu naskah pada awal Revolusi Prancis. Perjuangan itu dilakukan untuk melawan kesewenang-wenangan rezim lama. Naskah tersebut dikenal dengan DECLARATION DES DROITS DE L’HOMME ET DU CITOYEN yaitu pernyataan mengenai hak-hak manusia dan warga negara. Pernyataan yang dicetuskan pada tahun 1789 ini mencanangkan hak atas kebebasan, kesamaan, dan persaudaraan atau kesetiakawanan (liberte, egalite, fraternite).
Lafayette merupakan pelopor penegakan hak asasi manusia masyarakat Prancis yang berada di Amerika ketika Revolusi Amerika meletus dan mengakibatkan tersusunnya Declaration des Droits de I’homme et du Citoyen. Kemudian di tahun 1791, semua hak-hak asasi manusia dicantumkan seluruhnya di dalam konstitusi Prancis yang kemudian ditambah dan diperluas lagi pada tahun 1793 dan 1848. Juga dalam konstitusi tahun 1793 dan 1795. revolusi ini diprakarsai pemikir – pemikir besar seperti : J.J. Rousseau, Voltaire, serta Montesquieu. Hak Asasi yang tersimpul dalam deklarasi itu antara lain :
1) Manusia dilahirkan merdeka dan tetap merdeka.
2) Manusia mempunyai hak yang sama.
3) Manusia merdeka berbuat sesuatu tanpa merugikan pihak lain.
4) Warga Negara mempunyai hak yang sama dan mempunyai kedudukan serta pekerjaan umum.
5) Manusia tidak boleh dituduh dan ditangkap selain menurut undang-undang.
6) Manusia mempunai kemerdekaan agama dan kepercayaan.
7) Manusia merdeka mengeluarkan pikiran.
    Adanya kemerdekaan surat kabar.
9) Adanya kemerdekaan bersatu dan berapat.
10) Adanya kemerdekaan berserikat dan berkumpul.
11) Adanya kemerdekaan bekerja,berdagang, dan melaksanakan kerajinan.
12) Adanya kemerdekaan rumah tangga.
13) Adanya kemerdekaan hak milik.
14) Adanya kemedekaan lalu lintas.
15) Adanya hak hidup dan mencari nafkah.


5. Hak Asasi Manusia oleh PBB
Setelah perang dunia kedua, mulai tahun 1946, disusunlah rancangan piagam hak-hak asasi manusia oleh organisasi kerja sama untuk sosial ekonomi Perserikatan Bangsa-Bangsa yang terdiri dari 18 anggota. PBB membentuk komisi hak asasi manusia (commission of human right). Sidangnya dimulai pada bulan januari 1947 di bawah pimpinan Ny. Eleanor Rossevelt. Baru 2 tahun kemudian, tanggal 10 Desember 1948 Sidang Umum PBB yang diselenggarakan di Istana Chaillot, Paris menerima baik hasil kerja panitia tersebut. Karya itu berupa UNIVERSAL DECLARATION OF HUMAN RIGHTS atau Pernyataan Sedunia tentang Hak – Hak Asasi Manusia, yang terdiri dari 30 pasal. Dari 58 Negara yang terwakil dalam sidang umum tersebut, 48 negara menyatakan persetujuannya, 8 negara abstain, dan 2 negara lainnya absen. Oleh karena itu, setiap tanggal 10 Desember diperingati sebagai hari Hak Asasi Manusia.
Universal Declaration of Human Rights antara lain mencantumkan, Bahwa setiap orang mempunyai Hak :
ü Hidup
ü Kemerdekaan dan keamanan badan
ü Diakui kepribadiannya
ü Memperoleh pengakuan yang sama dengan orang lain menurut hukum untuk mendapat jaminan hokum dalam perkara pidana, seperti diperiksa di muka umum, dianggap tidak bersalah kecuali ada bukti yang sah
ü Masuk dan keluar wilayah suatu Negara
ü Mendapatkan asylum
ü Mendapatkan suatu kebangsaan
ü Mendapatkan hak milik atas benda
ü Bebas mengutarakan pikiran dan perasaan
ü Bebas memeluk agama
ü Mengeluarkan pendapat
ü Berapat dan berkumpul
ü Mendapat jaminan sosial
ü Mendapatkan pekerjaan
ü Berdagang
ü Mendapatkan pendidikan
ü Turut serta dalam gerakan kebudayaan dalam masyarakat
ü Menikmati kesenian dan turut serta dalam kemajuan keilmuan
Majelis umum memproklamirkan Pernyataan Sedunia tentang Hak Asasi Manusia itu sebagai tolak ukur umum hasil usaha sebagai rakyat dan bangsa dan menyerukan semua anggota dan semua bangsa agar memajukan dan menjamin pengakuan dan pematuhan hak-hak dan kebebasan- kebebasan yang termasuk dalam pernyataan tersebut. Meskipun bukan merupakan perjanjian, namun semua anggota PBB secara moral berkewajiban menerapkannya.


6. Hak Asasi Manusia di Indonesia
Hak Asasi Manusia di Indonesia bersumber dan bermuara pada pancasila. Yang artinya Hak Asasi Manusia mendapat jaminan kuat dari falsafah bangsa, yakni Pancasila. Bermuara pada Pancasila dimaksudkan bahwa pelaksanaan hak asasi manusia tersebut harus memperhatikan garis-garis yang telah ditentukan dalam ketentuan falsafah Pancasila. Bagi bangsa Indonesia, melaksanakan hak asasi manusia bukan berarti melaksanakan dengan sebebas-bebasnya, melainkan harus memperhatikan ketentuan-ketentuan yang terkandung dalam pandangan hidup bangsa Indonesia, yaitu Pancasila. Hal ini disebabkan pada dasarnya memang tidak ada hak yang dapat dilaksanakan secara multak tanpa memperhatikan hak orang lain.
Setiap hak akan dibatasi oleh hak orang lain. Jika dalam melaksanakan hak, kita tidak memperhatikan hak orang lain,maka yang terjadi adalah benturan hak atau kepentingan dalam hidup bermasyarakat, berbangsa, dan bernegara
Negara Republik Indonesia mengakui dan menjunjung tinggi hak asasi manusia dan kebebasan dasar manusia sebagai hak yang secara kodrati melekat dan tidak terpisah dari manusia yang harus dilindungi, dihormati, dan ditegakkan demi peningkatan martabat kemanusisan, kesejahteraan, kebahagiaan, dan kecerdasan serta keadilan.
Berbagai instrumen hak asasi manusia yang dimiliki Negara Republik Indonesia,yakni:
ü Undang – Undang Dasar 1945
ü Ketetapan MPR Nomor XVII/MPR/1998 tentang Hak Asasi Manusia
ü Undang – Undang Nomor 39 Tahun 1999 tentang Hak Asasi Manusia
Di Indonesia secara garis besar disimpulkan, hak-hak asasi manusia itu dapat dibeda-bedakan menjadi sebagai berikut :
Ø Hak – hak asasi pribadi (personal rights) yang meliputi kebebasan menyatakan pendapat, kebebasan memeluk agama, dan kebebasan bergerak.
Ø Hak – hak asasi ekonomi (property rights) yang meliputi hak untuk memiliki sesuatu, hak untuk membeli dan menjual serta memanfaatkannya.
Ø Hak – hak asasi politik (political rights) yaitu hak untuk ikut serta dalam pemerintahan, hak pilih (dipilih dan memilih dalam pemilu) dan hak untuk mendirikan partai politik.
Ø Hak asasi untuk mendapatkan perlakuan yang sama dalam hukum dan pemerintahan ( rights of legal equality).
Ø Hak – hak asasi sosial dan kebudayaan ( social and culture rights). Misalnya hak untuk memilih pendidikan dan hak untukmengembangkan kebudayaan.
Ø Hak asasi untuk mendapatkan perlakuan tata cara peradilan dan perlindungan (procedural rights). Misalnya peraturan dalam hal penahanan, penangkapan, penggeledahan, dan peradilan.
Secara konkret untuk pertama kali Hak Asasi Manusia dituangkan dalam Piagam Hak Asasi Manusia sebagai lampiran Ketetapan Permusyawarahan Rakyat Republik Indonesia Nomor XVII/MPR/1998.




                                 ECOLABELLING 


Sejak berlangsungnya konperensi Stockholm pada tahun 1972, masalah lingkungan hidup nampaknya terus berkembang "menjadi isu global ". Negara-negara industri maju, khususnya di Amerika dan Eropa semakin meningkat kepeduliannya terhadap kondisi lingkungan di seluruh bagian dunia. Sebaliknya negara-negara berkembang juga terpacu untuk terus menerus meningkatkan upaya dalam menjaga, memelihara, dan meningkatkan kualitas lingkungan hidup di negaranya masing-masing.
Dalam bidang kehutanan, isu lingkungan hidup global menjadi salah satu bahan diskusi utama dalam sidang Council ke 8 International Tropical Timber Organization (ITTO) yang berlangsung di Bali pada tahun 1990. Salah satu hasil penting dari sidang tersebut adalah komitmen untuk terlaksananya pengelolaan hutan yang lestari paling lambat pada tahun 2000. Mulai tahun 2000, akan dilakukan pemberian label atau sertifikat bagi produk-produk yang terbuat dari kayu tropis.
Label dimaksud adalah pertanda yang memberikan keterangan bahwa kayu yang dipergunakan untuk membuat produk tertentu berasal dari hutan yang dikelola secara lestari. Menanggapi hal ini, pemerintah Indonesia, bekerja sama dengan pihak swasta kehutanan dan lembaga-lembaga non pemerintah yang peduli akan perkembangan hutan dan kehutanan, segera mempersiapkan diri dan melakukan antisipasi.

      Pengertian Ekolabel berasal dari kata "eco" yang berarti lingkungan, dan "label" yang berarti tanda atau sertifikat. Jadi, ekolabel dapat diartikan sebagai kegiatan- kegiatan yang bertujuan guna pemberian sertifikat yang mengandung kepedulian akan aspek-aspek yang berkaitan dengan unsur lingkungan hidup. Kata "ekolabelling" pada saat ini sudah sedemikian populer dan jauh berkembang dan banyak dipergunakan dimana-mana, sehingga kemudian diasosiasikan dengan berbagai kegiatan baik yang sifatnya fisik (lapangan) maupun non-fisik (peraturan, tata cara, kelembagaan, dsb.)
Yang perlu diperhatikan sebenarnya adalah adanya perbedaan antara ecolabelling dengan pengelolaan hutan lestari atau sustainable forest management (SFM). Ecolabelling lebih terfokus kepada tahapan-tahapan pemberian sertifikasi, sedangkan SFM lebih menitik beratkan kepada pelaksanaan pengelolaan hutan secara berkelanjutan. SFM dengan demikian dapat terkait baik langsung maupun tidak langsung yaitu Ecolabelling memberi sertifikasi bagi produk hasil hutan yang telah dikelola secara lestari (baik hutan alam maupun tanaman serta produk non kayu).
Pada prinsipnya, pemberian sertifikat dalam kegiatan ecolabelling dilaksanakan dengan melakukan pengujian terhadap setiap tahap kegiatan pengusahaan hutan.
Dalam pelaksanaannya, sertifikat dapat diberikan setelah dilakukan pengujian-pengujian berdasarkan ketentuan yang berlaku. Pengujian ini meliputi kegiatan-kegiatan administratif adalah tertib penataan dan pembuatan dokumen-dokumen yang diperlukan dalam menyelenggarakan pengelolaan hutan, sedangkan kegiatan teknis dilapangan meliputi perencanaan, tata cara pemungutan, sampai dengan pengolahan. Kedua macam kegiatan tersebut harus merupakan suatu rangkaian kegiatan yang tidak terpisahkan dari prinsip-prinsip manajemen hutan lestari.
Kriteria dan Indikator Untuk melihat dan membuktikan apakah suatu pengelolaan hutan sedang atau telah dilaksanakan untuk mencapai tujuan-tujuan kelestarian hutan, diperlukan berbagai syarat atau kriteria dan indikator atau ciri-ciri. Kriteria dan indikator hutan lestari ini pada mulanya dikeluarkan sebagai upaya para ahli kehutanan seluruh dunia (atas sponsor ITTO) untuk menguji apakah hutan yang dikelola selama ini telah benar-benar ditujukan berdasarkan azas kelestarian? Buah pikir para ahli kehutanan tersebut kemudian dituangkan dalam suatu komunike bersama yang merupakan salah satu hasil penting dalam sidang Council ke 8 yang diselenggarakan di Bali pada tahun 1990. Kriteria dan indikator yang diperkenalkan ITTO kemudian berkembang lebih jauh lagi karena ditemukannya hal-hal yang kurang sesuai/tepat dengan kondisi yang berbeda untuk setiap type hutan yang ada di seluruh bagian dunia. Selain ITTO, paling tidak terdapat empat kelompok inisiatif yang juga mencoba merumuskan kriteria dan indikator hutan lestari. Inisiatif-inisiatif tersebut dilahirkan baik melalui lembaga internasional maupun melalui konperensi internasional. Forest Stewardship Council (FSC), misalnya, merumuskan 9 prinsip kriteria dan indikator hutan lestari.
Kemudian "Helsinki process" yang diadopsi oleh Ministrial Conference on Protection of Forest di Eropa merumuskan 6 kriteria dan 27 indikator hutan lestari. Selanjutnya "Montreal process" yang dikukuhkan di Santiago mengeluarkan 7 kriteria dan 67 indikator untuk konservasi dan pengelolaan hutan-hutan temperate dan boreal. Selanjutnya untuk daerah Amazon di Amerika Latin dikenal adanya "Tarapoto proposal" sebagai hasil perjanjian kerjasama Amazon (Amazon Cooperation Treaty, ACT) yang merumuskan 12 kriteria dan 77 indikator untuk pengelolaan hutan lestari di wilayah Amazon. Untuk daerah hutan kering (dry zone) di wilayah Afrika, FAO dan UNEF memunculkan 7 usulan kriteria dan 47 indikator hutan lestari. Di Indonesia, tidak ketinggalan pihak swasta kehutanan yang tergabung dalam Asosiasi Pengusahaan Hutan Indonesia (APHI) telah secara aktif memperkenalkan konsep kriteria dan indikatornya yang merupakan buah pikir para pakar kehutanan.
Kriteria dan indikator yang diusulkan APHI tersebut sampai saat ini masih terus dibahas dan diuji cobakan di lapangan. Selanjutnya, LEI juga tidak ketinggalan mengeluarkan kriteria dan indikator pengelolaan hutan lestari yang dapat dilihat dari lima dimensi, yaitu dimensi kawasan, dimensi produksi dan rentabilitas hutan, dimensi efisiensi pemanfaatan sumberdaya hutan, dimensi profesionalisme manajemen, dan dimensi rentabilitas usaha.
Berikut ini adalah kriteria dan indikator yang pertama kali diperkenalkan ITTO. Berdasarkan kacamata ITTO, untuk dapat terlaksananya manajemen hutan lestari, maka terdapat lima pokok kriteria yang harus dipenuhi, yaitu :
  1. Forest Resource Base, yaitu terjaminnya sumber-sumber hutan yang dapat dikelola secara lestari.
  2. The Continuity of Flow of Forest Products, yaitu kontinuitas hasil hutan yang dapat dipungut berdasarkan azas-azas kelestarian.
  3. The level of Environmental Control, yang secara sungguh-sungguh mempertimbangkan kondisi lingkungan dan dampak-dampaknya yang perlu diperhatikan dalam pengelolaan hutan lestari yang berwawasan lingkungan.
  4. Social and Economic Aspects, yaitu dengan memperhitungkan pengaruh-pengaruh kesejahteraan sosial dan ekonomi masyarakat yang tinggal di sekitar hutan. Dalam tingakt nasional, juga memperhitungkan peningkatan pendapatan penduduk dan negara dalam arti luas.
  5. Institutional Frameworks, yaitu penyempurnaan wadah kelembagaan yang dinamis dan mendukung pelaksanaan pengelolaan hutan lestari. Institutional frameworks juga mencakup pengembangan sumber daya manusia, serta kemajuan penelitian, ilmu dan teknologi yang kesemuanya turut mendukung terciptanya manajemen hutan lestari.
  6. Kelima kriteria yang diperkenalkan ITTO tersebut kemudian dijabarkan lebih lanjut dalam bentuk ciri-ciri atau indikator yang kesemuanya mengarah kepada terlaksananya kriteria pertama (Forest Resource Base), maka indikator berikut ini merupakan tanda-tanda yang diperlukan dalam pelaksanaan manajemen hutan yang lestari.
    1. Tersedianya tata guna hutan yang komprehensif yang secara penuh mempertimbangkan tujuan-tujuan pengelolaan hutan dan kehutanan.
    2. Tercukupinya luas hutan permanen, yaitu hutan tetap yang dipertahankan fungsinya sebagai hutan. Luas hutan yang permanen akan mendukung target dan sasaran pembangunan hutan dan kehutanan.
    3. Ditetapkannya target dan sasaran pembangunan hutan tanaman, distribusi kelas umur, dan rencana tanaman tahunan.
    Kriteria dan indikator yang disusun LEI pada prinsipnya merupakan hasil modifikasi kriteria dan indikator rumusan ITTO dan FSC. Menurut, LEI tujuan kelestarian hutan hanya akan dapat dicapai apabila tiga fungsi utama kelestarian hutan tetap terjaga. Pertama adalah kelestarian hasil hutan; kedua, kelestarian fungsi ekologis, dan ketiga, kelestarian fungsi sosial budaya. Walaupun kriteria dan indikator yang diperkenalkan ITTO telah berkembang begitu jauh, namun masih perlu dikaji ulang maksud dan tujuannya, karena pada hakekatnya merupakan temuan pertama para ahli kehutanan sedunia yang mencoba merumuskan kriteria dan indikator sampai kepada level unit manajemen yang terkecil. Tulisan ini paling tidak menyingkap dua hal penting yang banyak menjadi bahan perbincangan para pemerhati hutan dan kehutanan. Yang pertama adalah tentang pengertian ecolabeling yang berbeda dengan sustainable forest management. Yang kedua adalah mengenai pentingnya kriteria dan indikator dalam pengelolaan hutan lestari. Sebagai penutup, kiranya perlu disimak bahwa kriteria dan indikator manapun yang akan dipakai sebagai acuan kiranya perlu diperhatikan paling tidak tiga aspek penting, yaitu adanya keseimbangan antara unsur-unsur ekonomi, sosial, dan lingkungan hidup. Yang lebih penting lagi adalah bagaimana membuat agar ketiga aspek tadi betul-betul dapat diperhitungkan dengan seimbang. Dengan kata lain, pemanfaatan hutan perlu memberikan keuntungan yang sebesar-besarnya baik bagi negara maupun masyarakat sekitarnya (aspek sosial ekonomi) tanpa mengorbankan aspek kelestarian hutan dan fungsi ekologisnya.