Senin, 08 Maret 2010

ARRAY MULTI DIMENSI

Tipe apapun bisa digunakan sebagai tipe dasar suatu array. Kita bisa membuat array int, array String, array Object dan seterusnya. Terutama, karena array adalah tipe Java kelas satu, kita bisa membuat array yang bertipe array.

Misalnya suatu array bertipe int[], juga otomatis memiliki array bertipe int[][], yaitu "array bertipe array int". Array tersebut disebut array 2 dimensi. Tentunya, dengan tipe int[][], kita juag bisa membuat arraynya dengan tipe int[][][], yang merupakan array 3 dimensi, dan seterusnya. Tidak ada batasan berapa dimensi array yang kita buat, akan tetapi bukan sesuatu yang biasa dilakukan untuk membuat array lebih dari 3 dimensi. Pembahasan kita akan lebih dikhususkan pada array 2 dimensi. Tipe TipeDasar[][] biasanya dibaca "array 2 dimensi bertipe TipeDasar" atau "array dari array TipeDasar".

Deklarasi pernyataan "int[][] A;" adalah membuat variabel bernama A dengan tipe int[][]. Variabel ini berisi objek yang bertipe int[][]. Pernyataan pemberian nilai "A = new int[3][4];" akan membuat objek array 2 dimensi dan mengisi A ke objek yang baru dibuat tersebut.

Seperti biasa, deklarasi dan pemberian nilai bisa digabung menjadi satu pernyataan, seperti "int[][] A = new int[3][4];". Objek yang baru dibuat adalah objek yang merupakan array dari array int. Bagian int[3][4] menyatakan bahwa ada 3 array int di dalam array A, dan di setiap array int tersebut terdapat 4 int.


SUMBER:

http://java.lyracc.com/belajar/java-untuk-pemula/array-multi-dimensi

Jumat, 05 Maret 2010

Organisasi Struktur Data

Organisasi Berkas (File)

  • Sekuensial
    • Record disimpan dalam file secara beruntun berdasarkan kedatangannya
    • Record yang masuk pertama akan memiliki indeks atau alamat yang lebih kecil daripada record yang masuk kemudian
  • Langsung
  • Sekunsial Berindeks




File Langsung

  • Dengan organisasi ini, untuk menemukan suatu record, maka tidak melalui proses pencarian, namun langsung menuju ke alamat yang ditempati record
  • Contoh: record dengan key 100 akan disimpan pada alamat 100
  • Kerugian: berarti harus ada ruang yang cukup besar untuk menampung semua kemungkinan key yang ada.
  • Contoh: jika key berupa NIM (8 digit) berarti harus ada alamat 0000000 sampai 9999999


http://74.125.153.132/search?q=cache:I-c5I1toHhEJ:lecturer.ukdw.ac.id/anton/download/TIstrukdat12.ppt+organisasi+stack&cd=5&hl=id&ct=clnk&gl=id

Kamis, 04 Maret 2010

Array Dimensi Banyak



spasissss


spasi

Apabila batas interval indek array tidak ditentukan, maka hal ini berarti array merupakan array dua dimensi dengan sifat dinamis. Namun apabila anda menentukan batas interval tersebut, maka itu berarti merupakan array dua dimensi dengan sifat statik.
Apabila anda memilih array dengan sifat atau karakteristik yang dinamis, maka setiap kali sebelum menggunakan array tersebut anda harus inisialisasi indek array tersebut dengan prosedur SetLength.
Didalam artikel ini nanti akan dijelaskan dengan menggunakan array yang dinamis.

spasi

Contoh penulisan pendeklarasian array:

spasi

NamaMantan : arrayof array of string;// Array dinamis

spasi

NamaMantan : array[0..11] of array[0..5] of string; // Array Statik

spasi

LINEAR LIST

Linear Lists (daftar)

Definition Definisi

L contoh dari tipe data parameterized daftar adalah urutan item (daftar :: item). Setiap item dalam L berisi tipe data elemen E, yang disebut elemen atau tipe nilai L. Jumlah item dalam L disebut panjang L. Jika L memiliki panjang nol itu disebut daftar kosong. Dalam sekuel digunakan untuk menunjukkan suatu item daftar berisi elemen x dan L [i] digunakan untuk menunjukkan isi dari item daftar i dalam L.

#include <> # include

Types Jenis

list::item daftar :: item the item type. jenis item.
list::value_type daftar :: value_type the value type. jenis nilai.

Creation Penciptaan

list daftar L L creates an instance L of type list < E > and initializes it to the empty list. menciptakan contoh tipe L daftar dan menginisialisasi ke daftar kosong.

Operations Operasi

Access Operations Operasi akses

int int L.length() L.length () mengembalikan panjang L.
int int L.size() L.size () kembali L. panjang ().
bool bool L.empty() L.empty () mengembalikan nilai true jika L adalah kosong, palsu sebaliknya.
list_item list_item L.first() L.first () mengembalikan item pertama L (nil jika L adalah kosong).
list_item list_item L.last() L.last () mengembalikan item terakhir L. (nil if L is empty) (nil jika L kosong)





list_item list_item L.succ(list_item it) L.succ (list_item itu) mengembalikan item pengganti barang itu, nil jika itu = L. terakhir ().
Prasyarat itu adalah salah satu item dalam L.
list_item list_item L.pred(list_item it) L.pred (list_item itu) mengembalikan item item pendahulu itu, nil jika itu = L. pertama ().
Prasyarat itu adalah salah satu item dalam L.
list_item list_item L.cyclic_succ(list_item it) L.cyclic_succ (list_item itu)


returns the cyclic successor of item it , ie, L .first() if it = L .last(), L .succ( it ) otherwise. mengembalikan item penerus siklik itu, yaitu, L. pertama () jika itu = L. terakhir (), L. succ (itu) sebaliknya.
list_item list_item L.cyclic_pred(list_item it) L.cyclic_pred (list_item itu)


returns the cyclic predecessor of item it , ie, L .last() if it = L .first(), L .pred( it ) otherwise. mengembalikan item siklik pendahulunya itu, yaitu, L. terakhir () if it = L. pertama (), L. Pred (itu) sebaliknya.
const E& const E & L.contents(list_item it) L.contents (list_item itu) returns the contents L [ it ] of item it . mengembalikan isi L [it] item itu.
Precondition it is an item in L . Prasyarat itu adalah salah satu item dalam L.
const E& const E & L.inf(list_item it) L.inf (list_item itu) returns L .contents( it ). kembali L. isinya (itu).
const E& const E & L.front() L.front () returns the first element of L , ie the contents of L .first(). mengembalikan elemen pertama dari L, yaitu isi L. pertama ().
Precondition L is not empty. Prasyarat L tidak kosong.
const E& const E & L.head() L.head () same as L . front (). sama seperti L. depan ().
const E& const E & L.back() L.back () returns the last element of L , ie the contents of L .last(). mengembalikan elemen terakhir dari L, yaitu isi L. terakhir ().
Precondition L is not empty. Prasyarat L tidak kosong.
const E& const E & L.tail() L.tail () same as L . back (). sama seperti L. kembali ().
int int L.rank(const E& x) L.rank (const E & x) returns the rank of x in L , ie its first position in L as an integer from [1...| L |] (0 if x is not in L ). Note that this takes time linear in rank ( x ). Precondition operator== has to be defined for type E . mengembalikan pangkat dari x dalam L, yaitu posisi pertama dalam L sebagai sebuah integer dari [1 ... | L |] (0 jika x adalah tidak dalam L). Perhatikan bahwa membutuhkan waktu linear ini pangkat (x). Persyaratan == operator harus ditentukan untuk tipe E.











APLIKASI STACK

Operasi-operasi Stack

Dalam penggunaannya suatu stack memiliki beberapa operasi yang dapat diterapkan seperti membuat stack, penambahan eleme ke dalam stack, menghapusan elemen dari dalam stack, dan operasi lain yang berhubungan dengan stack tersebut. Adapun operasi-operasi dasar dari suatu stack adalah :

a) Create(Stack)

Operasi Create(Stack) digunakan untuk membuat suatu stack baru dengan nama stack, yang nilai elemen saat stack tersebut dibuat adalah NOEL(S) = 0, TOP(S) = NULL (tidak terdefinisikan)

b) IsEmpty(Stack)

Operasi ini merupakan operasi untuk mencek isi dari suatu stack dalam keadaan kosong atau berisi. Operasi ini memiliki 2 (dua) kondisi boolean yaitu :

a. True jika stack tersebut kosong atau dapat dikatakan NOEL(S) = 0

b.False jika stack tersebut tidak dalam kondisi kosong atau dapat dikatakan NOEL(S) > 0



Implementasi algoritma Stack

Pada bahasa pemrograman PASCAL suatu stack didefinisikan dalam bentuk algoritma, hal ini dimaksudkan untuk mendapatkan hasil yang optimal dan terarah saat program tersebut di rancang dan digunakan. Dari teori tentang penggunaan stack dalam struktur data sebelumnya, suatu stack memiliki dua informasi penting yaitu adanya TOP(S) yang berisikan informasi isi untai dalam bentuk karakter dan NOEL(S) yang berisikan informasi jumlah untai yang bernilai integer dari stack tersebut.

Pada implementasinya, kedua informasi tersebut dikemas dalam bentuk record yang memuat array (larik) untuk membatasi isi dari stack, dan memberikan nilai indeks atas informasi yang masuk dalam stack tersebut pada saat dilakukan operasi. Adapun secara algoritma stack tersebut di bentuk sebagai :

Const

NoelStack = 80;

Type

Eon = Char;

Stack = Record

Top : Array [ 1 .. NoelStack] of Eon;

Noel : 0 .. NoelStack;

End;

Dari algoritma tersebut di atas, isi dari stack dapat menampung 80 karakter yang dikemas dalam bentuk record dengan nama stack.

Setelah algoritma yang memuat informasi dasar dari stack didefinisikan, pembentukan algoritma untuk operasi terhadap stack dapat disusun dalam bentuk prosedur dan fungsi yang dibuat sendiri. Adapun algoritma yang digunakan untuk operasi suatu stack adalah :

1) Algoritma Create(S)

Algoritma ini memuat suatu prosedur untuk membuat stack, yang memberikan kondisi noel dari stack akan bernilai nol dan top dari stack tersebut belum dapat didefinisikan, sehingga implementasi dari algoritma create stack adalah ;

Procedure Create(var S : Stack);

Begin

S.Noel := 0;

End;

2) Algoritma IsEmpty(S)

Algoritma untuk operasi Isempty memberikan informasi Boolean yaitu kondisi benar (true) atau salah (False), sehingga pada implementasinya algoritma ini menggunakan fungsi yang dibuat sendiri, yang terimplementasi sebagai berikut :

Function IsEmpty(Var S : Stack) : Boolean;

Begin

IsEmpty := S.Noel = 0

End;

3) Algoritma Push(S, E)

Dalam merancang algoritma untuk operasi push dimulai dengan melakukan pengecekan atas isi dari stack tersebut dalam keadaan penuh atau tidak. Kondisi stack dalam keadaan maksimum akan mengakibatkan overflow pada stack tersebut sehingga prosedur error trapping perlu didefinisikan untuk mencegah terjadinya overflow condition tersebut. Adapun implementasi dari algoritma push tersebut adalah :

Procedure Push(Var S : Stack; TipeBAru : Eon);

Begin

If S.Noel = NoelStack Then

Stackerror(1)

Else

Begin

S.Noel := S.Noel + 1;

S.Top[S.Noel] := TipeBaru

End

End;

4) Algoritma Pop(S)

Operasi terakhir dari stack adalah operasi pop yang berfungsi untuk mengeluarkan isi dari dalam stack. Seperti halnya operasi push, pada operasi pop penggunaan error trapping dipakai untuk mencek kondisi underflow yaitu kondisi stack kosong yang dikenakan operasi pop. Algoritma dari pop ini adalah :

Procedure Pop(Var S : Stack; Var NilaiStack : Eon);

Begin

If S.Noel = 0 Then

StackError(2)

Else

Begin

NilaiStack := S.Top[s.Noel];

S.Noel := S.Noel -1

End

End;

Penggunaan error trapping untuk operasi push dan pop didefinisikan lebih lanjut dalam algoritma stackerror yang digunakan untuk menentukan kondisi overflow atau underflow suatu stack. Adapun algoritma dari error trapping ini adalah ;

Procedure StackError(TingkatanError : Integer);

Begin

Case TingkatanError of

1 : WriteLn(‘Isi Stack sudah penuh... kondisi overflow’);

2 : WriteLn(‘Isi Stack Kosong ... kondisi underflow’)

End

End;


SUMBER

http://mugi.or.id/blogs/oke/archive/2008/08/27/aplikasi-stack-pada-struktur-data-untuk-mengkonversikan-notasi-infix-menjadi-notasi-postfix.aspx

Senin, 01 Maret 2010

Deklarasi Array dalam Bahasa Pemrograman

Alokasi Memory Array

  • Array, seperti halnya variabel biasa ataupun fungsi harusi dideklarasikan terlebih dahulu.
  • Array dapat dideklarasikan secara global dengan mendeklarasikannya diluar fungsi main
  • Hati-hati jika anda mendeklarasikannya secara (didalam sebuah fungsi atau main), karena, variabel lokal akan dibentukan dalam stack ketikan fungsi tersebut dibentuk, dan akan dihapus ketika fungsi tersebut dihancurkan (ketika fungsi tersebut selesai dieksekusi).
  • Mungkin hal ini tidak bermasalah bagi variabel biasa, namun array umumnya akan menuntut jumlah memory yang sangat besar (array 'float mydata[5000]' akan membutuhkan memory sebesar 20000 bytes), sementara stack hanya memiliki kapasitas sekitar 2000 - 4000 bytes
  • Oleh karena itu untuk array yang besar harus dideklarasikan secara global, atau mempergunakan static statement (static float mydata[5000]; ) jika anda hendak mendeklarasikannya secara local.

sumber:
http://74.125.153.132/search?q=cache:H1ZYdFO-gYEJ:telecom.ee.itb.ac.id/~monang/if2031/Array_dalam_BahasaC_bahan4.ppt+deklarasi+array+pada+bahasa+pemrogaman&cd=1&hl=id&ct=clnk&gl=id

PEMETAAN KE STORAGE

PEMETAAN STORAGE

INTEGER
Bentuk mapping ke storage dari integer dapat dilakukan dengan beberapa cara, yaitu :
1. Skema Sign dan Magnitude
Cara ini merupakan bentuk konvensional yang digunakan manusia untuk menyatakan suatu bilangan dalam bentuk biner. Di sini representasi bilangan positif dan negatif hanya dibedakan dengan tanda saja. Biasanya tanda positif atau negatif ditunjukkan oleh digit terdepan dari bentuk binernya, untuk representasi dengan jumlah digit tertentu.
Contoh :
+ 7 à + 111 à representasi dengan 4 digit : 0111
- 7 à - 111 à representasi dengan 4 digit : 1111

Dengan cara ini kita akan mendapatkan kesulitan dalam menentukan tanda pada saat melakukan operasi terhadap dua bilangan yang berbeda tandanya.
2. Skema One's Complement
3. Skema Two's Complement
Kedua skema ini merupakan cara yang digunakan untuk mengatasi kesulitan yang telah disebutkan di atas. Diberikan bilangan integer non negatif X, X' dan R. Didefinisikan bahwa X' adalah komplemen dari X relatif terhadap R, jika X + X' = R. X disebut sebagai bentuk true, sedangkan X' = R - X disebut bentuk komplemen. Bentuk komplemen X' = R - X menyatakan bilangan integer negatif X. Sedangkan bentuk true X menyatakan integer positif X.

Skema Two's Complement menggunakan R = 2N.
Skema One's Complement menggunakan R = 2N - 1.
Contoh :
Misal diberikan integer = 7, akan dicari bentuk binernya dengan skema Two's Complement untuk representasi 4 digit.

X = 7 ; R = 24 ; à X + X' = R
X' = R - X
= 24 - 7
= 16 - 7
= 9 à dalam biner = 1001

KARAKTER
Saat ini banyak sekali skema yang digunakan untuk merepresentasikan karakter dalam storage. Pada umumnya skema yang paling banyak digunakan adalah :
1. Extended Binary Coded Decimal Interchange Code (EBCDIC)
2. American Standard Code for Information Interchange (ASCII)

Pada skema EBCDIC digunakan kode 8 bit untuk menyatakan sebuah karakter. Jika dihitung, kemungkinan kombinasi seluruhnya adalah : 28. Sedangkan skema ASCII menggunakan kode 7 bit untuk menyatakan suatu karakter. Skema ini mempunyai jumlah kemungkinan kombinasi yang lebih sedikit jika dibandingkan dengan skema EBCDIC. Selain dua skema tersebut di atas ada sebuah skema yang disebut dengan kode Huffman. Pada cara ini, jumlah bit yang digunakan tergantung dari frekuensi penggunaan suatu karakter.




STRING
Untuk mengetahui bentuk mapping pada storage dari suatu string, perlu diketahui beberapa hal yang menyangkut ruang untuk string yang bersangkutan, antara lain :
- letak posisi awal (start) dan posisi akhir (terminal)
- suatu pointer yang menunjukkan lokasi pada storage
Ada tiga cara yang umum digunakan untuk mapping suatu string ke dalam storage. Misal diberikan dua string, yaitu : S1 = 'ABCDEFG' dan S2 = 'BCD'

 CARA 1
Jika diberikan suatu informasi tentang :
- nama string
- starting address
- panjang string

Contoh :
Nama String Start Panjang
String1 Ptr1 7
String2 Ptr2 3

 CARA 2
Jika diberikan informasi sebagai berikut :
- nama string
- starting address
- terminal address





Misalnya diberikan tabel sbb :

Nama String Start Terminal
String1 Ptr1s Ptr1t
String2 Ptr2s Ptr2t

 CARA 3
Jika diberikan informasi :
- nama string
- starting address
- suatu tanda yang menunjukkan batas string

Misalnya :
Nama String Start
String1 Ptr1
String2 Ptr2