Minggu, 28 Februari 2010

Pelayanan Internet Lounge E

nternet Lounge ada di kampus E dan kampus D. pelayanan di kampus D sangat disiplin dan nyaman. tetapi pelayanan IL di kmpus E sangat mengecewakan.Jam buka Internet Lounge pada siang hari pukul 13.00WIB. tetapi ini buka pukul 13.30 WIB. Saya dan teman teman telah menunggu Internet Lounge buka sejak pukul 13.00 WIB. sebagai mahasiswa gunadarma tentukan kami berhak menggunakan IL tesebut. ketika kami menanyakan ke pada petugas IL kami mendapat jawaban yang tidak memuaskan. jika tentang masalh jaringan internet yang rusak kami bisa memaklumi. tapi petugas menjawab "CAPE".
semoga ini sebagai saran dan masukan agar IL lebih disiplin dan mementingkan kebutuhan mahasiswa. bukan malah mementingkan kebutuhan pribadi.
kami mohon maaf bila ada yang tdk berkenan. tapi saya hanya mennyampaikan kenyataan.

Sabtu, 27 Februari 2010

OPERASI DASAR STACK

OPERASI PADA STACK

1. CREATE (STACK)
2. ISEMPTY (STACK)
3. PUSH (ELEMEN, STACK)
4. POP (STACK)

CREATE(S)
Operator ini berfungsi untuk membuat sebuah stack kosong (menjadi hampa) dan didefinisikan bahwa
NOEL (CREATE (S)) = 0 dan
TOP (CREATE(S)) = null / tidak terdefinisi




 ISEMPTY(S)
Operator ini berfungsi untuk menentukan apakah suatu stack adalah stack kosong (hampa) atau tidak . Operasinya akan bernilai boolean dengan definisi sebagai berikut :
ISEMPTY(S) = true, jika S adalah stack kosong atau NOEL(S) = 0
False, jika S bukan stack kosong atau NOEL(S)  0
Catatan : ISEMPTY(CREATE(S)) = true

 PUSH(E,S)
• Operator ini berfungsi untuk menambahkan satu elemen ke dalam stack . Notasi yang digunakan adalah PUSH(E,S)
Artinya : menambahkan elemen E ke dalam stack S
• Elemen yang baru masuk ini akan menempati posisi TOP jadi TOP(PUSH(E,S)) = E
• Akibat dari operasi ini jumlah elemen dalam stack akan bertambah, artinya NOEL (S) menjadi lebih besar atau stack menjadi tidak kosong (ISEMPTY(PUSH(E,S)) = false )

 POP(S)
• Operator ini berfungsi untuk mengeluarkan satu elemen dari dalam stack, notasinya POP(S)
• Elemen yang keluar dari dalam stack adalah elemen yang berada pada posisi TOP.
• Akibat dari operasi ini jumlah elemen stack akan berkurang atau NOEL(S) berkurang 1 dan elemen pada posisi TOP akan berubah.
• Operator ini tidak dapat digunakan pada stack kosong, artinya POP(CREATE(S)) = error condition dan
POP(PUSH(E,S)) = S

Catatan : TOP(PUSH(E,S)) = E

Queue
Adalah suatu bentuk khusus dari linear list dengan operasi penyisipan (insertion) hanya pada salah satu sisi ( Rear/ belakang) dan operasi penghapusan (deletion) hanya diperbolehkan pada sisi lainnya (Front/ depan) dari list.

Antrean Q = [ Q1, Q2, Q3,……….., QT]
Front(Q) = bagian depan dari antrean Q
Rear(Q) = bagian belakang dari antrean Q
Noel(Q) = Jumlah elemen di dalam antrean ( berharga integer)
Jadi : Front(Q) = QT
Rear(Q) = Q1
Noel(Q) = T

Antrean beroperasi secara FIFO ( First In First Out) yang pertama masuk, yang pertama keluar.

 Operasi dasar pada Antrean :
1. CREATE(Q)
Operator untuk membentuk suatu antrean hampa
Q = [,…….,]
NOEL(CREATE(Q)) = 0
FRONT(CREATE(Q)) = tidak didefinisikan
REAR(CREATE(Q)) = tidak didefinisikan

2. ISEMPTY(Q)
Operator yang menentukan apakah antrean Q hampa atau tidak.
Operand dari operator ISEMPTY adalah antrean.
Hasilnya bertipe data Boolean
ISEMPTY(Q) =TRUE jika Q adalah antrean hampa (NOEL(Q) = 0)
FALSE jika Q bukan antrean kosong (NOEL(Q)  0)

3. INSERT(E,Q)
Operator yang menyisipkan elemen E ke dalam antrean Q
Catt : Elemen Q ditempatkan pada bagian belakang antrean dan antrean menjadi lebih panjang
Q = [ A, B, C, D]
REAR(INSERT(E,Q)) = E
FRONT(Q) = A
NOEL(Q) = 5
ISEMPTY(INSERT(E,Q)) = FALSE

4. REMOVE(Q)
Operator yang menghapus elemen bagian depan dari antrean Q dan antrean menjadi lebih pendek
Jika NOEL(Q) = 0 maka
REMOVE(Q) = ERROR ( UNDERFLOW)

 Penyajian dari antrean :
1. One way list
2. Array
 Menunjukkan bagaimana suatu antrean dalam array Queue dengan N elemen
1. Antrean mula-mula terdiri dari elemen AAA, BBB, CCC, DDD


1 2 3 4 5 6 7 8 9
FRONT(Q) = AAA : 1
REAR(Q) = DDD : 4


2. REMOVE(Q)


1 2 3 4 5 6 7 8 9

FRONT(Q) = BBB : 2
REAR(Q) = DDD : 4

3. INSERT(EEE,Q)
1 2 3 4 5 6 7 8 9
FRONT(Q) = BBB : 2
REAR(Q) = EEE : 5
KESIMPULAN :
Untuk setiap kali penghapusan nilai FRONT bertambah
Untuk setiap kali penambahan nilai REAR akan bertambah

 Antrean yang disimpan dalam array dengan 5 lokasi memori sebagai array Sirkular.

1. Pada Awal Hampa
FRONT = 0 REAR = 0 1 2 3 4 5

2. A dan B dimasukkan
FRONT : 1
REAR : 2 1 2 3 4 5


3. C, D , dan E dimasukkan
FRONT :1
REAR : 5
1 2 3 4 5
4. A, B, dan C dihapus
FRONT : 4
REAR :5
1 2 3 4 5
5. F dimasukkan
FRONT : 4
REAR : 1

1 2 3 4 5
6. D dihapus
FRONT : 5
REAR :1
1 2 3 4 5
7. G dan H dimasukkan
FRONT : 5
REAR : 3
1 2 3 4 5

8. E dihapus
FRONT :1
REAR : 3
1 2 3 4 5
 ALGORITMA QINSERT
QINSERT(QUEUE, N, FRONT, DATA)
1. {Apakah antrean penuh}
Jika FRONT = 1 dan REAR = N atau Jika FRONT = REAR+1, maka Write : OVERFLOW, return.
2. Jika FRONT = NULL maka FRONT := 1, REAR := 1
Dalam hal ini
Jika FRONT = N maka REAR := 1
Dalam hal lain
REAR := REAR + 1
3. QUEUE(REAR) := DATA ( masukkan elemen baru)
4. Return

 ALGORITMA QDELETE
QDELETE(QUEUE, N, FRONT, REAR, DATA)
1. {Apakah antrean kosong}
Jika FRONT = NULL, maka Write : UNDERFLOW, return.
2. DATA := QUEUE(FRONT)
3. (FRONT mendapat nilai baru)
Jika FRONT =REAR maka FRONT := NULL
REAR := NULL
Dalam hal ini
Jika FRONT := N maka FRONT := 1
Dalam hal lain
FRONT := FRONT + 1
4. Return



LINK LIST

PENDAHULUAN
 Dalam suatu linier list kita dapat melakukan operasi penyisipan atau penghapusan atas elemen-elemennya pada sembarang posisi.
 Misalkan ada 1500 item yang merupakan elemen dari suatu linier list. Jika elemen ke-56 akan kita keluarkan, maka elemen ke-1 s/d elemen ke-55 tidak akan berubah posisinya pada linier list tersebut. Tetapi elemen ke–57akan menjadi elemen ke-56, elemen ke-58 akan menjadi elemen ke-57 dst. Selanjutnya, jika kita sisipkan satu elemen pada posisi setelah elemen ke-41, maka elemen ke-42 s/d elemen ke-1500 akan berubah posisinya.

 Untuk menyatakan keadaan diatas diperlukan suatu konsep yang berbeda dengan konsep sekuensial sebelumnya.
Linked list merupakan suatu cara non-sekuensial yang digunakan untuk merepresentasikan suatu data.

DEFINISI

 Linked list (one way list) adalah suatu kumpulan elemen data (yang disebut sebagai node) dimana urutannya ditentukan oleh suatu pointer.
 Setiap elemen (node) dari suatu linked list terdiri atas dua bagian, yaitu:
 INFO berisi informasi tentang elemne data yang bersangkutan.
 NEXT (link field/next pointer field), berisi alamat dari elemen (node) selanjutnya yang dituju.

Berikut ini sebuah contoh linked list yang terdiri atas 4 node:



Info next info next info next info next
Node ke-1 node ke-2 node ke-3 node ke-4
Pada node ke-4 field NEXT–nya berisi NULL , artinya node ke-4 tsb adalah node terakhir.

 Node-node dalam linked list tidak harus selalu digambarkan paralel seperti pada gambar diatas. Linked list pada contoh diatas dapat pula digambarkan seperti berikut ini:
Info next
Info next

Info next

Info next


CATATAN :
 Ada dua hal yang menjadi kerugian dengan representasi suatu data dengan linked list ini,
yaitu:
1. Diperlukan ruang tambahan untuk menyatakan/tempat field pointer.
2. Diperlukan waktu yang lebih banyak untuk mencari suatu node dalam linked list.
 Sedangkan keuntungannya adalah :
1. Jenis data yang berbeda dapat di-link
2. Operasi REMOVE atau INSERT hanya dilakukan dengan mengubah

stack

STACK

LINEAR LIST
• Linear list adalah suatu struktur data yang merupakan himpunan terurut dari satuan data atau dari record.
• Elemen yang terdapat dalam daftar disebut simpul/node.
• Daftar disebut Linear karena elemen nampak seperti baris, bahwa setiap simpul (kecuali simpul pertama dan terakhir) selalu memiliki elemen penerus langsung (suksesor) dan elemen pendahulu langsung (predesor).
• Misalnya didefinisikan suatu linear list A yang terdiri atas T buah elemen sebagai berikut :
A=[ a1,a2,……………, aT ]

Jika T = 0 , maka A dikatakan sebagai “Null List” (list hampa).
• Suatu elemen dapat dihapus (delete) dari sembarang posisi pada linear list .
• Suatu elemen baru dapat dimasukkan (insertion) kedalam list dan dapat menempati sembarang posisi pada list tersebut.
• Jadi suatu linear list dapat berkurang atau bertambah setiap saat
Contoh : file merupakan linier list yang elemen-elemennya berupa record.

DEFINISI STACK

STACK adalah suatu bentuk khusus dari linear list di mana operasi penyisipan dan penghapusan atas elemen-elemennya hanya dapat dilakukan pada satu sisi saja yaitu posisi akhir dari list. Posisi ini disebut puncak atau disebut sebagai “TOP(S)”.
• Prinsip Stack adalah LIFO ( Last In First Out ) atau Terakhir masuk pertama keluar.
Setiap elemen tidak dapat dikeluarkan (POP keluar) sebelum semua elemen diatasnya dikeluarkan.

• Elemen teratas (puncak) dari stack dinotasikan sebagai TOP(S)
Misal diberikan stack S sebagai berikut :
S= [ S2,S2,………, ST ]  maka TOP(S) = ST
• Untuk menunjukkan jumlah elemen suatu stack digunakan notasi NOEL(S).
Dari stack diatas maka NOEL(S) = T.
NOEL(S) menghasilkan nilai integer.

Array segitiga (tringular Arra)

ARRAY SEGITIGA (TRINGULAR ARRAY)

Ada 2 macam
1. Upper Tringular
Elemen dibawah diagonal utama adalah 0
2. Lower Tringular
Elemen diatas diagonal utama adalah 0

 Suatu array dimana elemen diagonalnya juga nol disebut Strictly (upper/lower) Tringular.
 Pada array Lower Tringular dengan N baris, jumlah maksimum elemen <> 0 pada baris ke-I adalah I
N
 Total elemen <> 0 adalah  I = ( N * ( N+1)) /2
K=1
 Untuk N kecil : tidak ada masalah
 Untuk N besar :
1. Elemen yang sama dengan nol tidak usah disimpan dalam memori
2. Pendekatan terhadap masalah ini adalah dengan pelinieran array dan hanya menyimpan array yang tidak nol.

1. Misal
A array segitiga atas berorder N x N
B array bersegitiga bawah dengan order ( N-1) x ( N-1)
A dan B dapat disimpan sebagai array C berorder N x N
C (I,J) = A(I,J) untuk I <= J
C(I+1,J) = B(I,J) untuk I >= J
2. Misal
A array segitiga atas berorder N x N
B array bersegitiga bawah dengan order N x N
A dan B dapat disimpan sebagai array C berorder N x ( N + 1 )
C (I,J+1) = A(I,J) untuk I <= J
C(I,J) = B(I,J) untuk I >= J

3. Misal
A dan B keduanya merupakan array segitiga atas
Maka untuk menyimpannya secara bersama-sama dengan melakukan transpose terhadap salah satu array tersebut.
Array C berorder N x (N+1)
C (I,J+1) = A(I,J) untuk I <= J
C(J,i) = B(I,J) untuk I >= J

SPARSE ARRAY

Suatu type khusus yang lain dari array

Dikatakan Sparse atau jarang karena elemen-elemen yang tidak nolnya relatif lebih sedikit jumlahnya

Setiap elemen bukan nol pada sparse array dua dimensi dapat direpresentasikan dalam format (Row-Subscript, Column-subscript, value).

Triple ini dapat diurut berdasarkan Row-Subscript Major dan Colum-Subscript Minor dan disimpan dalam bentuk vektor.

Penyajian lain dari Sparse Array adalah dengan menggunakan daftar berkait/ Linked List.

Array Multidimensi

Array Multidimensi
• Dalam array multidimensi terdiri atas baris
(row) dan kolom (column). Index pertama
adalah baris dan yang kedua adalah
kolom
5
Syntax
• Type nama_array =ARRAY[bawah..atas,
bawah..atas] of tipe_data;
var variabel_array : nama_array; atau
• SYNTAX var variabel_array :
ARRAY[bawah..atas, bawah..atas] of tipe_data;
• Pernyataan berikut membentuk suatu array
integer dengan nama bilangan , 10 x 10 elemen
(100).
type matriks = ARRAY [1..10, 1..10] of integer;
var AKU: matriks;
Array[1..5,1..5]
A[5,1] A[5,5]
A[4,4]
A[3,3]
A[2,1] A[2,2]
A[1,1] A[2,1] A[5,1]
6
Contoh Program
Procedure ISI_MATRIK(AKU:matriks;
m,n:integer);
var
i,j: integer; {faktor pengulang}
begin
for i:=1 to m do
begin
for j:=1 to n do
begin
gotoxy(x+2i.y+2y);
read(A[i,j]);
end;
readln ;{ini memungkinkan kita menulis tiap
baris elemen}
end;
Record
• Sebuah record rekaman disusun oleh
beberapa field. Tiap field berisi data dari
tipe dasar / bentukan tertentu. Record
mempunyai kelebihan untuk menyimpan
suatu sekumpulan elemen data yang
berbeda-beda tipenya (di banding array).
Contoh , sebuah record dengan empat
buah field
7
Cara Pendefinisian
• Cara pendeklarasian dari record adalah sbb:
• Mendefinisikan tipe dari record (jumlah field, jenis
tipe data yang dipakai),
• Mendefinisikan variabel untuk dilakukan operasi.
field1 field2 field3 field4
Sintax
type
nama_record = record
identifier_1 : tipe_data_1;
:
:
identifier_n : tipe_data_n;
end;
var variabel : nama_record;
8
Contoh
type
Data_mahasiswa = record
Nama : string;
Usia : integer;
Kota : String;
Kodepos : integer;
end;
Var
x: Data_mahasiswa;
Pengaksesan Elemen Record
x.Nama
x.Usia
x.Kota
x.Kodepos
9
Contoh Program
program RECORD_INTRO;
type tanggal = record
bulan, hari, tahun : integer;
end;
var waktu : tanggal;
begin
waktu.hari :=25;
waktu.bulan:=09;
waktu.tahun:= 1983;
writeln('hari ini adalah
',waktu.hari,':',waktu.bulan,':', waktu.tahun)
end.
Pengunaan With … do
Pernyataan with untuk lebih
menyederhanakan pengaksesan field-field
pada record. Pemrograman dapat
mengakses field cukup dengan
menyebutkan nama field-nya saja.
10
• x.Nama
x.Usia
x.Kota
x.Kodepos diganti
• with x do
Begin
Nama
Usia
Kota
Kodepos
end
Contoh
program RECORD_INTRO;
type tanggal = record
bulan, hari, tahun : integer;
end;
var waktu : tanggal;
begin {program utama}
with waktu do {mulai with}
begin
hari :=25;
bulan:=09;
tahun:=1983;
writeln('hari ini adalah ',hari,':',bulan,':', tahun)
end {akhir with}
end.
11
Array dari Record
type tanggal = record
bulan, hari, tahun : integer;
end;
var birthdays : array[1..10] of tanggal;
Visulaisasi Array dari Record
12
Pemberian nilai elemen birthday
Birthdays[1].hari :=25;
Birthdays[1].bulan:=09;
Birthdays[1].tahun:=1983;
With do…
For i:=1 to x do
Begin
With birthday[i] do
Begin
Hari:=25;bulan:=09;tahun:=1983;
End;
End;
13
Record di dalam Record
type tanggal = record
bulan, hari, tahun : integer;
end;
type waktu =record
jam, menit, detik : integer;
end;
type waktu_ini =record
tanggal_ini : tanggal;
waktu_ini : waktu
end;
var saat_ini : waktu_ini;
Pemberian Nilai
saat_ini.tanggal.bulan:= 11;
saat_ini.tanggal.hari:= 2;
saat_ini.tanggal.tahun:= 1985;
saat_ini.waktu.jam:= 3;
saat_ini.waktu.menit:= 3;
saat_ini.waktu.detik:= 33;

Array berdimensi

Pendefinisian array secara umum adalah sebagai berikut: jika kita ingin membuat beberapa array dengan tipe/jenis yang sama, kita lebih baik jika mendeklarasikan dengan type selanjutnya dengan deklarasi
var.
Sintax array 1 dimensi
• Type nama_array = ARRAY[bawah..atas] of tipe_data;
var variabel_array : nama_array; atau

• var variabel_array : ARRAY[bawah..atas]of tipe_data;

Contoh Program Array 1 dimensi
program INT_ARRAY;
uses wincrt;
const N=10;
type int_array = ARRAY [1..N] of integer;
var bil : int_array;
indeks : integer;
BEGIN
writeln('masukkan sepuluh bilangan integer.');
for indeks := 1 to 10 do
begin
readln(bil[indeks]); { loop untuk memasukkan elemen
array }
end;
writeln('Isi dari array ini adalah'); { tampilkan setiap
elemen }
for indeks := 1 to 10 do
begin
writeln('bil[', indeks:2,'] adalah ',bil[indeks] );
end
END.

Array dan record

Pengertian
Suatu array adalah sebuah struktur data yang terdiri atas banyak variabel dengan tipe data sama, dimana masing-masing elemen variabel mempunyai nilai indeks.

Setiap elemen array mampu untuk menyimpan satu jenis data (yaitu:variabel).

Cara Pendefinisian
• contoh type
A = array [1..6] of integer;
• Secara logika pendefinisian array di atas merupakan sekumpulan kotak , dimana tiap kotak mempunyai nilai indeks integer 1, 2, 3, ...,6

tiap elemen array ditandai dengan:
A[1], A[2], A[3], A[4], A[5], A[6]

untuk mengisi elemen array misal A[1]:=4;.
1 2 3 4 5 6

Sifat Array
Array merupakan struktur data yang statis, yaitu jumlah elemen yang ada harus ditentukan terlebih dahulu dan tak bisa di ubah saat program berjalan. Untuk menyatakan array dalam PASCAL kita harus terlebih dahulu:

Mendefinisikan jumlah elemen array
Contoh. const N=10;
type
A= array [1..N] of integer;