Devaperdana's Blog

Just another WordPress.com weblog

Pelajaran Pemrograman (Perkumpulan Syntax)

Module Module1

Sub Main()
Console.Write(“Masukan Nama Anda :”)
Dim xNama As String
xNama = Console.ReadLine()
Console.WriteLine()
Console.WriteLine(“Halo ” & xNama & “. Selamat Datang di Mata Kuliah Pemrograman Visual II.”)
Console.WriteLine()
InputKelas()
Console.WriteLine()
Console.WriteLine(“————————”)
Console.WriteLine(“TEKAN ENTER UNTUK KELUAR”)
Console.ReadLine()
End Sub

Private Function CekKelas(ByVal xKelas As String) As Boolean
Dim xCek As Boolean
xCek = True
Select Case UCase(xKelas)
Case “K081″
Console.writeLine()
Console.writeLine(“anda Kuliah Tiap Hari JUMAT pk 08.00-11.00″)
Case “P092″
Console.writeLine()
Console.writeLine(“Anda Kuliah Tiap Hari Kamis pk 1800-2100″)
Case Else
Console.writeLine()
Console.writeLine(“Anda salah Masukan Kelas”)
Console.writeLine()
xCek = False
End Select
Return xCek
End Function
Private Sub InputKelas()
Dim xKelas As String
Console.write(“Masukan Kelas Amda :”)
xKelas = Console.ReadLine()
If CekKelas(xKelas) = False Then
InputKelas()
End If
End Sub
End Module

 

 

 

 

 

October 14, 2010 Posted by | Uncategorized | Leave a Comment

SEARCHING

Proses pencarian adalah menemukan harga (data) tertentu di dalam sekumpulan harga yang bertipe sama (tipe dasar atau tipe bentukan).
Contoh:
Untuk menghapus (mengubah) harga tertentu di dalam kumpulannya, langkah pertama yang dilakukan adalah mencari apakah harga tersebut terdapat di dalam kumpulan yang dimaksud. Jika ada, harga tersebut dapat dihapus atau diubah nilainya. Dengan cara yang sama untuk penyisipan, jika data sudah ada, dan mempertahankan tidak ada duplikasi data, maka data tersebut tidak disisipkan, dan jika belum ada disisipkan.

contoh program searching :

#include <iostream.h>
#include <conio.h>
void main()
{
clrscr();
int data[8] = {8,10,6,-2,10,7,1,100};
int cari,index;
int ketemu=0;
cout<<”masukkan data yang ingin dicari = “;
cin>>cari;
for(int i=0;i<8;i++)
{
if(data[i] == cari)
{
ketemu=1;
index = i;
break;
}
}
if(ketemu == 1)
{
cout<<”Data ada!”<<endl;
cout<<”Data terletak di index ke – “<<index;
}
else cout<<”Data Tidak ada!”<<endl;
getch();
}

Binary Search
Salah satu syarat agar pencarian biner dapat dilakukan adalah data sudah dalam
keadaan urut. Dengan kata lain, apabila data belum dalam keadaan urut, pencarian biner
tidak dapat dilakukan. Dalam kehidupan sehari-hari, sebenarnya kita juga sering
menggunakan pencarian biner. Misalnya saat ingin mencari suatu kata dalam kamus
Prinsip dari pencarian biner dapat dijelaskan sebagai berikut :mula-mula diambil
posisi awal 0 dan posisi akhir = N – 1, kemudian dicari posisi data tengah dengan rumus
(posisi awal + posisi akhir) / 2. Kemudian data yang dicari dibandingkan dengan data
tengah. Jika lebih kecil, proses dilakukan kembali tetapi posisi akhir dianggap sama
dengan posisi tengah –1. Jika lebih besar, porses dilakukan kembali tetapi posisi awal
dianggap sama dengan posisi tengah + 1. Demikian seterusnya sampai data tengah
sama dengan yang dicari.
Untuk lebih jelasnya perhatikan contoh berikut. Misalnya ingin mencari data 17
pada sekumpulan data berikut :

awal tengah akhir
Mula-mula dicari data tengah, dengan rumus (0 + 9) / 2 = 4. Berarti data tengah
adalah data ke-4, yaitu 15. Data yang dicari, yaitu 17, dibandingkan dengan data tengah
ini. Karena 17 > 15, berarti proses dilanjutkan tetapi kali ini posisi awal dianggap sama
dengan posisi tengah + 1 atau 5.

awal tengah akhir
Data tengah yang baru didapat dengan rumus (5 + 9) / 2 = 7. Berarti data tengah
yang baru adalah data ke-7, yaitu 23. Data yang dicari yaitu 17 dibandingkan dengan
data tenah ini. Karena 17 < onblur=”try {parent.deselectBloggerImageGracefully();} catch(e) {}” href=”http://1.bp.blogspot.com/_DvhMcmeO8Co/SkNyKSe2NjI/AAAAAAAAAFg/LIJRLcr0Qi0/s1600-h/3.bmp”>

awal=tengah akhir
Data tengah yang baru didapat dengan rumus (5 + 6) / 2 = 5. Berarti data tengah
yang baru adalah data ke-5, yaitu 17. data yang dicari dibandingkan dengan data tengah
ini dan ternyata sama. Jadi data ditemukan pada indeks ke-5.
Pencarian biner ini akan berakhir jika data ditemukan atau posisi awal lebih besar
daripada posisi akhir. Jika posisi sudah lebih besar daripada posisi akhir berarti data
tidak ditemukan.
Untuk lebih jelasnya perhatikan contoh pencarian data 16 pada data diatas.
Prosesnya hampir sama dengan pencarian data 17. Tetapi setelah posisi awal 5 dan
posisi akhir 6, data tidak ditemukan dan 16 < atau =” 4″ awal =” 5.”> Data[m]) maka L ← m + 1
9 Jika (ketemu) maka m adalah indeks dari data yang dicari, jika tidak data tidak
ditemukan
Di bawah ini merupakan fungsi untuk mencari data menggunakan pencarian biner.
int BinarySearch(int x)
{
int L = 0, R = Max-1, m;
bool ketemu = false;
while((L <= R) && (!ketemu)) { m = (L + R) / 2; if(Data[m] == x) ketemu = true; else if (x < r =” m” l =” m” style=”font-weight: bold;”>Fungsi Pencarian Data dengan Metode Biner
Fungsi diatas akan mengembalikan indeks dari data yang dicari. Apabila data
tidak ditemukan maka fungsi diatas akan mengembalikan nilai –1.
Jumlah pembandingan minimum pada pencarian biner adalah 1 kali, yaitu apabila
data yang dicari tepat berada di tengah-tengah. Jumlah pembandingan maksimum yang
dilakukan dengan pencarian biner dapat dicari menggunakan rumus logaritma, yaitu :
C = 2log(N)
Pencarian sebenarnya ada 3 metode antara lain:
1. Pencarian Beruntun (Sequential Search);
2. Pencarian Beruntun dengan Sentinel;
3. Pencarian Bagidua (Binary Search).
Nah diatas kan udah disebutin tuh metodenya, sekarang yang kita bahas disini cuma Sequential Search dan Binary Search.
Jadi kita mulai aja neh nyebutin penjelasannya atu-atu.

1. Pencarian Beruntun(Sequential Search)
Pencarian beruntun adalah proses membandingkan setiap elemen larik satu per satu secara beruntun, mulai dari elemen pertama sampai elemen yang dicari ditemukan atau seluruh elemen sudah diperiksa.

Pada dasarnya, pencarian ini hanya melakukan pengulangan dari 1 sampai dengan jumlah data. Pada setiap pengulangan, dibandingkan data ke-i dengan yang dicari. Apabila sama, berarti data telah ditemukan. Sebaliknya apabila sampai akhir pengulangan tidak ada data yang sama, berarti data tidak ada. Pada kasus yang paling buruk, untuk N elemen data harus dilakukan pencarian sebanyak N kali pula.

contoh program binary search

#include<iostream.h>
#include<conio.h>

int data[10] = {1,3,4,7,12,25,40,65,78,90}; //variabel global

int binary_search(int cari)
{
int l,r,m;
int n = 10;
l = 0;
r = n-1;
int ketemu = 0;
while(l<=r && ketemu==0)
{
m = (l+r)/2;
if( data[m] == cari )
ketemu = 1;
else
if (cari < data[m])
r = m-1;
else l = m+1;
}
if(ketemu == 1) return 1; else return 0;
}

void main()
{
clrscr();
int cari,hasil;
cout<<”masukkan data yang ingin dicari = “;
cin>>cari;
hasil = binary_search(cari);
if(hasil == 1)
{
cout<<”Data ada!”<<endl;
}
else
if(hasil == 0)
cout<<”Data Tidak ada!”<<endl;
getch();
}

Di bawah ini merupakan fungsi untuk mencari data menggunakan pencarian biner.

int BinarySearch(int x)

{

int L = 0, R = Max-1, m;

bool ketemu = false;

while((L <= R) && (!ketemu))

{

m = (L + R) / 2;

if(Data[m] == x)

ketemu = true;

else if (x < data[m])

R = m – 1;

else

L = m + 1;

}

if(ketemu)

return m;

else

return -1;

}

Fungsi diatas akan mengembalikan indeks dari data yang dicari. Apabila data

tidak ditemukan maka fungsi diatas akan mengembalikan nilai –1.

Jumlah pembandingan minimum pada pencarian biner adalah 1 kali, yaitu apabila

data yang dicari tepat berada di tengah-tengah. Jumlah pembandingan maksimum yang

dilakukan dengan pencarian biner dapat dicari menggunakan rumus logaritma, yaitu :

C = 2log(N)

PENCAHARIAN SEKUENSIAL

Pencaharian sekuensial (atau disebut juga pencaharian linear ) merupakan model pencaharian yang paling sederhana yang dilakukan terhadap suatu kumpulan data.

Secara konsep, penjelasannya adalah sebagai berikut :

Terdapat L yang merupakan larik yang berisi n buah data ( L[0],L[1]…….L[n-1]) dan k adalah data yang akan dicari. Pencaharian dilakukan untuk menemukan L[i] = k dengan i adalah bilangan indeks terkecil yang memenuhi kondisi 0<= k <=n-1. Tentu saja bahwa data yang di cari tidak ditemukan.

Contoh :

Seperti program yang telah dipostingkan sebelumnya

L = {8,10,6,-2,10,7,1,100}

Dimanakah posisi 10 yang pertama ?

Dalam hal ini k adalah 10 dan k ditemukan berupa indeks 2.

June 30, 2009 Posted by | Uncategorized | Leave a Comment

SORTING

Sorting adalah proses menyusun elemen – elemen dengan tata urut tertentu dan
proses tersebut terimplementasi dalam bermacam aplikasi. Kita ambil contoh pada
aplikasi perbankan. Aplikasi tersebut mampu menampilkan daftar account yang aktif.
Hampir seluruh pengguna pada sistem akan memilih tampilan daftar berurutan
secara ascending demi kenyamanan dalam penelusuran data.
Beberapa macam algoritma sorting telah dibuat karena proses tersebut sangat
mendasar dan sering digunakan. Oleh karena itu, pemahaman atas algoritma –
algoritma yang ada sangatlah berguna.
Setelah menyelesaikan pembahasan pada bagian ini, anda diharapkan mampu :
1. Memahami dan menjelaskan algoritma dari insertion sort, selection sort,
merge sort dan quick sort.
2. Membuat implementasi pribadi menggunakan algoritma yang ada
6.2 Insertion Sort
Salah satu algoritma sorting yang paling sederhana adalah insertion sort. Ide dari
algoritma ini dapat dianalogikan seperti mengurutkan kartu. Penjelasan berikut ini
menerangkan bagaimana algoritma insertion sort bekerja dalam pengurutan kartu.
Anggaplah anda ingin mengurutkan satu set kartu dari kartu yang bernilai paling
kecil hingga yang paling besar. Seluruh kartu diletakkan pada meja, sebutlah meja
ini sebagai meja pertama, disusun dari kiri ke kanan dan atas ke bawah. Kemudian
kita mempunyai meja yang lain, meja kedua, dimana kartu yang diurutkan akan
diletakkan. Ambil kartu pertama yang terletak pada pojok kiri atas meja pertama
dan letakkan pada meja kedua. Ambil kartu kedua dari meja pertama, bandingkan
dengan kartu yang berada pada meja kedua, kemudian letakkan pada urutan yang
sesuai setelah perbandingan. Proses tersebut akan berlangsung hingga seluruh kartu
pada meja pertama telah diletakkan berurutan pada meja kedua.
Algoritma insertion sort pada dasarnya memilah data yang akan diurutkan menjadi
dua bagian, yang belum diurutkan (meja pertama) dan yang sudah diurutkan (meja
kedua). Elemen pertama diambil dari bagian array yang belum diurutkan dan
kemudian diletakkan sesuai posisinya pada bagian lain dari array yang telah
diurutkan. Langkah ini dilakukan secara berulang hingga tidak ada lagi elemen yang
tersisa pada bagian array yang belum diurutkan.
Pengenalan Pemrograman 2 1
J.E.N.I.
6.2.1Algoritma
void insertionSort(Object array[], int startIdx, int endIdx) {
for (int i = startIdx; i < endIdx; i++) {
int k = i;
for (int j = i + 1; j < endIdx; j++) {
if (((Comparable) array[k]).compareTo(array[j])>0) {
k = j;
}
}
swap(array[i],array[k]);
}
}
6.2.2Sebuah Contoh
Data
Mango
Apple
Peach
Orange
Banana
1st Pass
Mango
Apple
Peach
Orange
Banana
2nd Pass
Apple
Mango
Peach
Orange
Banana
3rd Pass
Apple
Mango
Orange
Peach
Banana
4th Pass
Apple
Banana
Mango
Orange
Peach
Gambar 1.1.2: Contoh insertion sort
Pada akhir modul ini, anda akan diminta untuk membuat implementasi bermacam
algoritma sorting yang akan dibahas pada bagian ini.
6.3 Selection Sort
Jika anda diminta untuk membuat algoritma sorting tersendiri, anda mungkin akan
menemukan sebuah algoritma yang mirip dengan selection sort. Layaknya insertion
sort, algoritma ini sangat rapat dan mudah untuk diimplementasikan.
Mari kita kembali menelusuri bagaimana algoritma ini berfungsi terhadap satu paket
kartu. Asumsikan bahwa kartu tersebut akan diurutkan secara ascending. Pada
awalnya, kartu tersebut akan disusun secara linier pada sebuah meja dari kiri ke
kanan, dan dari atas ke bawah. Pilih nilai kartu yang paling rendah, kemudian
tukarkan posisi kartu ini dengan kartu yang terletak pada pojok kiri atas meja. Lalu
cari kartu dengan nilai paling rendah diantara sisa kartu yang tersedia. Tukarkan
kartu yang baru saja terpilih dengan kartu pada posisi kedua. Ulangi langkah –
langkah tersebut hingga posisi kedua sebelum posisi terakhir dibandingkan dan
dapat digeser dengan kartu yang bernilai lebih rendah.
Pengenalan Pemrograman 2 2
J.E.N.I.
Ide utama dari algoritma selection sort adalah memilih elemen dengan nilai paling
rendah dan menukar elemen yang terpilih dengan elemen ke-i. Nilai dari i dimulai
dari 1 ke n, dimana n adalah jumlah total elemen dikurangi 1.
6.3.1Algoritma
void selectionSort(Object array[], int startIdx, int endIdx) {
int min;
for (int i = startIdx; i < endIdx; i++) {
min = i;
for (int j = i + 1; j < endIdx; j++) {
if (((Comparable)array[min]).compareTo(array[j])>0) {
min = j;
}
}
swap(array[min], array[i]);
}
}
6.3.2Sebuah Contoh
Data
Maricar
Vanessa
Margaux
Hannah
Rowena
1st Pass
Hannah
Vanessa
Margaux
Maricar
Rowena
2nd Pass
Hannah
Margaux
Vanessa
Maricar
Rowena
3rd Pass
Hannah
Margaux
Maricar
Vanessa
Rowena
4th Pass
Hannah
Margaux
Maricar
Rowena
Vanessa
Figure 1.2.2: Contoh selection sort
6.4 Merge Sort
Sebelum mendalami algoritma merge sort, mari kita mengetahui garis besar dari
konsep divide and conquer karena merge sort mengadaptasi pola tersebut.
6.4.1Pola Divide and Conquer
Beberapa algoritma mengimplementasikan konsep rekursi untuk menyelesaikan
permasalahan. Permasalahan utama kemudian dipecah menjadi sub-masalah,
kemudian solusi dari sub-masalah akan membimbing menuju solusi permasalahan
utama.
Pengenalan Pemrograman 2 3
J.E.N.I.
Pada setiap tingkatan rekursi, pola tersebut terdiri atas 3 langkah.
1. Divide
Memilah masalah menjadi sub masalah
2. Conquer
Selesaikan sub masalah tersebut secara rekursif. Jika sub-masalah tersebut
cukup ringkas dan sederhana, pendekatan penyelesaian secara langsung akan
lebih efektif
3. Kombinasi
Mengkombinasikan solusi dari sub-masalah, yang akan membimbing menuju
penyelesaian atas permasalahan utama
6.4.2Memahami Merge Sort
Seperti yang telah dijelaskan sebelumnya, Merge sort menggunakan pola divide and
conquer. Dengan hal ini deskripsi dari algoritma dirumuskan dalam 3 langkah
berpola divide-and-conquer. Berikut menjelaskan langkah kerja dari Merge sort.
1. Divide
Memilah elemen – elemen dari rangkaian data menjadi dua bagian.
2. Conquer
Conquer setiap bagian dengan memanggil prosedur merge sort secara
rekursif
3. Kombinasi
Mengkombinasikan dua bagian tersebut secara rekursif untuk mendapatkan
rangkaian data berurutan
Proses rekursi berhenti jika mencapai elemen dasar. Hal ini terjadi bilamana bagian
yang akan diurutkan menyisakan tepat satu elemen. Sisa pengurutan satu elemen
tersebut menandakan bahwa bagian tersebut telah terurut sesuai rangkaian.
6.4.3Algoritma
void mergeSort(Object array[], int startIdx, int endIdx) {
if (array.length != 1) {
//Membagi rangkaian data, rightArr dan leftArr
mergeSort(leftArr, startIdx, midIdx);
mergeSort(rightArr, midIdx+1, endIdx);
combine(leftArr, rightArr);
}
}
Pengenalan Pemrograman 2 4
J.E.N.I.
6.4.4Sebuah Contoh
Rangkaian data:
7 2 5 6
Membagi rangkaian menjadi dua bagian:
LeftArr RightArr
2 7 6 5
Membagi LeftArr menjadi dua bagian:
LeftArr RightArr
7 2
Mengkombinasikan
2 7
Membagi RightArr menjadi dua bagian:
LeftArr RightArr
Mengkombinasikan
5 6
Mengkombinasikan LeftArr dan RightArr.
2 5 6 7
Gambar 1.3.4: Contoh merge sort
6.5 Quicksort
Quicksort ditemukan oleh C.A.R Hoare. Seperti pada merge sort, algoritma ini juga
berdasar pada pola divide-and-conquer. Berbeda dengan merge sort, algoritma ini
hanya mengikuti langkah – langkah sebagai berikut :
1. Divide
Memilah rangkaian data menjadi dua sub-rangkaian A[p…q-1] dan A[q+1…r]
dimana setiap elemen A[p…q-1] adalah kurang dari atau sama dengan A[q]
dan setiap elemen pada A[q+1…r] adalah lebih besar atau sama dengan
elemen pada A[q]. A[q] disebut sebagai elemen pivot. Perhitungan pada
elemen q merupakan salah satu bagian dari prosedur pemisahan.
Pengenalan Pemrograman 2 5
J.E.N.I.
2. Conquer
Mengurutkan elemen pada sub-rangkaian secara rekursif
Pada algoritma quicksort, langkah ”kombinasi” tidak di lakukan karena telah terjadi
pengurutan elemen – elemen pada sub-array
6.5.1Algoritma
void quickSort(Object array[], int leftIdx, int rightIdx) {
int pivotIdx;
/* Kondisi Terminasi */
if (rightIdx > leftIdx) {
pivotIdx = partition(array, leftIdx, rightIdx);
quickSort(array, leftIdx, pivotIdx-1);
quickSort(array, pivotIdx+1, rightIdx);
}
}

June 24, 2009 Posted by | Uncategorized | Leave a Comment

link list

Pengertian Linked list :
· sekumpulan elemen bertipe sama, yang mempunyai keterurutan tertentu, yang setiap elemennya terdiri dari dua bagian
· struktur berupa rangkaian elemen saling berkait dimana setiap elemen dihubungkan elemen lain melalui pointer. Pointer adalah alamat elemen. Penggunaan pointer untuk mengacu elemen berakibat elemen-elemen bersebelahan secara logik walau tidak bersebelahan secara fisik di memori.

Bentuk Umum :

Infotype àsebuah tipe terdefinisi yang menyimpan informasi sebuah elemen list
Next àaddress dari elemen berikutnya (suksesor)

Jika L adalah list, dan P adalah address, maka alamat elemen pertama list L dapat diacu dengan notasi :

Sebelum digunakan harus dideklarasikan terlebih dahulu :

Elemen yang diacu oleh P dapat dikonsultasi informasinya dengan notasi :

Beberapa Definisi :
1. List l adalah list kosong, jika First(L) = Nil
2. Elemen terakhir dikenali, dengan salah satu cara adalah karena
Next(Last) = Nil
Nil adalah pengganti Null, perubahan ini dituliskan dengan #define Nil Null

Single Linked List

Pada gambar di atas tampak bahwa sebuah data terletak pada sebuah lokasi memori area. Tempat yang disediakan pada satu area memori tertentu untuk menyimpan data dikenal dengan sebutan node atau simpul. Setiap node memiliki pointer yang menunjuk ke simpul berikutnya sehingga terbentuk satu untaian, dengan demikian hanya diperlukan sebuah variabel pointer. Susunan berupa untaian semacam ini disebut Single Linked List (NULL memilik nilai khusus yang artinya tidak menunjuk ke mana-mana. Biasanya Linked List pada titik akhirnya akan menunjuk ke NULL).
Pembuatan Single Linked List dapat menggunakan 2 metode:
· LIFO (Last In First Out), aplikasinya : Stack (Tumpukan)
· FIFO (First In First Out), aplikasinya : Queue (Antrean)

Operasi-Operasi yang ada pada Linked List
· Insert
Istilah Insert berarti menambahkan sebuah simpul baru ke dalam suatu linked list.
· IsEmpty
Fungsi ini menentukan apakah linked list kosong atau tidak.
· Find First
Fungsi ini mencari elemen pertama dari linked list
· Find Next
Fungsi ini mencari elemen sesudah elemen yang ditunjuk now
· Retrieve
Fungsi ini mengambil elemen yang ditunjuk oleh now. Elemen tersebut lalu dikembalikan oleh fungsi.
· Update
Fungsi ini mengubah elemen yang ditunjuk oleh now dengan isi dari sesuatu
· Delete Now
Fungsi ini menghapus elemen yang ditunjuk oleh now. Jika yang dihapus adalah elemen pertama dari linked list (head), head akan berpindah ke elemen berikut.
· Delete Head
Fungsi ini menghapus elemen yang ditunjuk head. Head berpindah ke elemen sesudahnya.
· Clear
Fungsi ini menghapus linked list yang sudah ada. Fungsi ini wajib dilakukan bila anda ingin mengakhiri program yang menggunakan linked list. Jika anda melakukannya, data-data yang dialokasikan ke memori pada program sebelumnya akan tetap tertinggal di dalam memori

June 16, 2009 Posted by | Uncategorized | | Leave a Comment

Hello world!

Welcome to WordPress.com. This is your first post. Edit or delete it and start blogging!

May 23, 2009 Posted by | Uncategorized | 2 Comments

   

Follow

Get every new post delivered to your Inbox.