STACK atau TUMPUKAN
1. DEFINISI STACK
Stack atau tumpukan adalah bentuk khusus dari linear list. Pada stack, penghapusan serta
pemasukan elemennya hanya dapat dilakukan di satu posisi, yakni posisi akhir dari list.
Posisi ini disebut puncak atau top dari stack. Elemen stack S pada posisi ini dinyatakan
dengan TOP(S).
Jelasnya, bila stack S [S1, S2, …, ST], maka TOP(S) adalah ST. Banyaknya elemen stack
S pada suatu saat tertentu biasa kita sebut sebagai NOEL(S). Jadi untuk stack kita di atas,
NOEL(S) = T. Seperti halnya pada semua linear list, pada stack dikenal operasi penghapusandan pemasukan.
Operator penghapusan elemen pada stack disebut POP, sedangkan operator pemasukan
elemen, disebut PUSH. Untuk menggambarkan kerja kedua operator di atas, berikut ini
suatu contoh bermula dari stack hampa S[ ], yang kita gambar sebagai:
S NOEL(S) = 0, TOP(S) tidak terdefinisimula-mula kita PUSH elemen A, diperoleh Stack S = [A]
A S NOEL(S) = 1, TOP(S) = A
Apabila kemudian kita PUSH elemen B, diperoleh Stack S = [A,B]
S NOEL(S) = 2, TOP(S) = B
Selanjutnya bila PUSH elemen C, diperoleh Stack S = [A,B,C]
S NOEL(S) = 3, TOP(S) = B
Kemudian bila kita POP elemen C, diperoleh Stack S = [A,B]
S NOEL(S) = 2, TOP(S) = B
Kita dapat pula PUSH 2 elemen D dan E. Akan dihasilkan Stack S = [A,B,D,E]
S NOEL(S) = 4, TOP(S) = E, dan seterusnya.
Terlihat bahwa kedua operasi di atas, pada stack adalah bersifat ‘terakhir masuk pertama
keluar’ atau ‘last in first out (LIFO)’. Pada hakekatnya kita tidak membatasi berapa banyakelemen dapat masuk ke dalam stack. Untuk suatu stack S[S1, S2,..., SNOEL], kita katakanbahwa elemen Si, berada di atas elemen Sj, jika i lebih besar dari j. Suatu elemen tidak dapatkita POP ke luar, sebelum semua elemen di atasnya dikeluarkan.
2. OPERASI PADA STACK
Terdapat empat operasi pada stack, yakni CREATE (stack), ISEMPTY(stack), PUSH
(elemen, stack), dan POP (stack). CREATE(S) adalah operator yang menyebabkan stack Smenjadi satu stack hampa. Jadi NOEL(CREATE(S)) adalah 0, dan TOP(CREATE(S))
tak terdefinisi.
Sedangkan operator ISEMPTY(S) bermaksud memeriksa apakah stack S hampa atau
tidak. Operandnya adalah data bertipe stack, sedangkan hasilnya merupakan data bertipe
boolean. ISEMPTY(S) adalah true, jika S hampa, yakni bila NOEL(S) = 0, dan false dalamhal lain. Jelas bahwa ISEMPTY(CREATE(S)) adalah true.
Operator PUSH (E,S) akan bekerja menambahkan elemen E pada stack S. E ditempatkan
sebagai TOP(S). Operator POP(S) merupakan operator yang bekerja mengeluarkan
elemen TOP(S) dari dalam stack. POP(S) akan mengurangi nilai NOEL(S) dengan 1.
Suatu kesalahan akan terjadi apabila, kita mencoba melakukan POP(S) terhadap stack S
yang hampa.
Kesalahan overflow akan terjadi jika kita melakukan operasi pemasukan data (PUSH)
pada stack yang sudah penuh (dalam hal ini jika banyaknya elemen yang kita masukkan kedalam sebuah stack sudah melampaui batas kemampuan memori atau telah didefinisikansebelumnya).Sebaliknya, kesalahan underflow akan terjadi jika stack sudah dalam keadaan hampa,kita lakukan operasi pengeluaran atau penghapusan (POP).
3 DEKLARASI STACK DALAM COBOL DAN PASCAL
Meskipun stack amat luas digunakan, banyak bahasa pemrograman tidak mempunyai
tipe data stack secara built-in. Dalam hal ini, Pemrogram harus memanipulasi sendiri
fasilitas yang dimiliki bahasa pemrograman tersebut, untuk dapat melakukan operasi
stack terhadap variabel stack.
Mungkin cara yang paling sederhana adalah membentuk stack dalam bentuk semacam
array. Jelas kita harus membedakan suatu stack dengan suatu array yang sesungguhnya.
Pemrogram harus memaksakan berlakunya aturan LIFO bagi stack. Selain itu juga,
penempatan stack dalam bentuk array mengakibatkan suatu keterbatasan, yakni bahwa
elemen stack harus homogen. Keterbatasan lain yang timbul adalah keharusan Pemrogram untuk menentukan batas atas dari subscript array, walaupun stack secara teori tidak memilikibatas maksimum dalam jumlah elemen. Jika diinginkan, seharusnya kita dapat membuatstack yang panjangnya tak hingga.
Satu hal yang nyata membedakan stack dengan array adalah banyaknya elemen stack
yang dapat bertambah atau berkurang setiap waktu, sementara banyaknya elemen sebuah
array selalu tetap.
Sekarang marilah kita bicarakan deklarasi dari variabel S yang bertipe data stack.
Diasumsikan bahwa elemen dari S masing-masing bertipe data integer dan panjang stack
maksimum adalah 100 elemen. Kita mendeklarasikan sebuah array yang dilengkapi
dengan variabel TOP-PTR.
Variabel TOP-PTR ini menyatakan subscript dari elemen TOP(S) dari stack. Kita
menamakan kombinasi dari array dan indikator untuk TOP tersebut dengan nama STACKSTRUCT.
Dengan penyajian seperti ini, berlaku bahwa NOEL(S) = TOP-PTR,
ISEMPTY(S) adalah true bila TOP-PTR = 0, dan false bila TOP-PTR lebih besar dari 0.
Dalam COBOL
01 STACK-STRUCT.
02 S PIC 9(5)
OCCURS 100 TIMES.
02 TOP-PTR PIC 9(3)
Dalam Pascal
type stackstruct;
record Stack: Array [ 1..100] of integer;
topptr : integer
end
var S : stackstruct;
Kompilator tidak dapat mengerti aturan LIFO yang kita inginkan. Untuk itu Pemrogram
harus berhati-ati dan tidak memberi indeks pada S di sembarang tempat, selain
dengan nilai TOP-PTR.
Operasi PUSH dan POP dapat kita program sebagai berikut: kita gunakan EON
untuk menyatakan elemen yang di-PUSH ke dalam S dan EOFF untuk elemen yang di-
POP ke luar S. NOEL-MAX menyatakan panjang maksimum stack. Jadi di sini NOELMAX= 100.
Dalam paragraf COBOL:
PUSH.
IF TOP-PTR < NOEL-MAX
THEN COMPUTE TOP-PTR = TOP-PTR+1
MOVE EON TO S( TOP-PTR )
ELSE overflow condition.
POP.
IF TOP-PTR > 0
THEN MOVE S( TOP-PTR ) TO EOFF
COMPUTE TOP-PTR = TOP-PTR-1
ELSE overflow condition.
Dalam procedure Pascal:
procedure PUSH (eon : integer);
begin
if (s.topptr < noelmax)
then
begin s.topptr < = s.topptr + 1;
s.Stack [s.topptr] :=eon
end
else OVERFLOW-CONDITION
end
procedure POP (var eoff:integer);
begin
if (s.topptr>0)
then
begin eoff;= s.Stack [s.topptr];
s.topptr ;= s.topptr - 1
end
else UNDERFLOW-CONDITION
end;
Stack sangat luas pemakaiannya dalam menyelesaikan berbagai macam problema.
Kompilator, sistem operasi, dan berbagai program aplikasi banyak menggunakan konsep
stack tersebut. Salah satu contoh adalah problema Penjodohan Tanda Kurung atau matching parantheses.
Sebuah kompilator mempunyai tugas, salah satu di antaranya adalah menyelidiki
apakah Pemrogram telah dengan cermat mengikuti aturan tata bahasa, atau sintaks dari
bahasa pemrograman yang bersangkutan. Misalnya untuk parantheses kiri (tanda kurung
buka) yang diberikan, harus dipastikan adanya parantheses kanan (tanda kurung tutup)
yang bersangkutan.
Stack dapat digunakan dalam prosedur matching yang digunakan. Algoritmanya
sederhana, kita amati barisan elemen dari kiri ke kanan. Bila kita bertemu dengan suatu
parantheses kiri, maka parantheses kiri tersebut kita PUSH ke dalam sebuah stack. Selanjutnya bila kita bertemu dengan suatu parantheses kanan, kita periksa stack, apakah hampa atautidak. Kalau stack hampa, berarti terdapat parantheses kanan tanpa adanya parantheses kiri.
Suatu kesalahan, atau error, apabila stack tidak hampa, berarti tidak diperoleh sepasangparantheses kiri, dan kanan, kita POP elemen ke luar stack.
Jika sampai berakhirnya barisan elemen, stack tidak hampa berarti terdapat parantheses
kiri yang tidak tertutup dengan parantheses kanan. Lagi suatu kesalahan. Kita akan membuatprogramnya dalam COBOL. Barisan elemen yang diamati kita tampung karakter demikarakter dalam variabel array bernama STRING. Stack ditempatkan dalam array STACK.
Kita asumsikan bahwa jumlah maksimum karakter dalam barisan elemen adalah 80 dan
barisan berakhir dengan karakter titik-koma.
4 APLIKASI STACK
Struktur datanya didefinisikan sebagai berikut:
01 STACK-STRUCT.
02 S PIC 9(5) PIC X
OCCURS 80 TIMES.
PIC 99 VALUE 0.
02 TOP-PTR
01 STRING.
02 CHAR PIC X
OCCURS 80 TIMES.
01 NEXT-CHAR PIC 99
Struktur di atas kita manipulasi dengan prosedur sebagai berikut:
PERFORM SCAN-NEXT-CAR
VARYING NEXT-CHAR FROM 1 BY 1
UNTIL NEXT-CHAR > 80
OR CHAR (NEXT-CHAR) = “;”.
IF TOP-PTR NOT = 0 THENinvalid syntax,
parenthesis kiri tak tertutup
ELSE Valid syntax.
SCAN-NEXT-CHAR
IF CHAR (NEXT-CHAR) = “(”
PERFORM PUSH
ELSE
IF CHAR (NEXT-CHAR) = “)”
PERFORM POP
PUSH
COMPUTE TOP-PTR = TOP-PTR + 1
MOVE CHAR (NEXT-CHAR) TO STACK (TOOP-PTR).
IF TOP-PTR > 0
COMPUTE TOP-PTR - 1
ELSE invalid syntax, tak ada parenthesis
Silakan Anda buat programnya dalam bahasa pemrograman yang Anda kuasai.
5. DAFTAR LINEAR
Sebuah daftar linear atau linear list, merupakan suatu struktur data umum yang terbentuk
dari barisan hingga (yang terurut) dari satuan data ataupun dari record. Untuk mudahnya,
elemen yang terdapat di dalam daftar disebut dengan simpul atau node. Daftar disebut
linear (lurus), karena elemen tampak seperti berbaris, yakni bahwa setiap simpul, kecuali
yang pertama dan yang terakhir, selalu memiliki sebuah elemen penerus langsung (suksesorlangsung) dan sebuah elemen pendahulu langsung (predesesor langsung).
Di sini, banyak simpul atau elemen, tersebut dapat berubah-ubah, berbeda dengan
array yang banyak elemennya selalu tetap. Kita menyatakan linear list A yang mengandungT elemen pada suatu saat, sebagai A = [A1, A2, …AT]. Jika T = 0, maka A disebut list hampaatau null list.
Suatu elemen dapat dihilangkan atau dihapus (deletion) dari sembarang posisi dalam
linear list, dan suatu elemen baru dapat pula dimasukkan (insertion) sebagai anggota list
pada posisi sembarang (di mana saja).File, merupakan salah satu contoh dari daftar linear yang elemen-elemennya berupa
record. Selain file, contoh lain dari daftar linear adalah stack atau tumpukan, queue atau
antrean, dan daftar berkait atau linear linked list atau one-way list. Pada Bab 3 ini kita bahastentang stack tersebut. Selanjutnya pada Bab 4 kita bahas tentang antrean tentang linked list.
Senin, 08 Maret 2010
array
1. PENGERTIAN ARRAY
Array (larik) merupakan tipe data tersetruktur dimana didalamnya terdiri dari komponen – komponen yang mempunyai tipe data yang sama. Didalam suatu array jumlah komponen banyaknya adalah tetap. Didalam suatu larik atau array setiap kompoenen ditunjukan oleh suatu index yang unik. Index dari setiap komponen array menunjukan urutan data atau identitas yang mewakili data yang ada didalamnya.
Logika sederhananya array itu bisa disamakan dengan dua orang dengan nama yang sama didalam suatu komunitas, untuk membedakan antara nama yang satu atau dengan nama yang lain maka diberikan initial tambahan untuk setiap nama.
2 ARRAY BERDIMENSI SATU
Sebuah array dimensi satu, yang misalnya kita beri nama NILAI,
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 setiapelemen 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 merupakaninteger.
Batas bawah dari array, pada beberapa aplikasi, tidak selalu diambil 1. Kadang-kadang
diambil batas bawah nol, bahkan juga negatif. Banyaknya elemen sebuah array disebut
rentang atau range. Jadi array A(L:U) mempunyai range sebesar U-L+1. Secara khusus
bila L=l dan U=N, maka range dari array A(l:N) adalah N-I+1 = N.
3. ARRAY DIMENSI BANYAK
Sebuah array dimensi banyak atau multi-dimensional array didefinisikan sebagai sebuah
array yang elemennya berupa array pula. Misal array B mempunyai M elemen berupa
array pula, yang terdiri dari N elemen.
Untuk itu diperlukan dua buah subscript. Yang pertama digunakan untuk menyatakan
posisi baris, sedangkan yang kedua untuk posisi kolom. Secara umum array dimensi dua
B, dengan elemen bertipe data T, subscript baris dari l sampai M, subscript kolom dari l
sampai N, ditulis sebagai B(1:M, 1:N) = (B(I,J)), I = 1, 2, ...,M dan J = 1, 2,...,N dengan
setiap elemen B(I,J) bertipe data T. Array B tersebut dikatakan berukuran atau berorder Mx 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 subscriptyang satunya lagi kita ubah-ubah sepanjang rangenya. Notasi yang umum digunakan adalahnotasi * (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)),
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, makajelas 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 tinggike 17.
Pengertian cross-section pada array dimensi banyak, adalah sama seperti pada array
dimensi dua. Misalnya MHS(4,*,17) menunjukkan jumlah mahasiswa tingkat 4 dari
perguruan tinggi 17 (masing-masing untuk pria serta wanita). MHS(*,*,3)
menunjukkan jumlah mahasiswa untuk masing-masing tingkat, pria serta wanita,
dari perguruan tinggi 3.
4. 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) mempunyaifasilitas untuk melakukan manipulasi antarelemen array. Operasi yang sesuai dengantipe 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.
5. PEMETAAN ARRAY DIMENSI SATU KE STORAGE
Seperti halnya struktur data yang lain, ada beberapa cara untuk menyajikan array di dalammemori. 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 elemenNOPEG(I+1) adalah berdampingan dengan storage untuk elemen NOPEG(I), untuksetiap 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 elemenke-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) *
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 =I
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 pendekatanterhadap problema ini adalah dengan pelinearan array, dan dengan hanya menyimpanbagian 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), elemenT(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, elemenT(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 Nx 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.
7. 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
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 padapermasalahan 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.
8. ALOKASI PENGGUNA ARRAY
a. Array Static (Static Array)
array static adalah model pendeklarasian array dimana tipe data yang digunakan mempunyai nilai yang tetap. Nilai yang digunakan untuk menentukan jangkauan pada umumnya bernilai integer. Array Static juga bisa disebut Array dengan deklarasi tipe indeks subrange integer.
Bentuk Umum
array[indexType1, ..., indexTypen] of baseType
Keterangan = index type menunjukan tipe data ordinal yang menunjukan batasan atau elemen maksimul terhadap seberapa besar variabel tersebut menyimpan komponen.
Contoh
Var arrayku : array[1..5] of char
Atau juga
type
jangkauan = 1..5;
var
nilai : array[jangkauan] of integer;
b. Array Dinamis (Dynamic arrays)
Larik atau array dinamis merupakan array yang tidak mempunyai suatu jangkauan atau ukuran yang tetap. Tetapi ketika program dijalankan maka memori untuk suatu array dinamis direalokasikan ketika kita menugaskan suatu nilai kepada array. Dynamic-Array jenis ditandai oleh konstruksi (menyangkut) format
Bentuk Umum
array of baseType
Contoh
var nilai: array of Real;
Dari deklarasi tersebut nilai yang merupakan deklarasi array belum memperoleh nilai yang tetap, tetapi hanya diberikan batasan sebagai tipe data real. Untuk mendeklarasikan array tersebut kita harus menempatkan array didalam suatu memori, caranya adalah dengan memanfaatkan fungsi dari perintah sellength.
Selllength(nilai,20)
Dari penggalan program tersebut nilai untuk array nilai tersebut mempunyai range sebanyak atau cakupan 20 untuk tipe data real, dengan indeex dimulai dari 0 sampai dengan 20.
Sumber : seri diktat kuliah, pengantar struktur data Universitas Gunadarma
Array (larik) merupakan tipe data tersetruktur dimana didalamnya terdiri dari komponen – komponen yang mempunyai tipe data yang sama. Didalam suatu array jumlah komponen banyaknya adalah tetap. Didalam suatu larik atau array setiap kompoenen ditunjukan oleh suatu index yang unik. Index dari setiap komponen array menunjukan urutan data atau identitas yang mewakili data yang ada didalamnya.
Logika sederhananya array itu bisa disamakan dengan dua orang dengan nama yang sama didalam suatu komunitas, untuk membedakan antara nama yang satu atau dengan nama yang lain maka diberikan initial tambahan untuk setiap nama.
2 ARRAY BERDIMENSI SATU
Sebuah array dimensi satu, yang misalnya kita beri nama NILAI,
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 setiapelemen 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 merupakaninteger.
Batas bawah dari array, pada beberapa aplikasi, tidak selalu diambil 1. Kadang-kadang
diambil batas bawah nol, bahkan juga negatif. Banyaknya elemen sebuah array disebut
rentang atau range. Jadi array A(L:U) mempunyai range sebesar U-L+1. Secara khusus
bila L=l dan U=N, maka range dari array A(l:N) adalah N-I+1 = N.
3. ARRAY DIMENSI BANYAK
Sebuah array dimensi banyak atau multi-dimensional array didefinisikan sebagai sebuah
array yang elemennya berupa array pula. Misal array B mempunyai M elemen berupa
array pula, yang terdiri dari N elemen.
Untuk itu diperlukan dua buah subscript. Yang pertama digunakan untuk menyatakan
posisi baris, sedangkan yang kedua untuk posisi kolom. Secara umum array dimensi dua
B, dengan elemen bertipe data T, subscript baris dari l sampai M, subscript kolom dari l
sampai N, ditulis sebagai B(1:M, 1:N) = (B(I,J)), I = 1, 2, ...,M dan J = 1, 2,...,N dengan
setiap elemen B(I,J) bertipe data T. Array B tersebut dikatakan berukuran atau berorder Mx 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 subscriptyang satunya lagi kita ubah-ubah sepanjang rangenya. Notasi yang umum digunakan adalahnotasi * (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)),
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, makajelas 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 tinggike 17.
Pengertian cross-section pada array dimensi banyak, adalah sama seperti pada array
dimensi dua. Misalnya MHS(4,*,17) menunjukkan jumlah mahasiswa tingkat 4 dari
perguruan tinggi 17 (masing-masing untuk pria serta wanita). MHS(*,*,3)
menunjukkan jumlah mahasiswa untuk masing-masing tingkat, pria serta wanita,
dari perguruan tinggi 3.
4. 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) mempunyaifasilitas untuk melakukan manipulasi antarelemen array. Operasi yang sesuai dengantipe 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.
5. PEMETAAN ARRAY DIMENSI SATU KE STORAGE
Seperti halnya struktur data yang lain, ada beberapa cara untuk menyajikan array di dalammemori. 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 elemenNOPEG(I+1) adalah berdampingan dengan storage untuk elemen NOPEG(I), untuksetiap 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 elemenke-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) *
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 =I
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 pendekatanterhadap problema ini adalah dengan pelinearan array, dan dengan hanya menyimpanbagian 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), elemenT(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, elemenT(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 Nx 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.
7. 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
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 padapermasalahan 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.
8. ALOKASI PENGGUNA ARRAY
a. Array Static (Static Array)
array static adalah model pendeklarasian array dimana tipe data yang digunakan mempunyai nilai yang tetap. Nilai yang digunakan untuk menentukan jangkauan pada umumnya bernilai integer. Array Static juga bisa disebut Array dengan deklarasi tipe indeks subrange integer.
Bentuk Umum
array[indexType1, ..., indexTypen] of baseType
Keterangan = index type menunjukan tipe data ordinal yang menunjukan batasan atau elemen maksimul terhadap seberapa besar variabel tersebut menyimpan komponen.
Contoh
Var arrayku : array[1..5] of char
Atau juga
type
jangkauan = 1..5;
var
nilai : array[jangkauan] of integer;
b. Array Dinamis (Dynamic arrays)
Larik atau array dinamis merupakan array yang tidak mempunyai suatu jangkauan atau ukuran yang tetap. Tetapi ketika program dijalankan maka memori untuk suatu array dinamis direalokasikan ketika kita menugaskan suatu nilai kepada array. Dynamic-Array jenis ditandai oleh konstruksi (menyangkut) format
Bentuk Umum
array of baseType
Contoh
var nilai: array of Real;
Dari deklarasi tersebut nilai yang merupakan deklarasi array belum memperoleh nilai yang tetap, tetapi hanya diberikan batasan sebagai tipe data real. Untuk mendeklarasikan array tersebut kita harus menempatkan array didalam suatu memori, caranya adalah dengan memanfaatkan fungsi dari perintah sellength.
Selllength(nilai,20)
Dari penggalan program tersebut nilai untuk array nilai tersebut mempunyai range sebanyak atau cakupan 20 untuk tipe data real, dengan indeex dimulai dari 0 sampai dengan 20.
Sumber : seri diktat kuliah, pengantar struktur data Universitas Gunadarma
rambut rontok
Bagi anda yang mengalami rambut rontok ataupun kebotakan, cobalah ramuan ini. Keramaslah dengan campurkan minyak zaitun, sesendok makan madu, satu sendok teh bubuk kayumanis. Biarkan selama kira-kira 5-15 menit baru dibilas dengan air.(resep cantik)
ginjal sehat
Berikut tips yang diberikan dr Dante agar ginjal tetap sehat:
1. Cukup konsumsi air putih
2. Hindari konsumsi obat sembarangan
3. Kurangi jamu-jamuan yang belum diuji klinis
4. Hindari konsumsi suplemen yang berlebihan seperti Vitamin C maksimum 4 gram sehari
5. Olahraga teratur
6. Menjaga berat badan karena obesitas bisa memicu ginjal
7. Lakukan kontrol secara teratur terutama bagi pasien yang memiliki penyakit seperti diabetes dan hipertensi, karena mereka akan berisiko lebih tinggi mengalami kerusakan ginjal.(detik)
1. Cukup konsumsi air putih
2. Hindari konsumsi obat sembarangan
3. Kurangi jamu-jamuan yang belum diuji klinis
4. Hindari konsumsi suplemen yang berlebihan seperti Vitamin C maksimum 4 gram sehari
5. Olahraga teratur
6. Menjaga berat badan karena obesitas bisa memicu ginjal
7. Lakukan kontrol secara teratur terutama bagi pasien yang memiliki penyakit seperti diabetes dan hipertensi, karena mereka akan berisiko lebih tinggi mengalami kerusakan ginjal.(detik)
jamu
Mengonsumsi jamu kerap menjadi pilihan karena dianggap lebih alami dan tidak ada efek samping. Tapi belakangan muncul tudingan jamu berbahaya bagi kesehatan ginjal. Benarkah jamu berbahaya untuk ginjal?
dr. Dante Saksono, SpPD, PhD, dari RS Cipto Mangunkusumo mengakui memang orang yang memiliki bakat ginjal harus lebih berhati-hati mengonsumsi jamu.
Maka itu jika ingin minum jamu harus yang sudah benar-benar teruji secara klinis. Minum jamu bisa berbahaya jika tidak disertai dengan banyak minum air. Air putih ini membantu cairan yang disaring ke ginjal tidak terlalu pekat sehingga tidak mengganggu kerja ginjal.(detik)
dr. Dante Saksono, SpPD, PhD, dari RS Cipto Mangunkusumo mengakui memang orang yang memiliki bakat ginjal harus lebih berhati-hati mengonsumsi jamu.
Maka itu jika ingin minum jamu harus yang sudah benar-benar teruji secara klinis. Minum jamu bisa berbahaya jika tidak disertai dengan banyak minum air. Air putih ini membantu cairan yang disaring ke ginjal tidak terlalu pekat sehingga tidak mengganggu kerja ginjal.(detik)
Jumat, 05 Maret 2010
kelapa
Minumlah larutan campuran air kelapa muda hijau dengan air perasan jeruk nipis secara teratur sehari tiga kali untuk membantu penyembuhan demam berdarah. Air kelapa adalah sumber alami dari elektrolit seperti potasium dan sodium.(detik)
otak manusia
Setelah ribuan tahun dipelajari dari berbagai, mulai terungkap beberapa sisi misterius otak manusia. Terdapat beberapa fakta yang sebelumnya mungkin tidak pernah terpikir oleh manusia.
Otak adalah salah satu organ yang paling menakjubkan di dalam tubuh manusia, karena ia dapat mengendalikan sistem saraf pusat agar bisa bekerja secara normal.
Otak manusia sangatlah kompleks dan terdiri sekitar 100 miliar saraf (neuron) dan ada begitu banyak hal terjadi di dalam otak dengan berbagai bidang yang berbeda. Karenanya otak termasuk salah satu organ vital dalam kehidupan manusia.
Seperti dikutip dari Howstuffworks, Jumat (5/3/2010) ini dia beberapa fakta lain seputar otak manusia yang belum banyak diketahui:
1. Otak tetap aktif meskipun kepala sudah terpenggal.
Berdasarkan pengamatan beberapa kisah diketahui bahwa otak manusia bisa tetap aktif selama beberapa detik setelah kepalanya dipenggal. Namun para dokter percaya bahwa hal tersebut merupakan refleksi kedut otot.
Dr Harold Hillman, mantan direktur Unity Laboratory of Applied Neural Biology di University of Surrey menuturkan bahwa kematian terjadi karena adanya pemisahan antara otak dengan sumsum tulang belakang, tapi hal ini bersifat menyakitkan sehingga banyak negara yang tidak memberlakukan metode ini.
2. Otak bisa mempelajari pesan bawah sadar.
Otak dapat mempelajari pesan yang berasal dari alam bawah sadar seseorang sehingga nantinya akan mempengaruhi perilaku dari orang tersebut. Banyak perusahaan menggunakan hal ini sebagai ajang promosi untuk mempengaruhi seseorang agar mau membeli produknya.
3. Obat-obatan bisa menyebabkan lubang di otak.
Salah satu penelitian menyatakan penggunaan obat seperti mariyuana bisa menghilangkan sedikit memori, sedangkan untuk obat seperti kokain atau ekstasi dapat menimbulkan lubang di otak. Sebenarnya satu-satunya hal yang dapat menimbulkan lubang di otak adalah akibat adanya trauma atau benturan fisik.
Selain itu sebuah studi dari New Scientist menyatakan penggunaan obat-obatan jangka panjang dapat menyebabkan pertumbuhan tidak normal dari otak yang bersifat permanen, karenanya sulit untuk mengubah perilaku dari seorang pecandu.
4. Otak manusia berwarna abu-abu.
Beberapa bagian dari tubuh memiliki warna tersendiri untuk darah, jaringan, tulang atau cairan lain. Tapi jika otak manusia diawetkan dalam stoples meskipun masih berdenyut kebanyakan berwarna abu-abu, karena itu seluruh otak kadang disebut sebaagi materi abu-abu. Namun otak juga tetap mengandung materi putih yang terdiri dari serat saraf untuk menghubungkan materi abu-abu.
Sedangkan komponen yang berwarna hitam disebut dengan substantia nigra yang merupakan neuromelanin hitam, yaitu pigmen khusus yang sama dengan warna kulit dan rambut dan merupakan batas dari bagian basal ganglia.
5. Otak manusia merupakan otak yang paling besar.
Beberapa binatang bisa menggunakan otaknya untuk melakukan berbagai hal yang dilakukan oleh manusia. Tapi sebenarnya otak manusia berukuran paling besar dibandingkan dengan otak binatang manapun. Rata-rata berat otak manusia dewasa sebesar 1,361 kilogram, berat ini hampir sama dengan binatang lumba-lumba yang dianggap sebagai hewan yang cerdas.
Namun berat dari otak ini dibandingkan dengan ukuran tubuhnya, sehingga otak manusia tetap saja menjadi yang paling besar. Selain itu kecerdasan juga berkaitan dengan berbagai komponen di otak, dan mamalia memiliki korteks serebral terbesar yang bertanggung jawab terhadap fungsi memori, komunikasi dan berpikir.(detik)
Otak adalah salah satu organ yang paling menakjubkan di dalam tubuh manusia, karena ia dapat mengendalikan sistem saraf pusat agar bisa bekerja secara normal.
Otak manusia sangatlah kompleks dan terdiri sekitar 100 miliar saraf (neuron) dan ada begitu banyak hal terjadi di dalam otak dengan berbagai bidang yang berbeda. Karenanya otak termasuk salah satu organ vital dalam kehidupan manusia.
Seperti dikutip dari Howstuffworks, Jumat (5/3/2010) ini dia beberapa fakta lain seputar otak manusia yang belum banyak diketahui:
1. Otak tetap aktif meskipun kepala sudah terpenggal.
Berdasarkan pengamatan beberapa kisah diketahui bahwa otak manusia bisa tetap aktif selama beberapa detik setelah kepalanya dipenggal. Namun para dokter percaya bahwa hal tersebut merupakan refleksi kedut otot.
Dr Harold Hillman, mantan direktur Unity Laboratory of Applied Neural Biology di University of Surrey menuturkan bahwa kematian terjadi karena adanya pemisahan antara otak dengan sumsum tulang belakang, tapi hal ini bersifat menyakitkan sehingga banyak negara yang tidak memberlakukan metode ini.
2. Otak bisa mempelajari pesan bawah sadar.
Otak dapat mempelajari pesan yang berasal dari alam bawah sadar seseorang sehingga nantinya akan mempengaruhi perilaku dari orang tersebut. Banyak perusahaan menggunakan hal ini sebagai ajang promosi untuk mempengaruhi seseorang agar mau membeli produknya.
3. Obat-obatan bisa menyebabkan lubang di otak.
Salah satu penelitian menyatakan penggunaan obat seperti mariyuana bisa menghilangkan sedikit memori, sedangkan untuk obat seperti kokain atau ekstasi dapat menimbulkan lubang di otak. Sebenarnya satu-satunya hal yang dapat menimbulkan lubang di otak adalah akibat adanya trauma atau benturan fisik.
Selain itu sebuah studi dari New Scientist menyatakan penggunaan obat-obatan jangka panjang dapat menyebabkan pertumbuhan tidak normal dari otak yang bersifat permanen, karenanya sulit untuk mengubah perilaku dari seorang pecandu.
4. Otak manusia berwarna abu-abu.
Beberapa bagian dari tubuh memiliki warna tersendiri untuk darah, jaringan, tulang atau cairan lain. Tapi jika otak manusia diawetkan dalam stoples meskipun masih berdenyut kebanyakan berwarna abu-abu, karena itu seluruh otak kadang disebut sebaagi materi abu-abu. Namun otak juga tetap mengandung materi putih yang terdiri dari serat saraf untuk menghubungkan materi abu-abu.
Sedangkan komponen yang berwarna hitam disebut dengan substantia nigra yang merupakan neuromelanin hitam, yaitu pigmen khusus yang sama dengan warna kulit dan rambut dan merupakan batas dari bagian basal ganglia.
5. Otak manusia merupakan otak yang paling besar.
Beberapa binatang bisa menggunakan otaknya untuk melakukan berbagai hal yang dilakukan oleh manusia. Tapi sebenarnya otak manusia berukuran paling besar dibandingkan dengan otak binatang manapun. Rata-rata berat otak manusia dewasa sebesar 1,361 kilogram, berat ini hampir sama dengan binatang lumba-lumba yang dianggap sebagai hewan yang cerdas.
Namun berat dari otak ini dibandingkan dengan ukuran tubuhnya, sehingga otak manusia tetap saja menjadi yang paling besar. Selain itu kecerdasan juga berkaitan dengan berbagai komponen di otak, dan mamalia memiliki korteks serebral terbesar yang bertanggung jawab terhadap fungsi memori, komunikasi dan berpikir.(detik)
Langganan:
Postingan (Atom)