I. KATA PENGANTAR
Dewasa ini sudah banyak berkembang bahasa-bahasa pemrograman tingkat tinggi yang pemakaiannya sudah sangat mudah, hanya klik dan drag saja. Namun meskipun demikian tetap saja programmer harus menuliskan kode-kode program agar objek-objek yang sudah mereka buat dapat bertingkah laku/bekerja sesuai dengan yang diinginkan. Secara singkat dapat dikatakan bahwa sebuah program pasti terdapat alur logika yang menyebabkan program tersebut dapat bekerja dengan benar. Konsep yang dijelaskan di sini tidak hanya dapat diimplementasikan dalam bahasa pemrograman Pascal saja, tetapi dapat juga diterapkan dengan menggunakan bahasa pemrograman lainnya termasuk bahasa pemrograman aras tinggi yang lainnya. Modul algoritma dan pemrograman ini sangat penting bagi mahasiswa program studi Ilmu Komputer pada khususnya karena menjadi dasar bagi mahasiswa untuk mempelajari bahasa pemrograman. Pada modul ini diberikan contoh-contoh kasus untuk mempermudah memahami konsep. Karena sebuah contoh dapat memberikan inspirasi pemecahan masalah yang mirip. Tetapi patut diingat bahwa sebuah masalah di dalam pemrograman, bila diberikan kepada pemrogram yang berbeda, boleh jadi mempunyai aneka ragam solusi (dalam hal ini algoritma), mulai algoritma yang kusut karena banyak sekali percabangannya, sampai pada algoritma yang kurang efisien karena banyak sekali pengulangan instruksi yang sama dalam menganalisa kasus. Dengan mempelajari modul ini diharapkan nantinya Anda dapat memecahkan masalah secara metodologis, yaitu sesuai dengan skema (model) yang benar. Ketaatan menggunakan skema niscaya akan menghasilkan algoritma yang efisien dan mudah dipahami. Sebagai akhir kata, semoga modul ini dapat diterima oleh para pembaca dalam mempelajari komputer, khususnya yang mempelajari mengenai konsep algoritma dan pemrograman serta dapat menambah wawasan bagi para pembaca dalam pembuatan program secara terstruktur. Yogyakarta, Desember 2007 Penulis
II. PENDAHULUAN
Dewasa ini komputer digunakan dihampir semua bidang kehidupan manusia, mulai dari pendidikan, bisnis, sampai dengan permainan. Berbicara tentang komputer tidak lepas dari pemrograman komputer. Hal ini karena komputer pada dasarnya adalah mesin yang tidak bisa apa-apa. Kita harus memberikan serangkaian instruksi kepada komputer agar mesin pintar ini dapat memecahkan suatu masalah. Dalam kehidupan sehari-hari untuk berkomunikasi dengan orang lain, kita harus menggunakan bahasa yang sama dengan orang tersbut. Apabila kita menggunakan Bahasa Indonesia, lawan bicara kita juga harus mengerti bahasa Indonesia. Kalau lawan bicara kita tidak mengerti bahasa Indonesia, kita masih bisa berkomunikasi dengan melalui seorang penterjemah. Dalam pemrograman komputer, berlaku hal yang sama, kita harus menggunakan bahasa yang dimengerti oleh komputer untuk memberikan suatu instruksi. Dan untuk membantu Anda mengkonversikan suatu permasalahan ke dalam bahasa komputer maka digunakan algoritma. Dan biasaya untuk pemrogram yang sudah berpengalaman tidak pernah menuliskan algoritma diatas kertas, tetapi biasanya dia menuliskan di dalam kepalanya dan langsung memprogram berdasarkan algoritma di kepalanya.
B. URAIAN MATERI
1. Pemrograman Komputer
Berbicara tentang komputer tidak lepas dari pemrograman komputer. Hal ini karena komputer pada dasarnya adalah mesin yang tidak bisa apa-apa. Kita harus memberikan serangkaian instruksi kepada komputer agar mesin pintar ini dapat memecahkan suatu masalah. Langkah-langkah yang kita lakukan dalam memberikan instruksi kepada komputer untuk memecahkan masalah inilah yang dinamakan pemrograman komputer. Sehingga yang dimaksud dengan program adalah sederetan perintah yang harus dikerjakan oleh komputer untuk menyelesaikan suatu masalah. Pada dasarnya komputer adalah mesin digital artinya komputer hanya mengenal kondisi ada arus listrik (biasanya dilambangkan dengan 1) dan tidak ada arus listrik (biasanya dilambangkan dengan 0). Dengan kata lain kita harus menggunakan sandi 0 dan 1 untuk melakukan pemrograman komputer. Bahasa pemrograman yang menggunakan sandi 0 dan 1 ini disebut bahasa mesin. Anda tentu bisa bayangkan bagaimana sulitnya memprogram dengan bahasa mesin.
Karena bahasa mesin sangat susah, maka muncul ide untuk melambangkan untaian sandi 0 dan 1 dengan singkatan kata yang lebih mudah dipahami manusia. Singkatan kata ini kemudian sering disebut mnemonic code. Bahasa pemrograman yang menggunakan singkatan kata ini disebut bahasa assembly. Sebagai contoh, dalam prosesor Intel, terdapat perintah 0011 1010 0000 1011. perintah dalam bahasa mesin ini sama artinya dengan perintah assembly CMP AL, 0D, yang artinya bandingkan nilai register AL dengan 0D. CMP di sini sebenarnya adalah singkatan dari CoMPare. Dapat Anda lihat di sini bahwa perintah CMP AL, 0D jauh lebih mudah dipahami dari pada 0011 1010 0000 1011. tentu saja ini jika dilihat dari sudut pandang manusia, bagi komputer kombinasi 0 dan 1 tentu lebih mudah dipahami. Perangkat lunak yang mengkonversikan perintah-perintah assembly ke dalam bahasa mesin sering disebut juga assembler. Pemrograman dengan bahasa assembly dirasakan masih terlalu sulit, kemudian dikembangkanlah bahasa pemrograman yang lebih mudah digunakan. Bahasa pemrograman ini menggunakan kata-kata yang mudah dikenali oleh manusia. Bahasa pemrograman seperti ini disebut bahasa generasi ketiga atau 3GL (third generation language). Beberapa orang menyebut bahasa ini dengan bahasa tingkat tinggi atau HLL (high level language). Yang termasuk bahasa generasi ketiga antara lain Basic, Pascal, C, C++, dsb. Perangkat lunak yang menterjemahkan program dalam bahasa manusia ke dalam bahasa assembly atau bahasa mesin ada dua macam yaitu interpreter dan kompiler. Interpreter menterjemahkan program baris per baris, artinya jika suatu baris akan dieksekusi,maka baris tersebut diterjemahkan terlebih dahulu ke bahasa mesin. Apabila baris berikutnya akan dieksekusi, maka baris tersebut baru diterjemahkan ke dalam bahasa mesin. Contoh bahasa pemrograman yang menggunakan interpreter adalah Basic. Kompiler menerjemahkan semua perintah ke dalam bahasa mesin kemudian menjalankan hasil penerjemahan. Hasil penerjemahan ini bisa disimpan dalam file atau memori. Contoh bahasa pemrograman yang menggunakan kompiler adalah Pascal, C, dan C++. Khusus untuk Pascal ada beberapa kompiler tetapi memang jumlahnya tidak banyak, misalnya Turbo Pascal, GNU Pascal, Free Pascal, Pascal for Window, dsb. Perkembangan bahasa pemrograman selanjutnya adalah bahasa generasi ke empat atau 4GL (fourth generation language). Bahasa ini banyak digunakan untuk mengembangkan aplikasi basis data (database). Salah satu contohnya adalah SQL.
Dalam melakukan suatukegiatan tentu saja kita memerlukan langkah-langkah yang harus dilalui. Dalam pemrograman komputer kita juga memerlukan beberapa langkah yang harus dilakukan. Dan setiap langkah ini tidak harus melakukannya dari langkah pertama, kedua, dst. Ada beberapa langkah yang harus atau mungkin diulang sampai berkali-kali. Beberapa langkah dalam proses pembuatan suatu program atau software : 1 ). Mendefinisikan masalah dan menganalisanya Langkah awal yang harus dilakukan adalah mengidentifikasikan masalah antara lain tujuan dari pembuatan program, parameter-parameter yang digunakan, fasilitas apa saja yang akan disediakan oleh program. Dalam hal ini adalah menentukan apa masukannya dan bagaimana keluarannya. 2 ). Menentukan solusi. Setelah masalah didefinisikan dengan jelas, masukan apa yang diberikan sudah jelas, langkah selanjutnya adalah mencari jalan bagaimana masalah tersebut diselesaikan. Yaitu menentukan metode atau algoritma apa yang akan diterapkan untuk menyelesaikan masalah tersebut dan terakhir menentukan bahasa program yang digunakan untuk pembuatan program. 3 ). Memilih Algoritma Menentukan algoritma yang baik untuk memecahkan masalah. Karena pemilihan algoritma yang salah akan menyebabkan program memiliki unjuk kerja yang kurang baik. 4 ). Menulis Program Pada langkah ini proses penulisan program menggunakan salah satu bahasa pemrograman tingkat tinggi berdasarkan algoritma yang telah disusun untuk memecahkan masalah tersebut. Ada beberapa hal yang harus dipertimbangkan saat memilih bahasa pemrograman, antara lain masalah yang dihadapi, bahasa pemrograman yang Anda kuasai, dsb. 5 ). Menguji Program Setelah program selesai ditulis, Anda harus mengujinya. Pengujian pertama adalah apakah program berhasil dikompilasi dengan baik. Kemudian diuji apakah program dapat menampilkan keluaran yang diinginkan. Dan program ini juga harus dicobakan untuk banyak kasus untuk menentukan kevalitan dari hasil keluaran program.
Langkah 4 dan 5 ini bisa dilakukan berulang kali sampai program diyakini benar-benar berjalan sesuai dengan yang diharapkan. 6 ). Menulis Dokumentasi. Hal ini bisanya dilakukan bersamaan dengan menulis program, artinya pada setiap baris program atau setiap beberapa baris program, Anda menambahkan komentar yang menjelaskan kegunaan dari suatu pernyataan. Dan akn lebih baik apabila dituliskan dalam dokumen tersendiri kemudian mencetaknya diatas kertas atau disimpan dalam file tersendiri. 7 ). Merawat Program Langkah ini dilakukan setelah prorgram selesai dibuat dan sudah digunakan oleh pengguna Anda. Hal yang paling sering terjadi di sini adalahnya munculnya bug yang sebelumnya tidak terdeteksi. Atau mungkin juga pengguna ingin tambahan suatu fasilitas baru. Apabila hal-hal seperti ini terjadi, Anda harus melakukan revisi terhadap program Anda.
Belajar Memprogram Belajar memprogram belajar bahasa pemrograman Belajar memprogram : belajar tentang strategi pemecahan masalah, metodologi dan sistematika pemecahan masalah kemudian menuliskannya dalam notasi yang disepakati bersama Belajar memprogram : bersifat pemahaman persoalan, analisis dan sintesis Belajar memprogram, titik berat : designer program
Belajar Bahasa Pemrograman Belajar bahasa pemrograman : belajar memakai suatu bahasa pemrograman, aturan sintaks, tatacara untuk memanfaatkan instruksi yang spesifik untuk setiap bahasa Belajar bahasa pemrograman , titik berat : coder Program dengan rancangan yang baik (metodologis, sistematis) Dapat dieksekusi oleh mesin Berfungsi dengan benar Sanggup melayani segala kemungkinan masukan Disertai dokumentasi Belajar memprogram, titik berat : designer program
Sampai saat ini terdapat puluhan bahasa pemrogram. Yang dapat dibedakan berdasarkan tujuan dan fungsinya. Diantaranya adalah :
3. Algoritma
Dari materi diatas, Anda sudah mengetahui dimanakah posisi algoritma dalam dunia pemrograman komputer. Sekarang akan dibahas mengenai algoritma itu sendiri. Algoritma adalah urutan langkah-langkah penyelesaian masalah yang disusun secara sistematis dan logis. Kata Logis merupakan kata kunci dalam Algoritma. Langkah-langkah dalam Algoritma harus logis dan harus dapat ditentukan bernilai salah atau benar.
Dalam kehidupan sehari-hari baik sadar maupun tidak sebenarnya Anda juga menggunakan algoritma untuk melakukan sesuatu. Contoh 1 : Ibu Tati mengupas kentang untuk mempersiapkan makan malam..(luas ruang lingkupnya) Karena ruang lingkup luas, maka harus didefinisikan keadaan awal dan efek netto yang direncanakan ( Initial State dan Final State) Initial State (keadaan awal) : T0 kentang sudah ada dikantong kentang, dan ditaruh di rak dapur dimana ibu Tati akan mengupasnya Final State (keadaan akhir) : T1 kentang dalam keadaan terkupas di panci, siap untuk dimasak dan kantong kertasnya harus dikembalikan ke rak lagi. Kejadian : urut-urutan dari beberapa aksi yang terjadi secara berurutan. Efek kumulatif dari semua aksi yang terjadi menjadi efek netto dari kejadian Penggolongan suatu kejadian menjadi aksi adalah relatif tergantung dari sudut pandang. Contoh mengupas kentang dapat dijelaskan : o o o o Ambil kantong kentang dari rak Ambil panci dari almari Kupas kentang Kembalikan kantong kentang ke rak
Contoh lain (jika tidak dipandang perlu untuk menjelaskan kantong kentang diambil dari rak sebelum ambil panci) : o o o Ambil kantong kentang dari rak dan ambil panci dari almari Kupas kentang Kembalikan kantong kentang ke rak
Jika esok hari ibu Tati mengupas kentang lagi untuk makan malam juga, dan kita mengamati hal-hal yang sama, apakah hal tsb bisa disebut sama ? Ini tergantung jawabannya bisa sama bisa tidak. Tidak karena ibu Tati tidak mungkin mengupas kentang yang sama dengan kemarin Sama karena kemiripan pola yang dilakukan
Contoh 2 : Misalkan Anda ingin menulis surat, maka Anda perlu melakukan beberapa langkah berikut : 1 ). Mempersiapkan kertas dan amplop
2 ). Mempersiapkan alat tulis, seperti pena atau pensil 3 ). Mulai menulis 4 ). Memasukkan kertas ke dalam amplop 5 ). Pergi ke kantor pos untuk mengeposkan surat tersebut. Dalam banyak kasus algoritma yang Anda lakukan tidak selalu berurutan seperti diatas. Kadang-kadang Anda harus memilih dua atau beberapa pilihan. Sebagai contoh, jika Anda ingin makan, Anda harus menentukan akan makan di rumah makan atau memasak sendiri. Jika Anda memilih untuk makan di rumah makan, Anda akan menjalankan algoritma yang berbeda dengan jika Anda memilih memasak sendiri. Dalam algoritma hal semacam ini sering disebut percabangan. Dalam kasus lain, Anda mungkin harus melakukan langkah-langkah tertentu beberapa kali. Sebagi contoh, saat Anda menulis surat, sebelum memasukkan kertas ke dalam amplop, mungkin Anda harus mengecek apakah surat tersebut sudah benar atau belum. Jika belum benar, berarti Anda harus mempersiapkan kertas baru dan menulis lagi. Demikian seterusnya sampai surat Anda sesuai dengan yang diharapkan. Dalam algoritma hal semacam ini sering disebut perulangan.
C. EVALUASI FORMATIF
1 ). Jelaskan apa yang dimaksud dengan algoritma! 2 ). Jelaskan apa yang dimaskud dengan program ! 3 ). Tuliskan 6 langkah dalam menyusun suatu program untuk memecahkan suatu masalah ! 4 ). Tuliskan sedikitnya 2 (dua) perbedaan antara belajar memprogram dengan belajar bahasa pemrograman ! 5 ). Tuliskan algoritma untuk memecahkan masalah matematika, yaitu untuk menghitung luas bujur sangkar dari masukan berupa panjang dan lebar.
B. URAIAN MATERI
1. Representasi Algoritma
Notasi pemrograman. Analoginya sama dengan resep membuat kue. Sebuah resep dapat ditulis dalam bahasa apapun. Bahasa Jepang, Inggris, Perancis, Indonesia, dan lain sebagainya. Apapun bahasanya, kue yang dihasilkan tetap sama asalkan semua aturan pada resep diikuti. Mengapa demikian ? Karena setiap juru masak (sebagai pemroses) dapat melakukan operasi dasar yang sama, seperti mengocok telur, menimbang berat gula, dan lain sebagainya. Algoritma bisa dipresentasikan dengan 2 macam cara, yaitu : a. Flowchart Flowchart adalah gambaran dalam bentuk diagram alir dari algoritma-algoritma dalam suatu program, yang menyatakan arah alur program tersebut. Berikut adalah beberapa simbol yang digunakan dalam menggambar suatu flowchart : Algoritma dapat diterjemahkan ke dalam berbagai bahasa
SIMBOL
NAMA TERMINATOR
FUNGSI
Permulaan/akhir program
PREPARATION
Proses inisialisasi/pemberian harga awal Proses perhitungan/proses pengolahan data Proses input/output data, parameter, informasi Permulaan sub program/proses menjalankan sub program Perbandingan pernyataan, penyeleksian data yang memberikan pilihan untuk langkah selanjutnya Penghubung bagian-bagian flowchart yang berada pada satu halaman Penghubung bagian-bagian flowchart yang berada pada halaman berbeda
PROSES
b.
Pseudocode Pseudo berarti imitasi atau mirip atau menyerupai dan code nenunjukkan kode dari program, berarti pseudocode adalah kode yang mirip dengan instruksi kode program yang sebenarnya. Pseudocode berbasis pada bahasa pemrograman yang sesungguhnya sepertin COBOL, FORTRAN, Pascal atau Basic sehingga lebih tepat digunakan untuk menggambarkan algoritma yang akan dikomunikasikan kepada Programmer. Pseudocode akan memudahkan programmer untuk memahami dan menggunakannya, karena mirip dengan kode-kode program yang sebenarnya.
Pseudocode labih terinci, seperti menjelaskan juga tentang pemberian nilai awal dari suatu variabel, membuka dan menutup file, subcscrip atau tipe-tipe data yang digunakan (misalnya real, integer, boolean). Pseudocode ini yang kemudian dikenal dengan istilah algoritma
a. Judul (Header) Judul adalah bagian teks algoritma yang digunakan sebagai tempat mendefinisikan nama dengan menentukan apakah teks tersebut adalah program, prosedur, fungsi. Setelah judul disarankan untuk menuliskan spesifikasi singkat dari teks algoritma tersebut. Nama algoritma sebaiknya singkat namun cukup menggambarkan apa yang akan dilakukan oleh algoritma tersebut.
Contoh :
Catatan : Untuk memisahkan antara kata dalam judul algoritma menggunakan tanda _ bukanlah suatu keharusan. Anda dapat menuliskan LuasLingkaran atau Luas_Lingkaran. Tetapi sebaiknya anda tidak menggunakan spasi untuk memisahkan antara kata di dalam nama algoritma.
b. Kamus (Deklarasi) Kamus adalah bagian teks algoritma sebagai tempat untuk mendefinisikan : Nama type Nama konstanta Nama variabel Nama fungsi Nama prosedur Semua nama tersebut baru dapat dipakai di dalam algoritma jika telah didefinisikan terlebih dahulu didalam kamus. Penulisan sekumpulan nama dalam kamus sebaiknya dikelompokan menurut jenis nama tersebut. Pendefinisian nama konstanta sekaligus memberikan harga konstanta tersebut, pendefinisian nama fungsi dilakukan sekaligus dengan domain / range serta spesifikasinya. Pendefinisian nama prosedur sekaligus dengan pendefinisian parameter (jika ada) dan spesifikasi prosedur (kondisi awal Initial State, Kondisi akhir Final State dan proses yang dilakukan). Contoh :
c. Algoritma (Deskripsi) Algoritma adalah bagian inti dari suatu algoritma yang berisi instruksi atau pemanggilan aksi yang telah didefinisikan. Komponen teks algoritma dalam pemrograman procedural dapat berupa : Instruksi dasar seperti input/output, assignment Sequence (runtutan)
Analisa kasus Perulangan Setiap langkah algoritma dibaca dari atas ke bawah. Urutan deskripsi penulisan menentuan urutan langkah pelaksanaan perintah. Contoh :
Catatan : Untuk kata-kata input, output, if then else, output akan dipelajari lebih mendalam dalam bab-bab selanjutnya.
Flowchart :
Start
End
Contoh 2 : Menentukan nilai terbesar dari bilangan bulat yang dibaca dari piranti masukan dan menuliskan hasilnya ke piranti keluaran. Flowchart :
Start A
Input X,Y
Cetak Hasil
Hasil = Y
Apakah X<Y
Hasil = X
End
C. EVALUASI FORMATIF
1. Buat algoritma untuk menentukan apakah suatu bilangan merupakan bilangan genap atau ganjil, kemudian buat flowchart untuk program tersebut !
2. 3.
Buat algoritma untuk menentukan jenis akar dari suatu persamaan kuadrat, kemudian buat flowchart untuk program tersebut ! Buat algoritma untuk menghitung jumlah N suku dari deret aritmatika berikut : Sn = 3 + 7 + 11 + + (4n-1)
EVALUASI
Isilah titik-titik dibawah ini dengan jawaban yang tepat (mengacu pada modul) 1 ). Program adalah . Algoritma yang ditulis dalam bahasa pemrogaman tertentu sehingga dapat dilaksanakan oleh computer. 2 ). Produk yang dihasilkan pemrogram adalah : a. .. b. .. c. .. d. .. e. ............................................................................. 3 ). Dalam menyusun sebuah program, langkah-langkah yang harus dikerjakan adalah a. b. .. c. .. d. .. e. ... f. ....................................................................... g. ...................................................................... 4) Lengkapi penulisan algoritma untuk menghitung luas lingkaran dibawah ini Program Luas_Lingkaran Kamus Phi, diameter, radius, luas : real Algoritma (a) . (b) . (c) . (d) . (e) .
5)
Lengkapi flowchart untuk menampilkan kelipatan dari bilangan yang diinputkan Program Kelipatan Kamus S, lipat, i : integer Algoritma Input (S, lipat) I Do Output ( I ) I I + lipat While ( I <= lipat ) s
6)
Buatlah algoritma untuk menuliskan nilai absolut dari nilai yang dimasukkan pengguna. Bila diketahui definisi dari nilai absolut adalah sebagai berikut :
x x = x
Rumus :
Tingkat penguasaan =
Arti tingkat penguasaan yang anda capai : 90% - 100% = baik sekali 80% - 89% = baik 70% - 79% = sedang - 69% = kurang Kalau Anda mencapai tingkat penguasaan 80% atau lebih, Anda dapat meneruskan ke modul berikutnya. Bagus ! Tetapi kalau nilai Anda dibawah 80%, Anda harus mengulang Modul ke-1 terutama yang belum Anda kuasai.
BAHAN BACAAN
Brassard, Gilles, and Bratley, Paul, 1996, Fundamentals of Algorithmics, Prentice Hall, Englewood Cliffs, New Jersey. Budiyanto, Alex, 2003, Pengantar Algoritma dan Pemrograman, www.Ilmu Komputer.com Jogiyanto H.M, 1995, Turbo Pascal versi 5.0, jilid 1, Andi Offset, Yogyakarta. Munir, Rinaldi, Ir, dan Lidya, Leoni, Ir., 1998, Algoritma dan Pemrograman I, Informatika, Bandung. Pranata, Antony, 2000, Algoritma dan Pemrograman, J & J Learning, Yogyakarta.
LAMPIRAN
b. input ( diameter )
e. output ( luas ) 5. a. Start b. Input ( S, lipat ) c. I = S d. Output ( I ) e. I = I + lipat f. I < = lipat g. stop 6. Program Absolut Kamus X : integer
Algoritma Input (X) If x <= 0 then hasil Else hasil x Output (hasil) x * (-1)