Jumat, 06 November 2009

Video Player Menggunakan Visual BAsic

1 komentar

Video Player Menggunakan Visual BAsic



Anda biasa nonton Filem menggunakan Video Player seperti Power di DVD atau Windows Media Player. Kini Ada Video Player Unik dan Anda Pasti puas Menontonnya..
Aplikasi Video Player Menggunakan Visual Basic. Berikut Dengan Source Codenya.
Sangat cocok untuk semua kalangan,Para Programer Bisa memodifikasi souce code untuk menjadi lebih unik.

Berikut Tampilan Di Menu Utama nya



source code nya :

Pada Menu Buka fungsi mengambil File yang akan di tonton

Private Sub cmdOpen_Click()
On Error Resume Next

Dim FileNames() As String
Dim myList As ListItem
Dim i As Long

ShowFileDialog (Me.hWnd)

FileNames = Split(mFileName, "|")
i = UBound(FileNames)

If i = 0 Then
mMPEG.FileName = mFileName
If mMPEG.FileOK Then
Set myList = Me.lvwFile.ListItems.Add( _
, , FilePart(mFileName, NameOnly))
myList.SubItems(1) = mMPEG.Length
myList.Tag = mFileName

myList.Selected = True
myList.EnsureVisible
End If
DoEvents
Else
For i = 1 To UBound(FileNames)
mMPEG.FileName = FileNames(0) & "\" & FileNames(i)
If mMPEG.FileOK Then
Set myList = Me.lvwFile.ListItems.Add( _
, , FilePart(FileNames(i), NameOnly))
myList.SubItems(1) = mMPEG.Length
myList.Tag = FileNames(0) & "\" & FileNames(i)
myList.Selected = True
myList.EnsureVisible
End If
DoEvents
Next
End If

End Sub

Untuk Lebih Lengkapnya silahkan download disini






Rabu, 04 November 2009

Game Monopoly Menggunakan Visual BAsic

0 komentar
Pengen Nyoba game monopoly dengan Visual Basic seru loh...

ada source Codenya loh..

Lebih menarik dari pada game monopoly biasa

cobain dech....


untuk mendapatkan Aplikasinya Silahkan download diSini


Aplikasi Data Pegawai Menggunakan Visual Basic

3 komentar

Aplikasi Data Pegawai Menggunakan Visual Basic



Aplikasi data ini menggunakan koneksi penyimpanan data di mircosoft acces



Tampilan Pada Menu Utama



Menu Pada Gaji Karyawan



Source kodenya

1. Menghapus Data Pegawai

Private Sub cmdhapus_Click()
Data1.Recordset.Index = "idxnip"
Data1.Recordset.Seek "=", Text1
With Data1.Recordset
If .NoMatch Then
MsgBox "data tidak ada ", 64 + 0, "informasi"
Text1.SetFocus
Exit Sub
Else
.Edit
Text1 = !nip
Text2 = !nama
Text3 = !jabatan
Text4 = !gapok
Text5 = !tunjang
Text6 = !total
pesan = MsgBox("data mau dihapus?", 32 + 4, "pertanyaan")
If pesan = 6 Then
.Delete
End If
End If
End With

End Sub

2. Menyimpan Data Pegawai

Private Sub Cmdsimpan_Click()
If (Text1 = "") Or (Text2 = "") Then
MsgBox "data tidak boleh kosong...!", 16 + 0, "peringatan"
Text1.SetFocus
Exit Sub
End If
Data1.Recordset.Index = "idxnip"
Data1.Recordset.Seek "=", Text1
With Data1.Recordset
If .NoMatch Then
.AddNew
!nip = Text1
!nama = Text2
!jabatan = Text3
!gapok = Val(Text4)
!tunjang = Val(Text5)
!total = Val(Text6)
pesan = MsgBox("isi data sudah benar...!", 32 + 4, "pertanyaan")
If pesan = 6 Then
.Update
End If
Else
pesan = MsgBox("data sudah ada...!", 64 + 0, "informasi")
Exit Sub
End If
End With


End Sub

3. Menambah Data Pegawai

Private Sub Cmdtambah_Click()
If Cmdtambah.Caption = "tambah" Then
Cmdtambah.Caption = "batal"
Text1.Enabled = True
Text2.Enabled = True
Text3.Enabled = True
Text4.Enabled = True
Text5.Enabled = True
Text6.Enabled = False
Text1.SetFocus
Else
Cmdtambah.Caption = "tambah"
Text1.Enabled = False
Text2.Enabled = False
Text3.Enabled = False
Text4.Enabled = False
Text5.Enabled = False
Text6.Enabled = False
End If
End Sub

4. Mengubah Data Pegawai

Private Sub cmdubah_Click()
Data1.Recordset.Index = "idxnip"
Data1.Recordset.Seek "=", Text1
With Data1.Recordset
If .NoMatch Then
MsgBox "data tidak ada ", 64 + 0, "informasi"
Text1.SetFocus
Exit Sub
Else
.Edit
!nip = Text1
!nama = Text2
!jabatan = Text3
!gapok = Val(Text4)
!tunjang = Val(Text5)
!total = Val(Text6)
pesan = MsgBox("isi data mau diubah?...!", 32 + 4, "pertanyaan")
If pesan = 6 Then
.Update
End If
End If
End With



End Sub

untuk mendapatkan Aplikasinya Silahkan download diSini


Selasa, 03 November 2009

CARA HACKING SMART

1 komentar


kehadiran salah satu operator telepon baru, SMART Telecom, perusahaan milik Sinar Mas Group ini cukup berani untuk membangun jaringan disela pemain besar seperti Mobile 8, Bakrie Telecom & Telkom Flexi.klo masih pake smart + haier, sabar aja ya mas.

Kan dah di jelasin klo yg HP haier hanya suport sampai CDMA 1x.Smart bergerak di frekuensi 1900. yang bergerak di frekuensi 1900 cuma setahu saya cuma ada 2 perusahan yaitu : Smart dan Mobile 8.

Klo mau HP haier smart anda ga sering DC. ganti aja port COM. yg dipakai dibawah
10. Karena terkadang suka error klo pakai COM diatas 10. caranya :

1. Klik kanan pada "My Computer" pilih Properties.
2. Pilih saja Tab "Hardware" lalu "Device Manager"

untuk lebih lengkapnya silahkan download di atas atau diSini

COBIT

1 komentar
COBIT

Oleh : M Alfi M


COBIT
Control Objectives for Information and related Technology (COBIT) adalah seperangkat praktik terbaik (kerangka) untuk teknologi informasi (TI) manajemen yang dibuat oleh Information Systems Audit and Control Association (ISACA), dan IT Governance Institute (ITGI) pada tahun 1996 .
COBIT
COBIT memberikan manajer, auditor, dan pengguna TI dengan satu set diterima secara umum langkah-langkah, indikator, proses dan praktik terbaik untuk membantu mereka dalam memaksimalkan manfaat yang diperoleh melalui penggunaan teknologi informasi dan pengembangan tata kelola TI yang sesuai dan pengendalian dalam sebuah perusahaan.
COBIT pertama kali dirilis pada tahun 1996.
Misinya adalah "untuk meneliti, mengembangkan, mempublikasikan dan mempromosikan otoritatif, up-to-date, set internasional yang diterima secara umum tujuan pengendalian teknologi informasi untuk sehari-hari digunakan oleh para manajer bisnis dan auditor." Manajer, Auditor, dan pengguna manfaat dari pengembangan COBIT karena membantu mereka memahami sistem IT mereka dan memutuskan tingkat keamanan dan kontrol yang diperlukan untuk melindungi perusahaan mereka 'aset melalui pengembangan model tata kelola TI.

untuk mengetahui cobit lebih lengkapnya silahkan download di menu atas atau diSini


Queue (Antrian)

2 komentar
3. Queue (Antrian)
3.1. Definisi
Queue (Antrian) adalah list linier yang :
1. Dikenali elemen pertama (Head) dan elemen terakhirnya (Tail)
2. Aturan penyisipan dan penghapusan elemennya disefinisikan sebagai berikut :
- Penyisipan selalu dilakukan setelah elemen terakhir
- Penghapusan selalu dilakukan pada elemen pertama
3. Satu elemen dengan elemen lain dapat diakses melalui informasi Next

Struktur data ini banyak dipakai dalam informatika
misalnya untuk merepresentasi :
1. Antrian job dalam sistem operasi
2. Antrian dalam dunia nyata

Maka secara lojik, sebuah Queue dapat digambarkan
sebagai list linier yang setiap elemennya adalah :
Type ElmtQ = record
Next : address >

dengan InfoType terdefinisi yang menentukan informasi yang disimpan pada setiap elemen queue, dan address adalah “alamat” dari elemen
Selain itu alamat elemen Pertama (Head) dan elemen terakhir (Tail) dicatat.
Maka jika Q adalah Queue dan P adalah Address, penulisan untuk Queue adalah :
Head(Q)
Tail(Q)
Next(P)
Info(P)
3.2. Traversal pada Queue
Pada queue, jarang sekali dilakukan traversal, karena keunikan Queue justru pada operasi yang hanya menyangkut elemen pertama dan terakhir. Namun dibutuhkan traversal misalnya untuk mencetak isi Antrian.
3.3. Search pada Queue
Pada Queue, elemen yang diproses hanyalah elemen pada pertama dan terakhir. Maka hampir tidak pernah dilakukan search.

3.4. Operasi dan fungsi dasar pada Queue.
a. Test Queue kosong
Mengetahui bahwa Queue kosong atau tidak sangat penting, sebab semua operasi akan dilakukan berdasarkan kosong atau tidaknya suatu Queue. Realisasi algoritma dari definisi fungsional ini adalah sebuah fungsi yang melakukan test terhadap Queue sebagai berikut :

function IsQEmpty (Q : Queue) → Boolean
{ TEST Queue kosong : Mengirim true, jika antrian kosong, false jika antrian tidak kosong}

Deklarasi
Deskripsi
return ((Head(Q) = Nil) and (Tail(Q) = Nil))



b. Pembuatan Queue kosong
Membuat Queue kosong diperlukan untuk memulai memakai Queue. Realisasi algoritma dari definisi fungsional ini adalah sebuah prosedur yang melakukan inisialisasi Queue sebagai berikut :

Procedure CreateEmptyQ (Output Q : Queue)
{K. Awal : sembarang,
K. Akhir : sebuah queue Q yang kosong terbentuk
Proses : Membuat queue kosong }

Deklarasi
Deskripsi
Head(Q) ← Nil
Tail(Q) ← Nil


c.Penambahan sebuah elemen pada Queue
Penambahan selalu dilakukan pada ekor, dan karena alamat ekor diketahui maka prosesnya sederhana, yaitu hanya InsertLast.

Berikut ini akan diberikan skema prosedur penyisipan tersebut.

Realisasi algoritma dari definisi fungsional ini adalah salah satu dari dua buah prosedur yang melakukan penambahan elemen Queue sebagai berikut :

Prosedur pertama menambahkan suatu Elemen Queue yang diketahui alamatnya dan yang kedua menambahkan suatu nilai Elemen queue yang diberikan.



procedure InsertQ@ (Input/Output Q : Queue Input P : address)
{K.Awal : Queue mungkin kosong, P terdefinisi (berarti terdefinisi informasinya, Next (P) = Nil
K.Akhir : P menjadi elemen Tail dari Q dan Tail yang baru adalah P
Proses : Insert sebuah elemen beralamat P pada Tail dari antrian Q }

Deklarasi

Deskripsi
If IsQEmpty(Q) then
Head(Q) ← P
Tail(Q) ← P
else
Next(Tail(Q)) ← P
Tail(Q) ← P
endif



procedure InsertQ(Input/Output Q : Queue Input E : InfoType)
{K.Awal : Queue mungkin kosong, E terdefinisi
K.Akhir : Elemen Tail dari Q yang baru bernilai E
Proses : Insert sebuah elemen nilai pada Tail dari antrian Q }
Deklarasi


Deskripsi
Alokasi (P)
Info (P) ← E
If IsQEmpty(Q) then
Head(Q) ← P
Tail(Q) ← P
else
Next(Tail(Q)) ← P
Tail(Q) ← P
endif


d. Penghapusan Elemen Pada QueuE
Penghapusan elemen pada queue selalu dilakukan pada elemen pertama, hanya saja perlu diperhitungkan bahwa mungkin queue menjadi kosong akibat terjadinya penghapusan. Jika queue menjadi kosong, maka harga Tail harus diganti. Jika akibat penghapusan queue tidak kosong, maka elemen terakhir tidak berubah.

Berikut adalah skema penghapusan tersebut. Prosedur pertama melakukan penghapusan ElmtQ yang berada di Head danyang dicatat adalah alamatnya, yaitu P. Prosedur yang kedua menghapus elemen Head dari queue dan menyimpannya pada suatu elmtQ serta membebaskan alamat yang tadinya dipakai oleh elemen Head tersebut.


procedure DeleteQ@(Input/Output Q : Queue Output P : address)
{K.Awal : Queue tidak kosong
K.Akhir : P bukan lagi elemen dari Q, P ≠ Nil, Next(P) = Nil
Proses : Menghapus elemen Head dari antrian, antrian tidak boleh kosong dan mungkin menjadi kosong }
Deklarasi
Deskripsi



P ← Head(Q)
Head(Q) ← Next(Head(Q))
if (Head(Q) = Nil) then
Tail(Q) ← Nil
endif
Next(P) ← Nil

procedure DeleteQ(Input/Output Q : Queue Output E : InfoType)
{K.Awal : Queue tidak kosong
K.Akhir : Jika P adalah Head(Q). P bukan lagi elemen dari Q, P ≠ Nil, Next(P) = Nil
Proses : Menghapus elemen Head dari antrian, antrian tidak boleh kosong dan mungkin menjadi kosong }
Deklarasi
Deskripsi


P ← Head(Q)
E ← Info(Head(Q))
Head(Q) ← Next(Head(Q))
if (Head(Q) = Nil) then
Tail(Q) ← Nil
endif
Next(P) ← Nil
Dealokasi(P)


Bagian Deklarasi dari algoritma pada Queue :
Deklarasi
type InfoType = … {Sebuah type terdefinisi}
type Address pointer to ElmtQ
type ElmtQ = record
Next : Address >
type Queue = record Tail : Address>
{Deklarasi Nama Peubah}
Q : Queue
P : Address
Soal-Soal
1. Mengapa cara penyusunan elemen pada Queue sering disebut tersusun secara FIFO?
2. Mengapa pada Queue Traversal dan Search jarang dilakukan?
3. Penghapusan elemen pada Queue selalu dilakukan pada elemen yang paling depan, bagaimana jika terpaksa harus menghapus elemen yang paling belakang?


4. Buatlah sebuah fungsi untuk menghitung jumlah elemen queue yang ganjil, jika diketahui sebuah queue dengan elemen bertype integer.
5. Buatlah fungsi/prosedur untuk mencetak elemen queue yang genep
6. Buatlah juga fungsi untuk menghitung rata-rata elemen queue yang ganjil
7. Buatlah sebuah fungsi untuk mengirimkan elemen pertama queue
8. Buatlah sebuah fungsi untuk mengirimkan elemen queue yang maksimum jika diketahui elemen queue terurut membesar dan bertype integer.

untuk mendowndloadnya silahkan klik pada menu diatas atau disini..

Pohon (Tree)

0 komentar
4. Pohon (Tree)
4.1. Definisi Rekurens Dari Pohon
Sebuah pohon adalah himpunan terbatas tidak kosong, dengan elemen yang dibedakan sebagai berikut :
1. Sebuah elemen yang dibedakan dari yang lain yang disebut sebagai AKAR (root) dari pohon
2. Elemen yang lain (jika masih ada) dibagi-bagi menjadi beberapa sub himpunan yang disjoint dan masing-masing sub himpunan tersebut adalah pohon yang disebut sebagai sub pohon dari pohon tersebut.


Beberapa Istilah
1. Hutan
Hutan adalah sequence (list) dari pohon
2. Simpul (Node)
Simpul adalah elemen dari pohon yang memungkinkan akses pada sub pohon dimana simpul tersebut berfungsi sebagai Akar
3. Cabang
Cabang adalah hubungan antara Akar dengan sub pohon

4. Ayah
Akar dari sebuah pohon adalah Ayah dari sub pohon
5. Anak
Anak dari sebuah pohon adalah Sub pohon
6. Saudara
Saudara adalah simpul-simpul yang mempunyai Ayah yang sama
7. Daun
Daun adalah simpul terminal dari pohon. Semua simpul selain Daun adalah simpul bukan terminal

8. Jalan (Path)
Jalan adalah suatu urutan tertentu dari Cabang
9. Derajat
Derajat sebuah pohon adalah banyaknya anak dari dari pohon tersebut.
Jika sebuah simpul berderajat N disebut pohon N-aire
1 disebut pohon 1-aire/uner
2 disebut pohon 2-aire/biner

10. Tingkat (Level)
Level pohon adalah panjangnya jalan dari Akar sampai dengan simpul yang bersangkutan. Panjang dari jalan adalah banyaknya simpul yang dikandung pada jalan tersebut. Akar mempunyai tingkat sama dengan 1.

Dua buah simpul disebut sebagai Sepupu jika mempunyai tingkat yang sama dalam sebuah pohon.

11. Kedalaman (Tinggi)
Kedalaman (Tinggi) dari pohon adalah nilai maksimum dari tingkat simpul yang ada pada pohon tersebut. Kedalaman adalah panjang maksimum jalan dari Akar menuju ke sebuah daun

12. Lebar
Lebar sebuah Pohon adalah maksimum banyaknya simpul yang ada pada suatu Tingkat (Level)

4.2. Struktur Pohon Biner
Definisi
Sebuah pohon biner (Binary Tree) adalah himpunan terbatas yang :
Mungkin kosong atau
Terdiri dari sebuah simpul yang disebut sebagai Akar dan dua buah himpunan lain yang disjoint yang merupakan pohon biner yang disebut sebagai Sub Pohon Kiri (Left) dan Sub Pohon Kanan (Right) dari pohon biner tersebut.


Pohon biner merupakan tipe yang sangat penting dari struktur data dan banyak dijumpai dalam berbagai terapan. Karakteristik yang dimiliki oleh pohon biner adalah bahwa setiap simpul paling banyak hanya memiliki dua buah anak, dan mungkin tidak punya anak.

Istilah-istilah yang digunakan sama dengan istilah pada pohon secara umum.

Notasi Prefiks, Infiks dan Postfiks
1. Notasi Prefiks
Notasi Prefiks ditulis dengan cara mengikuti alur sebagai berikut :



2. Notasi Infiks
Notasi ini ditulis dengan cara mengikuti alur sebagai berikut :

3. Notasi Posfiks
Notasi ini ditulis dengan cara mengikuti alur sebagai berikut :

Rekonstruksi Algoritma
{Deklarasi Type}
Type Infotype = … {terdefinisi}
Type node = record Left : address,
Right: address >
Type BinTree : address

{Primitif}

function Akar (P : BinTree) infotype
{Mengirimkan nilai Akar pohon biner P}

function Left (P : BinTree) infotype
{Mengirimkan anak kiri pohon biner P}

function Right (P : BinTree) infotype
{Mengirimkan anak kanan pohon biner P}


function IsEmpty(P : BinTree)boolean
{ Test apakah sebuah pohon kosong, mengirimkan True jika kosong dan False jika tidak}

procedure MakeTree(input Akar : infotype, L : BinTree, R : BinTree, output P : BinTree)
{ K. Awal : sembarang
K. Akhir: Terbentuk sebuah pohon biner
Proses : Menghasilkan sebuah pohon biner dari Akar, L dan R}

{Traversal}
Procedur PreOrder(input P : BinTree)
{K. AWAL : P terdefinisi
K. AKHIR : Semua simpul P sudah diproses secara preorder}

Procedure InOrder(input P : BinTree)
{K. AWAL : P terdefinisi
K. AKHIR : Semua simpul P sudah diproses secara inorder}

Procedure PostOrder(input P : BinTree)
{K. AWAL : P terdefinisi
K. AKHIR : Semua simpul P sudah diproses secara postorder}

Procedure PrintTree(input P : BinTree, h : integer)
{K. AWAL : P terdefinisi, h adalah jarak indentasi
K. AKHIR : Semua simpul P sudah ditulis dengan indentasi}

{Search}
function Search(P : BinTree, X : infotype)boolean
{Mengirimkan True jika ada node P bernilai X, false jika tidak}

{fungsi lain}
function NbElmt(P : BinTree)integer
{Mengirimkan banyaknya elemen (node) pohon biner P}

function NbDaun(P : BinTree) integer
{ Mengirimkan banyaknya daun pohon biner P}
function IsUnerLeft(P : BinTree) boolean
{ Mengirimkan True jika pohon biner tidak kosong P adalah pohon unerleft yaitu hanya mempunyai sub pohon kiri}
function IsUnerRight(P : BinTree) boolean
{ Mengirimkan True jika pohon biner tidak kosong P adalah pohon unerright yaitu hanya mempunyai sub pohon kanan}

function IsBin(P : BinTree)boolean
{ Mengirimkan True jika pohon biner tidak kosong P adalah pohon biner yaitu mempunyai sub pohon kanan dan sub pohon kiri}

function IsSkewLeft(P : BinTree)boolean
{ Mengirimkan True jika pohon biner P adalah pohon condong kiri}

function IsSkewRight(P : BinTree)boolean
{ Mengirimkan True jika pohon biner P adalah pohon condong kanan}

function Tinggi(P : BinTree)integer
{ Mengirimkan tinggi dari pohon biner P}

function Level(P : BinTree, X : infotype)integer
{ Mengirimkan level dari node X yang merupakan salah satu simpul dari pohon biner P}

{Operasi Lain}

Procedure AddDaunTerkiri(input/output P:BinTree,input X: infotype)
{K. AWAL : P boleh kosong
K. AKHIR : P bertambah simpulnya, dengan X adalah simpul daun terkiri}
Procedure AddDaun(input/output P:BinTree, input X, Y : infotype, input Kiri : boolean)
{K. AWAL : P tidak boleh kosong, X adalah salah satu daun pohon Biner P
K. AKHIR : P bertambah simpulnya, dengan Y adalah anak kiri X (jika kiri) atau sebagai anak kanan X (jika not kiri)}

Procedure DelDaunTerkiri(input/output P:BinTree, output X: infotype)
{K. AWAL : P tidak kosong
K. AKHIR: P dihapus daun terkirinya dan didealokasi, dengan X adalah info yang semula disimpan pada daun terkiri yang dihapus}
Procedure DelDaun(input/output P:BinTree, output X: infotype)
{K. AWAL : P tidak kosong, X adalah salah satu daun
K. AKHIR : X dihapus dari P}

untuk mendownloadnya silahkan klik pada menu atas atau disini..

Stack (Tumpukan)

1 komentar
2. Stack (Tumpukan)

2.1. Definisi
STACK (Tumpukan) adalah list linier yang :
1. Dikenali elemen puncaknya (TOP)
2. Aturan penyisipan dan penghapusan
elemennya tertentu :
-Penyisipan selalu dilakukan “di atas “ TOP
-Penghapusan selalu dilakukan pada TOP

Karena aturan penyisipan dan penghapusan semacam itu, TOP adalah satu-satunya alamat tempat terjadi operasi. Elemen yang ditambahkan paling akhir akan menjadi elemen yang akan dihapus.Dikatakan bahwa elemen Stack akan tersusun secara LIFO (Last In First Out).
Maka secara lojik, sebuah STACK dapat digambarkan sebagai list linier yang setiap
elemennya adalah
Type ElmtS = record
Next : address >

dengan InfoType terdefinisi yang menentukan informasi yang disimpan pada setiap elemen stack, dan address adalah “alamat” dari elemen
Selain itu alamat elemen terbaru (TOP) dicatat, sedangkan alamat elemen yang paling “bawah”, yaitu yang paling lama biasanya diebut BOTTOM.
TOP adalah elemen pertama list, supaya penambahan dan penghapusan dengan mudah dan efisien dapat dilakukan.

Sehingga jika S adalah sebuah Stack, dan P adalah address maka
Top (S) adalah alamat elemen TOP, dimana operasi penyisipan/penghapusan dilakukan.
Info (P) adalah informasi yang disimpan pada alamat P
Next (P) adalah alamat suksesor P
ElmtS (P) adalah sebuah elemen stack yang beralamat P
Stack kosong adalah Stack dengan Top (S) = Nil ( tidak terdefinisi )
2.2. Traversal pada Stack
Pada stack, jarang sekali dilakukan traversal, karena keunikan Stack justru pada operasi yang hanya menyangkut elemen TOP. Namun dibutuhkan traversal misalnya untuk mencetak isi Stack.
2.3. Search pada Stack
Pada stack, elemen yang diproses hanyalah elemen pada TOP. Maka hampir tidak pernah dilakukan search.

2.4. Operasi dan fungsi dasar pada STACK.
a. Test STACK kosong
Mengetahui bahwa stack kosong atau tidak sangat penting, sebab semua operasi akan dilakukan berdasarkan kosong atau tidaknya suatu Stack. Realisasi algoritma dari definisi fungsional ini adalah sebuah fungsi yang melakukan test terhadap Stack sebagai berikut :

function StackEmpty (S : STACK) → Boolean
{ TEST stack kosong : Mengirim true, jika tumpukan kosong, false jika tumpukan tidak kosong}
Deklarasi

Deskripsi
return (Top (S) = Nil)

b. Pembuatan STACK kosong
Membuat Stack kosong diperlukan untuk memulai memakai stack. Realisasi algoritma dari definisi fungsional ini adalah sebuah prosedur yang melakukan inisialisasi stack sebagai berikut

Procedure CreateEmptyS (Output S : STACK)
{K. Awal : sembarang,
K. Akhir : sebuah stack S yang kosong siap dipakai
terdefinisi
Proses : Membuat stack kosong }

Deklarasi
Deskripsi
Top (S) ← Nil

c.Penambahan sebuah elemen pada STACK (Push)
Penambahan selalu dilakukan pada TOP, dan karena alamat TOP diketahui maka prosesnya sederhana. Berikut ini akan diberikan skema prosedur penyisipan tersebut. Realisasi algoritma dari definisi fungsional ini adalah salah satu dari dua buah prosedur yang melakukan penambahan elemen stack sebagai berikut. Prosedur pertama menambahkan suatu ElmtS yang diketahui alamatnya dan yang kedua menambahkan suatu nilai ElmtS yang diberikan.

procedure Push@ (Input/Output S : STACK Input P : address)
{Menambahkan sebuah elemen baru pada TOP sebuah stack, dengan elemen yang diketahui alamatnya}
{K.Awal : Stack mungkin kosong, P terdefinisi (berarti terdefinisi informasinya, Next (P) = Nil}
{K.Akhir : Top (S) adalah P}
Deklarasi
Deskripsi
{ insert sebagai elemen pertama }
Next (P) ← TOP (S)
TOP (S) ← P

procedure Push( Input / Output S:STACK Input E: InfoType )
{ Menambahkan sebuah elemen baru pada TOP sebuah stack, dengan elemen yang diketahui informasinya }
{ K. Awal : Stack mungkin kosong , E terdefenisi , alokasi alamat
selalu berhasil }
{ K. Akhir : TOP (S) berisi E )
Deklarasi
P : address
Deskripsi
Alokasi ( P ) { alokasi selau berhasil }
Info(P) ← E
{ insert sebagai elemen pertama }
Next(P) ← TOP(S)
TOP(S) ← P

d. Penghapusan sebuah elemen pada
STACK (Pop)
Penghapusan elemen Stack selalu dilakukan pada TOP , hanya saja harus diperhitungkan bahwa mugkin Stack akan menjadi kosong akibat terjadinya penghapusan. Jika Stack menjadi kosong , maka harga TOP harus diganti . Realisasi algoritma dari definisi funsional ini adalah salah satu dari dua buah prosedur yang melakukan pengambilan elemen stack sebagai berikut . Prosedur pertama mengambil suatu Elmts dengan menyimpan alamatnya dan yang kedua mengambil nilai , dan membebaskan alamat ( dealokasi ) yang tadinya dipakai



procedure PopStack@(Input/Output S : STACK Output P : address)
{K.Awal : Stack tidak kosong
K.Akhir : Alamat elemen Top (S) disimpan pada P, sehingga informasinya dapat diakses melalui P
Proses : Menghapus elemen stack, stack tidak boleh kosong dan mungkin menjadi kosong }
Deklarasi
Deskripsi
P ← TOP (S)
TOP (S) ← Next(TOP(S))


procedure PopStack(Input/Output S : STACK Output E : InfoType)
{K.Awal : Stack tidak kosong
K.Akhir : Alamat elemen Top (S) disimpan pada E, alamat TOP yang lama didealokasi
Proses : Menghapus elemen stack, stack tidak boleh kosong dan mungkin menjadi kosong }
Deklarasi
P : address
Deskripsi
P ← TOP (S)
E ← Info(P)
TOP (S) ← Next(TOP(S))
Dealokasi (P)

Catatan
Alokasi dan Dealokasi dalam bahasa Pascal :
1. Pengalokasian ruang memori dengan notasi
New (Pointer)
2. Pengalokasian ruang memori dengan notasi
Dispose(Pointer)

Bagian Deklarasi dari algoritma pada Stack :
Deklarasi
type InfoType = … {Sebuah type terdefinisi}
type Address pointer to ElmtS
type ElmtS = record
Next : Address >
type Stack = record
{Deklarasi Nama Peubah}
S : Stack
P : Address

{Maka penulisan untuk :
TOP(S) menjadi S^.TOP
Info(P) menjadi P^Info
Next(P) menjadi P^Next }

Catatan :
Agar notasi TOP(S), Info(P), Next(P) dapat ditulis sama seperti dalam algoritma dan tidak ditulis dengan notasi S^.TOP, P^Info, P^Next, maka dianjurkan untuk membuat fungsi TOP, fungsi Info dan Fungsi Next.


Function TOP(S : Stack) : Address;
{Mengembalikan alamat elemen pertama Stack S}

Deklarasi
Deskripsi
begin
TOP := S^.TOP;
end;

Function Info(P : Address) : InfoType;
{ Mengembalikan field Info dari elemen yang alamatnya P}

Deklarasi
Deskripsi
begin
Info := P^.Info;
end;


Function Next(P : Address) : Address;
{ Mengembalikan field Next dari elemen yang alamatnya P}

Deklarasi
Deskripsi
begin
Next := P^.Next;
end;

Soal-Soal Latihan
1. Mengapa cara penyusunan elemen pada Stack sering disebut tersusun secara LIFO?
2. Mengapa pada Stack Traversal dan Search jarang dilakukan?
3. Penghapusan elemen pada Stack selalu dilakukan pada elemen yang paling atas, bagaimana jika terpaksa harus menghapus elemen yang paling bawah?


4. Buatlah sebuah fungsi untuk menghitung jumlah elemen stack yang genap, jika diketahui sebuah stack dengan elemen bertype integer.
5. Buatlah fungsi/prosedur untuk mencetak elemen stack yang ganjil
6. Buatlah juga fungsi untuk menghitung rata-rata elemen Stack yang genap
7. Buatlah sebuah fungsi untuk mengirimkan elemen pertama Stack
8. Buatlah sebuah fungsi untuk mengirimkan elemen Stack yang maksimum jika diketahui elemen Stack terurut mengecil bertype integer.


untuk mendownloadnya silahkan klik di menu atas atau diSini..






Labels

 

Copyright 2018 All Rights Reserved @ Sistem Informasi|Fasilkom Unsri| Mkom Budi Luhur |