modul_kuliah_20120905.pdf
DESCRIPTION
modul kuliahTRANSCRIPT
61B012Algoritma & Pemrograman
Modul Kuliah
Henry Hermawan, S.T., M.Sc.
Jurusan Teknik ElektroFakultas Teknik
Universitas Surabaya2012
Halaman ini sengaja dikosongkan
Kata Pengantar
Selama saya mengajar mata kuliah Algoritma dan Pemrograman, sering kali saya menemukan bahwa mahasiswa-mahasiswa saya kesulitan dalam mengikuti sesi penyampaian materi yang dikarenakan banyaknya ide-ide penting yang disampaikan, yang mana ide-ide tersebut kadang tidak tertulis pada buku referensi karena berdasarkan pengalaman saya pribadi. Sering saya melihat, untuk mengatasi kesulitan ini, mahasiswa yang memiliki alat perekam, meminta izin kepada saya untuk merekam penjelasan saya pada sesi penyampaian materi untuk kemudian jadi bahan pembelajaran pribadi di rumah. Oleh karena itu, saya berinisiatif untuk menulis modul sederhana ini, yang berisi penjelasan saya saat sesi penyampaian materi, sekaligus saya masukkan juga modul untuk kerja laboratorium, sehingga dengan satu binder modul ini, mahasiswa dapat belajar secara mandiri materi dari mata kuliah Algoritma dan Pemrograman dengan utuh.
Modul ini disusun dengan sistem pembelajaran bertingkat, yang disarankan dipelajari secara urut mulai dari modul yang pertama sampai dengan yang terakhir. Susunan dari modul ini tidaklah selalu modul untuk sesi penyampaian materi lalu diikuti dengan sesi kerja laboratorium, tergantung dari materi yang dibahas. Dengan adanya modul ini, diharapkan mahasiswa dapat dengan mudah mengikuti proses pembelajaran pada mata kuliah Algoritma dan Pemrograman. Sementara ini, modul pembelajaran ini hanya tersedia dalam bentuk softcopy. Jika ingin dicetak/di-printout, untuk hasil terbaik, modul ini dicetak bolak-balik dan dijilid.
Walaupun telah disusun suatu modul pembelajaran untuk mata kuliah Algoritma dan Pemrograman, mahasiswa di-encouraged untuk tetap membaca buku-buku referensi yang direkomendasikan maupun yang dicari sendiri untuk menambah knowledge yang berkaitan dengan Algoritma dan Pemrograman. Selain itu, dengan bantuan modul ini, mahasiswa juga di-encouraged untuk berani “bereksplorasi” sendiri, mencoba-coba sendiri untuk meningkatkan kemampuan pribadi dalam berpikir kritis dan pemrograman menggunakan bahasa C.
Akhir kata, saya mengucapkan terima kasih kepada pihak-pihak yang telah memberi masukan, baik itu berupa saran perbaikan, kritikan, dan lain sebagainya, demi kesempurnaan modul pembelajaran ini. Saya tetap mengharapkan masukan-masukan dari mahasiswa-mahasiswa saya yang menggunakan modul ini agar modul ini dapat semakin sempurna dalam membantu mahasiswa dalam proses pembelajaran pada mata kuliah Algoritma dan Pemrograman.
Surabaya, Agustus 2012
Henry Hermawan, S.T., M.Sc.
iii
Halaman ini sengaja dikosongkan
iv
Daftar IsiPengantar Algoritma................................................................................................................1
Tujuan Pembelajaran..........................................................................................................1Metode dan Waktu Penyampaian.......................................................................................1Referensi............................................................................................................................1Sesi-Sesi Pembelajaran.....................................................................................................2
I. Simulasi Pengantar Algoritma.....................................................................................2II. Pengertian Algoritma..................................................................................................2III. Problem Solving........................................................................................................3IV. Pemainan..................................................................................................................4V. Requirement/Important Points dalam Menyusun Algoritma........................................5VI. Kesimpulan...............................................................................................................6
Pertanyaan Review & Komitmen Belajar............................................................................6I. Pertanyaan Review.....................................................................................................6II. Komitmen Belajar Mandiri..........................................................................................6
Penutup..............................................................................................................................6Representasi Algoritma...........................................................................................................7
Tujuan Pembelajaran..........................................................................................................7Metode dan Waktu Penyampaian.......................................................................................7Referensi............................................................................................................................7Sesi-Sesi Pembelajaran.....................................................................................................8
I. Review Materi Modul 1................................................................................................8II. Cara Merepresentasikan Algoritma............................................................................8
II.1. Verbal.................................................................................................................8II.2. Grafik/Gambar....................................................................................................8II.3. Teks..................................................................................................................10
III. Kesimpulan..............................................................................................................11Pertanyaan Review & Komitmen Belajar..........................................................................11
I. Pertanyaan Review...................................................................................................11II. Komitmen Belajar Mandiri........................................................................................11
Penutup............................................................................................................................11Teknik Menyusun Algoritma...................................................................................................13
Tujuan Pembelajaran........................................................................................................13Metode dan Waktu Penyampaian.....................................................................................13Referensi..........................................................................................................................13Sesi-Sesi Pembelajaran...................................................................................................14
I. Review Materi Modul 2..............................................................................................14II. Teknik Menyusun Algoritma......................................................................................14
Tahap 1: Understand the problem...........................................................................15Tahap 2: Decide on the model of solution................................................................15Tahap 3: Design the Algorithms...............................................................................15Tahap 4: Prove correctness.....................................................................................16Tahap 5: Analyze the algorithm................................................................................16Tahap 6: Code the algorithm....................................................................................17
III. Kesimpulan.............................................................................................................17Pertanyaan Review & Komitmen Belajar..........................................................................17
I. Pertanyaan Review...................................................................................................17II. Komitmen Belajar Mandiri........................................................................................17
Penutup............................................................................................................................17Flowchart dan Pseudocode...................................................................................................19
Tujuan Pembelajaran........................................................................................................19
v
Metode dan Waktu Penyampaian.....................................................................................19Referensi..........................................................................................................................19Sesi-Sesi Pembelajaran...................................................................................................20
I. Review Materi Modul 3..............................................................................................20II. Catatan Khusus untuk Modul 4................................................................................20III. Flowchart................................................................................................................20
III.1. Apa itu flowchart?............................................................................................20III.2. Tujuan..............................................................................................................21III.3. Maksud dan ruang lingkup dari flowchart.........................................................21III.4. Petunjuk untuk menggambar flowchart............................................................21III.5. Advantages of using flowcharts.......................................................................23III.6. Limitations of using flowcharts.........................................................................23III.7. Beberapa contoh penggunaan flowchart.........................................................24III.8. Apa yang sudah dipelajari?..............................................................................26III.9. Soal pendalaman.............................................................................................27
IV. Pseudocode Standard.............................................................................................27IV.1. Pengenalan pseudocode.................................................................................27IV.2. Bagian terstruktur dari peudocode...................................................................28
IV.2.1. SEQUENCE.............................................................................................29IV.2.2. IF-THEN-ELSE........................................................................................30IV.2.3. WHILE.....................................................................................................30IV.2.4. CASE.......................................................................................................31IV.2.5. REPEAT-UNTIL........................................................................................31IV.2.6. FOR.........................................................................................................32IV.2.7. Nested constructs....................................................................................32IV.2.8. Pemanggilan subrutin..............................................................................33IV.2.9. EXCEPTION HANDLING.........................................................................33
IV.3. Kelebihan & keterbatasan pseudocode...........................................................33IV.4. Contoh-contoh penulisan Pseudocode............................................................34IV.5. Tips untuk menulis pseudocode.......................................................................35IV.6. Flowchart dan Pseudocode.............................................................................36IV.7. Soal pendalaman.............................................................................................38
V. Panduan Mahasiswa................................................................................................38VI. Forum Diskusi Kelas/Presentasi.............................................................................38VII. Kesimpulan............................................................................................................39
Pertanyaan Review & Komitmen Belajar..........................................................................39I. Pertanyaan Review...................................................................................................39II. Komitmen Belajar Mandiri........................................................................................39
Penutup............................................................................................................................39Lampiran Modul 4.............................................................................................................40
vi
1Pengantar Algoritma
Tujuan PembelajaranSetelah mempelajari materi Pengantar Algoritma yang ada pada modul ini, Anda diharapkan dapat untuk:
➢ mendefinisikan algoritma➢ menjelaskan fungsi dari algoritma dalam menyelesaikan suatu masalah (problem
solving)➢ mendefinisikan persyaratan atau poin-poin penting dalam penyusunan algoritma➢ memberikan contoh penggunaan algoritma dalam kehidupan sehari-hari➢ mengidentifikasi sejumlah ambiguitas dalam definisi informal mengenai algoritma.
Metode dan Waktu PenyampaianMetode penyampaian:
• Lecturing • Reciprocal Learning • Short Discussion• Contextual Learning.
Waktu penyampaian: • Sesi pembelajaran: 70 menit.• Review & Komitmen Belajar: 10 menit.
ReferensiReferensi yang digunakan pada modul ini adalah sebagai berikut:
1. “An Introduction to Computer Science : An Algorithmic Approach”, Jean-Paul Tremblay - Richard B. Bunt, McGraw-Hill, 1981.
2. “Computer Science: an Overview”, 7th edition, J. Glenn Brookshear, Addison-Wesley, 2003, Chapter 4.
3. “Introduction to Algorithms”, 3rd edition, Thomas H. Cormen et.al., MIT Press, 2009, Chapter 1.
1
Pengantar Algoritma Algoritma & Pemrograman
Sesi-Sesi Pembelajaran
I. Simulasi Pengantar Algoritma
Kasus: Gantilah bola lampu yang rusak dengan yang baru! Bagaimana caranya?
Pada bagian ini, Anda diminta untuk menuliskan langkah-langkah sesuai dengan urutan untuk mengganti bola lampu yang rusak dengan yang baru. Tuliskan langkah-langkah tersebut pada tempat yang tersedia di bawah ini:
1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
dst.
Pertanyaan: Apakah langkah-langkah yang telah Anda susun tersebut sudah masuk akal (baik itu instruksi tiap langkah maupun urutan instruksinya) dan dapat dikerjakan oleh orang lain dengan mudah?
Jika jawaban Anda adalah ya, maka “Congratulation!” Anda telah dapat menyusun algoritma. Bukankah menyusun algoritma itu merupakan pekerjaan yang sederhana?
II. Pengertian Algoritma
Asal kata algoritma (dalam bahasa Inggris adalah algorithm) adalah dari nama seorang ahli astronomi dan matematika asal Persia, Abu Abdullah Muhammad ibn Musa al-Khwarizmi, yang menulis makalah tentang “On Calculation with Hindu Numerals” pada tahun 825, yang isinya tentang Indian numerals and algebraic concepts. Makalah tersebut diterjemahkan dalam bahasa latin dengan judul “Algoritmi de numero Indorum” yang artinya dalam bahasa Inggris kurang lebihnya adalah “Algoritmi on the numbers of the Indians”. Kata “algoritmi” merupakan terjemahan nama al-Khwarizmi (orang Eropa susah mengatakan al-Khwarizmi), yang kemudian disalahartikan oleh orang-orang dan kata tersebut menjadi suatu kosa kata baru dengan bentuk plural (bentuk singular-nya dalam bahasa Latin adalah algorismus) yang memiliki arti calculation method.
Definisi algoritma yang diterima cukup luas adalah sebagai berikut:
Algorithm is a sequence of unambiguous instructions for solving a problem, that is, for obtaining a required output for
any legitimate input in a finite amount of time.
Jadi, algoritma merupakan suatu urutan langkah atau instruksi yang jelas dan tidak membingungkan untuk menyelesaikan suatu masalah. Dalam penyusunan algoritma, dibutuhkan suatu atau beberapa input yang dapat dipertanggungjawabkan dan batasan waktu untuk mendapatkan suatu output yang diinginkan. Instruksi atau langkah-langkah yang disusun harus dapat dimengerti dan dikerjakan/diikuti oleh seseorang atau sesuatu
2
Algoritma & Pemrograman Pengantar Algoritma
(baca: komputer).
III. Problem Solving
Gambar 1.1 menunjukkan ada 2 cara problem solving yang umum dilakukan, yaitu: (1) cara langsung, ditunjukkan oleh garis putus-putus, dan (2) cara tidak langsung, melalui tahap problem-solving phase dan implementation phase. Cara pertama dapat dilakukan untuk masalah-masalah yang sederhana dan sangat tidak disarankan menggunakan cara pertama ini untuk menyelesaikan masalah-masalah yang kompleks karena kecenderungan cara pertama ini adalah point of view yang sempit sehingga penggunaan cara pertama ini untuk menyelesaikan masalah yang kompleks akan dapat menimbulkan masalah baru yang di luar perkiraan problem solver-nya. Selain itu, cara pertama ini biasanya cukup menyulitkan, butuh banyak sekali pengalaman dan intuisi problem solving yang excellent jika menyelesaikan masalah dengan cara pertama ini. Cara kedua merupakan cara yang lebih membutuhkan banyak waktu daripada cara pertama, tetapi, hasil penyelesaian masalah dengan cara kedua cenderung lebih aman dan tepat, baik itu untuk masalah sederhana maupun kompleks, karena cara kedua ini memungkinkan seorang problem solver melihat suatu masalah dengan lebih luas, dengan kata lain, point of view akan lebih luas dibandingkan dengan point of view dari cara pertama. Semakin luas point of view dari seorang problem solver dalam melihat suatu masalah, semakin objektif pula ia melihat masalah tersebut.
Gambar 1.1: Skema Problem Solving.
3
Pengantar Algoritma Algoritma & Pemrograman
IV. Pemainan
Permainan 1: Cobalah Anda melipat kertas origami sehingga mendapatkan bentuk seperti pada Gambar 1.2!
Gambar 1.2: Permainan origami pertama.
Setelah Anda berhasil mendapatkan bentuk seperti pada Gambar 1.2, ajaklah beberapa teman Anda untuk ikut bermain, pilihlah salah satu dari teman Anda, ceritakan cara Anda melipat kertas origami sehingga Anda berhasil mendapatkan bentuk tersebut kepada satu teman pilihan Anda tersebut dan mintalah teman Anda tersebut untuk mengikuti instruksi demi instruksi, persis seperti apa yang Anda katakan, sedangkan teman-teman Anda yang lain, Anda minta untuk mencermati instruksi-instruksi Anda dan hasil pekerjaan teman Anda.
Setelah selesai, mintalah teman Anda yang lain untuk mencoba melipat kertas origami sesuai dengan Gambar 1.2, lalu mintalah teman Anda untuk memilih salah satu teman Anda yang lain dan menceritakan instruksi-instruksi kepada teman tersebut. Anda beserta teman Anda yang tidak terlibat bertugas mencermati instruksi-instruksi teman Anda dan hasil pekerjaan teman Anda tersebut.
Pertanyaan: Apa komentar seluruh pengamat terhadap 2 kejadian tersebut? Buatlah daftar yang berisi poin-poin komentar seluruh pengamat!
Permainan 2:Dapatkah Anda atau teman Anda melipat kertas origami sehingga menghasilkan bentuk model perahu seperti pada Gambar 1.3?
Gambar 1.3: Model perahu.
4
Algoritma & Pemrograman Pengantar Algoritma
Jika Anda belum pernah melipat kertas origami untuk model perahu, pasti Anda tidak dapat. Selanjutnya, jika Anda perhatikan Gambar 1.4, lalu Anda mulai membuat model perahu pada Gambar 1.3 berdasarkan petunjuk pada Gambar 1.4, dapatkah Anda melakukannya?
Gambar 1.4: Petunjuk origami model perahu.
Pertanyaan: • Menurut Anda, bagaimana tingkat kesulitan origami model perahu sebelum melihat
Gambar 1.4 dengan sesudah melihat Gambar 1.4?• Jika langkah no. 5 dihilangkan, menurut Anda, apa yang mungkin terjadi saat Anda
melipat kertas origami?• Jika langkah no. 7 dan 8 dibalik urutannya, menurut Anda, apa yang mungkin terjadi
saat Anda melipat kertas origami?
Buatlah kesimpulan dari permainan 1 dan 2 ini!
V. Requirement/Important Points dalam Menyusun Algoritma
Berdasarkan permainan origami 1 dan 2 pada sesi IV, jelaslah bahwa ada beberapa requirement/ important points dalam menyusun algoritma, di antaranya:
• each step of an algorithm works must be clear and unambiguous• range of inputs for which an algorithm works has to be specified carefully• the same algorithm can be represented in several different ways• several algorithm for solving the same problem may exist• algorithm for the same problem can be based on very different ideas and can solve
the problem with dramatically different speeds
5
Pengantar Algoritma Algoritma & Pemrograman
VI. Kesimpulan
Dari penyampaian Pengantar Algoritma, dapat disimpulkan bahwa algoritma merupakan suatu urutan langkah/instruksi yang jelas dan tidak membingungkan untuk menyelesaikan suatu masalah, dengan input yang dapat dipertanggungjawabkan dan waktu tertentu untuk mendapatkan suatu output yang dibutuhkan/diinginkan. Dalam menyusun algoritma, ada beberapa requirement/ important points yang harus menjadi perhatian agar algoritma yang disusun menjadi jelas dan dapat dengan mudah dikerjakan/diikuti oleh orang lain atau komputer.
Pertanyaan Review & Komitmen Belajar
I. Pertanyaan Review
1. Sebutkan pengertian algoritma!2. Sebutkan 2 cara problem solving! Apa kelebihan dan kekurangan masing-masing
cara tersebut?3. Apa saja requirement/important points yang harus diperhatikan dalam menyusun
algoritma?
II. Komitmen Belajar Mandiri
• Membaca buku referensi yang digunakan pada modul ini.• Memeriksa syllabus mata kuliah Algoritma dan Pemrograman untuk materi
selanjutnya.• Mempersiapkan diri untuk kuliah berikutnya.
PenutupMateri untuk kuliah berikutnya adalah sebagai berikut:
• Representasi Algoritma• Teknik Menyusun Algoritma
6
2Representasi Algoritma
Tujuan PembelajaranSetelah mempelajari materi Representasi Algoritma yang ada pada modul ini, Anda diharapkan dapat untuk:
➢ menjelaskan beberapa macam cara untuk merepresentasikan algoritma➢ menjelaskan cara memilih representasi algoritma yang tepat.
Metode dan Waktu PenyampaianMetode penyampaian:
• Lecturing• Reciprocal Learning
Waktu penyampaian: • Sesi pembelajaran: 40 menit.• Review & Komitmen Belajar: 10 menit.
ReferensiReferensi yang digunakan pada modul ini adalah sebagai berikut:
1. “An Introduction to Computer Science : An Algorithmic Approach”, Jean-Paul Tremblay - Richard B. Bunt, McGraw-Hill, 1981.
2. “Computer Science: an Overview”, 7th edition, J. Glenn Brookshear, Addison-Wesley, 2003, Chapter 4.
3. “Introduction to Algorithms”, 3rd edition, Thomas H. Cormen et.al., MIT Press, 2009, Chapter 1.
7
Representasi Algoritma Algoritma & Pemrograman
Sesi-Sesi Pembelajaran
I. Review Materi Modul 1
Poin penting tentang algoritma adalah sebagai berikut:• a sequence of steps to be followed in a carefully prescribed order• the importance of precision was emphasized• the steps of an algorithm must be clearly and unambiguously expressed.
II. Cara Merepresentasikan Algoritma
Pertanyaan: Mengapa algoritma perlu direpresentasikan?
Saat kita menyusun suatu algoritma, kita perlu menyampaikan algoritma tersebut kepada orang lain dan orang tersebut harus dapat mengerti algoritma kita dengan sangat jelas. Kemampuan merepresentasikan algoritma jelas sangat diperlukan dalam suatu grup programmer yang bekerja sama untuk membuat suatu software yang kompleks. Tanpa kemampuan yang baik dalam merepresentasikan algoritma, komunikasi antar programmer tidak akan berlangsung dengan lancar sehingga dapat mengakibatkan sering terjadi ketidaksesuaian antar bagian program yang dikerjakan. Dalam aplikasi sehari-hari, misalnya, contoh penyampaian algoritma dalam permainan origami pada modul 1, ketidaklancaran serta ketidakjelasan dalam memberikan petunjuk/instruksi akan menghasilkan suatu output yang tidak sesuai dengan apa yang diinginkan si penyusun algoritma.
Pada dasarnya, ada 3 cara merepresentasikan algoritma, yaitu:1. Verbal2. Grafik/gambar3. Teks
II.1. Verbal
Anda masih ingat permainan origami yang pertama pada modul 1 (seperti pada Gambar 2.1)?
Apa yang telah Anda lakukan pada permainan tersebut merupakan contoh cara merepresentasikan algoritma secara verbal. Jadi, jika Anda menggunakan cara verbal dalam merepresentasikan algoritma, maka Anda akan memberikan instruksi dengan cara mengucapkan secara langsung sesuai dengan urutannya.
Gambar 2.1: Permainan origami pertama pada modul 1.
II.2. Grafik/Gambar
Cara representasi algoritma menggunakan grafik/gambar merupakan cara representasi algoritma yang memberikan instruksi dalam bentuk gambar-gambar yang mudah dimengerti dan gambar-gambar tersebut disusun dengan alur/urutan yang jelas. Beberapa contoh representasi algoritma dengan grafik/gambar dapat dilihat pada Gambar 2.2, 2.3, dan 2.4.
8
Algoritma & Pemrograman Representasi Algoritma
Gambar 2.2 menunjukkan contoh representasi algoritma dalam bentuk gambar yang disusun berdasarkan urutannya. Contoh ini sering dilihat pada origami dan telah Anda coba pada modul 1 untuk bentuk origami yang lain. Flowchart seperti yang ditunjukkan oleh Gambar 2.3 merupakan contoh representasi algoritma dalam bentuk gambar diagram alir yang sering digunakan untuk merepresentasikan algoritma dalam pemrograman komputer. Penggunaan flowchart dalam representasi algoritma mempunyai kelebihan dan kekurangannya sendiri. Detil tentang flowchart dapat Anda pelajari pada modul 4. Untuk merepresentasikan algoritma yang kompleks dan berorientasi objek, UML, seperti yang ditunjukkan Gambar 2.4, paling sering digunakan karena lebih fleksibel daripada flowchart.
Gambar 2.2: Origami.
Gambar 2.3: Flowchart.
9
Representasi Algoritma Algoritma & Pemrograman
Gambar 2.4: Unified Modelling Language (UML).
II.3. Teks
Sekitar satu dasawarsa terakhir, representasi dalam bentuk teks, atau yang disebut dengan pseudocode, sering digunakan untuk merepresentasikan algoritma pada buku teks dan makalah-makalah internasional dalam bidang Electrical & Computer Engineering dan Computer Science. Pseudocode adalah suatu bahasa, yang mengacu pada struktur bahasa pemrograman tingkat tinggi, yang digunakan secara ringkas dan informal untuk merepresentasikan algoritma, dikhususkan untuk dapat dimengerti manusia (human reading) secara mudah.
Contoh:“Bergantung pada apakah suatu tahun adalah tahun kabisat atau bukan, bagilah jumlah keseluruhan gaji setahun dengan nilai 366 untuk tahun kabisat dan 365 untuk tahun bukan kabisat, sehingga didapat jumlah gaji harian”
Representasi teks menggunakan pseudocode dari penyelesaian kasus tersebut adalah sebagai berikut:
if (tahun adalah tahun kabisat) then (jumlah harian ← jumlah keseluruhan dibagi 366)else (jumlah harian ← jumlah keseluruhan dibagi 365)
Catatan: kata-kata yang dicetak tebal merupakan keywords.
Ada beberapa hal yang perlu diperhatikan dalam merepresentasikan algoritma menggunakan pseudocode:
• Tidak ada standar penulisan, biasanya disesuaikan dengan bahasa pemrograman yang digunakan; walaupun begitu, ada recommended style yang diakui secara luas. Recommended style ini sering dikatakan sebagai de-facto standard.
• Karena tidak ada standar dialek, maka muncul banyak dialek, tergantung dari
10
Algoritma & Pemrograman Representasi Algoritma
penyusun algoritma: jika tidak hati-hati dalam berbahasa maka algoritma yang disusun akan membingungkan.
• Biasanya ditulis dalam bahasa Inggris, terutama keywords-nya.
Detil tentang pseudocode akan Anda pelajari pada modul 4.
III. Kesimpulan
Dari penjelasan tentang representasi algoritma, ada beberapa cara untuk merepresentasikan algoritma, yaitu:
1. representasi verbal2. representasi grafik3. representasi text
Pemilihan salah satu dari beberapa cara tersebut tergantung dari: (1) objek penerima algoritma (misalnya: apakah situasinya memungkinkan menggunakan gambar; apakah objek penerima dapat memahami kata-kata yang disampaikan secara oral dengan mudah; dan lain sebagainya), (2) kompleksitas problem (misalnya: apakah penyelesaian problem tersebut dapat dengan mudah direpresentasikan dalam bentuk grafis; dan lain sebagainya), dan (3) bahasa pemrograman yang digunakan (misalnya: apakah bahasa pemrograman yang digunakan adalah bahasa pemrograman terstruktur atau berorientasi objek; dan lain sebagainya).
Pertanyaan Review & Komitmen Belajar
I. Pertanyaan Review
1. Mengapa kita perlu mengerti dan menguasai teknik representasi algoritma?2. Sebutkan 3 cara merepresentasikan algoritma! Jelaskan!3. Bagaimana cara memilih/menggunakan salah satu dari 3 teknik representasi
algoritma?
II. Komitmen Belajar Mandiri
• Membaca buku referensi yang digunakan pada modul ini.• Memeriksa syllabus mata kuliah Algoritma dan Pemrograman untuk materi
selanjutnya.• Mempersiapkan diri untuk kuliah berikutnya.
PenutupMateri untuk kuliah berikutnya adalah sebagai berikut:
• Teknik menyusun algoritma.
11
Representasi Algoritma Algoritma & Pemrograman
Halaman ini sengaja dikosongkan
12
3Teknik Menyusun Algoritma
Tujuan PembelajaranSetelah mempelajari materi Teknik Menyusun Algoritma yang ada pada modul ini, Anda diharapkan dapat untuk:
➢ menjelaskan teknik menyusun algoritma yang mana algoritma tersebut akan diimplementasikan dalam suatu program komputer.
Metode dan Waktu PenyampaianMetode penyampaian:
• Lecturing• Reciprocal Learning• Contextual Learning
Waktu penyampaian: • Sesi pembelajaran: 40 menit.• Review & Komitmen Belajar: 10 menit.
ReferensiReferensi yang digunakan pada modul ini adalah sebagai berikut:
1. “An Introduction to Computer Science : An Algorithmic Approach”, Jean-Paul Tremblay - Richard B. Bunt, McGraw-Hill, 1981.
2. “Computer Science: an Overview”, 7th edition, J. Glenn Brookshear, Addison-Wesley, 2003, Chapter 4 and 6.
3. “Introduction to Algorithms”, 3rd edition, Thomas H. Cormen et.al., MIT Press, 2009, Chapter 1.
13
Teknik Menyusun Algoritma Algoritma & Pemrograman
Sesi-Sesi Pembelajaran
I. Review Materi Modul 2
Ada 3 cara merepresentasikan algoritma, yaitu:1. Representasi verbal.2. Representasi grafik/gambar.3. Representasi teks.
Pemilihan cara merepresentasikan algoritma tergantung dari objek penerima algoritma, kompleksitas problem, dan bahasa pemrograman yang digunakan.
II. Teknik Menyusun Algoritma
Setelah Anda mempelajari cara merepresentasikan algoritma, selanjutnya Anda akan diperkenalkan dengan teknik menyusun algoritma sehingga Anda dapat menyusun algoritma yang detil dengan mudah. Adapun teknik menyusun algoritma terdiri dari 6 tahap yang harus dikerjakan berurutan adalah seperti yang ditunjukkan oleh Gambar 3.1.
Gambar 3.1: Enam tahap dari teknik menyusun algoritma.
14
Understand the problem
Decide on the model of solution:Computational means, exact vs. approx. solving, data structure(s)
Design an algorithm
Prove Correctness
Analyze the algorithm
Code the algorithm
OK ?
OK ?
approach
design
If error
If error
Algoritma & Pemrograman Teknik Menyusun Algoritma
Contoh kasus:
Buatlah suatu program untuk menghitung luas bangun bujursangkar yang mana panjang sisi bujursangkar di-input-kan oleh user!
TAHAP 1: Understand the problem
Pada tahap pertama ini, Anda harus benar-benar memahami permasalahan yang sebenarnya agar solusi/penyelesaian yang dibuat, tidak menyimpang dan/atau menimbulkan masalah yang baru saat masalah tersebut diselesaikan.
Untuk kasus tersebut:Buatlah suatu program untuk menghitung luas bangun bujursangkar yang mana panjang sisi bujursangkar di- input -kan oleh user !
Permasalahan kasus tersebut adalah membuat program komputer yang dapat menghitung luas bangun bujursangkar dengan persyaratan user dapat meng-input-kan nilai sisi bujursangkar yang ingin dihitung luasnya. Tentu saja, hasil perhitungan luas tersebut ditampilkan pada layar monitor.
TAHAP 2: D ecide on the model of solution
Tahap kedua adalah menentukan model penyelesaian. Beberapa model penyelesaian yang sering digunakan adalah statistik, penyelesaian menggunakan rumus baku, metode numerik, struktur data atau tabel, dan lain sebagainya.
Untuk kasus tersebut, model penyelesaian perhitungan luas bangun bujursangkar adalah:
Luas bujursangkar = sisi x sisi
TAHAP 3 : Design the Algorithms
Pada tahap ini, algoritma mulai disusun berdasarkan pemahaman detil tentang problem yang akan diselesaikan dan model penyelesaian yang telah dipilih.
Untuk kasus menghitung luas bangun bujursangkar, algoritma penyelesaiannya yang direpresentasikan dalam bentuk flowchart adalah seperti yang ditunjukkan oleh Gambar 3.2.
15
Teknik Menyusun Algoritma Algoritma & Pemrograman
Gambar 3.2: Algoritma penyelesaian untuk kasus menghitung luas bangun bujursangkar dengan input user berupa nilai sisi bujur-sangkar tersebut.
TAHAP 4: Prove correctness
Tahap ini merupakan tahap untuk mencek apakah algoritma yang telah disusun tersebut sudah benar. Cara paling mudah untuk mencek kebenaran algoritma adalah dengan mencoba untuk menyelesaikan problem dengan algoritma yang telah disusun tersebut, yaitu:
Dengan memberikan beberapa input yang benar, tiap step dalam algoritma tersebut dikerjakan sesuai dengan urutannya, sehingga dihasilkan suatu output. Setelah itu, output tersebut diperiksa apakah telah sesuai dengan yang diharapkan.
Jika terjadi kesalahan, maka perlu diperbaiki baik itu dari sisi pendekatannya (decide on model of solution) maupun dari sisi desainnya (design an algorithm). Perlu diperhatikan, setelah perbaikan, Anda tetap harus mengikuti tahap-tahap sesuai dengan Gambar 3.1.
Untuk kasus menghitung luas bangun bujursangkar, misalnya dengan memberikan beberapa nilai sisi sebagai berikut: 1, 5, 10, 20, 100; didapatkan luas bujursangkar sebagai berikut: 1, 25, 100, 400, 10000. Luas bujursangkar yang didapatkan itu sesuai dengan kaidah geometri yang berlaku.
Tips: pemilihan input sangat menentukan proses prove correctness; sebisa mungkin pilihlah nilai input yang berpotensi menimbulkan permasalahan; misalnya: jika model penyelesaian yang digunakan menggunakan proses pembagian bilangan, gunakanlah nilai input 0 (nol) untuk mencek apakah terjadi pembagian dengan bilangan nol.
TAHAP 5: Analyze the algorithm
Setelah algoritma yang dibuat telah terbukti kebenarannya, selanjutnya adalah algoritma tersebut dianalisa apakah sudah efisien atau belum untuk bahasa pemrograman yang digunakan. Tujuan dari tahap ini adalah untuk mendapatkan suatu algoritma yang sederhana sehingga dapat menghemat waktu eksekusi (time) dan besar program (space). Jika
16
Algoritma & Pemrograman Teknik Menyusun Algoritma
ditemukan ketidaksederhanaan pada algoritma tersebut, maka perlu diperbaiki baik itu dari sisi pendekatannya (decide on model of solution) maupun dari sisi desainnya (design an algorithm). Perlu diperhatikan, setelah perbaikan, Anda tetap harus mengikuti tahap-tahap sesuai dengan Gambar 3.1.
Untuk kasus menghitung luas bangun bujursangkar, dilihat dari alur algoritmanya, ternyata alur tersebut sudah “to-the-point” dan tidak dapat disederhanakan lagi, jadi, sudah efisien.
TAHAP 6: Code the algorithm
Setelah mendapatkan algoritma yang efisien untuk bahasa pemrograman yang digunakan, tahap selanjutnya adalah menulis kode program dan meng-compile-nya untuk mendapatkan suatu executable file (program) yang siap untuk dieksekusi oleh komputer.
III. Kesimpulan
Teknik menyusun algoritma mempunyai 6 tahap, yaitu:1. Understand the problem2. Decide on model of solution3. Design the algorithm4. Prove correctness5. Analyze the algorithm6. Code the algorithm
Keenam tahap tersebut harus dikerjakan secara berurutan. Jika melakukan perbaikan pada tahap kedua atau ketiga, Anda harus mengerjakan kembali sesuai dengan urutannya mulai dari tahap yang mana perbaikan tersebut dikerjakan.
Pertanyaan Review & Komitmen Belajar
I. Pertanyaan Review
1. Sebutkan 6 tahap dari teknik menyusun algoritma!2. Apa yang harus dikerjakan jika ditemukan kesalahan pada pengujian tahap “prove
correctness” dan ketidaksederhanaan alur algoritma pada tahap “analyze the algorithm”?
II. Komitmen Belajar Mandiri
• Membaca buku referensi yang digunakan pada modul ini.• Memeriksa syllabus mata kuliah Algoritma dan Pemrograman untuk materi
selanjutnya.• Mempersiapkan diri untuk kuliah berikutnya.
PenutupMateri untuk kuliah berikutnya adalah sebagai berikut:
• Flowchart dan Pseudocode.
17
Teknik Menyusun Algoritma Algoritma & Pemrograman
Halaman ini sengaja dikosongkan
18
4Flowchart dan Pseudocode
Tujuan PembelajaranSetelah mempelajari materi Flowchart dan Pseudocode yang ada pada modul ini, Anda diharapkan dapat untuk:
➢ mendefinisikan flowchart dan pseudocode➢ menyebutkan simbol-simbol flowchart serta menjelaskan arti dan kegunaan masing-
masing simbol tersebut➢ menyebutkan reserved-word yang digunakan pada pseudocode serta menjelaskan
arti dan kegunaan masing-masing reserved-word tersebut➢ mengaplikasikan flowchart dan pseudocode untuk menuliskan algoritma dari suatu
problem-solving
Metode dan Waktu PenyampaianMetode penyampaian:
• Lecturing• Class Discussion• Cooperative Learning
Waktu penyampaian: • Sesi pembelajaran: 190 menit.• Review & Komitmen Belajar: 10 menit.
ReferensiReferensi yang digunakan pada modul ini adalah sebagai berikut:
1. Flowcharting, http://www.nos.org/htm/basic2.htm 2. Pseudocode, http://en.wikipedia.org/wiki/Pseudocode 3. Pseudocode Standard, J. Dalbey,
http://www.csc.calpoly.edu/~jdalbey/SWE/pdl_std.html 4. Pseudocode Guidelines, N. Nishimura,
http://www.cs.cornell.edu/Courses/cs482/2003su/5. Pseudocode Guide, Tim Whitford,
http://ironbark.bendigo.latrobe.edu.au/subjects/PE/2005s1/other_resources/pseudoco
19
Flowchart dan Pseudocode Algoritma & Pemrograman
de_guide.html 6. Introduction to Algorithm and Pseudocode,
http://www.rocw.raifoundation.org/management/bba/ComAwareness/lecture-notes/lecture-11.pdf
7. Pseudocode Programming Process, http://www.coderookie.com/2006/tutorial/the-pseudocode-programming-process/
8. Introduction to Programming in C++: Algorithms, Flowcharts, and Pseudocode, B. Daviduck, http://crystal.uta.edu/~cse1310/lab/program_intro.pdf
Sesi-Sesi Pembelajaran
I. Review Materi Modul 3
Teknik menyusun algoritma mempunyai 6 tahap, yaitu:1. Understand the problem2. Decide on model of solution3. Design the algorithm4. Prove correctness5. Analyze the algorithm6. Code the algorithm
Keenam tahap tersebut harus dikerjakan secara berurutan. Jika melakukan perbaikan pada tahap kedua atau ketiga, Anda harus mengerjakan kembali sesuai dengan urutannya mulai dari tahap yang mana perbaikan tersebut dikerjakan.
II. Catatan Khusus untuk Modul 4
Sesi ini berisi tentang pembahasan flowchart dan pseudocode yang lebih rinci lagi daripada sesi sebelumnya. Pembahasan tersebut meliputi hubungan flowchart dan pseudocode dengan algoritma, simbol-simbol pada flowchart beserta dengan penjelasan arti dan kegunaannya, reserved-word pada pseudocode beserta dengan penjelasan arti dan kegunaannya. Selain itu, juga dibahas tentang panduan dalam merepresentasikan algoritma dalam bentuk flowchart dan pseudocode dan pengaplikasian flowchart dan pseudocode untuk merepresentasikan algoritma.
Sesi ini terbagi menjadi 2 kali pertemuan, yaitu: sesi penyampaian materi dan sesi presentasi mahasiswa. Materi-materi yang tercantum pada modul ini diadopsi dengan di-edit seperlunya dari referensi-referensi yang telah disebutkan pada bagian Referensi. Petunjuk untuk mengerjakan modul 4 ini dapat dilihat pada bagian V.
III. Flowchart
III.1. Apa itu flowchart?
Flowchart adalah suatu sarana visual yang menyajikan aliran data mengenai sistem pengolahan informasi, operasi yang dilakukan dalam sistem tersebut, dan urutan operasi yang dilakukan dalam pengolahan informasi tersebut. Pada sesi ini, kita akan mempelajari tentang flowchart yang menggambarkan atau menjelaskan operasi-operasi apa saja serta urutan (sequence) dari operasi-operasi tersebut yang digunakan untuk memecahkan persoalan atau masalah yang diberikan. Flowchart dapat disamakan dengan cetak biru bangunan. Seperti kita ketahui desainer menggambar cetak biru sebelum memulai konstruksi pada bangunan. Demikian pula, seorang programmer lebih suka menggambar
20
Algoritma & Pemrograman Flowchart dan Pseudocode
diagram alur sebelum menulis program komputer. Seperti dalam kasus gambar cetak biru, flowchart digambar sesuai dengan aturan yang ditetapkan dan menggunakan simbol-simbol flowchart standar yang ditetapkan oleh American National Standard Institute, Inc. (ANSI).
III.2. Tujuan
Pada akhir sesi tentang flowchart ini, Anda akan dapat menjelaskan:• arti dari flowchart• dasar bagian-bagian flowchart seperti simbol flowchart dan garis aliran yang
menghubungkan simbol-simbol.• keunggulan dan keterbatasan dari flowchart
III.3. Maksud dan ruang lingkup dari flowchart
Flowchart adalah representasi diagram atau grafik yang menggambarkan urutan operasi yang akan dilakukan untuk mendapatkan solusi dari masalah. Flowchart biasanya digambar atau didesain pada tahap awal dari perumusan solusi untuk pemrograman komputer – walaupun flowchart dapat digunakan tidak terbatas hanya untuk pemrograman komputer–. Flowchart memfasilitasi komunikasi antara programmer dan orang-orang bisnis. Flowchart memainkan peran penting dalam pemrograman komputer untuk menyelesaiakan masalah dan cukup membantu dalam memahami logika dari masalah rumit dan panjang. Setelah flowchart digambar/dibuat, programmer akan menjadi lebih mudah untuk menulis program dalam bahasa tingkat tinggi. Seringkali kita melihat bagaimana flowchart sangat membantu dalam menjelaskan program ini kepada orang lain. Oleh karena itu, benar untuk mengatakan bahwa suatu flowchart merupakan suatu keharusan untuk dokumentasi yang lebih baik dari program yang kompleks.
III.4. Petunjuk untuk menggambar flowchart
Gambar 4.1: Simbol standar (ANSI) dari flowchart.
21
Start or end of the program
Computational steps or processing function of a program
Input or output operation
Decision making and branching
Connector or joining of two parts of program
Magnetic Tape
Magnetic Disk
Off-page connector
Flow line
Annotation
Display
Flowchart dan Pseudocode Algoritma & Pemrograman
Flowchart biasanya digambar menggunakan beberapa simbol standar, namun, beberapa simbol-simbol khusus juga dapat dikembangkan bila diperlukan. Beberapa simbol standar, yang sering dibutuhkan untuk menggambarkan flowchart seperti yang ditunjukkan pada Gambar 4.1.
Berikut ini adalah beberapa panduan dalam menggambar flowchart:(a) Untuk menggambar sebuah flowchart yang tepat, semua persyaratan yang
diperlukan harus tercantum dalam urutan logis.(b) Flowchart harus jelas, rapi, dan mudah diikuti. Tidak boleh ada ruang untuk
ambiguitas dalam memahami flowchart.(c) Arah aliran dari sebuah prosedur atau sistem pada umumnya adalah dari atas ke
bawah atau dari kiri ke kanan (Gambar 4.2).(d) Hanya satu garis aliran yang keluar dari simbol proses (Gambar 4.2).
Gambar 4.2: Arah aliran prosedur secara umum dan jumlah garis yang keluar dari simbol proses.
(e) Diperbolehkan hanya satu garis aliran yang masuk pada simbol keputusan (decision), tetapi diperbolehkan dua atau tiga garis aliran yang keluar dari simbol keputusan; satu garis aliran untuk setiap jawaban yang mungkin (Gambar 4.3).
Gambar 4.3: Contoh penempatan garis aliran pada simbol keputusan.
(f) Diperbolehkan hanya satu garis aliran yang digunakan bersama dengan simbol terminal (Gambar 4.4).
Gambar 4.4: Contoh penggunaan garis aliran pada simbol terminal.
(g) Penjelasan yang ditulis dalam simbol standar haruslah singkat dan jelas. Jika diperlukan, Anda dapat menggunakan simbol anotasi (annotation), seperti yang ditunjukkan oleh Gambar 4.5, untuk menggambarkan data dan langkah-langkah komputasi lebih jelas.
Gambar 4.5: Contoh penulisan simbol anotasi (annotation).
22
or
No
Yes
< 0 > 0
= 0
This is top secret data
Algoritma & Pemrograman Flowchart dan Pseudocode
(h) Jika flowchart menjadi kompleks, lebih baik untuk menggunakan simbol konektor untuk mengurangi jumlah garis aliran. Hindarilah persimpangan garis aliran jika Anda ingin membuat flowchart yang Anda gambar lebih efektif dan mudah dipahami.
(i) Pastikan flowchart yang digambar telah memiliki awal dan akhir yang logis atau masuk akal.
(j) Ujilah validitas flowchart yang selesai digambar/dibuat dengan data uji sederhana sebagai input.
III.5. Advantages of using flowcharts
Manfaat dari flowchart adalah sebagai berikut:1. Komunikasi: flowchart merupakan salah satu cara yang relatif lebih baik atau mudah
untuk menyampaikan gagasan, logika, atau alur kerja/proses dari suatu sistem kepada pihak lain.
2. Analisa yang efektif: dengan bantuan flowchart, masalah dapat dianalisa dengan cara yang lebih efektif.
3. Dokumentasi yang tepat: flowchart berfungsi sebagai dokumentasi program yang baik, yang diperlukan untuk berbagai tujuan seperti analisa program, pengembangan program, perbaikan program, dan lain sebagainya.
4. Efisien coding : flowchart digunakan sebagai pedoman atau cetak biru selama fase analisis sistem dan penulisan kode program.
5. Debugging yang tepat: flowchart membantu dalam proses debugging (mencari penyebab error/masalah program).
6. Pemeliharaan ( maintenance ) program yang efisien: Pemeliharaan program menjadi mudah dengan bantuan flowchart. Ini membantu programmer untuk melakukan maintenance program dengan lebih efisien.
III.6. Limitations of using flowcharts
Selain mempunyai berbagai manfaat seperti yang telah disebutkan pada bagian III.5, flowchart mempunyai beberapa keterbatasan dalam aplikasi, seperti:
1. Pada aplikasi yang memiliki logika yang kompleks/rumit, flowchart dapat menjadi kompleks/rumit, bahkan dapat menjadi tidak jelas alurnya sehingga akan membingungkan pihak lain yang ingin “membaca”-nya.
2. Jika diperlukan beberapa perubahan, flowchart mungkin akan seringkali perlu digambar ulang secara keseluruhan; tidak bisa digambar ulang hanya bagian yang diubah saja.
3. Karena flowchart merupakan simbol/gambar yang tidak dapat diketik, penyalinan atau penulisan flowchart akan dapat menjadi masalah tersendiri, dengan kata lain, akan membutuhkan waktu yang relatif lama dalam “menulis” flowchart.
4. Esensi dari apa yang dilakukan (what) dapat dengan mudah hilang dalam rincian teknis dari flowchart yang lebih menunjukkan tentang bagaimana hal itu dilakukan (how).
23
Flowchart dan Pseudocode Algoritma & Pemrograman
Latihan 1Isilah!
(i) Flowchart menunjukkan _________ yang akan dilakukan dan __________ dari yang akan dilakukan.
(ii) Alur dari flowchart umumnya dibaca dari _____________ ke ________________(iii) Simbol-simbol flowchart yang digunakan dihubungkan satu dengan yang lainnya
menggunakan ___________________(iv) Simbol keputusan dapat digunakan dalam menentukan ____________ atau
___________ dua item data.(v) ____________ digunakan untuk menggabungkan bagian-bagian terpisah dari
flowchart.(vi) ____________ konektor digunakan untuk menggabungkan ketika suatu flowchart
berakhir pada satu halaman dan mulai lagi pada halaman lain.(vii) Simbol ________ digunakan pada awal dan akhir suatu flowchart.(viii) Flowchart adalah salah satu cara terbaik untuk ________ program.(ix) Untuk menyusun flowchart, seseorang harus mematuhi simbol-simbol yang
ditentukan/distandarkan oleh __________ .(x) ____________ digunakan sebagai sebagai input dalam menguji validitas flowchart
yang telah selesai disusun.
III.7. Beberapa contoh penggunaan flowchart
Berikut ini ada 3 contoh penggunaan flowchart yang dapat membantu memahami flowchart lebih lanjut. Disarankan untuk mencoba untuk menjawab terlebih dahulu tanpa melihat jawabannya pada Gambar 4.6, 4.7, dan 4.8.
Contoh 1:Gambarlah flowchart yang merepresentasikan algoritma untuk mencari jumlah dari 50 angka bilangan asli yang pertama!Salah satu penyelesaian untuk contoh 1 dapat dilihat pada Gambar 4.6.
Contoh 2:Gambarlah flowchart yang merepresentasikan algoritma untuk mencari yang terbesar di antara 3 bilangan (A, B, dan C) yang di-input-kan!Salah satu penyelesaian untuk contoh 2 dapat dilihat pada Gambar 4.7.
Contoh 3:Gambarlah flowchart yang merepresentasikan algoritma untuk menghitung faktorial bilangan N, yang mana, N! = 1 x 2 x 3 x … x N.Salah satu penyelesaian untuk contoh 3 dapat dilihat pada Gambar 4.8.
24
Algoritma & Pemrograman Flowchart dan Pseudocode
No
Yes
Gambar 4.6: Algoritma untuk jumlah dari 50 bilangan asli yang pertama.
Yes No Yes Yes
No No
Gambar 4.7: Algoritma untuk mencari yang terbesar dari antara 3 bilangan input.
25
START
SUM = 0
N = 0
N = N + 1
SUM = SUM + N
IS N>50 N=50?
Display SUM
END
START
Input A, B, C
IS B>C? IS A>B? IS A>C?
Display B Display C Display C Display A
END
Flowchart dan Pseudocode Algoritma & Pemrograman
No
Yes
Gambar 4.8: Algoritma untuk menghitung N!
Latihan 2Jawablah!
(i) Apa nama dan kegunaan dari simbol-simbol flowchart berikut ini:(a) (b) (c) (d) (e)
(ii) Sebutkan definisi dari flowchart!
III.8. Apa yang sudah dipelajari?
Sejauh ini, kita telah belajar tentang kelebihan dan keterbatasan dari flowchart. Selain itu, kita juga telah mencoba berlatih menggunakan flowchart untuk 3 contoh persoalan matematis sederhana. Untuk selanjutnya, sebelum kita membahas pseudocode, kerjakanlah 5 soal pendalaman pada III.9! Kelima soal ini dikerjakan dan dipresentasikan secara berkelompok pada pertemuan berikutnya.
26
START
Input N
M = 1F = 1
F = F * M
IS M=N?
Display F
END
M=M+1
Algoritma & Pemrograman Flowchart dan Pseudocode
III.9. Soal pendalaman
1. Gambarlah flowchart yang merepresentasikan algoritma untuk mendapatkan input suatu bilangan N, lalu menampilkan semua bilangan pembaginya!
2. Gambarlah flowchart yang merepresentasikan algoritma untuk menghitung jumlah dari angka-angka digit dari suatu bilangan yang di-input-kan!
3. Gambarlah flowchart yang merepresentasikan algoritma untuk mencari jumlah dari sejumlah bilangan yang di-input-kan!
4. Gambarlah flowchart yang merepresentasikan algoritma untuk menghitung jumlah dari bilangan 1 sampai 50 yang telah dikuadratkan!
5. Gambarlah flowchart yang merepresentasikan algoritma untuk menyusun urutan bilangan yang di-input-kan mulai dari yang terkecil!
IV. Pseudocode Standard
IV.1. Pengenalan pseudocode
Pseudocode (berasal dari kata pseudo dan code)1 adalah deskripsi tingkat tinggi dari algoritma pemrograman komputer yang kompak dan informal, menggunakan konvensi struktural bahasa pemrograman tetapi menghilangkan rincian subrutin, deklarasi variabel, dan sintaks dari bahasa pemrograman yang spesifik/tertentu. Dengan kata lain, pseudocode mirip dengan bahasa pemrograman, hanya saja, selain penghilangan rincian-rincian spesifik/khusus dari bahasa pemrograman, pseudocode juga ditambah dengan deskripsi bahasa yang mudah dipahami dan nyaman bagi manusia serta dengan notasi matematika yang ringkas, jika diperlukan. Tujuan menggunakan pseudocode daripada menggunakan sintaks dari bahasa pemrograman adalah supaya mudah bagi manusia untuk membaca tanpa harus menguasai bahasa pemrograman tertentu. Jadi, penulisan pseudocode tidak berdasarkan bahasa pemrograman tertentu, tidak ditujukan untuk bahasa pemrograman tertentu (environment-independent), atau pseudocode merupakan deskripsi umum, sehingga tidak ada standar baku untuk sintaks dari pseudocode, walaupun, ada rekomendasi atau kesepakatan dalam menuliskan pseudocode.
Pseudocode umumnya menggunakan semacam bahasa Inggris terstruktur untuk merepresentasikan algoritma. Hal ini memungkinkan seorang penyusun algoritma untuk fokus pada logika algoritma tanpa terganggu oleh detail dari sintaks bahasa pemrograman. Penulisan pseudocode perlu cukup detil, mendeskripsikan dengan detil langkah demi langkah logika dari algoritma sehingga implementasi pseudocode ke dalam kode program akan mudah, biasanya dapat dilakukan dengan rasio 1:1, maksudnya, 1 baris pseudocode untuk 1 baris kode program. Secara umum, kosakata yang digunakan dalam penyusunan pseudocode dari domain problem/masalah, bukan dari domain implementasi, seperti yang dicontohkan berikut ini:
Extract the next word from the line → GOOD!set word to get next token → POOR!
Append the file extension to the name → GOOD!name = name + extension → POOR!
FOR all the characters in the name → GOOD!FOR character = first to last → OK
1 “Pseudo” means imitation or false and “code” refers to the instructions written in a programming language. Pseudocode, therefore, is an imitation of actual computer instructions.
27
Flowchart dan Pseudocode Algoritma & Pemrograman
Dari contoh tersebut, terlihat bahwa pseudocode yang baik menggunakan kosakata yang mudah dipahami oleh manusia, bukan kosakata yang terlalu teknis, misalnya, lebih baik menggunakan kata “line” daripada “token”, dan seterusnya. Pseudocode harus merupakan narasi atau petunjuk untuk seseorang yang tahu kebutuhan untuk menyelesaikan masalah (domain masalah) dan mencoba untuk mencari bagaimana solusinya.
Mengapa menggunakan pseudocode? Pseudocode lebih merinci algoritma yang biasanya disusun menggunakan bahasa informal yang lebih bersifat abstrak sehingga kode program yang disusun akan lebih tepat, sesuai dengan desain algoritma yang diinginkan. Ketidaktepatan dalam penyusunan kode program sering disebabkan oleh ketidakpahaman programmer terhadap representasi algoritma yang telah dituliskan oleh desainer algoritma –biasanya dalam proyek besar, programmer tidak merangkap tugas sebagai desainer algoritma, sehingga programmer sering harus meluangkan waktu yang cukup banyak untuk mencoba menentukan rincian algoritma yang tepat untuk penyusunan kode program–. Jadi, tujuan representasi algoritma menggunakan pseudocode adalah menyediakan algoritma yang cukup rinci untuk memfasilitasi proses analisis algoritma untuk penulisan kode program yang efektif dan efisien (biasanya sering disebut “good” algorithm), tetapi tetap tidak menggunakan sintaks yang spesifik untuk bahasa pemrograman.
Masing-masing desainer algoritma memiliki gaya pribadi dalam menyusun representasi algoritma menggunakan pseudocode. Pseudocode tidak menggunakan bahasa yang baku/standar untuk komputer, karena pseudocode ditujukan untuk dibaca oleh orang lain, bukan oleh komputer. Selain itu, tidak ada "standar" universal dari penyusunan pseudocode untuk industri, tetapi yang ada adalah panduan instruksional (recommended style) yang akan sangat membantu jika kita semua mengikuti gaya yang serupa. Format yang ditunjukkan pada IV.2 direkomendasikan untuk diikuti dalam “mengekspresikan solusi” dalam bentuk representasi pseudocode.
IV.2. Bagian terstruktur dari peudocode
Bagian terstruktur dari pseudocode menggunakan enam sintaks/notasi khusus untuk mewakili konstruksi dari pemrograman yang terstruktur, yaitu: SEQUENCE, WHILE, IF-THEN-ELSE, REPEAT-UNTIL, FOR, dan CASE. Masing-masing konstruksi tersebut dapat disusun bertingkat atau berada di dalam (embedded) konstruksi lainnya. Konstruksi terstruktur ini mewakili logika atau aliran kontrol dalam algoritma.
Dalam penggunaan, umumnya, konstruksi tiga struktur dasar berikut ini yang cukup sering diterapkan dalam merepresentasikan algoritma:
SEQUENCE mengindikasikan bahwa suatu tugas (task) atau penyelesaian dikerjakan kemudian dilanjutkan dengan mengerjakan tugas atau penyelesaian berikutnya secara berurutan.
WHILE merupakan perulangan (loop) yang menggunakan syarat atau tes kondisi pada bagian awal perulangan.
IF-THEN-ELSE adalah suatu bentuk yang mengindikasikan pilihan atau keputusan (decision) yang mana pilihan tersebut ditentukan dari dua alternatif penyelesaian yang tersedia berdasarkan suatu kondisi atau syarat.
28
Algoritma & Pemrograman Flowchart dan Pseudocode
Meskipun ketiga konstruksi yang umum tersebut itu cukup dalam merepresentasikan algoritma untuk pemrograman terstruktur, konstruksi berikut ini juga sering digunakan:
REPEAT-UNTIL merupakan perulangan (loop) dengan pengecekan kondisi atau syarat pada akhir perulangannya.
CASE adalah percabangan yang mempunyai banyak alternatif atau cabang penyelesaian berdasarkan kondisi atau ekspresi yang dinilai atau diuji. CASE merupakan bentuk yang lebih umum dari IF-THEN-ELSE.
FOR adalah perulangan yang menggunakan “counter” ("counting" loop).
IV.2.1. SEQUENCEKontrol urutan (sequential) ditunjukkan dengan menulis aksi (action), tugas, atau penyelesaian satu demi satu yang mana setiap tugas ditulis per baris dan semua tugas ditulis selaras menggunakan indentasi yang sama. Tugas-tugas tersebut dikerjakan dalam urutan (atas ke bawah), sesuai urutan tugas-tugas tersebut ditulis/disusun. Contoh (untuk tugas non-komputer):
Menggosok gigiMencuci mukaMenyisir rambutTersenyumlah di depan cermin … :-)
Contoh lain (dapat digunakan dalam pemrograman komputer):
READ panjang persegi panjang READ lebar persegi panjangCOMPUTE luas persegi panjang
Beberapa kata kunci (keywords) yang umum/sering digunakan untuk menunjukkan input, output, dan pemrosesan data:
Input: READ, OBTAIN, GET Output: PRINT, DISPLAY, SHOW Pemrosesan data: COMPUTE, CALCULATE, DETERMINE Inisialisasi: SET, INIT Tambah satu: INCREMENT, BUMP
29
Flowchart dan Pseudocode Algoritma & Pemrograman
IV.2.2. IF-THEN-ELSEPilihan benar atau salah (kondisi Boolean) ditunjukkan menggunakan empat kata kunci, yaitu: IF, THEN, ELSE, dan ENDIF. Bentuk umumnya adalah:
IF condition THEN sequence 1
ELSE sequence 2
ENDIF
Kata kunci ELSE dan "sequence 2" adalah opsional. Jika kondisi benar, “sequence 1” dikerjakan, sebaliknya, jika kondisi salah, “sequence 2” yang dikerjakan. contoh:
IF HoursWorked > NormalMax THEN Display overtime message
ELSE Display regular time message
ENDIF
IV.2.3. WHILEWHILE digunakan untuk menspesifikasikan perulangan (loop) dengan pengecekan kondisi/syarat di awal loop. Awal dan akhir dari loop ditandai oleh dua kata kunci, yaitu: WHILE dan ENDWHILE. Bentuk umum adalah:
WHILE condition sequence
ENDWHILE
Loop akan “dimasuki” atau dikerjakan hanya jika kondisi benar (sering disebut dengan iterasi). "Sequence" dilakukan untuk setiap iterasi. Pada akhir setiap iterasi, kondisi dievaluasi ulang dan loop terus “dimasuki” selama kondisi benar. Contoh penggunaan WHILE:
WHILE Population < Limit Compute Population as Population + Births - Deaths
ENDWHILE
Contoh lain:
WHILE employee.type NOT EQUAL manager AND personCount < numEmployees INCREMENT personCount CALL employeeList.getPerson with personCount RETURNING employee
ENDWHILE
30
Algoritma & Pemrograman Flowchart dan Pseudocode
IV.2.4. CASECASE digunakan untuk struktur yang membutuhkan percabangan yang banyak, biasanya, lebih dari 2 cabang, berdasarkan kondisi yang mutually exclusive, maksudnya, akses masing-masing cabang ditentukan oleh nilai (value) dari ekspresi (expression) yang sama. Struktur ini memiliki empat kata kunci, yaitu: CASE, OF, OTHERS, dan ENDCASE, serta kondisi (conditions) yang digunakan untuk menunjukkan berbagai alternatif dari expression. Bentuk umum dari struktur CASE adalah:
CASE expression OF condition 1: sequence 1 condition 2: sequence 2 ... condition n: sequence n OTHERS: default sequence
ENDCASE
Klausa OTHERS yang diikuti dengan kata kunci default adalah opsional. Condition biasanya ditulis dalam angka atau karakter yang menunjukkan nilai dari expression, tapi condition bisa dalam bentuk pernyataan atau beberapa notasi lain yang merupakan kondisi (nilai dari expression) yang mana sequence akan dieksekusi. Suatu sequence tertentu dapat berkaitan dengan lebih dari satu condition. Contoh penggunaan CASE:
CASE Title OFMr : Print "Mister"Mrs : Print "Missus"Miss : Print "Miss"Ms : Print "Mizz"Dr : Print "Doctor"
ENDCASE
Contoh lain:
CASE grade OFA : points = 4B : points = 3C : points = 2D : points = 1F : points = 0
ENDCASE
IV.2.5. REPEAT-UNTILLoop ini mirip dengan WHILE, hanya saja pengecekan kondisi dilakukan pada bagian bawah loop, bukan pada bagian atas. Struktur ini memiliki dua kata kunci, yaitu: REPEAT dan UNTIL. Bentuk umum dari struktur REPEAT-UNTIL adalah:
REPEAT sequence
UNTIL condition
“Sequence” pada struktur loop ini selalu dilakukan setidaknya sekali, karena pengecekan kondisi dilakukan setelah iterasi pertama dieksekusi. Pada akhir setiap iterasi, kondisi
31
Flowchart dan Pseudocode Algoritma & Pemrograman
dievaluasi, dan loop akan diulang jika kondisi adalah salah. Loop berakhir ketika kondisi menjadi benar.
IV.2.6. FORStruktur loop ini dikhususkan untuk iterasi yang dijalankan dalam jumlah tertentu, sering disebut dengan perulangan yang "menghitung" (“counter” loop). Struktur ini mempunyai dua kata kunci, yaitu FOR dan ENDFOR. Bentuk umum dari FOR loop adalah:
FOR iteration bounds sequence
ENDFOR
Untuk representasi algoritma yang dapat menggunakan kalimat yang lebih mudah dimengerti, lebih baik dalam menuliskan iteration bounds menggunakan kalimat tersebut. Contoh:
FOR each month of the year → GOOD!FOR month = 1 to 12 → OK
FOR each employee in the list → GOOD!FOR empno = 1 to listsize → OK
IV.2.7. Nested constructsStruktur perulangan (loop) dan percabangan (decision dan branch) dapat disusun bertingkat (nested) dalam satu sama lain. Untuk memperjelas susunan bertingkatnya, disarankan untuk menggunakan indentasi. Struktur bertingkat yang diindentasi dengan jelas akan mempermudah kita untuk melakukan evaluasi algoritma dan memudahkan programmer memahami algoritma yang telah disusun tersebut. contoh:
SET total to zeroREPEAT
READ Temperature IF Temperature > Freezing THEN
INCREMENT total ENDIF
UNTIL Temperature < zero PRINT total
Pada contoh tersebut, IF disusun di dalam REPEAT-UNTIL. Dengan indentasi seperti pada contoh tersebut, algoritma yang disusun bertingkat akan mudah dipahami.
32
Algoritma & Pemrograman Flowchart dan Pseudocode
IV.2.8. Pemanggilan subrutinJika algoritma yang disusun membutuhkan subrutin (subroutine, function, atau procedure), kita menggunakan kata kunci CALL untuk merepresentasikan panggilan ke subrutin dengan pseudocode. Sebagai contoh:
CALL AvgAge with StudentAges CALL Swap with CurrentItem and TargetItem CALL Account.debit with CheckAmount CALL getBalance RETURNING aBalance CALL SquareRoot with orbitHeight RETURNING nominalOrbit
Pada contoh yang kelima, dibutuhkan pemanggilan subrutin “SquareRoot” dengan parameter (beberapa orang sering menyamakan parameter untuk subrutin adalah input bagi subrutin) “orbitHeight” dan return value dari subrutin (beberapa orang sering menyamakan return dengan output) tersebut adalah “nominalOrbit”.
IV.2.9. EXCEPTION HANDLINGRepresentasi pseudocode untuk penanganan exceptions seperti events dan interrupts. Contoh:
BEGIN statements EXCEPTION
WHEN exception type statements to handle exception
WHEN another exception type statements to handle exception
END
IV.3. Kelebihan & keterbatasan pseudocode
Berikut ini adalah beberapa kelebihan atau keuntungan menggunakan pseudocode:1. Konversi pseudocode ke bahasa pemrograman jauh lebih mudah daripada konversi
dari flowchart.2. Dibandingkan dengan flowchart, pseudocode lebih mudah untuk dimodifikasi ketika
kode program perlu dimodifikasi.Keterbatasan dari representasi pseudocode adalah sebagai berikut:
1. Tidak ada representasi grafik saat kita menggunakan pseudocode, sehingga, bagi beberapa orang, dengan tidak adanya bantuan dari grafik/gambar, pseudocode mungkin lebih sulit dipahami.
2. Tidak ada aturan standar dalam menuliskan pseudocode. Lain programmer atau desainer algoritma, lain pula gaya penulisan pseudocode, sehingga, dimungkinkan ada kekurangpahaman dalam mempelajari algoritma yang direpresentasikan menggunakan pseudocode. Untuk pemula, lebih sulit untuk mengikuti alur logika atau menulis pseudocode dibandingkan dengan mengikuti alur logika atau menulis flowchart.
33
Flowchart dan Pseudocode Algoritma & Pemrograman
IV.4. Contoh-contoh penulisan Pseudocode
Contoh pertama penulisan pseudocode yang “cukup dapat diterima” (dengan kata lain, seharusnya bisa lebih baik dari ini):
FOR X = 1 to 10 FOR Y = 1 to 10
IF gameBoard[X][Y] = 0 Do nothing
ELSE CALL theCall(X, Y) (recursive method) increment counter
ENDIFENDFOR
ENDFOR
Contoh kedua penulisan pseudocode yang lebih baik dari contoh pertama:
Set moveCount to 1 FOR each row on the board
FOR each column on the board IF gameBoard position (row, column) is occupied THEN
CALL findAdjacentTiles with row, columnINCREMENT moveCount
ENDIF ENDFOR
ENDFOR
Catatan: pada contoh kedua ini, susunan logika diatur ulang sehingga “do nothing” yang ada pada contoh pertama dapat dihilangkan.
»»» Untuk kasus yang berbeda dengan contoh pertama dan kedua ...Contoh yang tidak tepat bahkan cenderung membingungkan untuk penulisan pseudocode:
FOR all the number at the back of the array SET Temp equal the addition of each number IF > 9 THEN get the remainder of the number divided by 10 to that
index and carry the "1" Decrement one
Do it again for numbers before the decimal
Contoh yang cukup baik, tapi kurang sempurna:
SET Carry to 0 FOR each DigitPosition in Number from least significant to most significant
COMPUTE Total as sum of FirstNum[DigitPosition] and SecondNum[DigitPosition] and Carry
IF Total > 10 THEN SET Carry to 1 SUBTRACT 10 from Total
ELSE
34
Algoritma & Pemrograman Flowchart dan Pseudocode
SET Carry to 0 ENDIF STORE Total in Result[DigitPosition]
ENDFOR IF Carry = 1 THEN
RAISE Overflow exception ENDIF
Contoh penulisan pseudocode yang “samar-samar”, kurang jelas:
#1 Create the scenario by picking 3 random cards from the deck.Remove those three cards from the deck.Randomly distribute the remaining cards from the deck to each player.
Catatan: pada contoh ini, penulisan tidak menjelaskan lebih rinci apa sebenarnya yang dimaksud, misalnya: Berapa banyak kartu yang dibagikan kepada masing-masing pemain? Berapa sisa kartu (remaining cards) yang tersisa? Berapa banyak pemain? Dapatkah semua kartu yang tersisa dibagikan kepada setiap pemain dalam jumlah yang sama?
#2 IF the player is disconnected THEN
The computer determines the refutationELSE
Send suggestion to playerENDIF
Catatan: pada contoh ini, apa informasi/saran (suggestion) yang dikirimkan kepada pemain?
Contoh penulisan yang terlalu detil/spesifik:FOR i = 1 to 24
Add Rainfall[i] to TotalENDFOR
Contoh penulisan yang lebih baik untuk loop:
FOR each hour of the dayAdd Rainfall[i] to Total
ENDFOR
IV.5. Tips untuk menulis pseudocode
Beberapa tips yang berguna (dikutip dari buku “Code Complete”, 2nd Edition, yang ditulis oleh Steve McConnell) tentang cara menulis pseudocode tersebut:
1. Menggunakan kata-kata seperti kata-kata dalam bahasa yang digunakan sehari-hari untuk mendeskripsikan kode.
2. Tidak menggunakan unsur sintaks spesifik dari bahasa pemrograman.3. Pseudocode harus ditulis dengan pola pikir "apa" bukan "bagaimana".4. Harus pada “tingkat cukup rendah” sehingga memungkinkan programmer untuk
menulis tiap baris kode progam berdasarkan tiap baris pada pseudocode.
35
Flowchart dan Pseudocode Algoritma & Pemrograman
IV.6. Flowchart dan Pseudocode
Ada dua “tools” yang biasa digunakan untuk membantu merepresentasikan logika atau alur berpikir program (algoritma), yaitu: flowchart dan pseudocode. Umumnya, flowchart bekerja dengan baik untuk masalah atau kasus sederhana tapi pseudocode digunakan untuk masalah atau kasus yang lebih kompleks. Dengan flowchart, langkah-langkah penting dari sebuah algoritma ditampilkan dalam bentuk gambar, seperti yang telah ditunjukkan pada bagian III. Aliran data antar langkah-langkah ditunjukkan oleh garis dengan arah panah. Berikut ini contoh penggunaan flowchart dan pseudocode untuk merepresentasikan algoritma penghitungan bunga atas pinjaman:
Flowchart Pseudocode
Read NAME, BALANCE, RATECompute INTEREST as BALANCE x RATEWrite (Display) NAME and INTEREST
Dapat dilihat bahwa pseudocode juga menjelaskan langkah-langkah penting yang harus diambil, tapi tanpa adanya gambar.
36
Algoritma & Pemrograman Flowchart dan Pseudocode
Contoh lain dari penggunaan flowchart dan pseudocode untuk merepresentasikan algoritma yang sama ditunjukkan berikut ini. Pada contoh ini, direpresentasikan algoritma program untuk menghitung hasil penjumlahan, rata-rata, dan hasil perkalian dari tiga angka yang di-input-kan.
Flowchart Pseudocode
Read X, Y, ZCompute Sum (S) as X + Y + ZCompute Average (A) as S / 3Compute Product (P) as X x Y x ZWrite (Display) the Sum, Average and
Product
Logika keputusan (atau switching logic) terdiri dari dua komponen, yaitu: kondisi (condition) dan perintah “go to” yang tergantung pada hasil pengecekan kondisi. Komputer dapat menentukan nilai kebenaran dari pernyataan yang melibatkan salah satu dari enam relasi matematika disimbolkan (untuk bahasa C/C++) seperti yang ditunjukkan berikut ini:
Symbol Meaning
== Equals
!= Not Equal
< Less than
<= Less than or equal to
> Greater than
>= Greater than or equal to
Dalam flowchart, simbol berbentuk “berlian” (bentuk bangun belah ketupat) digunakan untuk menunjukkan keputusan (decision). Bagian pertanyaan ditempatkan di dalam simbol sedangkan setiap jawaban alternatif untuk pertanyaan tersebut dituliskan sebagai label pada panah keluar yang mengarah ke langkah berikutnya sesuai algoritma. Simbol keputusan adalah satu-satunya simbol yang diperbolehkan memiliki lebih dari satu arah/jalur/pintu
37
Flowchart dan Pseudocode Algoritma & Pemrograman
keluar. Contoh berikut ini menunjukkan flowchart dan pseudocode yang sama untuk merepresentasikan algoritma dari sebuah program yang menerima input berupa dua angka lalu menampilkan angka dalam urutan dari yang besar ke kecil (descending):
Flowchart Pseudocode
Read A, BIf A is less than B BIG = B SMALL = Aelse BIG = A SMALL = BWrite (Display) BIG, SMALL
I V.7. Soal pendalaman
Untuk soal yang sama pada III.9, tuliskan kembali algoritma yang telah Anda susun menggunakan pseudocode!
V. Panduan Mahasiswa
Pada sesi penyampaian materi, silakan Anda berkolaborasi dengan rekan-rekan Anda dalam satu kelompok yang telah dibentuk sebelumnya untuk mendiskusikan materi yang telah disampaikan! Hasil diskusi ini dituliskan sebagai jurnal perorangan. Selanjutnya, lakukanlah brainstorming dalam kelompok untuk mengerjakan soal pendalaman III.9 dan IV.7 (masing-masing kelompok harus mempunyai dokumentasi proses brainstorming, dituliskan dalam file laporan tugas)! Diskusikanlah hasil brainstorming kelompok untuk mendapatkan jawaban kelompok dari Terminal Question tersebut, kemudian, buatlah file laporan tugas dan presentasi kelompok tentang jawaban tersebut untuk dipresentasikan di forum diskusi kelas! File laporan (harus dalam format PDF) kelompok, file presentasi, dan jurnal perorangan (harus dalam format PDF) harus Anda upload ke E2LS pada link yang ditentukan oleh dosen pengampu sebelum batas waktu yang ditentukan oleh dosen pengampu. Ketiga file tersebut dikompresi dahulu hanya dengan format ZIP.
VI. Forum Diskusi Kelas/Presentasi
Forum ini merupakan sesi presentasi mahasiswa. Masing-masing kelompok mempunyai waktu sekitar 20 menit untuk mempresentasikan hasil kerja kelompok yang berupa jawaban soal pendalaman dan menanggapi respon dari audience. Setelah seluruh kelompok telah mempresentasikan hasil kerja kelompok, dosen pengampu akan melakukan wrap-up tentang hasil presentasi dan proses yang terjadi dalam forum diskusi ini. Di akhir sesi
38
Algoritma & Pemrograman Flowchart dan Pseudocode
presentasi mahasiswa, Anda diwajibkan menuliskan jurnal perorangan yang berisi tentang laporan hasil pembelajaran Anda pribadi selama sesi presentasi serta mengisi form penilaian kelompok untuk menilai kinerja dari anggota kelompok Anda.
VII. Kesimpulan
Flowchart merupakan suatu representasi algoritma yang digambarkan dalam bentuk diagram yang masing-masing simbol dihubungkan antara satu dengan yang lainnya menggunakan anak panah, yang mana, arah anak panah itu merupakan arah dari sequence algoritma. Representasi ini lebih mudah dipelajari oleh beginners dan cocok untuk merepresentasikan algoritma yang tidak kompleks. Jika algoritma yang disusun mempunyai tingkat kompleksitas tinggi, disarankan menggunakan pseudocode. Pseudocode merupakan suatu representasi teks dari algoritma; biasanya menggunakan reserved-word yang mirip dengan bahasa pemrograman dan dapat dipetakan 1:1 antara algoritma dengan kode program. Representasi ini cenderung lebih mudah digunakan jika penyusun algoritma dan yang membaca algoritma tersebut telah menguasai minimal satu bahasa pemrograman.
Pertanyaan Review & Komitmen Belajar
I. Pertanyaan Review
1. Untuk pertanyaan review tentang flowchart, silakan Anda menggunakan In-Line Question 1 dan In-Line Question 2 sebagai pertanyaan review !
2. Apakah pseudocode itu?3. Berikan beberapa contoh format pseudocode yang disarankan!4. Sebutkan beberapa tips untuk menuliskan pseudocode!
II. Komitmen Belajar Mandiri
• Membaca buku referensi yang digunakan pada modul ini.• Memeriksa syllabus mata kuliah Algoritma dan Pemrograman untuk materi
selanjutnya.• Mempersiapkan diri untuk kuliah berikutnya.
PenutupMateri untuk kuliah berikutnya adalah sebagai berikut:
• LEGO Mindstorms NXT-G dan Challenge Game.
39
Flowchart dan Pseudocode Algoritma & Pemrograman
Lampiran Modul 4
Pseudocode Translation Quick Reference Guide
Category Pseudocode C/C++ Source Code Equivalent
(Basic)Data types
Integer Floating Point Character
int, long float, double char
Module declarations
moduleName (parameter list if any) Statement(s)END
NB: Parameter list should also indicate whether the parameter(s) is being received or returned e.g.
SubAlgoritmTotal(receives num1 and num2,returns total)
void moduleName(parameter list if any){ Statement(s);}
OR
datatype moduleName(parameter list if any){ Statement(s); return value;}
Variable declaration
Let variableName1 store a datatypevalue
datatype variableName1;
Constant declaration
CONSTNAME = value
OR
CONSTNAME ← value
NB: It is convention to use all uppercase characters when naming constants to distinguish them from variables.
Const datatype CONSTNAME = value;
Assigning Values
SET variableName TO value
OR
VariableName = value
OR
VariableName ← value
VariableName = value;
Conditional Operators
operand1 = operand2operand1 NOT = operand2operand1 < operand2operand1 > operand2operand1 <= operand2operand1 >= operand2
NB: The alternative is to express theoperators in text e.g.
operand1 greater than or equal to operand2
(operand1 == operand2)(operand1 != operand2)(operand1 < operand2)(operand1 > operand2)(operand1 <= operand2)(operand1 >= operand2)
Logical Operators
operand1 AND operand2operand1 OR operand2NOT operand1
(operand1 && operand2)(operand1 || operand2)!(operand1)
40
Algoritma & Pemrograman Flowchart dan Pseudocode
Category Pseudocode C/C++ Source Code Equivalent
Selection IF (condition) THEN True statement(s) blockELSE False statement(s) blockENDIF
if (condition){
True statement(s) block;}else{
False statement(s) block;}
Case/Switch CASE single_variable OF value_1 : statement block_1 value_2 : statement block_2 … value_n : statement block_n OTHERS : default statement block_oENDCASE
switch (single_variable){ case value_1 : statement block_1; break; case value_2 : statement block_2; break; … case value_n : statement block_n; break; default : statement block_o;}
WHILEDORepetition
WHILE (condition) statement(s)ENDWHILE
while (condition){ statement(s);}
DOWHILERepetition
DO statement(s)WHILE (condition)
do{ statement(s);}while (condition);
RepeatUntilRepetition
Repeat statement(s)Until (condition)
do{ statement(s);}while !(condition);
For loopRepetition
FOR counter = begin TO end statement(s)ENDFOR
OR
FOR iteration bound statement(s)ENDFOR
for (counter=begin;counter<=end;counter++){ statement(s);}
RecordStructures
recordName fieldname1 fieldname2 … fieldnameN
struct recordName{ datatype fieldname1; datatype fieldname2; … datatype fieldnameN;}
SequentialFiles READING
Initial processingREAD variableNameWHILE NOT EOF … READ variableNameENDWHILEFinal processing
#include <fstream.h>…ifstream inFileHandle;…inFileHandle.open(“sourcefile”);while(!inFileHandle.eof()){ … inFileHandle >> variableName;}inFileHandle.close();
41
Flowchart dan Pseudocode Algoritma & Pemrograman
Category Pseudocode C/C++ Source Code Equivalent
SequentialFiles WRITING
WRITE variableName #include <fstream.h>…ofstream outFileHandle;…outFileHandle.open(“sourcefile”);…outFileHandle << variableName << “ ”;…outFileHandle.close();
Declaring 1D Arrays
SET arrayName(maxNumElements) datatype arrayName[maxNumElements];
Declaring 2D Arrays
SET arrayName(rows,columns) datatype arrayName[rows][columns];
ArrayProccessingASSIGNING A VALUE
arrayName(index) = value
OR
arrayName(index) ← value
arrayName[index] = value;
OR
arrayName[index] ← value;
ArrayProccessingREADING A VALUE
VariableName = arrayName(index)
OR
VariableName ← arrayName(index)
variableName = arrayName[index];
OR
variableName ← arrayName[index];
Diadopsi dari “Simple Programming Design”, 4th Edition, yang ditulis oleh Lesley Anne Robertson
42