ALGORITMA

Document Sample
ALGORITMA
Description

Tulisan ini tentang Standard kompetensi Dasar Dasar Pemrograman untuk Kelas X SMK RPL dengan Kompetensi Dasar Pemahaman tentang Algoritma, termasuk didalamnya dibahas tentang Struktur Algoritma Sequence, Branching dan Looping

Shared by: Emeng Sucarman
Stats
views:
12758
posted:
8/21/2009
language:
Indonesian
pages:
25
BAHAN AJAR ke 2



DASAR DASAR PEMROGRAMAN

STANDAR KOMPETENSI: MENGGUNAKAN ALGORITMA PEMROGRAMAN TINGKAT DASAR KOMPETENSI DASAR: MEMBUAT LOGIKA ALUR PEMOGRAMAN



Disusun Oleh: SUCARMAN sucarman@gmail.com



SEKOLAH MENENGAH KEJURUAN (SMK)



PELITA KARYA

Jln.Raya Borbok Desa Cicau Kecamatan Cikarang Pusat Kabupaten Bekasi Tahun 2009



KATA PENGANTAR



Tulisan kali ini benar-benar diperuntukkan bagi pemula yang ingin belajar RPL di Sekolah Menengah Kejuruan. Mengingat Kompetensi Dasar yang diharapkan oleh Pemerintah, maka tulisan ini dicobakan dengan “bahasa apa adanya” dengan harapan dapat dengan mudah diserap oleh siswa. Ini juga merupakan kelanjutan dari tulisan yang terdahulu yang sedikit mengulas tentang Variabel, Konstanta dan Tipe Data. Masih banyak kekurangannya, sehingga perlu penambalan disana-sini oleh para Guru/Pembimbingnya, sehingga Pondasi Siswa untuk mengenal dan belajar pemrograman dapat dibangun dan dibentuk dengan benar. Kritik dan saran senantiasa dinanti di sucarman@gmail.com, selain itu jika ada kekurangan dan atau kesalahan yang fatal dalam tulisan ini, agar tidak sungkan-sungkan menegur penulis. Perbaikan adalah sebuah kebahagian buat penulis dan keluarga. Selamat berkarya



Penulis



2



STANDAR KOMPETENSI: Menggunakan Algoritma Pemrograman Tingkat Dasar KOMPETENSI DASAR: Membuat Logika Alur Pemograman INDIKATOR: • • • • Siswa dapat mendeskripsikan , memahami Algoritma. Siswa mampu membuat Algoritma dengan skema program Sekuensial . Siswa mampu membuat Algoritma dengan skema program Pencabangan. Siswa mampu membuat Algoritma dengan skema program Pengulangan.



BAHAN AJAR: ALGORITMA Ditemukan dan dipopulerkan oleh seorang Ilmuwan Muslim yang bernama Muhammad ibnu Musa Al-Khwarizmi. Beliau adalah ilmuwan besar yang karya-karyanya banyak menjadi dasar perkembangan ilmu modern, antara lain dalam bidang Matematika, Astronomi, Astrologi, Geografi dan banyak cabang ilmu lainnya. Al-khwarizmi kemudian berubah menjadi Algorism, kemudian berubah lagi menjadi Algorithm dalam Bahasa Inggris dan terjemahkan secara bebas kedalam Bahasa Indonesia menjadi Algoritma. Pengertian Algoritma sendiri adalah urutan langkah-langkah logis penyelesaian masalah yang disusun secara sistematis.1 Sedangkan dalam Kamus Besar Bahasa Indonesia (KBBI) terbitan Balai Pustaka (1988); Algoritma adalah urutan logis pengambilan putusan untuk pemecahan masalah Dari dua definisi tersebut diatas maka kata kuncinya adalah “Urutan” dan “logis”, sehingga selain logis Algoritma juga mengharuskan agar langkah langkah tersebut berurutan secara sistematis, agar hasil akhirnya sesuai dengan yang diharapkan.



1



Aunur R. Muryanto, Rekayasa Perangkat Lunak Jilid 1 untuk SMK, Jakarta 2008: Direktorat Pembinaan Sekolah Kejuruan, Direktorat Jenderal Manajemen Pendidikan Dasar dan Menengah, Departemen Pendidikan Nasional, ha.l101



3



Menurut Donald E.Knuth dalam bukunya yang berjudul The Art of Komputer Programming, Algoritma harus mempunyai lima ciri penting; 1. Algoritma harus berhenti setelah mengerjakan sejumlah langkah terbatas. Program yang tidak berhenti berarti mengandung algoritma yang salah. 2. Setiap langkah harus mempunyai langkah yang tepat dan tidak mempunyai tafsiran ganda (Ambigu) 3. Algoritma memiliki masukan nol atau lebih sebelum algoritma itu sendiri bekerja (input) 4. Algoritma memiliki keluaran nol atau lebih sebagai output yang berhubungan dengan input. Dan keluaran tersebut harus benar adanya, artinya harus sesuai dengan yang kita harapkan. 5. Algoritma harus efektif, artinya setiap langkah harus sederhana sehingga dapat dikerjakan dalam sejumlah waktu yang masuk akal.



Algoritma dapat diekspresikan melalui tiga cara, yakni;



1. Structured Indonesian (SI), yakni penulisan urutan langkah yang dilakukan oleh programmer sesuai dengan bahasa sehari-hari (dalam hal ini Bahasa Indonesia). Sebagai contoh, Algoritma untuk mencari luas segi tiga dalam Structured Indonesian adalah; 1. Mulai 2. Baca data Alas dan tinggi 3. Periksa apakah Alas dan tinggi mempunyai nilai lebih besar dari 0 (nol).Jika ya, maka lanjutkan ke langkah ke 4, jika tidak maka berhenti. 4. Luas adalah Alas kali Tinggi kali 0,5. 5. Tampilkan luas.



2.



Pseudocode, adalah penulisan algoritma yang menyerupai kode program. Pseudo sendiri



berarti imitasi atau tiruan atau menyerupai, sedangkan code menunjuk pada kode program. Pseudocode didasarkan kepada bahasa pemrograman yang sesungguhnya seperti BASIC, PASCAL atau FORTRAN. Penulisan Pseudocode masih tetap bersifat umum, artinya boleh ditulis dengan menyerupai bahasa pemrograman tersebut. Latar belakang programmer sangat berpengaruh dalam menuliskan pseudocode. Programer yang familiar dengan Bahasa BASIC 4



akan lebih mudah dan senang menuliskan pseudocode dalam Bahasa BASIC, begitu juga yang berpengalaman dengan Bahasa Pascal tentunya akan lebih memudahkan jika pseudocode-nya mirip bahasa Pascal. Pendekatan yang terbaik disesuaikan kepada kemampuan siswa dan Pemrograman apa yang akan dipelajari oleh Siswa itu sendiri. Berikut ini contoh Pseudocode algoritma menghitung Luas Segitiga; 1. START 2. READ alas, tinggi 3. IF alas 0? Tinggi>0?



Tidak



Ya Hitung Luas Segitiga



Ya Luas=0,5*Alas*Tinggi



Tampilkan Hasil Luas



Print Luas



Selesai



End



Bagan Alir Logika Program



Bagan Alir Program Komputer terinci



Dari ketiga cara penulisan Algoritma (SI, Psedocode dan Flowchart) kesemuanya itu bersifat independent terhadap semua bahasa pemrograman, artinya Algoritma yang kita buat dapat dipakai oleh setiap bahasa Pemrograman. Hanya mungkin saja dari cara penulisan pada “program komputernya” (syntax) yang sedikit berbeda dan keyword (kata kunci) untuk melakukan perintah. Penulisan “Print” dalam Bahasa BASIC , jika dalam Bahasa PASCAL diekspresikan dengan “Write” atau Writeln. Algoritma dapat diibaratkan Resep Masakan yang ditulis dalam berbagai bahasa, dan orang akan bisa membuatnya selama orang tersebut memahami bahasa yang dipakai untuk menulis resep masakan tersebut. 6



Contoh-contoh Algoritma dapat dikembangkan dengan memperhatikan lingkungan dan kehidupan siswa itu sendiri.



Struktur Algoritma Struktur dasar algoritma terbentuk dari tiga struktur dasar, yakni struktur berurutan, struktur percabangan/pemilihan/keputusan dan struktur pengulangan. Dalam bahasa



pemrograman ketiga dasar pembentuk sebuah algoritma tersebut dikenal dengan sequencing, branching dan looping. Pada dasarnya hampir semua algoritma merupakan gabungan dari struktur tersebut.



Algoritma Berurutan (Sequencing) Struktur berurutan ini dapat dianalogikan dengan kita berjalan lurus atau kendaraan yang meluncur dijalan yang lurus. Langkah demi langkah atau kilometer demi kilometer kita harus melaluinya sehingga tahapan demi tahapan harus dilalui sesuai dengan urutannya. Dapat juga kita analogikan dengan mencatat mata pelajaran, kata demi kata dan kalimat demi kalimat kita menyalinnya secara berurutan sampai selesai. Struktur berurutan bisa terdiri dari satu dan atau beberapa instruksi. Intruksi intruksi tersebut akan dieksekusi oleh komputer sesuai dengan urutannya. Oleh sebab itu maka pentingnya sistematika yang tepat dan benar agar algoritma tersebut menghasilkan “output”yang kita harapkan. Menurut Goldshlager dan A. Lister, struktur berurutan mengikuti ketentuan sebagai berikut; • • • Tiap instruksi dikerjakan satu demi satu. Tiap instruksi hanya dilakukan/dilaksanakan tepat satu kali, tidak ada pengulangan Urutan pelaksanaan yang dilakukan oleh komputer(pemroses) sama dengan urutan yang ditulis dalam algoritmanya. • Akhir dari instruksi terakhir, merupakan akhir algoritma.



7



Sebagai ilustrasi dapat dicontohkan dalam pelajaran Matematika/Geometri tentang theorem phytagoras yang kita umpamakan akan mencari panjang sisimiring/hypotenusa, jika sisi tegak dan alas sebuah segi tiga siku-siku telah diketahui;



Mulai



Read AB, AC



BC=SQR(AB^2+AC^2)



Print BC



Selesai



Ilustrasi dan Flowchart mencari panjang sisi miring Dalam bahasa pemrograman BASIC (Liberty Basic atau Turbo Basic) Algoritma tersebut dapat ditulis sebagai berikut;

'Mencari Panjang Sisi Miring cls AB=3 AC=4 BC=SQR(AB^2+AC^2) Print "Panjang sisi miringnya adalah = ";BC end



Jika program itu ditulis dengan benar kemudian dijalankan, akan menghasilkan;

Panjang sisi miringnya adalah = 5



Dipersilahkan dikembangkan lebih lanjut dengan mengisikan panjang AB dan AC nya melalui perintah “INPUT”, atau untuk materi pembelajaran lainnya semisal mencari isi kubus, luas jajaran genjang, atau volume kerucut. 8



Algoritma Pencabangan (Branching) Pada dasarnya pemrograman komputer adalah untuk keperluan manusia dalam memenuhi kebutuhan dan keinginan hidupnya. Oleh sebab itu pemrograman komputer identik dengan penyelesaian pekerjaan manuasia keseharian. Kehidupan kita tidak selamanya berjalan lurus, terkadang harus melakukan pilihan dari beberapa keadaan, atau melakukan pengujian kepada suatu kondisi agar kita dapat mengambil keputusan tentang jalan/arah mana yang akan diambil. Dalam pemrograman kondisi seperti ini lajimnya disebut pencabangan/branching. Dalam kondisi tertentu mungkin kita melakukan lompatan atau melewatkan beberapa instruksi, dan program akan berjalan sesuai dengan kehendak kita jika kondisi memenuhi syarat yang kita tetapkan. Contoh: “Syarat usia untuk ikut memilih dalam PEMILU adalah minimum 17 tahun. Jika usianya kurang dari 17 tahun maka dia belum mempunyai hak pilih.” Maka Algoritmanya dapat dibuat sebagai berikut;

MULAI



READ USIA



YA



USIA ≥ 17



TIDAK



PRINT “PUNYA HAK PILIH”



PRINT “TIDAK PUNYA HAK PILIH”



SELESAI



Flowchart Penentuan Hak Pilih



9



Secara umum Algoritma tersebut sudah benar, namun pada kenyataannya ada pengecualian bahwa walaupun usianya belum mencapai 17 tahun, asal saja sudah menikah maka orang tersebut sudah punya hak pilih, sehingga Algoritmanya dapat diperbaiki menjadi;

MULAI



READ USIA, STATUS



YA



USIA ≥ 17?



TIDAK



PRINT



“PUNYA HAK PILIH”



YA



STATUS=ME NIKAH?



TIDAK PRINT “TIDAK PUNYA HAK PILIH”



SELESAI



Dari algoritma yang kedua, dapat dilihat adanya pengujian kedua tentang status orang. Jika orang tersebut sudah menikah (pernah menikah) maka walaupun usianya kurang dari 17 tahun, maka dia sudah mempunyai hak pilih. Dalam hal Algoritma yang kedua, jika ingin disederhanakan bentuknya maka dapat dilakukan dengan melakukan pengujian sekaligus pada pencabangan pertama, yakni dengan Operator Boolean “OR” seperti alur yang dicontohkan dibawah ini; 10



MULAI



READ USIA, STATUS



YA



USIA ≥ 17 OR STATUS=”MENIK AH”



TIDAK



PRINT “PUNYA HAK PILIH”



PRINT “TIDAK PUNYA HAK PILIH”



SELESAI



Dalam Bahasa Pemrograman Liberty BASIC dapat dituliskan sebagai berikut:

‘ Penentuan Hak Pilih CLS INPUT “Masukan usia calon pemilih : “;Usia INPUT “Apakah sudah Menikah ? (Y/T) : “;Status$ Status$=UPPER$(Status$) ‘ baris ini hanya untuk mengkonversi ke huruf kapital If Usia>=17 OR Status$=”Y” THEN PRINT PRINT “Sudah mempunyai hak pilih” ELSE PRINT “Belum mempunyai hak pilih” END IF END



Jika Program tersebut dijalankan maka hasil keluarannya akan tampak sebagai berikut;

Masukan usia calon pemilih Apakah sudah Menikah ? (Y/T) : y : 15



Sudah mempunyai hak pilih



Untuk bahasa pemrograman yang lain , silahkan disesuaikan dengan ketentuan yang berlaku pada bahasa pemrograman yang dikuasai oleh Siswa/Guru. 11



Dalam menterjemahkan sebuah algoritma pencabangan, kita bisa melakukan pendekatan penyelesaian yang berbeda untuk kasus yang sama dan berbeda untuk kasus yang berlainan. Hal ini tergantung sejauh mana kita mampu melakukan pendekatan yang paling efektif dan efisien. Hal lain yang penting juga diperhatikan adalah bagaimana “orang lain” dapat dengan mudah memahami jalan pemikiran kita (algoritmanya) dan mudah menggunakan aplikasi yang sudah kita buat. Setiap bahasa pemrograman mempunyai beberapa ketentuan yang sedikit berbeda, namun pada umumnya Statement untuk pencabangan sebagiannya adalah; • • • IF test expression THEN expression(s) IF test expression THEN expression(s)1 ELSE expression(s)2 IF test expression THEN expression(s)1 END IF IF test expression THEN expression(s)1 ELSE expression(s)2 END IF lain untuk mengontrol alur program adalah penggunaan pernyataan







Cara



IF...THEN...ELSE. Pernyataan ini merupakan pengembangan dari bentuk IF….THEN. Salah satu contoh dalam implementasinya adalah;

[ulangi] input "Silahkan pilih mode, (B)iasa atau (A)hli?"; mode$ if len(mode$) = 0 then print "Keliru Input! Coba lagi!" : goto [ulangi] mode$ = left$(mode$, 1) if instr("BbAa", mode$) = 0 then print " Keliru Input! Coba lagi!" : goto [ulangi] if instr("Bb", mode$) > 0 then print "Mode Biasa" : goto [main] print "Mode Ahli" [main] print "Menu Pilihan Utama" end



Perhatikan Ekspresi/pernyataan ini:

if instr("Bb", mode$) > 0 then print "Mode Biasa" : goto [main] print "Mode Ahli"



Pernyataan tersebut dapat diringkas menjadi

if instr("Bb",mode$)> 0 then print "Mode Biasa " else print "Mode Ahli"



12



Beberapa bentuk penulisan yang diijinkan (dalam Liberty BASIC) adalah sebagai berikut;

if if if if if if if a a a a a a a . Dalam contoh kedua, bisa saja anak tersebut berhenti menimba air bukan karena embernya sudah penuh, melainkan kecapaian. Tidak demikian halnya dengan computer, dia akan terus melakukan/mengeksekusi perintah sampai dengan selesai. Struktur pengulangan terdiri dari 2 bagian; 1. Kondisi Pengulangan, yaitu syarat yang harus dipenuhi untuk melaksanakan pengulangan. Syarat ini biasanyanya dinyatakan dalam ekspresi Boolean yang harus diuji apakah mempunyai nilai true (benar) atau false (salah). 2. Badan penglangan (loop body), yakni satu atau sekumpulan perintah yang harus diulang.



14



Dalam pengulangan biasanya ada yang dikenal dengan inisialisasi dan terminasi. Inisialisasi adalah memberikan nilai awal pada sebuah variabel (Counter SPBU di reset “0”), sedangkan terminasi adalah nilai akhir sebagai tanda berakhirnya pengulangan . Ada beberapa pernyataan yang dapat dilakukan untuk menyelesaikan pengulangan ini. Pada pelaksanaannya pemakaian struktur pengulangan tergantung dari masalah yang harus diselesaikan, dukungan bahasa pemrograman dan tehnik pendekatan dari programmer computer itu sendiri. Seperti halnya juga dalam pencabangan, bentuk satu pengulangan dapat saja menyelesaikan beberapa kasus yang berbeda. Namun ada juga bentuk pengulangan yang hanya cocok untuk kasus tertentu saja. Pemilihan bentuk pengulangan yang tepat, dapat meningkatkan kinerja dan efisiensi sebuah program computer. Struktur pengulangan dengan FOR…..NEXT Bentuk pengulangan seperti ini merupakan tehnik pengulangan yang paling tua dalam bahasa pemrograman2. Hampir semua bahasa pemrograman mendukung tehnik pengulangan FOR….NEXT ini, kalaupun ada perbedaan paling dalam cara penulisannya saja (syntax). Bentuk umum dari FOR…NEXT adalah; FOR variabel=inisialisasi TO terminasi STEP aturan Jika STEP tidak didefinisikan maka nilai variabel akan bertambah satu, namun jika ingin melakukan pencacahan (counter) dengan bilangan negative, maka STEP harus disertakan. Berikut ini contoh potongan algoritma For…Next dalam bentuk Flowchart;

Counter= awal TO akhir



Dalam pelaksanaan/eksekusi pengulangan FOR…NEXT urutan langkahnya adalah sebagai berikut; 1. Menetapkan nilai counter sama dengan nilai awal (inisialisasi)



Badan Loop



2. Melakukan pengujian apakah bilai awal lebih besar dari nilai akhir, jika tidak maka mengerjakan perintah yang ada pada badan loop. Jika ya maka keluar dari Program



Pernyataan Berikutnya



3. Menaikkan/menurunkan nilai counter sesuai aturan yang kita tetapkan. 4. Kembali ke urutan nomor 2.



2



Ibid, hal 114



15



Untuk membantu lebih memahami tehnik pengulangan dengan FOR…NEXT, berikut ini kita contohkan ; “Sebuah himpunan A mempunyai anggota bilangan bulat ganjil positif tidak lebih besar dari 19. Buatlah Algoritma dalam bentuk Flowchart.” Penyelesaian: Langkah pertama adalah menetapkan variabel A dengan type data integer dan sebagai nilai awal kita inisialisasikan dengan A=1 sedangkan nilai terminasinya adalah 19. Karena A adalah himpunan bilangan bulat ganjil positif, maka kita tahu bahwa STEP nya adalah = 2. Dua inilah yang akan menjadi increment (penambahan) untuk nilai A berikutnya.



FLOWCHART: Tanpa menggunakan For…Next Dengan menggunakan For…Next



START



A=1



START



PRINT A



A=1 to 19 Step 2



PRINT A

A= A+2



A≥19 ? END



END



Cobalah perhatikan kedua bentuk algoritma tersebut, amati persamaan dan perbedaannya serta silahkan menentukan mana yang paling efektif alurnya. Semua itu adalah sangat tergantung dari 16



cara kita melakukan pendekatan terhadap persoalan yang ingin kita hadapi, dan apa yang akan dan mampu kita lakukan untuk menyelesaikannya dengan benar. Untuk lebih memperjelas berikut contoh progam dari kedua algoritma tersebut diatas; Tanpa memakai FOR…NEXT

' Himpunan Bilangan bulat ganjil positif A=1 [ulangi] PRINT space$(2);A; A=A+2 IF A0 maka loop akan



Read usia



berakhir dan akan melakukan perintah berikutnya berupa Print Usia. Sebagai inisialisasi variabel usia maka input dari pengguna (dalam hal ini teman kita) merupakan



Usia≤0 ?



Tidak



inisialisasi variabel agar loop bisa berjalan, sedangkan pengujian usia ≤ 0 merupakan kondisi yang kita tetapkan



Ya Print “Keliru, coba lagi!”



agar program melakukan pengulangan, sampai akhirnya teman kita mengisi umurnya dengan nilai yang lebih besar dari 0 (nol) Berikut Contoh Programnya;

' ulangi sampai jawaban sesuai dengan yang diminta while val(usia$) 10



TIDAK END END



TIDAK



Perhatikan kedua algoritma tersebut diatas! Sekilas sepertinya sama namun menghasilkan “output” yang sangat berbeda. Perbedaan output ini disebabkan kita melakukan kondisi yang berbeda (WHILE). Pada Contoh A, terjadi Looping ketika nilai A masih lebih kecil dari 9 sehingga menghasilkan output berupa tercetaknya angka 0 hingga 9, ketika A=10 maka kondisi sudah tidak terpenuhi sehingga keluar dari Loop. Pada Contoh B tidak terjadi Looping, karena pada saat diuji kondisi apakah A lebih besar dari 10, ternyata tidak sesuai karena A baru bernilai 1 (hasil dari eksekusi A= 0+1), hal ini mengakibatkan jalannya program keluar dari Loop. Program B hanya menghasilkan tercetaknya angka 0 pada layar monitor kita. Berikut ini contoh program dari algoritma tersebut (dalam bahasa pemrograman Liberty BASIC), yang sengaja digabungkan antara contoh A dan contoh B 23



Agar lebih mudah membandingkan antara Algoritma, Program dan Outputnya;

' CONTOH PENGGUNAAN DO...LOOP WHILE ' Program sesuai contoh algoritma A print "Output dari Algoritma A" a=0 do print a a = a + 1 loop while a 10 end



Hasil Keluaran dari Program tersebut diatas adalah;

Output dari Algoritma A 0 1 2 3 4 5 6 7 8 9 ---------------------------Output dari Algoritma B 0



Komputer akan dapat membantu kita dengan cepat dan benar apabila diberikan input dan urutan langkah (Algoritma) yang benar pula. Garbage in, garbage out 24



DO….LOOP UNTIL Pengulangan akan terjadi, sampai kondisi pengujian adalah benar. Jika kondisi sudah tercapai, maka loop berakhir. Perhatikan Algoritma dibawah ini CONTOH A CONTOH B



START



START



A=0



A=0



PRINT A



PRINT A



A=A+1



A=A+1



Tidak



A =1



Tidak



A > 10



Ya END END



YA



Selintas sama dengan pernyataan DO….LOOP WHILE hanya perlu sekali lagi ditegaskan bahwa dalam struktur DO….LOOP UNTIL; pengulangan akan berakhir ketika kondisi yang disyaratkan terpenuhi. Adapun contoh programnya sama dengan contoh diatas, tinggal kata “WHILE”-nya diganti dengan “UNTIL”. Masih banyak statement/pernyataan pengulangan yang berlaku di setiap Bahasa Pemrograman. Oleh sebab itu teruslah belajar dan berkreasi bukan hanya sekedar pemenuhan terhadap Standar Kompetensi dan Kompetensi Dasar saja. Insya Allah akan kita bahas pada tulisan berikutnya. Mudah-mudahan Tulisan ini bermanfaat bagi kita semua.



25




Share This Document


Related docs
Other docs by Emeng Sucarman
Bank Soal Operasi Bilangan Berpangkat
Views: 921  |  Downloads: 6
RPL
Views: 3903  |  Downloads: 231
E Book Operasi pada bilangan Pecahan
Views: 117  |  Downloads: 1
ALGORITMA
Views: 12758  |  Downloads: 571
Mengenal Resistor - Introduction to Resist
Views: 3184  |  Downloads: 80
by registering with docstoc.com you agree to our
privacy policy

You are almost ready to download!

You are almost ready to download!