modul_kuliah_20120905.pdf

48
61B012 Algoritma & Pemrograman Modul Kuliah Henry Hermawan, S.T., M.Sc. Jurusan Teknik Elektro Fakultas Teknik Universitas Surabaya 2012

Upload: itha-masyhta

Post on 27-Oct-2015

132 views

Category:

Documents


2 download

DESCRIPTION

modul kuliah

TRANSCRIPT

Page 1: Modul_Kuliah_20120905.pdf

61B012Algoritma & Pemrograman

Modul Kuliah

Henry Hermawan, S.T., M.Sc.

Jurusan Teknik ElektroFakultas Teknik

Universitas Surabaya2012

Page 2: Modul_Kuliah_20120905.pdf

Halaman ini sengaja dikosongkan

Page 3: Modul_Kuliah_20120905.pdf

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

Page 4: Modul_Kuliah_20120905.pdf

Halaman ini sengaja dikosongkan

iv

Page 5: Modul_Kuliah_20120905.pdf

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

Page 6: Modul_Kuliah_20120905.pdf

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

Page 7: Modul_Kuliah_20120905.pdf

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

Page 8: Modul_Kuliah_20120905.pdf

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

Page 9: Modul_Kuliah_20120905.pdf

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

Page 10: Modul_Kuliah_20120905.pdf

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

Page 11: Modul_Kuliah_20120905.pdf

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

Page 12: Modul_Kuliah_20120905.pdf

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

Page 13: Modul_Kuliah_20120905.pdf

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

Page 14: Modul_Kuliah_20120905.pdf

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

Page 15: Modul_Kuliah_20120905.pdf

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

Page 16: Modul_Kuliah_20120905.pdf

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

Page 17: Modul_Kuliah_20120905.pdf

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

Page 18: Modul_Kuliah_20120905.pdf

Representasi Algoritma Algoritma & Pemrograman

Halaman ini sengaja dikosongkan

12

Page 19: Modul_Kuliah_20120905.pdf

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

Page 20: Modul_Kuliah_20120905.pdf

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

Page 21: Modul_Kuliah_20120905.pdf

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

Page 22: Modul_Kuliah_20120905.pdf

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

Page 23: Modul_Kuliah_20120905.pdf

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

Page 24: Modul_Kuliah_20120905.pdf

Teknik Menyusun Algoritma Algoritma & Pemrograman

Halaman ini sengaja dikosongkan

18

Page 25: Modul_Kuliah_20120905.pdf

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

Page 26: Modul_Kuliah_20120905.pdf

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

Page 27: Modul_Kuliah_20120905.pdf

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

Page 28: Modul_Kuliah_20120905.pdf

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

Page 29: Modul_Kuliah_20120905.pdf

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

Page 30: Modul_Kuliah_20120905.pdf

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

Page 31: Modul_Kuliah_20120905.pdf

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

Page 32: Modul_Kuliah_20120905.pdf

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

Page 33: Modul_Kuliah_20120905.pdf

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

Page 34: Modul_Kuliah_20120905.pdf

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

Page 35: Modul_Kuliah_20120905.pdf

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

Page 36: Modul_Kuliah_20120905.pdf

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

Page 37: Modul_Kuliah_20120905.pdf

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

Page 38: Modul_Kuliah_20120905.pdf

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

Page 39: Modul_Kuliah_20120905.pdf

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

Page 40: Modul_Kuliah_20120905.pdf

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

Page 41: Modul_Kuliah_20120905.pdf

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

Page 42: Modul_Kuliah_20120905.pdf

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

Page 43: Modul_Kuliah_20120905.pdf

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

Page 44: Modul_Kuliah_20120905.pdf

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

Page 45: Modul_Kuliah_20120905.pdf

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

Page 46: Modul_Kuliah_20120905.pdf

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

Page 47: Modul_Kuliah_20120905.pdf

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;}

WHILE­DORepetition

WHILE (condition)  statement(s)ENDWHILE

while (condition){   statement(s);}

DO­WHILERepetition

DO  statement(s)WHILE (condition)

do{   statement(s);}while (condition);

Repeat­UntilRepetition

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

Page 48: Modul_Kuliah_20120905.pdf

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