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

Rabu, 23 Februari 2011

TUGAS PKN

DEMOKRASI
Demokrasi adalah pemerintahan dari rakyat, oleh rakyat, dan untuk rakyat Begitulah pemahaman yang paling sederhana tentang demokrasi, yang diketahui oleh hampir semua orang.
Demokrasi merupakan bentuk pemerintahan politik yang kekuasaan pemerintahannya berasal dari rakyat, baik secara langsung (demokrasi langsung) atau melalui perwakilan (demokrasi perwakilan). Istilah ini berasal dari bahasa Yunani δημοκρατία – (dēmokratía) "kekuasaan rakyat",yang dibentuk dari kata δῆμος (dêmos) "rakyat" dan κράτος (Kratos) "kekuasaan", merujuk pada sistem politik yang muncul pada pertengahan abad ke-5 dan ke-4 SM di negara kota Yunani Kuno, khususnya Athena, menyusul revolusi rakyat pada tahun 508 SM.
Berbicara mengenai demokrasi adalah memburaskan (memperbincangkan) tentang kekuasaan, atau lebih tepatnya pengelolaan kekuasaan secara beradab. Ia adalah sistem manajemen kekuasaan yang dilandasi oleh nilai-nilai dan etika serta peradaban yang menghargai martabat manusia. Pelaku utama demokrasi adalah kita semua, setiap orang yang selama ini selalu diatasnamakan namun tak pernah ikut menentukan Menjaga proses demokratisasi adalah memahami secara benar hak-hak yang kita miliki, menjaga hak-hak itu agar siapapun menghormatinya, melawan siapapun yang berusaha melanggar hak-hak itu. Demokrasi pada dasarnya adalah aturan orang (people rule), dan di dalam sistem politik yang demokratis warga mempunyai hak, kesempatan dan suara yang sama di dalam mengatur pemerintahan di dunia publik. Sedang demokrasi adalah keputusan berdasarkan suara terbanyak. Di Indonesia, pergerakan nasional juga mencita-citakan pembentukan negara demokrasi yang berwatak anti-feodalisme dan anti-imperialisme, dengan tujuan membentuk masyarakat sosialis. Bagi Gus Dur, landasan demokrasi adalah keadilan, dalam arti terbukanya peluang kepada semua orang, dan berarti juga otonomi atau kemandirian dari orang yang bersangkutan untuk mengatur hidupnya, sesuai dengan apa yang dia ingini. adi masalah keadilan menjadi penting, dalam arti dia mempunyai hak untuk menentukan sendiri jalan hidupnya, tetapi harus dihormati haknya dan harus diberi peluang dan kemudahan serta pertolongan untuk mencapai itu.
Prinsip-prinsip demokrasi
Setiap prinsip demokrasi dan prasyarat dari berdirinya negara demokrasi telah terakomodasi dalam suatu konstitusi Negara Kesatuan Republik Indonesia. Prinsip-prinsip demokrasi, dapat ditinjau dari pendapat Almadudi yang kemudian dikenal dengan "soko guru demokrasi. Menurutnya, prinsip-prinsip demokrasi adalah
1.Kedaulatan rakyat;
2.Pemerintahan berdasarkan persetujuan dari yang diperintah;
3.Kekuasaan mayoritas;
4.Hak-hak minoritas;
5.Jaminan hak asasi manusia;
6.Pemilihan yang bebas dan jujur;
7.Persamaan di depan hukum;
8.Proses hukum yang wajar;
9.Pembatasan pemerintah secara konstitusional;
10.Pluralisme sosial, ekonomi, dan politik;
11.Nilai-nilai tolerensi, pragmatisme, kerja sama, dan mufakat.
Asas pokok demokrasi
Gagasan pokok atau gagasan dasar suatu pemerintahan demokrasi adalah pengakuan hakikat manusia, yaitu pada dasarnya manusia mempunyai kemampuan yang sama dalam hubungan sosial.Berdasarkan gagasan dasar tersebut terdapat 2 (dua) asas pokok demokrasi, yaitu:
1.Pengakuan partisipasi rakyat dalam pemerintahan, misalnya pemilihan wakil-wakil rakyat untuk lembaga perwakilan rakyat secara langsung, umum, bebas, dan rahasia serta jurdil; dan
2.Pengakuan hakikat dan martabat manusia, misalnya adanya tindakan pemerintah untuk melindungi hak-hak asasi manusia demi kepentingan bersama.


HAK ASASI
HAM / Hak Asasi Manusia adalah hak yang melekat pada diri setiap manusia sejak awal dilahirkan yang berlaku seumur hidup dan tidak dapat diganggu gugat siapa pun. Sebagai warga negara yang baik kita mesti menjunjung tinggi nilai hak azasi manusia tanpa membeda-bedakan status, golongan, keturunan, jabatan, dan lain sebagainya.
Melanggar HAM seseorang bertentangan dengan hukum yang berlaku di Indonesia. Hak asasi manusia memiliki wadah organisasi yang mengurus permasalahan seputar hak asasi manusia yaitu Komnas HAM. Kasus pelanggaran ham di Indonesia memang masih banyak yang belum terselesaikan / tuntas sehingga diharapkan perkembangan dunia ham di Indonesia dapat terwujud ke arah yang lebih baik. Salah satu tokoh ham di Indonesia adalah Munir yang tewas dibunuh di atas pesawat udara saat menuju Belanda dari Indonesia.
Pembagian Bidang, Jenis dan Macam Hak Asasi Manusia Dunia :
1. Hak asasi pribadi / personal Right
- Hak kebebasan untuk bergerak, bepergian dan berpindah-pndah tempat
- Hak kebebasan mengeluarkan atau menyatakan pendapat
- Hak kebebasan memilih dan aktif di organisasi atau perkumpulan
- Hak kebebasan untuk memilih, memeluk, dan menjalankan agama dan kepercayaan yang diyakini masing-masing
2. Hak asasi politik / Political Right
- Hak untuk memilih dan dipilih dalam suatu pemilihan
- hak ikut serta dalam kegiatan pemerintahan
- Hak membuat dan mendirikan parpol / partai politik dan organisasi politik lainnya
- Hak untuk membuat dan mengajukan suatu usulan petisi
3. Hak azasi hukum / Legal Equality Right
- Hak mendapatkan perlakuan yang sama dalam hukum dan pemerintahan
- Hak untuk menjadi pegawai negeri sipil / pns
- Hak mendapat layanan dan perlindungan hukum
4. Hak azasi Ekonomi / Property Rigths
- Hak kebebasan melakukan kegiatan jual beli
- Hak kebebasan mengadakan perjanjian kontrak
- Hak kebebasan menyelenggarakan sewa-menyewa, hutang-piutang, dll
- Hak kebebasan untuk memiliki susuatu
- Hak memiliki dan mendapatkan pekerjaan yang layak
5. Hak Asasi Peradilan / Procedural Rights
- Hak mendapat pembelaan hukum di pengadilan
- Hak persamaan atas perlakuan penggeledahan, penangkapan, penahanan dan penyelidikan di mata hukum.
6. Hak asasi sosial budaya / Social Culture Right
- Hak menentukan, memilih dan mendapatkan pendidikan
- Hak mendapatkan pengajaran
- Hak untuk mengembangkan budaya yang sesuai dengan bakat dan minat
1. • Secara umum, Eco Labelling menuntut bahwa setiap produk dagangan harus telah didasarkan pada kelestarian sumber daya dan ekosistem dari lingkungan hidup. Dimulai dari pengambilan bahan baku (misalnya kayu), pengangkutan bahan baku ke pabrik, proses dalam pabrik, pengangkutan produk pabrik ke konsumen, pemakaian produk dan pembuangan sampahnya (bekas pakai dari produk) secara keseluruhan tidak mencemari lingkungan(akrab lingkungan). Pendekatan Silabus hidup (Life Cycle) ini dikenal sebagai pendekatan "From Cradle to Grove (dari lahir sampai ke kuburan)".
2.Sertifikasi Eco-Labelling di bidang perkayuan adalah suatu cara untuk memberikan informasi kepada konsumen mengenai produk kayu yang dipasarkan kepadanya dalam bentuk suatu sertifikat atau Eco-Labell yang menunjukkan bahwa kayu tersebut berasal atau dihasilkan dari suatu konsensi hutan yang dikelola secara lestari.
ECOLABELLING
1.Penerapan standar pengelolaan hutan lestari.
2.Penilaian oleh lembaga/badan independen (pihak ketiga yang tidak memihak) yang dilakukan oleh Asesor/penilai.
3.Lembaga independen dan asesor harus terlebih dahulu mendapat pengakuan baik nasional maupun internasional.
4.Pemberian sertifikat kepada HPH apabila memang dinyatakan benar dalam penerapan pengelolaan hutannya dengan lestari.
Indonesia mempunyai tanggung jawab moral terhadap masyarakat dunia untuk mengelola, membangun dan mengkonservasi hutannya yang pada dasarnya telah sesuai dengan ketetapan yang terkandung dalam hasil-hasil antara lain : KTT Bumi, Keputusan–keputusan ITTO, WWF dan FSC. Kebijaksanaan Departemen Kehutanan adalah:
1.Mendukung pelaksanaan Eco-Labelling sesuai dengan target kelestarian tahun 2000.
2. Persiapan penerapan Eco-Labelling dijadikan salah satu kegiatan utama didalam Repelita VI Bidang Pengusahaan Hutan.
3.Menyiapkan peraturan perundang-undangan antara lain: Keputusan Menteri Kehutanan No. 252/Kpts-II/93 yang telah disempurnakan dengan Keputusan Menteri Kehutanan No. 576/Kpts-II/93 tentang Kriteria dan Indikator Pengelolaan Hutan Alam Secara Lestari.
Keputusan Menteri Kehutanan No. 610/Kpts-II/93 tentang Kriteria dan Indikator Pengelolaan Hutan Alam Secara Lestari pada Tingkat Menegemen Unit. Keputusan Direktur Jenderal Pengusahaan Hutan No. 208/Kpts/IV-Set/93 tentang Petunjuk Teknis Pelaksanaan Kriteria dan Indikator Pengelolaan Hutan Alam Secara Lestari pada Tingkat Managemen Unit HPH

Selasa, 15 Februari 2011

FRIENDSTER


SEJARAH FRIENDSTER

Sebuah situs yang menyajikan layanan – layanan menarik yang banyak dikunjungi oleh berbagai kalangan masyarakat menjadikan friendster sebagai candu networking dalam dunia maya. Pada tahun 2002, melalui sebuah konsep lapisan - interaksi terciptalah satu ruang maya revolusioner bernama Friendster.
Friendster adalah sebuah situs yang mengimplementasikan social networking. Setiap orang dapat mendaftarkan dirinya secara gratis dan mendefinisikan daftar temannya. Setiap anggota Friendster kemudian dapat melihat daftar teman dari temannya, teman dari teman dari temannya, dan seterusnya. Intinya adalah dengan cara demikian, seseorang dapat bertemu dengan orang lain yang berhubungan, dan bukan orang yang sepenuhnya tak dikenal.Tahun 2002, Jonathan Abrams menciptakan Friendster. Ia adalah seorang old former software engineering di Netscape. Nama Friendster sendiri berasal dari ‘Friend’ dan ‘Napster’. Pada saat itu Napster memang sudah menolong orang-orang untuk bertukar informasi melalui jaringan maya, dan Friendster melakukan hal yang sama dalamdimensiyangberbeda.
Berawal dari situs-situs dating yang banyak tersebar, Jonathan melihatnya sebagai sesuatu yang ‘creepy’ karena orang-orang yang terhubung tidak dapat ‘melihat satu-sama lain’. Friendster ia buat dengan tujuan agar masing-masing individu dapat menampilkan profile sehingga interkasi tersebut berjalan lebih terbuka. Dengan konsep four degrees separation, tiap individu akan berkaitan dengan individu lainya. Dengan begitu jaringan ‘pertemanan’ akan semakin meluas.
Bayangkan saja, Anda yang memiliki hanya 18 teman saja di Frienster, bias terhubung ke jaringan teman dari 18 teman anda, dan tanpa sadar kit ate;lah terhubung ke lebih dari 15 ribu orang dalam sebuah jaringan teman dalam sekejap.itupun masih dilengkapi dengan berbagai fitur menarik lainnya untuk berkomunikasi.ada pesan personal yang hanya bias dikirim oleh teman dalam jaringan, ada bulletin board yang berisi pesan – pesan yang dapat dibaca oleh teman dalam jaringan, ada pula testimonial, dimana teman – teman anda dapat mengisi kesan – kesan mengenai anda.frienster benar – benar merupakan perpaduan luar biasa antara e-mail, bulletin board, personal web, serta “ jaringan sosial ”.
Pesona baru dunia maya inilah yang menyihir sebagian besar pengguna awal Friendster terhenyak didepan komputer, menghabiskan banyak waktu didunia maya tersebut. Mereka keasyikan menelusuri jaringan teman, menemukan kejutan – kejutan baru dari teman – teman baru, memeriksa testimonial dari teman, mengecek pesan, dan seterusnya. Tak mengherankan jika Frienster yang semula dirancang untuk ajang kencan online, kini berkembang jauh lebih luas dan hebat. Dalam sekejap anggotanya melesat menjadi 9 juta. Bukan hanya anak – anak muda yang tertarik menjadi anggotanya. Melainkan bila kita search lebih dalam anggota yang usianya diatas 40 tidak sedikit yang muncul. Dengan fitur – fitur yang mudah digunakan oleh pemakai internet pemula Frienster memang tidak menghalangi siapapun antara usia 10 sampai 60 tahun untuk bergabung. Friendster membuka pendaftaran secara gratis. Friendster juga tidak melakukan verifikasi apakah setiap individu didaftarkan oleh individu yang sebenarnya. Oleh karena itu dapat saja seseorang mendaftarkan orang lain di Friendster.
Ada seorang anggota yang mengatakan,”Frienster itu ibarat candu, sekali pakai ketagihan !”. komentar ini ditulis oleh pria yang berusia 34 tahun, ia mengaku membuka Frienster tiap hari untuk melihat apakah ada teman lama dan baru yang menemukannya, dan apakah teman – teman yang ia ajak bergabung sudah menanggapi emailnya, dan masuk dalam lingkarannya temannya. Satu lagi anggota Frienster bercerita kalau temannya yang kelihatan alim, pendiam, dan sering berkhotbah ternyata penggemar LinkingPark.

KEUNGGULAN & KELEMAHAN FRIENDSTER

Selain memiliki fitur – fitur yang lengkap dan menarik ternyata Friendster juga mempunyai kelemahan. Salah satu kelemahannya adalah munculnya Fakester, istilah bagi mereka yang membuat profil palsu di Friendster dan membuat jaringan teman palsu. Kelemahan lainnya yakni tiap individu dapat membuat account di Friendster, sehingga ada account atas nama lembaga, termasuk Universitas Gajah Mada, Mailing List para pecinta marketing paling aktif di Indonesia, Marketing Club.tapi kelemahan itu tidak mengurangi daya tarik Friendster. Bagi anggota, friendster adalah sebuah wahana yang menarik. Bagi sang penemu, inilah wahana bisnis yang sangat menggiurkan. Potensi pendapatannya sangat besar.

SUMBER PENDAPATAN

Iklan online di Friendster saat ini belum banyak karena masih versi beta. Namun banyak calon pemasang iklan yang lebih tertarik memasang iklan di sebuah komunitas yang profil naggotanya jelas seperti Friendster.Apalagi jika iklannya dapat dipersonalisasi, dikirim ke target audience yang cocok dengan iklannya.
Pendapatan kedua adalah dari keanggotaan.Saat ini memang masih gratis.Namun sudah ada kasak – kusuk untuk mengutip biaya layanan khusus Friendster versi finalnyadengan biaya US$ 9,95 atau Rp. 99,5 ribu per bulan.Misal kita asumsikan saja 10% dari anggota yang sekarang rela merogoh koceknya,maka pendapatan tahuna Friendster sekitar US$ 107,46 juta.

Senin, 14 Februari 2011

Type Data dan Struktur Data

Macam – macam type data :

Tipe data Char dan String
Ini merupakan tipe data dasar, tipe data ini didefinisikan pada deklarsi var dibagian algoritma/program.
Contoh: Var Nama : String
Nilai : Char


Keterangan :
Nama merupakan sebuah variabel didefinisikan sebagai variabel bertipe string, maksudnya pada variabel tersebut digunakan untuk menerima masukan sebuah nama yang terdiri dari sekumpulan huruf, dapat berupa huruf besar, kecil, atau campuran kedua-duanya.
Nilai, didefinisikan sebagai variabel yang bertipe data char, maksudnya variabel tersebut hanya dapat digunakan untuk memasukkan sebuah huruf dari huruf besar, seperti A, B, C,.. atau huruf kecil, a, b, c, ….

2. Tipe data Boolean
Tipe data ini digunakan untuk pengambilan keputusan dalam operasi logika. Terdiri dari true disimbolkan ‘T’ dan False yang disimbolkan ‘F’. Ketika kita ingin mendapatklan hasil yang valid/pasti, kita menggunakan tipe data boolean untuk memperoleh keputusan dalam suatu penyelesaian yang pasti.

3. Tipe Data Integer
Merupakan tipe data bilangan bulat.


Tipe Data

Rentang nilai

Memori


Byte

0…255

1 byte


Word

0…65.555

1 byte


Integer

-32.768 s.d 32.767

2 byte


Long Integer

-2.147.483.648

4 byte


4. Tipe Data Real
Merupakan tipe data bilangan pecahan seperti real, single, double, comp, extend.

5. Tipe Data Subrange
Merupakan tipe data bilangan yang punya jangkauan nilai tertentu sesuai dengan definisi pada pemrogram.
Contoh :
Type Variabel=Nilai_awal…Nilai_akhir

6. Tipe Data Enumerasi
Merupakan tipe data yang memiliki elemen-elemen tertentu yang disebut satu/satu dari bernilai konstanta integer sesuai dengan urutannya. Pada tipe data ini elemen masukan diwakili oleh suatu nama variable yang ditlis di dalam kurung.
Example :
Indeks_Hari = (Nol, Minggu, Senin, Selasa, Rabu, Kamis, Jumat, Sabtu)

7. Tipe Data Array (Larik)
Tipe data ini sudah terstruktur dengan baik, walaupun masih sederhana. Tipe data ini menampung sejumlah data dengan tipe data sama (homogen) dalam sebuah variabel.
Cara mendefinisikan tipe data array

Berdimensi satu

Var

Nama_Variabel_Array[1...N]of tipe_data

1 Nomor Indeks
Berdimensi dua

Var

Nama_Variabel_Array=Array[1...N,1...M]of tipe_data

2 buah Nomor Indeks

8. Tipe Data Record
Tipe data komposit yang sudah terstruktur denagn baik. Tipe data ini digunakan untuk menampung data suatu obyek. Datanya berupa campuran dari tipe data seperti string, numerik, char, boolean, atau tipe data lainnya. Tipe data ini merupakan struktur dasar dari suatu sistem database.

9. Tipe Data Array Record
Tipe data array yang dibangun dari tipe data record.

10. Tipe Data Citra
Berisi grafik/gambar yang banyak digunakan pada aplikasi video.

Contoh:
Grafik perkembangan jumlah penduduk.

Perbedaan variabel dengan konstanta
Variabel adalah peubah, suatu nama lokasi yang diinginkan untuk menampung tipe data tertentu yang akan diolah komputer. Sedangkan konstanta adalah suatu harga yang diberikan pada sebuah variabel dengan harga.


Type struktur data .
Struktur Data, meliputi:
* Struktur data sederhana, misalnya array dan record.
* Struktur data majemuk, yang terdiri dari:
Linier : Stack, Queue, sertaList dan Multilist
Non Linier : Pohon Biner dan Graph
Pemakaian struktur data yang tepat didalam proses pemrograman akan menghasilkan algoritma yang lebih jelas dan tepat, sehingga menjadikan program secara keseluruhan lebih efisien dan sederhana.
Struktur data yang standar yang biasanya digunakan dibidang informatika adalah:
* List linier (Linked List) dan variasinya
* Multilist
* Stack (Tumpukan)
* Queue (Antrian)
* Tree ( Pohon)
* Graph ( Graf )
REVIEW RECORD (REKAMAN)
Disusun oleh satu atau lebih field. Tiap field menyimpan data dari tipe dasar tertentu atau dari tipe bentukan lain yang sudah didefinisikan sebelumnya. Nama rekaman ditentukan oleh pemrogram.
Rekaman disebut juga tipe terstruktur
Contoh :
1. type Titik : record
jika P dideklarasikan sebagai Titik maka
mengacu field pada P adalah P.x dan P.y.
2. Didefinisikan tipe terstruktur yang mewakili Jam yang terdiri
atas jam (hh), menit (mm) dan detik (ss), maka cara menulis
type Jam adalah :
type JAM : record
mm : integer, {0…59}
ss : integer {0…59}>
Jika J adalah peubah (variabel) bertipe Jam
maka cara mengacu tiap field adalah J.hh, J.mm dan J.ss
Terjemahan dalam bahasa C :
1. type Titik : record
diterjemahkan menjadi :
typedef struct { float x;
float y;
} Titik;
2. type JAM : record
mm : integer, {0…59}
ss : integer {0…59}
>
Diterjemahkan menjadi :
typedef struct
{ int hh; /*0…23*/
int mm; /*0…59*/
int ss; /*0…59*/
} Jam;
Tipe-tipe data yang berlaku:
Tipe Data Sederhana
• Integer
• Boolean
• Char
• Subrange
• Terbilang
• Real