Senin, 28 Februari 2011




ARRAY (LARIK) DAN RECORD

Array Berdimensi Satu dan Array Berdimensi Banyak

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

Nilai(1) Nilai(2) Nilai(3) - - - Nilai(n)

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

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

Dengan mudah dapat dimengerti bahwa B(11,*) menunjukkan semua elemen pada baris
ke-11. Transpose dari suatu array dimensi dua adalah penulisan baris menjadi kolom (kolom menjadi baris) dari suatu array. Jadi transpose dari array berorder M x N adalah array berorder N x M. Transpose dari array B dinotasikan sebagai BT. Berdasarkan definisi, maka jelas B(I,J) =BT(J,I). Contohnya B(3,5) = BT(5,3).

Pengertian di atas dapat kita perluas untuk array dimensi tiga, dimensi empat, sampai
dimensi N. Array dimensi N kita tulis sebagai :

A(L1:U1, L2:U2, …, LN: UN) = (A(I1, I2, …, IN))

dengan Lk <= Ik <= Uk, untuk setiap k = 1, 2, …, N.

Banyaknya elemen dari array A tersebut adalah :
PI(Uk - Lk + 1) = (U1-L1+1) * (U2 – L2+1) … * (UN -LN + 1)

Contoh array dimensi tiga adalah penyajian data mengenai banyaknya mahasiswa
dari-20 perguruan tinggi di Jakarta, berdasarkan tingkat (tingkat 1, 2 sampai dengan 5), dan jenis kelamin (pria atau wanita). Misalnya array tersebut dinamakan MHS. Ambil sebagai subscript pertama, tingkat : I = 1, 2,...,5; subscript kedua, jenis kelamin (pria = 1, wanita = 2): J = 1,2, dan subscript ke-3, Perguruan Tinggi adalah K = 1,2,...,20. Jadi MHS(4,2,17)

Pengertian cross-section pada array dimensi banyak, adalah sama seperti pada array
dimensi dua. Misalnya MHS(4,*,17) menunjukkan jumlah mahasiswa tingkat 4 dari
perguruan tinggi 17 (masing-masing untuk pria serta wanita). MHS(*,*,3) menun-jukkan
jumlah mahasiswa untuk masing-masing tingkat, pria serta wanita, dari perguruan tinggi 3.


- DEKLARASI 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)


- 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

- PEMETAAN KE STORAGE TERHADAP ARRAY DIMENSI BANYAK

Karena memori komputer adalah linear, maka array dimensi banyak harus dilinearkan
apabila akan dipetakan ke dalam storage. Salah satu alternatif untuk pelinearan tersebut adalah menyimpan pertama kali baris pertama dari array, kemudian baris ke-2, baris ke-3 dan seterusnya. Ini disebut row major order.

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

Terdapat 2 baris (I-L1, 0 – (-2)) sebelum baris nol, yang masing-masing panjangnya 3*
S(U2-L2+1 = 6-4+1) dan terdapat 2 elemen (J-L2 = 6-4) pada baris ke nol sebelum elemen Z (0,6). Jadi address awal dari Z(0,6) adalah :

B + 2 * 3 * S + 2 * S = B + 8 * S

Alternatif lain untuk melinearkan array dimensi dua adalah dengan menyimpan
elemen dalam column major order, yakni pertama kali menyimpan kolom pertama, lalu
kolom kedua, kolom ketiga dan seterusnya.

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 X X 0 0 0 0
0 0 X X X X X X X 0 0 0
0 0 0 X X X X X X X 0 0
0 0 0 0 X X X X X X X 0
0 0 0 0 0 X X X X X X X
(a) (b)

Gambar 2.10 (a) Upper triangular array (b) Lower triangular array
Rumus ini berlaku pula untuk array upper tringular dengan N baris. Kalau N besar,
alangkah baiknya kalau elemen nol tidak usah kita simpan dalam memori. Suatu
pendekatan terhadap problema ini adalah dengan pelinearan array, dan dengan hanya
menyimpan bagian array yang tidak nol. Misalkan kita menyimpan array upper tringular T secara baris dalam array satu dimensi S, dengan batas subscript I sampai N(N+I)/2. Elemen T(1,1) disimpan sebagai S(1), elemen T(1,2) sebagai S(2) dan seterusnya, sehingga elemen T(1,N) disimpan sebagai S(N). Maka elemen T(2,2) disimpan sebagai S(N+1) (karena T(2,1) = 0).

Terakhir sekali, elemen T(N,N) akan disimpan sebagai S(N(N+1)/2). Kadang-kadang suatu program menggunakan lebih dari satu array tringular. Untuk itu kita dapat menyimpan 2 array sekaligus. Misalnya array A upper triangular berorder
N x N dan array B lower triangular berorder (N-1) x (N-1). Mereka dapat kita simpan sebagai array C berorder N x N. Di sini C(l,J) = A(l,J) untuk I <= J dan C(I+1,J) = B(I,J) untuk I >= J.

Sekarang apabila array A upper tringular berorder N x N sedangkan array B lower
tringular, juga berorder N x N, maka array C yang mengandung keduanya harus berorder
N x (N+1). Di sini elemen A(I,J) disimpan sebagai C(I,J+1) untuk I <= J, dan B(I,J)
disimpan sebagai C(I,J) untuk I >= J.

Perhatikan contoh berikut array A berorder (3 x 3) merupakan upper tringular.

1 2 3
0 4 5
0 0 6

Array B berorder (2 x 2) merupakan lower tringular,

7 0
8 9


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


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

Pada record tersebut di atas, satuan data seperti NAMA BELAKANG ataupun KOTA
merupakan tipe data string, sedangkan data lain seperti GAJI POKOK, TUNJANGAN
JABATAN dan berbagai data yang akan diolah secara matematis akan disimpan dengan
tipe data numerik, bisa integer maupun real. Data MENIKAH bisa digunakan tipe data
boolean atau logikal.

Seperti telah kita paparkan terdahulu, array berbeda dengan record, yakni array
bersifat homogen (terdiri dari tipe data yang sama), dan komponen array tidak memiliki
nama sendiri, dan hanya diberi identifikasi oleh posisi mereka di dalam array. Penggunaan
keduanya di dalam program juga berbeda, jika penggunaan array pada umumnya akan
disimpan di memori utama komputer (bersifat sementara), sedangkan record biasanya
digunakan dalam filing yang akan disimpan di memori sekunder komputer, seperti hard
disk, disket, dan lainnya.

Sebuah record memberi informasi tentang berbagai kondisi dari obyek pada
permasalahan yang nyata sehari-hari. Setiap field memberi uraian tentang satu atribut dari
obyeknya. Sebuah record biasanya diberi identifikasi oleh key-nya. Key atau kunci adalah
salah satu atau lebih field yang dipilih untuk tujuan penyampaian informasi yang terjadi di
dalam record yang bersangkutan.

Koleksi dari record yang sama struktur fieldnya disebut suatu file atau berkas. Jadi,
koleksi dari record semua pegawai perusahaan membentuk sebuah file personalia. Pada
umumnya record disimpan membentuk file, dalam urutan sesuai dengan nilai dari key
masing-masing. Di dalam suatu file PERSONALIA, field NOMOR JAMINAN SOSIAL
dari seorang pegawai dapat digunakan sebagai key. Di dalam bahasa pemrograman tingkat
tinggi, record dapat dinyatakan sebagai struktur data (COBOL dan PL/1) dapat diadakan
spesifikasi tentang nama record, field dan subfield yang bersangkutan.

Record tersebut juga diberi nomor seperti diperlihatkan di dalam contoh di bawah ini.
Deklarasi berikut ini dapat digunakan untuk menuliskan record dari file PERSONALIA di
atas.
01 PEGAWAI
02 NOMOR-JAMINAN-SOSIAL
02 NAMA
03 NAMA-BELAKANG
03 NAMA-DEPAN
03 NAMA-TENGAH
02 ALAMAT
03 JALAN
04 NOMOR RUMAH
04 NAMA-JALAN
03 KOTA
03 NEGARA-BAGIAN
03 KODE-POS
02 MENIKAH

Selasa, 22 Februari 2011

jenis – jenis struktur data

beberapa tipe data, antara lain :
1. Integer, long : tipe data untuk angka bulat.
2. Single, double : tipe data untuk angka pecahan/desimal.
3. Currency : tipe data untuk angka mata uang.
4. String : tipe data untuk teks.
5. Boolean : tipe data logika (True/False).
6. Date : tipe data waktu/tangggal.
7. Object : tipe data untuk sebuah objek misalnya gambar.
8. Variant : tipe data variant.
penjelasan :
- Tipe Data Numerik, terdiri dari integer, long, single.
Jika suatu variabel selalu merupakan bilangan bulat maka variabel tersebut dapat dideklarasikan dengan tipe data Integer atau long (seperti angka 12, 14, dll). Sedangkan jika variabel merupakan bilangan desimal maka dapat digunakan tipe data Currency, Single atau Double (seperti angka 12, 23123). Currency hanya mampu menyimpan data sampai 4 angka dibelakang koma.
- Tipe Data Byte.
Jika suatu varibel berisi data biner atau heksadesimal, maka variabel tersebut dapat dideklarasikan sebagai tipe data byte. Tipe data byte mampu menyimpan nilai antara 0 sampai 255.
- Tipe Data String.
Digunakan untuk menyimpan data berupa kalimat, bukan tipe data angka.
- Tipe Data Boolean.
Digunakan untuk menyimpan informasi true/false, ya/tidak, atau benar/salah.
- Tipe Data Date.
Digunakan untuk menyimpan informasi tanggal dan jam.

pengertian struktur data

Pengertian Struktur Data
Struktur data adalah cara menyimpan atau merepresentasikan data di dalam komputer agar bisa dipakai secara efisien.Sedangkan data adalah representasi dari fakta dunia nyata.Fakta atau keterangan tentang kenyataan yang disimpan, direkam atau direpresentasikan dalam bentuk tulisan, suara, gambar, sinyal atau simbol.
Secara garis besar type data dapat dikategorikan menjadi
Type data sederhana
- Type data sederhana tunggal, misalnya :
Integer, real, boolean,dan karakter
- Type data sederhana majemuk, misalnya :
String
Struktur Data, meliputi
- Struktur data sederhana, misalnya array dan Record
Struktur data majemuk, yang terdiri
- Linier : Stack, Queue, serta List dan Multilist
- Non Linier : Pohon Biner dan Graph
Pemakaian struktur data yang tepat di dalam 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
- ADT , Array , Struk
- List linier (Linked List) dan variasinya
- Multilist
- Stack (Tumpukan)
- Queue (Antrian)
- Tree ( Pohon )
- Graph ( Graf )
demikian pengertian dari struktur data dan elemnt – element yang ada di dalamnya.S’moga membantu dalam perkuliahan Struktur Data.. ;)

Sabtu, 19 Februari 2011

Jquery Mobile Framework




jQuery telah lama menjadi JavaScript library yang populer untuk menciptakan website interaktif yang kaya dan aplikasi web. Namun, karena ini dirancang terutama untuk browser desktop, jquery tidak memiliki banyak fitur yang khusus dirancang untuk membangun aplikasi web mobile.
jQuery Mobile adalah proyek baru yang membahas kekurangan ini. Ini adalah framework yang dibangun di atas jQuery yang menyediakan berbagai elemen User-interface dan fitur-fitur untuk digunakan dalam aplikasi mobile.
framework ini cukup canggih, versi alpha pertama dirilis bulan lalu – tapi sudah memungkinkan untuk melakukan beberapa hal besar.
Pada artikel ini saya melihat beberapa fitur kunci dan manfaat dari Jquery mobile dan menunjukkan beberapa contoh bagaimana framework baru ini dapat membantu Anda membangun aplikasi mobile berkualitas dan dalam waktu singkat.
Apa yang dapat jQuery Mobile lakukan?
  • jQuery Mobile memudahkan pengembangan user-interface untuk mobile web apps.
  • The interface configuration is markup-driven, yang berarti Anda dapat membuat seluruh aplikasi antarmuka dasar dalam HTML, tanpa perlu menulis satu baris JavaScript.
  • Menyediakan serangkaian custom events baru, mendeteksi events mobile device dan touchscreen seperti  tap, tap-and-hold, swipe, and orientation change (i.e. rotating the device).
  • Memastikan bahwauser-interfcae bekerja pada web browser.
  • Menggunakan theme untuk memudahkan untuk costumized tampilan aplikasi Anda.

Struktur halaman Jquery Mobile
Sebagian besar halaman web aplikasi dengan jQuery Mobile akan mengikuti basic template:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<!DOCTYPE html>
<html>
  <head>
  <title>Page Title</title>
  <script src="http://code.jquery.com/jquery-1.4.3.min.js"></script>
</head>
<body>
 
<div data-role="page">
 
  <div data-role="header">
    <h1>Page Title</h1>
  </div>
 
  <div data-role="content">
    <p>Page content goes here.</p>
  </div>
 
  <div data-role="footer">
    <h4>Page Footer</h4>
  </div>
</div>
 
</body>
</html>
Untuk menggunakan jQuery Mobile, pertama anda perlu meng-include 3 file:
  • JQuery CSS Mobile file (jquery.mobile-1.0a1.min.css)
  • Perpustakaan jQuery (jquery-1.4.3.min.js)
  • Mobile perpustakaan jQuery (jquery.mobile-1.0a1.min.js)
Anda dapat mendownloadnya di website jQuerymobile
Seperti yang anda lihat, konten halaman disimpan dalam sebuah div dengan atribut data-role “page”. Hal ini memungkinkan jQuery mobile tahu di mana konten di markup. Dalam div “page”, ada  ”header”, “content” dan “footer” div.
<div data-role=”header”>
div “header” ini berfungsi untuk membuat toolbar di bagian atas halaman, yang digunakan untuk menyimpan  title dan button. (terdapat tombol default “Back” dimana pengguna dapat menekan untuk kembali ke halaman sebelumnya.) Dengan menambahkan data-position = “fixed” untuk header,membuat header selalu tetap di bagian top screen.
<div data-role=”content”>
Berisi konten utama halaman, seperti teks, images, button, list, form, dan sebagainya.
<div data-role=”footer”>
Membuat toolbar di bagian bawah halaman, yang berguna untuk hal-hal seperti buttona. Untuk membuat header selalu tetap top screen. Dengan menambahkan data-position = “fixed” untuk footer.
Halaman di dalam halaman
Salah satu hal baik dari struktur halaman di atas adalah bahwa Anda  dapat membuat beberapa “page” dalam suatu satu halaman HTML. Ini berarti bahwa browser hanya meload 1 halaman. Berikut ini contohnya:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<!DOCTYPE html>
<html>
  <head>
  <title>jQuery Mobile: Pages within Pages</title>
  <script src="http://code.jquery.com/jquery-1.4.3.min.js"></script>
</head>
<body>
 
<div data-role="page" id="home">
 
  <div data-role="header">
    <h1>Home</h1>
  </div>
 
  <div data-role="content">
    <p><a href="#about">About this app</a></p>
  </div>
 
</div>
 
<div data-role="page" id="about">
 
  <div data-role="header">
    <h1>About This App</h1>
  </div>
 
  <div data-role="content">
    <p>This app rocks! <a href="#home">Go home</a></p>
  </div>
 
</div>
 
</body>
</html>

Perpindahan Halaman (Page Transitions)
Kita dapat menerapkan salah satu dari beberapa efek transisi yang berbeda ke halaman baru yang muncul. Untuk membuat itu, cukup tambahkan atribut data-transition ke link. Value nya adalah:
  • slide Slide right to left (left to right if tapping the Back button). This is the default.
  • slideup Slide from the bottom to the top (top to bottom if tapping the Back button).
  • slidedown Slide from the top to the bottom (bottom to top if tapping the Back button).
  • pop Expand the new page (contract it if tapping the Back button). Great for dialogs and popups.
  • fade Fade the new page in (fade it out if tapping the Back button).
  • flip Flip the old page out and the new page in, like flipping a card.
contoh penggunaanya:
1
<p><a href="#about" data-transition="flip">About this app</a></p>
Dialog
DialogDengan menambahkan data-rel = “dialog” pada link, Anda dapat membuat halaman yang muncul sebagai dialog, dengan rounded corners, margin dan dark background. kita juga bisa menambahkan transitions seperti slideup, pop atau flip. contoh:
1
<p><a href="#about" data-rel="dialog" data-transition="slideup">About this app</a></p>
Dialog tidak akan bekerja jika berada di dalam satu halaman HTML yang sama seperti link, sehingga contoh diatas akan terlihat seperti halaman biasa, bukan dialog. (Remember, this is alpha version :) ) Jadi jika Anda ingin membuat dialog, Anda harus memasukkannya ke dalam halaman HTML terpisah.

Button

Button adalah bagian penting dari setiap aplikasi berbasis touchscreen. Button lebih baik daripada link, karena memberikan target yang lebih besar ketika melakukan navigasi (penting jika kita memiliki jari-jari gemuk!).
Untuk mengaktifkan link ke dalam button di jQuery Mobile, cukup menambahkan data-role = “button”:
code button:
<p><a href=”#about” data-role=”button”>About this app</a></p>
Touch-optimized form elements

jQuery Mobile secara otomatis menggantikan bentuk kontrol standar HTML, seperti teks, checbox dan select, dengan kontrol custom yang bekerja lebih baik dengan interface touchscreen, dan lebih fleksibel.
Misalnya, checkbox yang dibuat jauh lebih besar sehingga mereka lebih mudah untuk digunakan. framework ini mendukung elemen bentuk baru HTML5 seperti searching (untuk pencarian) dan slider. Selain itu, Anda dapat membuat switch “on / off”  flip dengan menggunakan select dengan atribut data-role = “slider”, dan menempatkan 2 option dalam daftar.
Fitur lain yang lumayan bagus adalah pengelompokan radio button dan checkbox. Jika ada beberapa radio button atau checkbox pada elemen fieldset dengan  atribut data-role = “controlgroup”.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
<!DOCTYPE html>
<html>
  <head>
  <title>jQuery Mobile Form Demo</title>
  <script src="http://code.jquery.com/jquery-1.4.3.min.js"></script>
</head>
<body>
 
<div data-role="page" id="home">
 
  <div data-role="header">
    <h1>Ice Cream Order Form</h1>
  </div>
 
  <div data-role="content">
    <form action="#" method="get">
 
     <div data-role="fieldcontain">
       <label for="name">Your Name:</label>
       <input type="text" name="name" id="name" value=""  />
     </div>
 
     <div data-role="controlgroup">
       <legend>Which flavour(s) would you like?</legend>
 
       <input type="checkbox" name="vanilla" id="vanilla" class="custom" />
       <label for="vanilla">Vanilla</label>
 
       <input type="checkbox" name="chocolate" id="chocolate" class="custom" />
       <label for="chocolate">Chocolate</label>
 
       <input type="checkbox" name="strawberry" id="strawberry" class="custom" />
       <label for="strawberry">Strawberry</label>
 
     </div>
 
     <div data-role="fieldcontain">
       <label for="quantity">Number of Cones:</label>
       <input type="range" name="quantity" id="quantity" value="1" min="1" max="10"  />
     </div>
 
     <div data-role="fieldcontain">
       <label for="sprinkles">Sprinkles:</label>
        <select name="sprinkles" id="sprinkles" data-role="slider">
          <option value="off">No</option>
          <option value="on">Yes</option>
        </select>
     </div>
 
     <div data-role="fieldcontain">
       <label for="store">Collect from Store:</label>
        <select name="store" id="store">
          <option value="mainStreet">Main Street</option>
          <option value="libertyAvenue">Liberty Avenue</option>
          <option value="circleSquare">Circle Square</option>
          <option value="angelRoad">Angel Road</option>
        </select>
     </div>
 
    <div class="ui-body ui-body-b">
      <fieldset class="ui-grid-a">
        <div class="ui-block-a"><button type="submit" data-theme="d">Cancel</button></div>
        <div class="ui-block-b"><button type="submit" data-theme="a">Order Ice Cream</button></div>
      </fieldset>
    </div>
 
  </div>
 
</div>
 
</body>
</html>
List views: Lists on steroids

List view merupakan fitur yang powerful pada jquery Mobile. Jquery memungkinkan kita untuk membuat unordered lebih stylish. Untuk mengubah list biasa menjadi list view, kita tinggal menambahkan data-role = “ListView” untuk tag ul atau ol.
Berikut adalah beberapa hal yang dapat kita buat menggunakan listview:
  • Sebuah list teks sederhana, dengan kotak yang bagus di setiap item.
  • Sebuah daftar link. Menempatkan tag dalam list item, dan jQuery Mobile secara otomatis menambahkan ikon panah a ‘>’ di setiap sisi kanan dari setiap list item.
  • Nested List (List bersarang). Jika ada ul li di dalam suatu list item, jQuery secara otomatis membuat “halaman” kedua untuk list didalamnya, terkait dengan dari li asli. Ini sangat membantu apabila kita ingin membuat mentu Tree.
  • Split List Button. Dengan menempatkan 2 link dalam li, Anda dapat membuat daftar item dengan bar pemisah vertikal di sisi kanan item tersebut. kemudian kita dapat mengklik sisi kiri atau kanan list item.
  • Count Bubble. Jika Ada elemen class ui-li-count. Dalam list item Mobil jQuery menciptakan sebuah ikon “bubble” kecil  di sisi kanan berisi isi elemen list item. Ini berfungsi untuk menunjukan jumklah inbox atau notifikasi.
  • Search Filtering. Jika Anda menambahkan data atribut-filter = “true” untuk elemen ul atau ol secara otomatis akan muncul filtering list item di atas list view tersebut.
Berikut ini adalah halaman contoh beberapa tampilan list view di jQuery Mobile:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
<pre><code><!DOCTYPE html>
<html>
  <head>
  <title>jQuery Mobile Lists Demo</title>
  <script src="http://code.jquery.com/jquery-1.4.3.min.js"></script>
</head>
<body>
 
<div data-role="page" id="home">
 
  <div data-role="header">
    <h1>Lists Demo</h1>
  </div>
 
  <div data-role="content">
 
    <h2 style="padding: 1em 0;">A list view</h2>
 
    <ul data-role="listview" data-inset="true">
      <li>Cat</li>
      <li>Dog</li>
      <li>Mouse</li>
      <li>Squirrel</li>
    </ul>
 
    <h2 style="padding: 1em 0;">A list of links</h2>
 
    <ul data-role="listview" data-inset="true">
      <li><a href="#">About this app</a></li>
      <li><a href="#">Buy ice cream</a></li>
      <li><a href="#">Find a store</a></li>
    </ul>
 
    <h2 style="padding: 1em 0;">Nested lists</h2>
 
    <ul data-role="listview" data-inset="true">
      <li>Play
        <ul>
          <li><a href="#">Easy</a></li>
          <li><a href="#">Medium</a></li>
          <li><a href="#">Hard</a></li>
        </ul>
      </li>
      <li>Settings
        <ul>
          <li><a href="#">Graphics</a></li>
          <li><a href="#">Sound</a></li>
          <li><a href="#">Device</a></li>
        </ul>
      </li>
      <li>Highscores
        <ul>
          <li><a href="#">View</a></li>
          <li><a href="#">Submit</a></li>
          <li><a href="#">Reset</a></li>
        </ul>
      </li>
    </ul>
 
    <h2 style="padding: 1em 0;">A split button list with filter</h2>
 
    <ul data-role="listview" data-inset="true" data-filter="true">
      <li>
        <a href="#">The Grapes of Wrath</a>
        <a href="#">Buy This Book</a>
      </li>
      <li>
        <a href="#">The Trial</a>
        <a href="#">Buy This Book</a>
      </li>
      <li>
        <a href="#">A Tale of Two Cities</a>
        <a href="#">Buy This Book</a>
      </li>
    </ul>
 
    <h2 style="padding: 1em 0;">A list with count bubbles</h2>
 
    <ul data-role="listview" data-inset="true">
      <li><a href="#">SuperWidgets</a> <span>14</span></li>
      <li><a href="#">MegaWidgets</a> <span>0</span></li>
      <li><a href="#">WonderWidgets</a> <span>327</span></li>
    </ul>
 
  </div>
 
</div>
 
</body>
</html></code></pre>
Theming
Abu-abu, widget bulat hitam dan biru yang dibuat oleh jQuery Mobil terlihat cukup bagus, tetapi akan sangat membosankan jika kita semua harus menggunakan style yang sama untuk aplikasi mobile kita! Untuk tujuan ini, jQuery Mobile memungkinkan Anda membuat tema khusus yang mengatur hal-hal tersebut seperti:
  • Font family
  • Drop shadow
  • Corner radius values for buttons and boxes
  • Icon set
Selain itu, tema masing-masing dapat berisi hingga 26 swatch warna berbeda (berlabel dari ‘a’ sampai ‘z’), yang mengendalikan warna foreground, warna background, dan gradien. (Tema bawaan jQuery Mobile dilengkapi dengan 5 swatch.) Untuk membuatnya menggunakan attribut data-theme. Sebagai contoh:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<!DOCTYPE html>
<html>
  <head>
  <title>Page Title</title>
  <script src="http://code.jquery.com/jquery-1.4.3.min.js"></script>
</head>
<body>
 
<div data-role="page" id="home">
 
  <div data-role="header">
    <h1>Home</h1>
  </div>
 
  <div data-role="content">
    <a href="#" data-role="button" data-theme="a">About this app</a>
    <a href="#" data-role="button" data-theme="b">About this app</a>
    <a href="#" data-role="button" data-theme="c">About this app</a>
    <a href="#" data-role="button" data-theme="d">About this app</a>
    <a href="#" data-role="button" data-theme="e">About this app</a>
  </div>
 
</div>
 
</body>
</html>

Untuk mengurangi waktu ketika load halaman, jQuery Mobile themes menggunakan CSS3 untuk hal-hal seperti rounded corner, drop shadow dan gradien, daripada menggunakan gambar.
Pada artikel ini kita telah menjelajahi library jQuery Mobile baru, dan melihat bagaimana hal itu bisa menghemat banyak waktu dan usaha ketika membangun aplikasi mobile web. Meskipun saat ini hanya baru ada alfa, dan masih agak kasar, tp ini sangat membantu untuk menciptakan sebuah aplikasi.
Anda dapat mempelajari lebih jauh lagi di situs Mobile jQuery. (jquerymobile.com) Have fun!
sumber: http://www.jquerymobile.com