Saturday, October 23, 2010

Menampilkan bilangan kelipatan 3 dari angka 1 s/d 20


Untuk menampilkan bilangan kelipatan 3 dari angka 1 sampai dengan angka 20, algoritmanya adalah :

Bilangan kelipatan 3 : 3,6,9,12,15,18,21,24 ... dst
Nilai diatas jika dimod3 hasilnya 0
3mod3 = 0       6mod3 = 0       9mod3 = 0
12mod3 = 0     15mod3 = 0
Untuk nilai i = 1 sampai 20 lakukan
Jika nilai i mod 3 = 0 maka
            cetak i


Untuk program dalam bahasa pascal adalah:


uses crt;
var i : integer;
begin
     clrscr;
     for i : = 1 to 20 do
     begin
     if i mod 3 = 0 then
          write(i:5);
     end;
     readln;
end.


Hasilnya : 
 
Read More

Friday, October 22, 2010

KONSEP DASAR PEMROGRAMAN PASCAL

1.1 Perkembangan Pascal
Pascal adalah bahasa tingkat tinggi yang orientasinya pada segala tujuan, dirancang oleh Prof. Niklaus Wirth dari Technical University di Zurich, Switzerland. Nama pascal diambil sebagai penghargaan terhadap Blaise Pascal, ahli matematik dan philosophi terkenal abad 17 dari Perancis.

1.2 Struktur Program Pascal
Struktur dari suatu program pascal terdiri dari sebuah judul program dan suatu blok program atau badan program. Blok program dibagi lagi menjadi dua bagian, yaitu : bagian deklarasi dan bagian pernyataan. Secara ringkas, struktur suatu program pascal dapat terdiri dari :
1. Judul program
2. Blok program
    a. Bagian deklarasi
        - deklarasi label
        - deklarasi konstanta
        - deklarasi tipe
        - deklarasi variable
        - deklarasi prosedur
        - deklarasi fungsi
    b. Bagian pernyataan
        Program pascal yang paling sederhana adalah program yang hanya terdiri dari 
        sebuah bagian pernyataan  saja.

        Begin
        End.
Bentuk umum dari bagian pernyataan adalah :
        Begin
           Statement;
        End .

Contoh :
Begin
     Writeln ( ‘Saya pascal’ );
     Writeln ( ‘--------------‘ )
End .

Program pascal tidak mengenal aturan penulisan di kolom tertentu, jadi boleh ditulis mulai kolom berapapun. Penulisan statement-statement pada contoh program yang menjorok masuk beberapa kolom tidak mempunyai pengaruh diproses, hanya dimaksudkan supaya mempermudah pembacaan program, sehingga akan lebih terlihat bagian-bagiannya, dan baik untuk dokumentasi.
Judul program sifatnya optional dan tidak signifikan didalam program. Jika ditulis dapat digunakan untuk memberi nama program dan daftar dari parameter tentang komunikasi program dengan lingkungannya yang sifatnya sebagai dokumentasi saja. Judul program bila ditulis harus terletak pada awal dari program dan diakhiri dengan titik koma.

Contoh :
Program contoh ;
Begin
     Writeln ( ‘Samin’ );
     Writeln( ‘---------------‘ );
End .

1.3 Deklarasi
Bagian deklarasi digunakan bila didalam program menggunakan pengenal (identifier) yang dapat berupa label, konstanta, tipe, variable, prosedur dan fungsi.

1.3.1 Deklarasi Konstanta
Definisi konstanta diawali dengan kata cadangan Const diikuti oleh kumpulan identifier yang diberi suatu nilai konstanta. Data konstanta nilainya sudah ditentukan dan pasti, tidak dapat dirubah didalam program.
Program contoh_konstanta;
Const
     Potongan = 0.2 ;
     Gaji = 25000 ;
     Namaperusahaan = ‘PT ABC’ ;
Begin
     Writeln ( ‘Potongan =’, Potongan ) ;
     Writeln ( ‘Gaji =’, Gaji ) ;
     Writeln ( ‘Nama =’, Namaperusahaan) ;
End .

1.3.2 Deklarasi Variabel
Variabel adalah identifier yang berisi data yang dapat diubah-ubah nilainya didalam program. Menggunakan kata cadangan Var sebagai judul didalam bagian deklarasi variable dan diikuti oleh satu atau lebih identifier yang dipisahkan koma, diikuti dengan titik dua dan tipe dari datanya diakhiri dengan titik koma.
Contoh :
Var
   Total, Gaji, Tunjangan : real ;
   Jumlahanak : integer ;
   Keterangan : string [25] ;
Begin
   Gaji : = 500000 ;
   Jumlahanak : = 3 ;
   Tunjangan : = 0.25 * Gaji + Jumlahanak * 30000 ;
   Total : = Gaji + Tunjangan ;
   Keterangan : = ‘Karyawan Teladan’ ;
   Writeln ( ‘ Gaji bulanan = Rp. ‘ , Gaji ) ;
   Writeln ( ‘ Tunjangan = Rp. ‘ , Tunjangan ) ;
   Writeln ( ‘ Total gaji = Rp. ‘ , Total ) ;
   Writeln ( ‘ Keterangan = Rp. ‘ , Keterangan ) ;
End .

1.3.3 Deklarasi Tipe
Pascal menyediakan beberapa macam tipe data, yaitu :
1. tipe data sederhana, terdiri dari :
    a. Tipe data standar : integer, real, char, string, Boolean.
    b. Tipe data didefinisikan pemakai : enumerated atau scalar, subrange
2. Tipe data terstruktur : array, record, file, set
3. Tipe data penunjuk
Contoh :
Type
Pecahan = real ;
Bulat = integer ;
Huruf = string [25] ;
Begin
     ……..
     ……..
     ……..
End .

1.3.4 Deklarasi Label
Jika program menggunakan statement Goto untuk meloncat ke suatu statement yang tertentu, maka dibutuhkan suatu label pada statement yang dituju dan label tersebut harus di deklarasikan terlebih dahulu pada bagian deklarasi. Menggunakan kata cadangan Label diikuti oleh kumpulan identifier label dengan dipisahkan oleh koma dan diakhiri dengan titik koma.
Contoh :
Label
   100, selesai ;
Begin
   Writeln ( ‘Bahasa’ ) ;
   Goto 100 ;
   Writeln ( ‘Cobol’ ) ;
100 :
   Writeln ( ‘Pascal’ ) ;
Goto selesai ;
   Writeln ( ‘Fortran’ ) ;
Selesai :
End .

1.3.5 Deklarasi Prosedur
Prosedur merupakan bagian yang terpisah dari program dan dapat diaktifkan dimanapun didalam program. Prosedur dibuat sendiri bilamana program akan dibagi-bagi menjadi beberapa blok-blok modul. Prosedur dibuat didalam program dengan cara mendeklarasikannya dibagian deklarasi prosedur. Menggunakan kata cadangan Procedure.
Contoh :
Procedure tambah ( x, y : integer ; var hasil : integer ) ;
Begin
     Hasil : = x + y ;
End ;
{program utama}
var
z : integer ;
Begin
     Tambah ( 2, 3, z ) ;
     Writeln ( ‘ 2 + 3 = ‘, z );
End .

1.3.6 Deklarasi Fungsi
Fungsi juga merupakan bagian program yang terpisah mirip dengan prosedur, tetapi ada beberapa perbedaannya. Kata cadangan yang digunakan Function.
Contoh :
Function Tambah ( x, y : integer ) : integer ;
Begin
     Tambah : = x + y ;
End ;
{program utama}
Begin
     Writeln ( ‘ 2 + 3 = ‘ , Tambah ( 2, 3)) ;
End .

1.4 Unit
Suatu unit adalah kumpulan dari konstanta, tipe-tipe data, variable, prosedur dan fungsi-fungsi. Tiap-tiap unit tampak seperti suatu program Pascal yang terpisah. Unit standar sudah merupakan kode mesin (sudah dikompilasi), bukan kode sumber Pascal lagi dan sudah diletakkan di memori pada waktu menggunakan pascal. Untuk menggunakan suatu unit, harus diletakkan suatu anak kalimat Uses diawal blok program, diikuti oleh daftar nama unit yang digunakan.

1.4.1 Unit System
Sebenarnya adalah pustaka dari runtime Turbo Pascal yang mendukung semua proses yang dibutuhkan pada waktu runtime. Unit system berisi semua prosedur dan fungsi standar turbo pascal. Unit system ini akan secara otomatis digunakan didalam program, sehingga boleh tidak disebutkan didalam anak kalimat Uses.

1.4.2 Unit Crt
Digunakan untuk memanipulasi layer teks ( windowing, peletakkan cursor dilayar, color untuk teks, kode extanded keyboard dan lainnya). Unit standar crt hanya dapat digunakan oleh program yang digunakan dikomputer IBM PC, IBM AT, IBM PS/2 atau yang kompatibel dengannya.
Contoh :
Uses crt ;
Begin
     Clrscr ;
     Writeln ( ‘Hallo’ ) ;
     Writeln ( ‘-------‘ ) ;
End .
Prosedur standar yang menggunakan unit crt adalah :

Fungsi standar yang menggunakan unit Crt adalah :
KeyPressed
ReadKey
WhereX
WhereY

1.4.3 Unit Printer
Merupakan unit yang sangat kecil dirancang untuk penggunaan printer didalam program.
Contoh :
Uses printer ;
Begin
     Writeln ( Lst, ‘Hallo’ ) ;
     Writeln ( Lst, ‘-------‘ ) ;
End .

1.4.4 Unit Dos
Digunakan bila akan menggunakan prosedur-prosedur dan fungsi-fungsi standar yang berhubungan dengan DOS call, semacam DetTime, SetTime, DiskSize, DiskFree dan lainnya.
Contoh :
Uses Dos ;
Begin
     Writeln ( DiskFree(0), ‘ byte sisa isi disk ‘ ) ;
End .

1.4.5 Unit Graph
menyediakan suatu kumpulan rutin grafik yang canggih, sehingga dapat memanfaatkannya untuk keperluan-keperluan pembuatan grafik.
contoh :
Uses graph ;
Var
DriveGrafik, ModeGrafik : integer ;
I, x, y : integer ;
Begin
     DriveGrafik : = detect ;
     …….
     …….
End .

Read More

ALGORITMA PEMROGRAMAN

PEMROGRAMAN KOMPUTER
Program komputer adalah rangkaian kata perintah yang telah dimengerti oleh komputer untuk dikerjakannya. Kata-kata perintah tersebut membentuk suatu bahasa yang disebut dengan bahasa pemrograman. Sebagaimana bahasa pada manusia, bahasa pemrograman juga terdiri atas banyak macam bahasa, dan memiliki aturannya masing-masing. Sulitnya, komputer saat ini belum diberi hak inisiatif, sehingga jika ada sedikit saja kesalahan penulisan perintah oleh pemrogram, ia tidak mau memakluminya atau berusaha memperbaiki sendiri kesalahan tersebut. Serta merta ia “ngambek” dan tidak mau mengerjakan perintah-perintah lainnya. Komputer diciptakan melalui logika manusia, karenanya, ia bekerja secara logis, tanpa campur-tangan “perasaan.”

ALGORITMA PEMROGRAMAN
Orang yang telah terbiasa “bergaul” dengan komputer menggunakan satu bahasa pemrograman tertentu (tingkat mahir), biasanya tidak lagi memerlukan kertas coret-coretan untuk membuat suatu program komputer. Namun bagi pemula, pembelajar, atau yang belum mahir, diperlukan kertas coret-coretan tersebut. Kertas coret-coretan itu akan digunakan untuk menyusun algoritma (langkah-langkah penyelesaian masalah), flowcharting (alur logika perintah, yang merupakan aplikasi dari algoritma), maupun menuliskan perintah sesuai
dengan kaidah dari bahasa pemrograman yang akan digunakannya. Sewaktu menyusun algoritma, kita tidak perlu tahu (atau tidak perlu menyesuaikan dengan) bahasa pemrograman yang nanti akan kita gunakan. Hal utama yang kita pikirkan adalah kaidah (hirarki) dari komputer itu sendiri, yaitu input-proses-output. Input adalah data yang harus ada (sudah ada/ sudah tersedia), yang dapat diproses dengan aturan-aturan tertentu untuk menghasilkan output seperti yang dikehendaki. Data yang ada harus logis (masuk akal) bahwa “ia” dapat diproses untuk menghasilkan output.

PERLUNYA PERINTAH BAHASA PEMROGRAMAN DI DALAM ALGORITMA
Meskipun sudah dikatakan, bahwa sewaktu kita menyusun algoritma kita tidak perlu tahu bahasa pemrograman apa yang akan digunakan kelak, namun, untuk penulisan algoritma yang lebih efisien dan efektif, maka penggunaan sebagian perintah yang ada di dalam bahasa pemrograman perlu dilakukan juga. Adapun perintah bahasa pemrograman yang paling sering digunakan untuk menyusun algoritma adalah bahasa pemrogrman yang terstrukutur, seperti Pascal, C, SNOBOL, PL/1, dan sebagainya.

PERLUNYA PROSEDUR
Toh akhirnya, kita tidak akan mungkin hanya membuat algoritmanya saja melainkan dilanjutkan ke pembuatan programnya. Karenanya, algoritma sebaiknya dibuat sedemikian rupa agar setiap perintah yang ada di dalamnya dapat diaplikasikan langsung ke dalam bahasa pemrograman. Itulah perlunya prosedur. Misalkan kata “operand” di algoritma di atas yang tidak dapat langsung diaplikasikan di dalam bahasa pemrogramannya, kita buat saja prosedur dari algoritma tersebut yang mendefinisikan apa itu “operand.”

PERLUNYA STANDAR PENGGUNAAN PERINTAH BAHASA PEMROGRAMAN
Sulit memang membuat standardisasi penggunaan perintah bahasa pemrograman di sebuah algoritma. Sulit karena ada yang hanya memahami satu bahasa pemrogrman saja sehingga ia tak mau menggunakan perintah di bahasa pemrograman lain.
Namun, itu sebatas cara penulisan saja, misalkan di BASIC A = 10, di Pascal berlaku A := 10, namun untuk perintah looping, umumnya memiliki alur logika yang sama, yaitu dalam penggunaan FOR-NEXT, REPEAT-UNTIL, DO WHILEENDDO, WHILE-WEND, dan sebagainya. Jadi, meskipun tidak ada standar yang pasti, paling-paling hanya berbeda cara penulisannya saja, namun sama dalam alur logikanya. Jadi, ternyata, standardisasi semacam ini tidak diperlukan.
Read More

ALGORITMA & FLOWCHART

1. DEFINISI ALGORITMA
Terdapat beberapa definisi mengenai kata Algoritma :
1. Algoritma adalah urutan langkah-langkah logis penyelesaian masalah yang
    disusun secara sistematis (Rinaldi Munir :2002).
2. Algoritma adalah urutan logis pengambilan keputusan untuk pemecahan
    masalah (KBBI :1988).
3. Algoritma adalah suatu himpunan hingga dari instruksi-instruksi yang secara
    jelas memperinci langkah-langkah proses pelaksanaan, dalam pemecahan
    suatu masalah tertentu, atau suatu kelas masalah tertentu, dengan dituntut
    pula bahwa himpunan instruksi tersebut dapat dilaksanakan secara mekanik
    (Team Gunadarma :1988).

2. CIRI ALGORITMA
Menurut Donald E. Knuth, algoritma mempunyai lima ciri penring :
1. Algoritma harus berhenti setelah mengerjakan sejumlah langkah terbatas.
2. Setiap langkah harus didefinisikan secara tepat dan tidak berarti dua.
3. Algoritma memiliki nol atau lebih masukan (input).
4. Algoritma mempunyai nol atau lebih keluaran (output).
5. Algoritma harus sangkil (efektif)

3. NOTASI PENULISAN
Di bawah ini dikemukakan beberapa notasi yang digunakan dalam penulisan
algoritma, antara lain :
1) Notasi yang dinyatakan dalam kalimat deskriptif
    Dengan notasi ini, deskripsi setiap langkah dijelaskan dengan bahasa
    yang jelas. Notasi ini cocok untuk algoritma yang pendek, namun untuk
    masalah yang algoritmanya besar, notasi ini jelas tidak efektif. Selain itu,
    pengkonversian notasi algoritma ke notasi bahasa pemrograman
    cenderung relatif sukar.
Contoh :
Algoritma Bilangan_Maksimum
Diberikan tiga buah bilangan bulat. Carilah bilangan bulat
maksimum diantara ketiga bilangan tersebut.
Deskripsi :
(1) baca bilangan 1
(2) baca bilangan 2
(3) bandingkan bilangan 1 dan bilangan 2, kita ambil yang
     lebih besar, jika kedua bilangan tersebut sama besar,
     dapat kita ambil bilangan 1, dan sebut bilangan
     tersebut MAX
(4) baca bilangan 3
(5) bandingkan MAX dengan bilangan 3, dan pilih yang lebih
     besar, jika keduanya sama besar, pilih MAX dan sebut
     bilangan tersebut MAX.
(6) keluarkan sebagai output MAX

2) Notasi yang dinyatakan dengan pseudo code
Pseudocode adalah notasi yang menyerupai bahasa pemrograman tingkat
tinggi. Keuntungan menggunakan notasi pseudo code adalah kemudahan
mengkonversinya lebih tepat yang disebut mentranslasi ke notasi bahasa
pemrograman, karena terdapat korespondensi antara setiap pseudo code
dengan notasi bahasa pemrograman.
Contoh :
Algoritma Bilangan_Maksimum
{ Dibaca tiga buah bilangan dari piranti masukan. Carilah
bilangan bulat maksimum diantara ketiga bilangan tersebut }
Deklarasi :
Bil1,Bil2,Bil3 : integer {bilangan yang dicari maksimumnya}
MAX : integer {variabel bantu}

Deskripsi :
   Read (Bil1,Bil2)
   If Bil1 >= Bil 2 then
        Bil1 = MAX
   Else Bil2 = MAX
   Read (Bil3)
   If Bil3 >= MAX then
        Bil3 = MAX
   Write (MAX)

3) Notasi yang dinyatakan dalam flow chart
Sama halnya dengan notasi deskriptif, notasi ini cocok untuk algoritma
yang pendek, namun untuk masalah yang algoritmanya besar, notasi ini
jelas tidak efektif. Selain itu, pengkonversian notasi algoritma ke notasi
bahasa pemrograman cenderung relatif sukar.
Contoh : Algoritma Bilangan_Maksimum dalam flow char

4. TEKS ALGORITMA
Pada dasarnya, teks algoritma disusun atas tiga bagian (blok) : bagian judul
(header) agoritma, bagian deklarasi, dan bagian deskripsi. Setiap bagian dapat
diberi komentar untuk memperjelas maksud teks yang dituliskan. Komentar
biasanya ditulis menggunakan kurung kurawal.
1) Judul Algoritma
Judul algoritma adalah bagian yang terdiri atas nama algoritma dan
penjelasan (spesifikasi) tentang algoritma tersebut. Nama algoritma
sebaiknya singkat, namun cukup menggambarkan apa yang akan
dilakukan oleh algoritma tersebut. Di bawah nama algoritma disertai
dengan penjelasan singkat (intisari) tentang apa yang dilakukan oleh
algoritma. Penjelasan di bawah nama algoritma sering dinamakan juga
spesifikasi algoritma. Algoritma harus ditulis sesuai dengan spesifikasi
yang didefinisikan.
Contoh :
Algoritma Luas_Lingkaran
{ Menghitung luas lingkaran untuk ukuran jari-jari tertentu.
Algoritma menerima masukan jari-jari lingkaran, menghitung
luasnya, lalu cetak luasnya ke piranti keluaran }
2) Deklarasi
Di dalam algoritma, deklarasi nama adalah bagian untuk mendefinisikan
semua nama yang dipakai di dalam algoritma. Nama tersebut dapat
berupa nama terapan, nama peubah, nama tipe, nama prosedur dan
nama fungsi.
Contoh :
Deklarasi :
Panjang = integer {tipe data bilangan bulat}
Lebar = integer
Luas = real {tipe data bilangan pecahan}
3) Deskripsi
Deskripsi adalah bagian terpenting dari struktur algoritma. Bagian ini berisi
uraian langkah-langkah penyelesaian masalah. Langkah-langkah ini
dituliskan dengan notasi yang lazim dalam penulisan algoritma. Setiap
langkah algoritma dibaca dari langkah paling atas hingga langkah paling
bawah. Urutan penulisan menentukan urutan pelaksanaan perintah.
Contoh :
Deskripsi :
Read (nama)
Read (NIM)
Read (nilai)
If (nilai < 45) then
Grade = E
Else if (nilai >= 45) and (nilai < 60) then
Grade = D
Else if (nilai >= 60) and (nilai < 70) then
Grade = C
Else if (nilai >= 70) and (nilai < 80) then
Grade = B
Else
Grade = A
Write (nama)
Write (NIM)
Write (nilai)

5. STRUKTUR DASAR ALGORITMA
Algoritma berisi langkah-langkah penyelesaian suatu masalah. Langkah-langkah
tersebut dapat berupa runtunan aksi, pemilihan aksi, dan pengulangan
aksi. Ketiga jenis langkah tersebut membentuk konstruksi suatu algoritma. Jadi,
sebuah algoritma dapat dibangun dari tiga buah struktur dasar, yaitu :
1) Runtunan (sequence)
Sebuah runtunan terdiri dari satu atau lebih instruksi. Tiap instruksi
dikerjakan secara berurutan sesuai dengan urutan penulisannya, yakni
sebuah instruksi dilaksanakan setelah instruksi sebelumnya selesai
dikerjakan.
2) Pemilihan (selection)
Adakalanya sebuah instruksi dikerjakan jika kondisi tertentu dipenuhi. Tiap-
tiap instruksi akan diseleksi oleh kondisi, apabila instruksi memenuhi
kondisi yang diminta, maka instruksi akan dijalankan.
3) Pengulangan (repetition)
Salah satu kelebihan komputer adalah kemampuannya untuk
mengerjakan pekerjaan yang sama berulang kali tanpa mengenal lelah.
Kita tidak perlu menulis instruksi yang sama berulang kali, tetapi cukup
melakukan pengulangan dengan instruksi yang tersedia.

 Algoritma Konversi
{ Terdapat tiga sub bagian (menu) dari program konversi. Pertama,
konversi nilai dolar ke rupiah. Nilai tukar dan jumlah dolar diinput
dari piranti masukan. Kedua, konversi Kilo meter (KM) ke meter (m).
Nilai kilometer diinput dari piranti masukan. Ketiga, konversi
Celcius ke Fahrenheit. Nilai celcius diinput dari piranti masukan.
Ketiga nilai diolah dengan masing-masing rumus yang berbeda.
Hasilnya dicetak ke piranti keluaran }
Deklarasi :
Pilih, Tukar, Dolar, KM = Integer
Nilai1, Nilai2, Celcius = Integer
Nilai3 = Real
Lagi = Char
Deskripsi :
Cetak (judul program)
Cetak (pilihan)
Baca (Pilih)
If (Pilih=1) then
Baca (Tukar)
Baca (Dolar)
Nilai1 = Tukar * Dolar
Cetak (Nilai1)
ElseIf (Pilih=2) then
Baca (KM)
Nilai2 = KM * 1000
Cetak (Nilai2)
Elseif (Pilih=3) then
Baca (Celcius)
Nilai3 = (Celcius * 1.8) + 32
Cetak (Nilai3)
Else
Cetak (Peringatan)
Endif
Baca (Lagi)
If (Lagi = ‘Y’) then goto (x,y)
Cetak (selesai)

Flowchart Program Konversi

Read More

Pengantar Pemrograman Turbo Pascal

Pengenalan Pascal
Pascal merupakan salah satu bahasa pemrograman tingkat tinggi. Pemrograman tingkat tinggi menandakan bahwa Pascal banyak menggunakan bahasa manusia dalam penulisan sintaksnya. Beberapa bahasa pemrograman tingkat tinggi lainnya yang ada yaitu BASIC dan DELPHI. Sedangkan bahasa pemrograman tingkat rendah yaitu bahasa pemrograman yang masih banyak menggunakan tanda-tanda sehingga bahasa ini cenderung lebih “kotor”. Beberapa bahasa pemrograman tingkat rendah yang sering digunakan adalah C, C++ dan Java. Mari kita melihat perbedaan antara bahasa Pascal dan C untuk pembanding dalam sintaks yang digunakan:

PASCAL
uses crt;
var a : integer;
begin
         clrscr;
         writeln('Masukkan nilai antara 0 sampai 100 : ');
         readln(a);
         if a > 5 then begin
                  writeln('Nilai a lebih besar dari 5');
                  writeln('Tekan sembarang tombol untuk keluar');
         end
         else begin
                  writeln('Nilai a lebih kecil atau sama dengan 5');
                  writeln('Tekan sembarang tombol untuk keluar');
         end;
         readkey;
end.

C
#include <stdio.h>
#include <conio.h>
int a;
void main() {
        clrscr();
        printf(“Masukkan nilai antara 0 sampai 100 : “);
        scanf(“%d”, &a);
        if (a > 5) {
                     printf(“Nilai a lebih besar dari 5\nTekan sembarang tombol untuk keluar”);
        } else {
                     printf(“Nilai a lebih kecil atau sama dengan 5\nTekan sembarang tombol
        untuk keluar”);
        }
        getch();
}

Dua penggalan program di atas akan menghasilkan program yang sama persis yaitu meminta sebuah input berupa angka antara 0 sampai 100. Kemudian sebuah tulisan akan muncul tergantung dari nilai input yang dimasukkan. Dari 2 bahasa tersebut, dapat dilihat bahwa dalam bahasa Pascal lebih sederhana dan lebih banyak menggunakan bahasa manusia. Sedangkan dalam bahasa C, lebih banyak penggunaan simbol.
Turbo Pascal dan C merupakan program compiler. Compiler sendiri berarti program yang menerjemahkan tulisan berupa kode program menjadi bahasa mesin yang dapat dimengerti oleh komputer. Proses yang dilakukan disebut compile atau compiling. Suatu program dapat di-compile dengan menggunakan kombinasi tombol Alt + F9. Sedangkan untuk menjalankan program, tombol yang dapat digunakan adalah Ctrl + F9. Bila selama proses compile terdapat error atau kesalahan dalam penulisan program, maka Turbo Pascal atau C akan memberitahukan letak kesalahan tersebut sehingga pengguna dapat memperbaikinya di halaman editor. Turbo Pascal merupakan bahasa yang case insensitive yang berarti penulisan dalam huruf kapital maupun huruf kecil tidak dipermasalahkan. Akan tetapi pada C yang case sensitive, maka penulisan huruf kapital atau kecil harus benar-benar diperhatikan. Untuk pembahasan berikutnya, kita akan menggunakan program Turbo Pascal dengan bahasa pemrograman Pascal sebagai pengantar contoh. Perlu diingat bahwa bila anda telah menguasai satu bahasa pemrograman, maka anda akan dengan cukup mudah berpindah ke bahasa pemrograman lainnya selama anda memiliki dasar algoritma dan logika yang baik. Oleh sebab itu, pada pembahasan yang selanjutnya, yang akan ditekankan adalah algoritma dan logika, bukan sintaks dan function / procedure yang terdapat dalam Turbo Pascal. Function atau procedure yang telah disediakan oleh Turbo Pascal dapat anda pelajari sendiri penggunaannya melalui Help yang terdapat di Turbo Pascal.

Struktur kode
Pada setiap kode pemrograman, terdapat aturan yang harus dipatuhi agar program tersebut dapat menjalankan (compile) suatu program dengan baik tanpa error. Struktur utama pada Turbo Pascal adalah sebagai berikut.
program ... ; {deklarasi nama program}
uses ... ; {deklarasi penggunaan unit}
label ... ; {deklarasi label}
const ... ; {deklarasi konstant}
type ... ; {deklarasi tipe data}
var ... ; {deklarasi variabel}
procedure ... ; {deklarasi procedure}
function ... ; {deklarasi function}
begin
statement; {program ditulis di sini}
...
end.

Tulisan yang diapit oleh tanda kurung kurawal {} adalah comment dan tidak dianggap sebagai bagian program ketika di-compile oleh compiler. Pada baris pertama, anda dapat mendeklrasikan nama program. Umumnya untuk mengefisiensikan pengerjaan suatu program (khususnya pada lomba), baris pertama dapat diacuhkan atau dilewatkan.
Baris kedua yaitu “USES” merupakan deklarasi penggunaan unit dalam Turbo Pascal. Unit merupakan bagian dari program yang berisi kumpulan function dan procedure. Contoh fungsi yang banyak digunakan adalah CRT, dengan function yang terdapat di dalamnya yaitu clrscr dan readkey. Anda dapat menjalankan suatu program tanpa menggunakan USES, akan tetapi anda hanya dapat menggunakan function dan procedure yang sudah terkandung secara native dalam Turbo Pascal. Contohnya anda tidak dapat menggunakan clrscr atau readkey tanpa CRT, tetapi bisa menggunakan writeln dan readln tanpa CRT tersebut karena CRT merupakan unit untuk pengolahan output ke layar dan input dari keyboard.
Label digunakan bersamaan dengan keyword GOTO. GOTO sendiri jarang digunakan karena tidak efisien dan cenderung membingungkan penggunanya. Const digunakan untuk mendeklarasikan suatu konstan. Konstan merupakan suatu keyword yang memiliki nilai tertentu. Misalnya bila anda mendeklrasikan PI sebagai 3.14, maka ketika anda menggunakan PI pada baris program, PI akan digantikan dengan 3.14. 
Type digunakan untuk mendeklarasikan suatu tipe data baru dari tipe data yang sudah ada sebelumnya. Berguna ketika harus menggunakan pointer. Var digunakan untuk mendeklarasikan suatu variabel. Variabel yang dideklarasikan harus memiliki tipe data tertentu. Penjelasan dalam penggunaan variabel akan dibahas di bagian berikutnya.
Procedure dan function merupakan sub-program. Procedure tidak mengembalikan nilai, sedangkan function mengembalikan nilai. Procedure dan function mengandung suatu penggalan program yang dapat dipanggil oleh program utama atau sub-program yang lainnya. Bila anda belum mengerti maksud dari “mengembalikan nilai” maka anda dapat membayangkan bahwa hasil dari function dapat dimasukkan ke dalam suatu variabel atau menghasilkan suatu nilai, sedangkan procedure hanya menjalankan suatu potongan program. 
Contoh procedure adalah writeln dan clrscr karena kedua procedure tersebut tidak mengembalikan nilai apapun. Sedangkan contoh function adalah “sqrt” yang akan mengembalikan nilai berupa akar kuadrat dari bilangan yang dimasukkan.
Sebagai informasi: “procedure” adalah istilah yang digunakan pada Pascal. Pada bahasa pemrograman yang lainnya, biasa disebut “function yang tidak mengembalikan nilai” atau “void function”. Program utama yang akan dijalankan oleh Turbo Pascal dapat ditulis diantara BEGIN sampai dengan END.

Variabel dan tipe data
Terdapat beberapa tipe data yang dapat dipergunakan dalam suatu variabel, di antaranya adalah (beserta range yang dapat diterima):
Integer
Integer (-2^15 sampai 2^15), word (0 sampai 2^16), shortint (-2^7 sampai 2^7), byte (0sampai 2^7), longint (-2^23 sampai 2^23)
Float / Real
Real (6 byte), singel (4 byte), double (8 byte), extended (10 byte), comp (8 byte)
Boolean
Bernilai TRUE atau FALSE (1 atau 0)
Char
Merupakan integer yang telah dikonversikan ke kode ASCII.
 
Array
Merupakan deretan suatu variabel yang bertipe data sama. Pembahasan yang lebih lengkap akan terdapat di bagian tersendiri. String merupakan array dari char.
Algoritma dasar
Pada dasarnya terdapat beberapa algoritma yang harus dikuasai dalam pemrograman
yaitu:
1. Operator
2. Input/output: Bagaimana meminta suatu input dan menampilkan suatu output.
3. Selection: Bagaimana membuat program yang dapat memilih bagian yang akan
    dijalankan.
4. Repetition / looping: Bagaimana membuat program yang dapat mengulang suatu
    bagian program yang dijalankan.

Rangkuman operator
Dalam bahasa pemrograman, sebuah proses dibagi menjadi 2 yaitu operand dan operator. Operand dapat berupa variabel atau nilai. Sedangkan operator merupakan tanda-tanda yang dipakai untuk mengolah. Terdapat banyak jenis operator, tapi 4 jenis yang perlu dipelajari untuk saat ini adalah assignment operator, arithmatic operator, comparison operator, logical operator.
Assignment operator ditandai dengan :=, dan digunakan untuk memberi nilai ke suatu variabel.
Arithmatic operator ditandai dengan *, /, +, -, div, mod. Digunakan untuk pengolahan nilai matematika.
Comparison / Relational operator ditandai dengan =, <, >, <=, >=, <>, dan IN. Digunakan untuk perbandingan 2 nilai sehingga menghasilkan nilai true dan false.
Logical operator ditandai dengan AND, OR, XOR dan NOT. Digunakan untuk perbandingan logika antara dua pernyataan atau lebih.
Penting: penggunaan = dan := harus diperhatikan karena penggunaan operator ini trekadang salah tempat.

Input Output:
Terdapat 2 jenis input/output secara umum yaitu layar/keyboard dan file. Input menggunakan readln() dan read(). Dalam penggunaan melalui keyboard, kedua procedure ini tidak berbeda. Akan tetapi bila input berasal dari file, kedua procedure akan berbeda dalam mengambil input. Readln() akan mengambil input dalam suatu baris, kemudian cursor akan dipindahkan ke baris selanjutnya. Pada read() akan mengambil
input dalam suatu baris, kemudian cursor akan dipindahkan ke sebelah bagian yang diinput. Bila tidak ada lagi bagian yang dapat diinput, maka cursor baru dipindah kebawah.
Output menggunakan writeln() dan write(). Penggunaannya hampir sama dengan yang read() dan readln(). Pada writeln dan write, keduanya akan berpengaruh baik di file maupun di layar.

Contoh program:
uses crt;
var a,b: integer;
begin
        clrscr;
        write('Masukkan bilangan antara 1 - 100: ');
        readln(a);
        b:= a * 2;
        writeln('Bilangan yang dimasukkan adalah ', a);
        writeln('Bilangan setelah dikali 2 adalah ', b);
        readkey;
end.

Rangkuman Selection
Selection merupakan salah satu proses program di samping sequential (pengerjaan secara berurut) dan repetition / looping. Dalam selection, program akan memilih bagian yang akan dijalankan (sehingga terdapat bagian yang tak dijalankan). Umumnya selection menggunakan IF ... THEN ... ELSE ..., akan tetapi terdapat pula CASE ... OF. Penggunaan IF lebih umum digunakan bila terdapat pilihan yang tidak terlalu banyak dan eksekusi baris program yang panjang. Blok pertama untuk IF dijalankan bila condition yang digunakan bernilai TRUE, sedangkan blok ELSE dijalankan bila nilai conditionnya adalah FALSE.
Contoh:
uses crt;
var bil1, bil2: integer;
begin
         clrscr;
         write('Masukkan bilangan 1 : ');
         readln(bil1);
         write('Masukkan bilangan 2 : ');
         readln(bil2);
         if bil1<bil2 then begin
                writeln('Bilangan 1 lebih kecil');
         end
         else begin
                writeln('Bilangan 2 lebih kecil');
         end
         readkey;
end.

Penggunaan IF dapat dikombinasikan sehingga suatu blok IF dapat menampung blok IF yang lainnya (nested selection). Penggunaan IF tidak selalu harus selalu bersama ELSE (simple selection). IF juga dapat digunakan lebih dari satu kondisi setelah ELSE (linear selection) atau pada IF yang sama menggunakan operator logika / logical operator (combined selection). Contohnya adalah seperti baris program di bawah:
if (condition1) then begin
    if (condition2) then begin
           statement1;
           stetement2;
    end
    else if (condition3) then begin
           statement3;
           statement4;
    end
    else begin
           statement5;
    end;
    statement6;
    statement7;
    if (condition4) then begin
           statementx;
           statementy;
    end;
end
else if (conditionx AND conditiony OR conditionz) begin
    statement01;
    statement02;
end;

Penting: Ada baiknya setiap blok IF selalu dipisahkan dan ditandai dengan spasi kosong atau menggunakan TAB untuk menghindari kebingungan dalam pembuatan blok statement.

Rangkuman Repetition / Looping
Repetition dapat digunakan untuk menjalankan suatu bagian program secara berulang-ulang sesuai dengan kondisi yang ada. 
Looping pada Pascal menggunakan beberapa keyword seperti FOR...DO, WHILE...DO dan REPEAT...UNTIL.

FOR...DO dipergunakan ketika nilai yang akan digunakan sudah diketahui dengan nilai yang ada di dalamnya selalu ditambah atau dikurangi satu ketika mengalami perulangan.
 
Sintaks:
FOR variable := startindex (TO/DOWNTO) endindex DO BEGIN
         statement;
END;

Dari sintaks di atas, terdapat dua jenis perubahan yang dapat digunakan, yaitu TO dan DOWNTO. TO akan menghasilkan nilai incremental atau penambahan satu setiap kali terjadi perulangan. Sedangkan DOWNTO akan menghasilkan nilai decremental atau pengurangan satu setiap kali terjadi perulangan.

Contoh penggunaan FOR...DO:
for i:=1 to 10 do begin
     write(i,' ');
end;
for j:=10 downto 1 do begin
     write(j,' ');
end;

WHILE...DO dapat digunakan tanpa harus ada perubahan pada nilai kondisi. Selama
kondisi masih bernilai TRUE, maka perulangan akan dilakukan terus.

Sintaks:
WHILE (condition) DO BEGIN
        statement;
END;

Contoh penggunaan WHILE...DO:
i:=10;
while i>2 do begin
        i:=i-2;
        writeln(i);
end;

REPEAT...UNTIL berfungsi hampir sama dengan WHILE...DO. Pada REPEAT...UNTIL, looping akan berhenti justru ketika kondisi bernilai TRUE. Selain itu kondisi akan diuji pada akhir perulangan sehingga blok di dalam perulangan akan dijalankan minimal satu kali walaupun kondisi yang ada masih FALSE.
 
Sintaks:
REPEAT
        statement;
UNTIL (condition);


Contoh penggunaan REPEAT...UNTIL:
i:=10;
repeat
         i:=i-3;
         writeln(i);
until i<1;

Dari penggalan program di atas, dapat dilihat bahwa REPEAT...UNTIL tidak memerlukan BEGIN dan END untuk menjalankan suatu blok statement.
TIPS: Gunakan variabel i, j, k, dan seterusnya untuk menandai indeks perulangan atau looping.

Read More

Friday, October 8, 2010

Beberapa Bentuk Algoritma Sorting


Dalam matematika dan komputasi, algoritma merupakan kumpulan perintah untuk menyelesaikan suatu masalah. Perintah-perintah ini dapat diterjemahkan secara bertahap dari awal hingga akhir. Masalah tersebut dapat berupa apa saja, dengan catatan untuk setiap masalah, ada kriteria kondisi awal yang harus dipenuhi sebelum menjalankan algoritma. Algoritma akan dapat selalu berakhir untuk semua kondisi awal yang memenuhi kriteria, dalam hal ini berbeda dengan heuristik. Algoritma sering mempunyai langkah pengulangan (iterasi) atau memerlukan keputusan (logika Boolean dan perbandingan) sampai tugasnya selesai.

Desain dan analisis algoritma adalah suatu cabang khusus dalam ilmu komputer yang mempelajari karakteristik dan performa dari suatu algoritma dalam menyelesaikan masalah, terlepas dari implementasi algoritma tersebut. Dalam cabang disiplin ini algoritma dipelajari secara abstrak, terlepas dari sistem komputer atau bahasa pemrograman yang digunakan. Algoritma yang berbeda dapat diterapkan pada suatu masalah dengan kriteria yang sama.

Kompleksitas dari suatu algoritma merupakan ukuran seberapa banyak komputasi yang dibutuhkan algoritma tersebut untuk menyelesaikan masalah. Secara informal, algoritma yang dapat menyelesaikan suatu permasalahan dalam waktu yang singkat memiliki kompleksitas yang rendah, sementara algoritma yang membutuhkan waktu lama untuk menyelesaikan masalahnya mempunyai kompleksitas yang tinggi.

Sedangkan sorting adalah sebuah proses merangkai benda dalam urutan tertentu dan/atau dalam himpunan yang berbeda, dan oleh karena itu dia memiliki dua arti umum yang berbeda:

1. Pengurutan: merangkai benda yang sejenis, sekelas, dll, dalam urutan yang teratur.
2. Kategorisasi: pengelompokan dan pemberian label kepada benda dengan sifat yang
    serupa.

Algoritma sorting terdiri dari beberapa algoritma seperti Bubble sort, Quick sort, Selection Sort, Insertion Sort, dan Merge Sort yang dimana setiap jenis sorting ini memiliki perbedaan satu sama lainnya. berikut ini merupakan pembahasan umum mengenai jenis-jenis atau algoritma sorting yang telah dijelaskan diatas :

Bubble Sort

Bubble Sort merupakan cara pengurutan yangsederhana. Konsep dari ide dasarnya adalah seperti“gelembung air” untuk elemen struktur data yangsemestinya berada pada posisi awal. Cara kerjanyaadalah dengan berulang-ulang melakukan traversal (proses looping) terhadap elemen-elemen struktur datayang belum diurutkan. Di dalam traversal tersebut,nilai dari dua elemen struktur data dibandingkan. Jikaternyata urutannya tidak sesuai dengan “pesanan”,maka dilakukan pertukaran (swap). Algoritma sortingini disebut juga dengan comparison sort dikarenakanhanya mengandalkan perbandingan nilai elemen untukmengoperasikan elemennya.

Algoritma Bubble Sort

Algoritma bubble sort dapat diringkas sebagaiberikut, jika N adalah panjang elemen struktur data, dengan elemen-elemennya adalah T1, T2, T3, …, TN-1,TN, maka:

1. Lakukan traversal untuk membandingkan dua elemen berdekatan. Traversal ini 
    dilakukan dari belakang.
2. Jika elemen pada TN-1 > TN , maka lakukan pertukaran (swap). Jika tidak, lanjutkan
    ke proses traversal berikutnya sampai bertemu dengan bagian struktur data yang
    telah diurutkan.
3. Ulangi langkah di atas untuk struktur data yang tersisa.

Selection Sort

Algoritma sorting sederhana yang lain adalahSelection Sort. Ide dasarnya adalah melakukan beberapa kali pass untuk melakukan penyeleksianelemen struktur data. Untuk sorting ascending(menaik), elemen yang paling kecil di antara elemenelemenyang belum urut, disimpan indeksnya,kemudian dilakukan pertukaran nilai elemen denganindeks yang disimpan tersebut dengan elemen yangpaling depan yang belum urut. Sebaliknya, untuksorting descending (menurun), elemen yang paling. besar yang disimpan indeksnya kemudian ditukar.

Algoritma Selection Sort

Algoritma selection sort dapat dirangkum sebagaiberikut:

1. Temukan nilai yang paling minimum (atau sesuaikeinginan) di dalam struktur data. 
    Jika ascending, maka yang harus ditemukan adalah nilai yang paling minimum. 
    Jika descending, maka temukan nilai yang paling maksimum.
2. Tukar nilai tersebut dengan nilai pada posisipertama di bagian struktur data yang 
    belum diurutkan.
3. Ulangi langkah di atas untuk bagian struktur datayang tersisa.

Insertion Sort

Cara kerja insertion sort sebagaimana namanya.Pertama-tama, dilakukan iterasi, dimana di setiap iterasi insertion sort memindahkan nilai elemen,kemudian menyisipkannya berulang-ulang sampai ketempat yang tepat. Begitu seterusnya dilakukan. Dariproses iterasi, seperti biasa, terbentuklah bagian yang telah di-sorting dan bagian yang belum di-sorting.

Algoritma Insertion Sort

Algoritma Insertion Sort dapat dirangkum sebagai berikut:

1. Simpan nilai Ti kedalam variabel sementara, dengan i = 1.
2. Bandingkan nilainya dengan elemen sebelumnya.
3. Jika elemen sebelumnya (Ti-1) lebih besar nilainya daripada Ti, maka tindih nilai Ti
    dengan nilai Ti-1 tersebut. Decrement i (kurangi nilainya dengan 1).
4. Lakukan terus poin ke-tiga, sampai Ti-1 ≤ Ti.
5. Jika Ti-1 ≤ Ti terpenuhi, tindih nilai di Ti dengan variabel sementara yang disimpan
    sebelumnya.
6. Ulangi langkah dari poin 1 di atas dengan i di-increment (ditambah satu).

Merge Sort

Algoritma Merge Sort ditemukan oleh John vonNeumann di tahun 1945. Merge Sort termasuk paradigma algoritma divide and conquer (kurang lebih berarti: bagi dan atasi). Hal ini dikarenakan algoritma ini melakukan pembagian struktur data sebelum kemudian dioperasi satu per satu. Intinya, algoritma ini menggunakan dua ide utama sebagai berikut,

1. Sebuah list yang kecil membutuhkan langkah yang lebih sedikit untuk pengurutan
    daripada sebuah list yang besar.
2. Untuk membentuk sebuah list terurut dari duabuah list terurut membutuhkan langkah
    yang lebih sedikit daripada membentuk sebuah list terurut dari dua buah list tak
    terurut. Contoh: hanya diperlukan satu kali traversal untuk masing-masing list jika
    keduanya sudah terurut.

Algoritma Merge Sort

Algoritma Merge Sort sederhananya, dapat ditulis berikut:

1. Bagi list yang tak terurut menjadi dua sama panjang atau salah satunya lebih
    panjang satu elemen.
2. Bagi masing-masing dari 2 sub-list secara rekursif sampai didapatkan list dengan
    ukuran 1.
3. Gabung 2 sublist kembali menjadi satu list terurut.

Quick Sort

Quick Sort adalah algoritma sorting yang terkenal yang dirancang oleh C.A.R. Hoare pada tahun 1960 ketika bekerja untuk perusahaan manufaktur komputer saintifik kecil, Elliott Brothers. Algoritma ini rekursif, dan termasuk paradigma algoritma divide and conquer.

Algoritma Quick Sort

Algoritma ini terdiri dari 4 langkah utama:

1. Jika struktur data terdiri dari 1 atau 0 elemen yang harus diurutkan, kembalikan
    struktur data itu apa adanya.
2. Ambil sebuah elemen yang akan digunakansebagai pivot point (poin poros).
    (Biasanya elemen yang paling kiri.)
3. Bagi struktur data menjadi dua bagian – satu dengan elemen-elemen yang lebih
    besar daripada pivot point, dan yang lainnya dengan elemen-elemen yang lebih kecil
    dari pada pivot point.
4. Ulangi algoritma secara rekursif terhadap kedua paruh struktur data.

KESIMPULAN

Algoritma yang mudah dalam hal implementasi adalah Bubble Sort, Selection Sort, dan Insertion Sort. Ketiganya memiliki kompleksitas O(n2). Di antara algoritma ini, yang paling effisien adalah Insertion Sort. Algoritma yang lebih mangkus adalah MergeSort dan Quick Sort dengan kompleksitasnya adalah O(n log n). Adapun yang paling mangkus dari lima algoritma ini adalah Quick Sort.
Read More

Tuesday, October 5, 2010

Susunan Algoritma Dalam Pemecahan Masalah

Menyebrangkan suami istri yang suaminya pencemburu.
1. Suami 1 dan istri 1 menyebrang, ke desa B.
2. Suami 1 kembali dari desa B ke desa A.
3. Suami 1 dan Suami 2 menyebrang ke desa B.
4. Suami 2 kembali ke desa A menjemput istrinya ke desa B.
5. Suami 2 kembali ke desa A menjemput suami 3.
6. Suami 2 dan suami 3 menyebrang ke desa B.
7. Suami 3 kembali ke desa A menjemput istrinya ke desa B.
   

Membuat makanan Indomie dan telur dadar.
1. Proses pembuatan mie :
    • Rebus mie dalam 400 cc air mendidih selama 3 menit sambil diaduk.
    • Sementara mie direbus, campurkan bumbunya kedalam sebuah
       wadah.
    • Tiriskan mie, kemudian campurkan mie kedalam campuran bumbu
       dalam wadah dan diaduk hingga merata.
2. Proses pembuatan telur dadar :
    • Panaskan minyak goreng dalam wajan penggorengan.
    • Sementara menunggu minyak goreng dipanaskan persiapkan telur,
      dipecahkan dan diambil isinya.
    • Tuangkan isi telur kedalam wajan penggorengan yang berisi minyak
       goreng yang telah dipanaskan.
    • Tunggu hingga matang.
3. Hasil akhir dari kedua proses di atas adalah indomie dengan telur
    dadar yang siap disajikan.

Cara pengisian voucher pada ponsel
1. Gesek bagian hitam pada voucher untuk mendapatkan kode voucher.
2. Tekan *888*kodevoucher#yes/OK.
3. Secara otomatis pulsa bertambah sesuai jumlah nominal yang tertera
    pada voucher.

Cara membuat pakaian.
1. Memilih bahan kain yang akan dijahit.
2. Menyiapkan pola.
3. Mengukur bahan kain.
4. Mengguntung bahan kain sesuai ukuran.
5. Menjahit bahan kain hingga menjadi kemeja.
Read More