Selasa, 02 Desember 2008

CONTOH-CONTOH PEMROGRAMAN

Mencari Bilangan Prima Dengan Bahasa C

Salah satu hal yang sering bikin pusing dalam dunia matematika adalah menentukan apakah suatu bilangan merupakan bilangan prima atau bukan. Kali ini akan diberikan contoh program untuk mencari atau memeriksa apakah suatu bilangan termasuk ke dalam bilangan prima.

Sebagaimana telah diketahui, bilangan prima adalah suatu bilangan yang hanya habis dibagi 1 dan bilangan itu sendiri. Bilangan 1 karena merupakan faktor pembagi tidak dapat disebut bilangan prima. Kemudian sebagai titik tolak perhitungan, bilangan prima yang terkecil harus diketahui. Dalam hal ini akan diambil bilangan 2 dan 3 sebagai bilangan prima yang terkecil. Bilangan 2 merupakan bilangan prima yang unik karena merupakan satu-satunya bilangan prima yang genap. Bilangan prima yang lain pastilah gasal (ganjil).

Nah, langsung saja, program untuk mencari bilangan prima tersebut diberikan pada listing 1.

Listing 1. Mencari bilangan prima

#include

main()

{

int bilangan;

int prima;

int cekprima();

clrscr();

printf("======================\n");

printf("MENCARI BILANGAN PRIMA\n");

printf("======================\n\n");

printf("Masukkan sebuah bilangan integer : ");

scanf("%d",&bilangan);

prima = cekprima(bilangan);

if (prima == 1)

{

printf("Bilangan %d adalah bilangan prima",bilangan);

} else {

printf("Bilangan %d bukan bilangan prima",bilangan);

}

}

int cekprima(bil)

int bil;

{

int bagi=3;

int batas;

if (bil == 1)

{

return(0);

} else if (bil==2||bil==3) {

return(1);

} else if (bil % 2 == 0) {

return(0);

} else {

while (batas > bagi)

{

if (bil % bagi == 0)

{

printf("Karena habis dibagi %d\n",bagi);

return(0);

break;

}

batas = bil / bagi;

bagi += 2;

}

return(1);

}

}

Jika program tersebut dijalankan, hasilnya akan terlihat seperti gambar 1.

Pada prinsipnya, inti dari program tersebut terletak pada fungsi cekprima(). Jika fungsi cekprima() menghasilkan nilai 1, berarti bilangan yang diperiksa adalah bilangan prima. Sebaliknya dengan mudah dapat diterka bahwa jika fungsi cekprima() menghasilkan nilai 0, maka bilangan yang diperiksa bukan merupakan bilangan prima.

Mula-mula fungsi cekprima() akan memeriksa apakah bilangan yang diinputkan adalah bilangan 1. Jika ya, maka fungsi akan menghasilkan nilai 0. Selanjutnya diperiksa apakah bilangan yang diinputkan adalah 2 atau 3 (ingat, kedua bilangan tersebut diambil sebagai patokan). Jika ya, maka sudah pasti kedua bilangan tersebut adalah bilangan prima. Jadi fungsi akan menghasilkan nilai 1.

Berikutnya diperiksa apakah bilangan yang diinputkan merupakan bilangan genap. Suatu bilangan merupakan bilangan genap apabila habis dibagi 2. Oleh karena itu dalam program dituliskan bil % 2 == 0. Ingat, tanda % berarti modulus yaitu operand yang menghitung nilai sisa hasil bagi. Jika suatu bilangan merupakan bilangan genap, sudah pasti bilangan tersebut bukan bilangan prima.

Yang ketiga, jika bilangan yang diinputkan bukan 2, 3, atau bilangan genap, maka dilakukan pemeriksaan apakah bilangan tersebut habis dibagi oleh suatu bilangan yang dimasukkan dalam variabel bagi. Karena merupakan bilangan gasal, maka bilangan pembagi sudah pasti bilangan gasal juga. Oleh sebab itu diambil nilai 3 sebagai nilai awal variabel bagi. Jika bilangan tersebut tidak habis dibagi 3, diperiksa apakah bilangan tersebut habis dibagi 5. Jika tidak, diperiksa apakah bilangan tersebut habis dibagi 7. Itu sebabnya pada program tersebut terdapat baris bagi += 2. Namun jika dilakukan pemeriksaan pada semua bilangan gasal yang mungkin digunakan sebagai pembagi, maka program akan menjadi tidak efisien.

Ambil contoh, misalnya bilangan yang hendak diperiksa adalah 17. Jika bilangan 17 tersebut diperiksa dengan cara dibagi dengan 3, 5, 7, 9, 11, 13, 15, maka ada 7 langkah pemeriksaan. Padahal sudah jelas 17 tidak akan habis dibagi 9, 11, 13, 15. Angka 9 dikali 2 saja sudah 18, bukan? Karena itu perlu diberi batas akan program tetap efisien. Batas dicari dengan cara membagi bilangan yang diperiksa dengan variabel bagi. Selama nilai batas lebih besar daripada nilai variabel bagi, perhitungan akan terus dilakukan. Itu sebabnya program dibatasi dalam loop while (batas > bagi).

Sebagai variasi dari program tersebut akan dibuat program untuk mencari bilangan prima dalam rentang 1 sampai dengan 1000. Contoh program tersebut diberikan pada listing 2.

Listing 2. Mencari bilangan prima dalam rentang 1-1000

#include

main()

{

int i;

int prima;

int cekprima();

clrscr();

printf("======================\n");

printf("MENCARI BILANGAN PRIMA\n");

printf("DALAM RENTANG 1-1000\n");

printf("======================\n\n");

printf("Bilangan prima yang ditemukan : \n");

for (i=1;i<=1000;i++)

{

prima = cekprima(i);

if (prima == 1)

{

printf(" %d",i);

}

}

}

int cekprima(bil)

int bil;

{

int bagi=3;

int batas;

if (bil == 1)

{

return(0);

} else if (bil==2||bil==3) {

return(1);

} else if (bil % 2 == 0) {

return(0);

} else {

while (batas > bagi)

{

if (bil % bagi == 0)

{

return(0);

break;

}

batas = bil / bagi;

bagi += 2;

}

return(1);

}

}

Jika program tersebut dijalankan, maka hasilnya akan nampak seperti gambar 2.

Nah, sebagai latihan, Anda bisa memodifikasi program listing 1 dengan menambahkan sebuah looping “Apakah Anda ingin mencoba lagi?”

Kemudian program listing 2 juga dapat dimodifikasi agar user dapat memasukkan sendiri rentang pencarian (tentunya dengan batasan tertentu) dan kemudian pada output dituliskan juga “Bilangan prima yang ditemukan ada n buah”.

Selamat mencoba.

Metoda Pengurutan Quick Sort Dengan Bahasa C

Pada pembahasan sebelumnya Anda telah mengetahui bahwa setidaknya ada dua metoda pengurutan yang populer, yaitu Bubble Sort dan Quick Sort. Sengaja metoda Bubble Sort dipilih untuk dibahas terlebih dahulu karena logikanya mudah untuk diikuti.

Nah, sekarang kita menginjak pada metoda pengurutan yang kedua yaitu Quick Sort. Metoda ini mungkin memang tidak semudah Bubble Sort, akan tetapi unggul dalam segi kecepatan, terutama apabila ada banyak data yang harus diurutkan.

Sebelum kita menginjak pada pembahasan tentang program pengurutan dengan metoda Quick Sort, terlebih dahulu akan diberikan ilustrasi terlebih dahulu.

Katakanlah Anda memiliki 7 buah angka yang harus diurutkan, yaitu 5, 1, 3, 10, 8, 6, dan 7. Lihat ilustrasi pada gambar 1. Dengan menggunakan metoda Quick Sort, langkah pertama yang harus diambil adalah menentukan elemen pivot. Elemen pivot adalah suatu data yang dipilih untuk menjadi dasar acuan dalam pengurutan data. Elemen ini boleh diambil sembarang, salah satu dari ketujuh data tersebut. Dalam contoh ini akan diambil angka 7 sebagai elemen pivot. Lihat ilustrasi pada gambar 2.

Langkah berikutnya adalah melakukan pembandingan seluruh elemen yang ada dengan elemen pivot tersebut. Sebagai hasil dari pembandingan tersebut, bilangan yang lebih kecil daripada elemen pivot akan diletakkan di sebelah kiri elemen pivot dan bilangan yang lebih besar daripada elemen pivot diletakkan di sebelah kanan elemen pivot. (Kasus ini berlaku untuk pengurutan dari bilangan terkecil ke bilangan terbesar atau ascending).

Proses pembandingan ini dapat dilakukan dari dua arah, yaitu dari arah kiri dan dari arah kanan. Nantinya dalam program, gerakan dari arah kiri akan dinotasikan dengan huruf i dan gerakan dari arah kanan akan dinotasikan dengan huruf j. Lihat ilustrasi pada gambar 3. Apabila elemen i memiliki nilai lebih besar daripada elemen pivot dan elemen j memiliki nilai lebih kecil daripada elemen pivot, maka kedua elemen ini ditukar letaknya. Proses ini akan dilakukan terus hingga kedua arah gerakan bertemu di suatu titik tertentu. Lihat ilustrasi pada gambar 4. (Perhatikan bahwa letak urutan angka telah berubah). Selanjutnya letak elemen pivot ditukar dengan letak titik temu tersebut. Lihat ilustrasi pada gambar 5. Hasil akhir proses ini terlihat pada gambar 6.

Perhatikan baik-baik gambar 6 tersebut. Pada keadaan tersebut, seluruh bilangan yang terletak di sebelah kiri elemen pivot bernilai lebih kecil daripada elemen pivot dan seluruh bilangan yang terletak di sebelah kanan elemen pivot bernilai lebih besar daripada elemen pivot. Jumlah elemen yang terletak di sebelah kiri dan kanan tidak harus sama.

Sekalipun sekarang seluruh bilangan yang terletak di sebelah kiri elemen pivot bernilai lebih kecil daripada elemen pivot dan seluruh bilangan yang terletak di sebelah kanan elemen pivot bernilai lebih besar daripada elemen pivot, namun bilangan-bilangan tersebut masih belum berurutan. Jadi proses Quick Sort harus dilakukan lagi untuk bilangan yang terletak di sebelah kiri elemen pivot dan di sebelah kanan elemen pivot.

Proses ini akan terus berlangsung hingga seluruh bilangan akan terurut.

Nah, berdasarkan ilustrasi di atas, sekarang akan kita bangun program yang akan melakukan proses pengurutan dengan metoda Quick Sort. Program tersebut diberikan pada listing 1.

Listing 1. Program pengurutan metoda Quick Sort

#include

#define N 20

int quick(int bawah, int atas);

int i, j, A[N];

main()

{

int jml;

clrscr();

printf("MENGURUTKAN DATA DENGAN QUICK SORT \n\n");

printf("Masukkan jumlah bilangan (maks 20) : ");

scanf("%d",&jml);

// input data

for (i=0;i

{

printf("Bilangan ke %d : ",i+1);

scanf("%d",&A[i]);

}

// pengurutan data

quick(0,jml-1);

// menampilkan hasil

printf("Data yang telah terurut : \n");

for (i=0;i

{

printf("%d\n",A[i]);

}

}

// fungsi quick

int quick(int bawah, int atas)

{

int pivot, temp;

// pengulangan dilakukan

// selama bawah <>

if (bawah

{

i = bawah;

j = atas;

pivot = A[j];

do

{

while (i

{

i++;

}

while (j>i && A[j]>=pivot)

{

j--;

}

if (i

{

temp = A[i];

A[i] = A[j];

A[j] = temp;

}

}

while (i

temp = A[j];

A[j] = A[atas];

A[atas] = temp;

if (j-bawah

{

quick(bawah,j-1);

quick(i+1,atas);

}

else

{

quick(i+1,atas);

quick(bawah,j-1);

}

}

}

Salah satu kemungkinan hasil apabila program tersebut dijalankan adalah sebagai berikut:

MENGURUTKAN DATA DENGAN QUICK SORT

Masukkan jumlah bilangan (maks 20) : 7

Bilangan ke 1 : 5

Bilangan ke 2 : 1

Bilangan ke 3 : 3

Bilangan ke 4 : 10

Bilangan ke 5 : 8

Bilangan ke 6 : 6

Bilangan ke 7 : 7

Data yang telah terurut :

1

3

5

6

7

8

10

Bandingkan dengan gambar 7.

Perhatikan dengan seksama program tersebut. Anda akan melihat bahwa di dalam fungsi quick() dipanggil lagi fungsi quick() itu sendiri. Tentunya Anda masih ingat bukan bahwa hal tersebut merupakan fungsi rekursif.

Sebagai latihan, Anda bisa membuat program yang sama namun untuk pengurutan descending atau menurun. Selamat mencoba.

Aneka Tips Dan Trik Pemrograman Visual Basic

Bagian ini akan memberikan aneka tip dan trik pemrograman yang biasa diterapkan di Visual Basic versi 6.0.

Karakter Password

Anda tentu sudah mengetahui bahwa pada aplikasi tertentu yang menggunakan password, text box yang digunakan untuk mengisi password selalu memunculkan karakter bintang (*) jika Anda mengetikkan sesuatu ke dalamnya. Hal ini tentu saja dimaksudkan agar orang lain tidak dapat membaca karakter sebenarnya yang Anda ketikkan. Untuk membuat sebuah text box agar mengeluarkan karakter * (atau bahkan karakter yang lain) caranya sangat mudah, yaitu mengisikan karakter yang Anda inginkan pada properti PasswordChar kontrol text box. Setelah itu jika Anda mengetikkan sesuatu ke dalam text box tersebut, maka karakter yang akan muncul adalah karakter yang Anda masukkan ke dalam properti PasswordChar tersebut.

Center Screen

Seringkali jika aplikasi Anda dijalankan, letak form aplikasi tersebut pada layar monitor tidak menetap. Kadang di kiri atas, kadang di tengah, kadang di bawah. Bagi Anda yang menyukai kerapian, mungkin hal ini akan terasa menjengkelkan. Ada suatu trik mudah agar form aplikasi tersebut selalu terletak di tengah layar monitor jika dieksekusi, yaitu dengan mengubah properti StartUpPosition menjadi 2 – CenterScreen, atau klik kanan gambar form pada Form Layout Window, pilih Startup Position®Center Screen.

Ukuran Default Kontrol

Untuk menambahkan sebuah kontrol ke dalam form, Anda menggunakan cara klik dan seret mouse untuk membentuk kontrol tersebut di dalam form. Jika Anda ingin menggunakan sebuah kontrol dengan ukuran defaultnya, maka ada cara yang lebih cepat, yaitu klik ganda ikon kontrol tersebut. Otomatis ke dalam form akan ditambahkan kontrol tersebut dengan ukuran default. Sedangkan posisinya tentu saja masih harus diatur secara manual.

Mengubah Tampilan IDE

Jika Anda adalah pengguna Visual Basic mulai dari versi-versi awal, Anda tentu tahu bahwa tampilan IDE (Integrated Development Environment) atau tampilan jendela Visual Basic 6.0 berbeda dengan versi-versi sebelumnya. Anda dapat mengubah tampilan IDE Microsoft Visual Basic 6.0 agar menyerupai versi-versi sebelumnya dengan klik menu Tools®Options. Pilih tab Advanced, aktifkan check box SDI Development Environment. Keluarlah dari Visual Basic 6.0, kemudian jalankan lagi. Tampilan IDE Visual Basic 6.0 akan berubah seperti gambar 1.

Menambahkan Gambar Pada Command Button

Selama ini Anda selalu menggunakan Caption pada Command Button. Anda juga dapat menambahkan gambar pada Command Button untuk menambah daya tarik aplikasi Anda. Untuk itu ada beberapa properti yang perlu diubah, yaitu:

Properti

Nilai

Style

2 - Graphical

Caption

[Anda boleh mengosongkan properti ini]

Picture

[Gambar yang hendak ditambahkan pada Command Button]

DownPicture

[Gambar pada Command Button ketika diklik]

Contoh:

Buatlah sebuah form, tambahkan sebuah Command Button dan ubahlah propertinya sebagai berikut:

Properti

Nilai

Style

2 - Graphical

Caption

[kosong]

Picture

C:\Windows\Cursors\No_l.cur

DownPicture

C:\Windows\Cursors\No_m.cur

Untuk properti Picture dan DownPicture, jika file-file kursor yang diberikan pada contoh tidak ada pada komputer Anda, Anda boleh menggantinya sendiri dengan file lain.

Jalankan aplikasi Anda, perhatikan apa yang terjadi jika Command Button tersebut diklik.

PopUp Menu

Kadang-kadang Anda ingin menampilkan sebuah menu dengan klik kanan pada sebuah objek. Menu seperti inilah yang disebut PopUp Menu. Caranya sangat mudah. Buatlah sebuah menu dengan menu editor, lalu nonaktifkan pilihan visible yang terdapat pada kotak dialog menu editor. Yang harus diperhatikan adalah, pilihan visible ini hanya non aktif untuk menutitle-nya saja, sedangkan untuk setiap menuitem, pilihan visible ini harus tetap aktif. Kemudian gunakan event mouse down pada objek yang Anda inginkan untuk menampilkan PopUp Menu, lalu tambahkan sintaks sebagai berikut:

PopUpMenu menutitle

Ingat, dengan menggunakan event mouse down, tombol mouse yang diklik bisa ditangkap dengan mengambil nilai tertentu dari parameter button. Untuk tombol kanan mouse, nilai parameter button adalah 2.

Contoh:

Buatlah sebuah form, tambahkan menu dan kontrol Picture Box ke dalamnya. Isi menu dan gambar terserah Anda. Jangan lupa untuk menonaktifkan check box visible pada menu editor untuk menutitle-nya. Pada kontrol picture box tambahkan kode seperti pada listing 1.

Listing 1. Event MouseDown pada Picture1

Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

If Button = 2 Then

PopupMenu mnuFile

End If

End Sub

Jalankan aplikasi tersebut. Menu akan muncul jika Anda mengklik kanan kontrol Picture Box.

Mengedit Beberapa Kontrol Sekaligus

Untuk mengedit beberapa kontrol sekaligus, gunakan kombinasi shift+klik atau ctrl+klik untuk mengaktifkan pilihan terhadap beberapa kontrol.

Sebagai contoh, perhatikan gambar 2. Pada gambar tersebut, ketiga Command Button yang ada pada form terletak terlalu ke kiri. Untuk memindahkan ketiganya sekaligus ke tengah, pilih ketiga Command Button tersebut dengan kombinasi shift+klik atau ctrl+klik. Setelah itu Anda dapat memindahkan ketiga kontrol tersebut sekaligus.

Tab Order

Kadang-kadang karena sesuatu hal kita tidak dapat menggunakan mouse dalam mengoperasikan suatu aplikasi, misalnya mouse sedang rusak. Maka terpaksa kita menggunakan keyboard dalam menjalankan suatu aplikasi. Atau mungkin aplikasi kita adalah aplikasi yang digunakan di kasir toko yang memang sengaja tidak diberi mouse. Pada keadaan dimana kita harus menggunakan keyboard, maka untuk berpindah dari satu kontrol ke kontrol yang lain kita menggunakan tombol tab. Untuk itu di dalam mendesain suatu form, kita juga perlu mengatur urut-urutan kontrol yang akan aktif jika tombol tab ditekan. Untuk mengatur urutan tersebut caranya sangat mudah, yaitu dengan mengatur properti TabIndex setiap kontrol. Kontrol yang langsung fokus jika aplikasi dijalankan akan memiliki TabIndex 0, kemudian jika kita menekan tombol tab, maka kontrol berikutnya yang aktif adalah yang memiliki TabIndex 1, dan seterusnya.

Untuk kasus tertentu, maka penggunaan tombol tab untuk berpindah dari satu kontrol ke kontrol lain tidak efisien, dan untuk menggantikan tombol tab diinginkan tombol enter. Untuk menggantikan tombol tab dengan enter, maka trik yang dapat dipakai adalah menggunakan event KeyPress. Nilai keyAscii untuk enter adalah 13. Jika nilai keyAscii 13 ini terpenuhi, maka kontrol berikutnya yang ingin dijadikan fokus harus dikenai metoda setfocus.

Menambahkan Kontrol Array Pada Saat Run-Time

Umumnya kita menambahkan kontrol ke dalam form pada saat mendesain form tersebut (pada saat design time), tetapi Visual Basic juga menyediakan fasilitas untuk menambah jumlah kontrol array pada saat run-time dengan menggunakan pernyataan Load.

Contoh:

Buatlah sebuah form dan tambahkan sebuah Command Button. Ubah properti Indexnya dengan angka 0.

Ke dalam Command Button tersebut tambahkan kode program seperti listing 2.

Listing 2. Event Click pada Command1

Private Sub Command1_Click(Index As Integer)

Load Command1(1)

Command1(1).Left = Command1(0).Left

Command1(1).Top = Command1(0).Top + Command1(0).Height

Command1(1).Caption = "Command Baru"

Command1(1).Visible = True

End Sub

Perhatikan bahwa pada prosedur Command1_Click terdapat parameter Index As Integer yang harus ditambahkan.

Jalankan aplikasi tersebut. Jika Command Button diklik, maka otomatis akan ditambahkan sebuah Command Button baru tepat di bawahnya.

Nah, mudah-mudahan tips dan trik di atas membantu Anda dalam membuat aplikasi-aplikasi dengan Visual Basic.

Tidak ada komentar: