Anda di halaman 1dari 40

Topik 1 - Penyelesaian Masalah Secara

Algoritmik
Apa yang dibahas?
Algoritma, blok bangunan algoritma (pernyataan, keadaan, aliran kontrol, fungsi), notasi
(kode semu, diagram alir, bahasa pemrograman), pemecahan masalah algoritmik, strategi
sederhana untuk mengembangkan algoritme (iterasi, rekursi). Masalah ilustratif: menemukan
nilai terkecil (min) di dalam suatu daftar, memasukkan kartu ke dalam daftar kartu yang
diurutkan, menebak angka integer dalam rentang tertentu, dan Menara Hanoi.

Daftar Isi
1. Penyelesaian Masalah ......................................................................................................................... 3
1.1 Teknik Penyelesaian Masalah ....................................................................................................... 3
1.2 Algoritma....................................................................................................................................... 3
2. Blok Bangunan Algoritma.................................................................................................................... 4
2.1 Pernyataan .................................................................................................................................... 4
2.2 Kondisi ........................................................................................................................................... 4
2.3 Aliran Kendali ................................................................................................................................ 4
2.4 Fungsi ............................................................................................................................................ 6
3. Notasi .................................................................................................................................................. 6
3.1 Flowchart ...................................................................................................................................... 6
3.2 Pseudocode ................................................................................................................................. 10
3.3 Bahasa Pemrograman ................................................................................................................. 12
4. Penyelesaian Masalah Secara Algoritmik ......................................................................................... 17
4.1 Memahami Masalah (problem understanding) .......................................................................... 17
4.2 Memutuskan Hal-hal Terkait Komputasi .................................................................................... 18
4.3 Merancang Algoritma ................................................................................................................. 18
4.4 Membuktikan Kebenaran Algoritma........................................................................................... 19
4.5 Menganalisis Algoritma............................................................................................................... 19
4.6 Mengkodekan Algoritma (coding) .............................................................................................. 19
5. Strategi Dasar Pengembangan Algoritma ......................................................................................... 19
5.1.Iterasi .......................................................................................................................................... 20
5.2 Rekursi......................................................................................................................................... 21
5.3 Contoh-contoh 3 Bentuk Algoritma ............................................................................................ 22
6. Contoh Program Python ................................................................................................................... 35

1
6.1 Contoh Program Python Sangat Sederhana ............................................................................... 35
6.2 Program dengan Perulangan for ................................................................................................. 36
6.3 Program dengan Perulangan while ............................................................................................. 37
7. Soal-soal ............................................................................................................................................ 39
7.1 Bagian A ...................................................................................................................................... 39
7.2 Bagian B....................................................................................................................................... 40

2
1. Penyelesaian Masalah
Pemecahan masalah atau problem solving adalah pendekatan sistematis untuk
mendefinisikan masalah dan mengkreasikan sejumlah solusi. Proses penyelesaian masalah
dimulai dengan pembuatan spesifikasi dari masalah dan diakhiri dengan pembuatan program
yang benar sesuai dengan spesifikasi tersebut.

1.1 Teknik Penyelesaian Masalah


Teknik penyelesaian masalah adalah seperangkat teknik yang membantu dalam memberikan
logika untuk memecahkan masalah. Penyelesaian masalah dapat dinyatakan dalam bentuk
teknik berikut:

1. Algoritma.
2. Diagram alir (flowchart).
3. Kode palsu (pseudocode).
4. Kode program

1.2 Algoritma
Algoritma didefinisikan sebagai urutan instruksi yang mendeskripsikan metode atau cara
untuk menyelesaikan suatu masalah. Secara sederhana, dapat dikatakan bahwa Algoritma
adalah prosedur langkah demi langkah untuk memecahkan masalah.

Properti atau sifat dari Algoritma:

• Harus ditulis dalam bahasa Inggris atau bahasa nasional kita, namun sederhana dan
rinci (detail)
• Setiap instruksi harus tepat dan tidak ambigu.
• Instruksi dalam suatu algoritma tidak boleh diulang tanpa batas, harus terbatas.
• Algoritma harus tuntas setelah sejumlah langkah yang terbatas.
• Harus memiliki titik akhir
• Hasil akhir harus diperoleh hanya setelah algoritma berakhir.

Kualitas algoritma yang baik:

Berikut ini adalah faktor utama yang sering digunakan untuk menilai kualitas dari suatu
algoritma:

• Waktu (time) – Untuk menjalankan suatu program, sistem komputer membutuhkan


waktu tertentu. Semakin kecil waktu yang dibutuhkan, semakin baik algoritmanya.
• Memori – Untuk menjalankan suatu program, sistem komputer membutuhkan
sejumlah ruang memori. Semakin sedikit memori yang dibutuhkan, semakin baik
algoritmanya.

3
• Akurasi – Beberapa algoritma dapat menghadirkan solusi yang sesuai atau benar
untuk masalah yang diberikan, beberapa di antaranya mungkin memberikan hasil
yang lebih akurat daripada algoritma lain yang mungkin juga cocok sebagai solusi.

Contoh:

Tuliskan suatu algoritma untuk mencetak “Selamat Pagi”

Langkah 1: Mulai (Start)


Langkah 2: Cetak “Selamat Pagi”
Langkah 3: Berhenti (Stop)

2. Blok Bangunan Algoritma


Algoritma dapat dibangun dari blok bangunan dasar bernama urutan (sequence), seleksi dan
iterasi.

2.1 Pernyataan
Pernyataan (statement) adalah satu tindakan (single action) di dalam komputer. Dalam
pernyataan komputer mungkin mencakup beberapa tindakan berikut:

• Input (masukan): data-informasi yang diberikan ke program


• Proses: memproses data atau melakukan operasi terhadap input yang diberikan
• Output: keluaran data hasil olahan (processing)

2.2 Kondisi
Transisi dari satu proses ke proses lain dalam kondisi tertentu dengan waktu tertentu disebut
keadaan/kondisi atau state.

2.3 Aliran Kendali


Proses eksekusi terhadap setiap pernyataan dalam urutan tertentu disebut aliran kontrol.
Kontrol dapat dijalankan dengan tiga cara:
1. urutan
2. seleksi
3. iterasi

Urutan (sequence): Semua instruksi dieksekusi satu demi satu disebut eksekusi berurutan.

Contoh: Menambahkan dua angka

Langkah 1: Mulai
Langkah 2: dapatkan a, b
Langkah 3: hitung c = a + b
Langkah 4: Tampilkan c

4
Langkah 5: Berhenti

Seleksi (memilih pilihan): Pernyataan “pemilihan” menyebabkan kontrol program dipindah-


kan ke bagian tertentu dari program berdasarkan kondisi. Jika hasil uji kondisi dinilai benar
(True) maka satu bagian dari program akan dieksekusi, jika tidak maka akan mengeksekusi
bagian lain dari program.

Gambar 1.1 Proses seleksi kondisi pada sutau algoritma

Contoh: Tuliskan algoritma untuk memeriksa apakah seseorang memenuhi syarat untuk
memilih?

Langkah 1: Mulai
Langkah 2: Dapatkan usia
Langkah 3: jika usia >= 18, cetak “Memenuhi syarat untuk memilih”
Langkah 4: jika tidak, cetak “Tidak memenuhi syarat untuk memilih”
Langkah 6: Berhenti

Pengulangan (Iterasi): Dalam beberapa program, serangkaian pernyataan tertentu dieksekusi


berulang kali berdasarkan uji kondisional. Jenis eksekusi demikian disebut iterasi.

Contoh: Tuliskan algoritma untuk mencetak semua bilangan asli hingga n

Langkah 1: Mulai
Langkah 2: dapatkan nilai n.
Langkah 3: inisialisasi i=1
Langkah 4: jika (i<=n) lanjutkan ke langkah 5, jika tidak lanjutkan ke
langkah 7
Langkah 5: Cetak nilai i dan tambahkan nilai i sebesar 1
Langkah 6: Lanjutkan ke langkah 4
Langkah 7: Berhenti

5
2.4 Fungsi
Fungsi adalah sub program yang terdiri dari blok kode (himpunan instruksi) yang melakukan
tugas tertentu. Untuk suatu masalah kompleks, masalah dapat dibagi menjadi tugas-tugas
yang lebih kecil dan lebih sederhana selama desain algoritma.

Manfaat Menggunakan Fungsi:

• Pengurangan baris kode


• penggunaan kembali kode
• Keterbacaan yang lebih baik
• Penyembunyian informasi
• Mudah di-debug dan diuji
• Peningkatan pemeliharaan

Contoh: Algoritma penjumlahan dua bilangan menggunakan fungsi

Fungsi utama()
Langkah 1: Mulai Main function()
Langkah 2: Panggil fungsi add() Step 1: Start
Langkah 3: Berhenti Step 2: Call the function add()
Step 3: Stop
Sub fungsi add()
sub function add()
Langkah 1: Fungsi mulai
Step 1: Function start
Langkah 2: Dapatkan Nilai a, b Step 2: Get a, b Values
Langkah 3: tambahkan c=a+b Step 3: add c=a+b
Langkah 4: Cetak c Step 4: Print c
Langkah 5: Kembali Step 5: Return

3. Notasi
3.1 Flowchart
Diagram alir (flowchart) didefinisikan sebagai representasi grafis dari logika pemecahan
masalah. Tujuan dari flowchart adalah membuat logika program menjadi jelas dalam
representasi visual.

6
Gambar 1.2 Flowchart dari algoritma penjumlahan dua bilangan menggunakan fungsi

Gambar 1.3 Simbol flowchart yang paling sering digunakan

7
Gambar 1.4 Daftar simbol dalam flowchart, namun tidak semuanya digunakan dalam kuliah ini

8
Aturan untuk menggambar diagram alir:

1. Flowchart harus jelas, rapi dan mudah diikuti.


2. Flowchart harus memiliki awal dan akhir yang logis.
3. Hanya satu garis aliran (flow line) yang keluar dari simbol proses.

4. Hanya satu garis aliran yang harus memasuki simbol keputusan. Namun, dua atau tiga
garis aliran dapat meninggalkan simbol keputusan.

5. Hanya satu garis aliran yang digunakan dengan simbol terminal.

6. Dalam simbol standar, tulislah secara singkat dan tepat.


7. Persimpangan (interseksi) garis aliran harus dihindari.

Keuntungan penggunaan flowchart:

1. Komunikatif: Flowchart adalah cara yang lebih baik untuk mengkomunikasikan logika
dari suatu sistem kepada semua pihak.
2. Analisis yang efektif: Dengan bantuan flowchart, masalah dapat dianalisis dengan
cara yang lebih efektif.
3. Dokumentasi yang tepat: Diagram alir program berfungsi sebagai dokumentasi
program yang baik, dapat digunakan untuk berbagai tujuan.
4. Pengodean yang Efisien: Diagram alir bertindak sebagai panduan atau cetak biru
selama fase analisis sistem dan pengembangan program.
5. Debugging yang Tepat: Flowchart membantu dalam proses debugging.
6. Pemeliharaan Program yang Efisien: Pemeliharaan program selama operasional
menjadi mudah dengan bantuan diagram alir. Ini membantu programmer untuk
melakukan upaya lebih efisien pada bagian itu.

Kekurangan diagram alir:

1. Logika kompleks: Terkadang, logika program cukup rumit. Dalam hal ini, flowchart
menjadi kompleks dan kaku.

9
2. Perubahan dan Modifikasi: Jika diperlukan perubahan, diagram alir mungkin perlu
digambar ulang sepenuhnya.
3. Reproduksi: Karena simbol flowchart tidak dapat diketik, reproduksi flowchart sedikit
menjadi masalah.
4. Biaya: Untuk aplikasi besar waktu dan biaya menggambar flowchart menjadi mahal.

3.2 Pseudocode
• Kode semu atau pseudocode terdiri dari bahasa Inggris yang pendek, mudah dibaca,
dan bergaya formal yang digunakan untuk menjelaskan suatu algoritma.
• Itu tidak termasuk detail seperti deklarasi variabel, subrutin.
• Programer maupun non programmer lebih mudah memahami cara kerja program
secara umum, karena tidak didasarkan pada bahasa pemrograman apa pun.
• Ini memberi kita sketsa program sebelum pengkodean (coding) yang sebenarnya.
• Ini tidak dapat dibaca oleh mesin (komputer)
• Kode semu tidak dapat dikompilasi dan dieksekusi.
• Tidak ada sintaks standar untuk kode semu. Jadi boleh saja menggunakan sintaks yang
lebih mirip bahasa Pascal sebagaimana banyak berlaku selama 30 tahun terakhir atau
mendekati dengan sintaks Python yang sudah semakin populer.

Pedoman penulisan kode semu:

• Tulis satu pernyataan per baris


• Kapitalisasi kata kunci (keyword) inisial
• Indentasi menunjukkan hierarki
• Akhiri struktur banyak baris (multiline)
• Jaga agar pernyataan tetap independen terhadap bahasa pemrograman.

Kata Kunci Umum dalam Pseudocode

Berikut ini adalah kata kunci umum yang digunakan dalam penulisan pseudocode:

1. //: Kata kunci ini digunakan untuk merepresentasikan suatu komentar.


2. BEGIN,END: Begin adalah pernyataan pertama dan end adalah pernyataan terakhir di
dalam suatu blok pernyataan banyak baris.
3. INPUT, GET, READ : Kata kunci yang digunakan untuk meminta data input.
4. COMPUTE, CALCULATE: digunakan untuk menghitung hasil dari ekspresi yang
diberikan.
5. ADD, SUBTRACT, INITIALIZE digunakan untuk penjumlahan, pengurangan dan
inisialisasi.
6. OUTPUT, PRINT, DISPLAY : Digunakan untuk menampilkan keluaran (output) program.
7. IF, ELSE, ENDIF : digunakan untuk mengambil keputusan (percabangan dan seleksi
kondisi).
8. WHILE, ENDWHILE: digunakan untuk pernyataan iteratif (perulangan, loop).
9. FOR, ENDFOR: Iteratif lain yang bertambah/berkurang-nya diuji secara otomatis.

10
Sintaks if else: Contoh: Terbesar dari dua bilangan
IF (condition)THEN BEGIN
statement READ a,b
... IF (a>b) THEN
ELSE DISPLAY a is greater
statement ELSE
... DISPLAY b is greater
ENDIF END IF
END
Sintaks for: Contoh: Mencetak n bilangan asli
FOR( start-value to end-value) DO BEGIN
statement GET n
... INITIALIZE i=1
ENDFOR FOR (i<=n) DO
PRINT i
i=i+1
ENDFOR
END
Sintaks while: Contoh: Mencetak n bilangan asli
WHILE (condition) DO BEGIN
statement GET n
... INITIALIZE i=1
ENDWHILE WHILE(i<=n) DO
PRINT i
i=i+1
ENDWHILE
END

Keuntungan:

• Pseudo tidak tergantung pada bahasa apa pun; dapat digunakan oleh sebagian besar
programmer.
• Sangat mudah untuk menerjemahkan kode semu ke dalam bahasa pemrograman.
• Dapat dengan mudah dimodifikasi dibandingkan dengan diagram alur.
• Mengubah kode semu ke bahasa pemrograman sangat mudah dibandingkan dengan
mengubah diagram alir ke bahasa pemrograman.

Kekurangan:

• Tidak memberikan representasi visual dari logika program (atau algoritma).


• Tidak ada standar yang disepakati untuk menulis kode semu.
• Tidak dapat dikompilasi atau dieksekusi.
• Bagi pemula, lebih sulit untuk mengikuti logika atau menulis kode semu dibandingkan
dengan diagram alir.

11
Contoh: Penambahan dua bilangan
Contoh: Penambahan dua bilangan
BEGIN
GET a, b MULAI
ADD c = a + b DAPATKAN a, b
PRINT c TAMBAHKAN c = a + b
END CETAK c
SELESAI

Algoritma Flowchart Pseudocode


Algoritma adalah urutan Representasi grafis dari Rerepresentasi bahasa dari
instruksi yang digunakan algoritma algoritma.
untuk memecahkan masalah
Pengguna membutuhkan Tidak perlu pengetahuan Tidak perlu pengetahuan
pengetahuan untuk menulis program untuk menggam- bahasa program untuk
algoritma. bar atau memahami memahami atau menulis
diagram alur kode semu.

3.3 Bahasa Pemrograman

Bahasa pemrograman adalah seperangkat simbol dan aturan untuk menginstruksikan


komputer melakukan tugas-tugas tertentu. Pemrogram (programmer) harus mengikuti
semua aturan yang ditentukan (dalam bahasa) sebelum menulis program menggunakan
bahasa pemrograman tersebut. Pengguna harus berkomunikasi dengan komputer
menggunakan bahasa yang dapat dimengerti.

Jenis-jenis bahasa pemrograman:

1. Bahasa mesin
2. Bahasa Assembly
3. Bahasa tingkat tinggi

Bahasa mesin:

Komputer hanya dapat memahami bahasa mesin yang menggunakan 0 dan 1. Dalam bahasa
mesin, instruksi yang berbeda dibentuk dengan mengambil kombinasi 0 dan 1 yang berbeda.

Keuntungan Bahasa Mesin:

• Terjemahan bebas: Bahasa mesin adalah satu-satunya bahasa yang dimengerti


komputer. Untuk menjalankan program apa pun yang ditulis dalam bahasa
pemrograman apa pun, konversi ke bahasa mesin diperlukan. Program yang ditulis
dalam bahasa mesin dapat dieksekusi langsung di komputer. Dalam hal ini proses
konversi tidak diperlukan.

12
• Kecepatan tinggi: Program bahasa mesin bebas terjemahan. Karena waktu konversi
dihemat, eksekusi program bahasa mesin menjadi sangat cepat.

Kerugian Bahasa Mesin:

• Sulit untuk menemukan kesalahan dalam program yang ditulis dalam bahasa mesin.
• Menulis Program dalam bahasa mesin merupakan proses yang memakan waktu.
• Ketergantungan pada mesin: harus sesuai dengan arsitektur yang digunakan. Beda
komputer sangat mungkin berbeda sintaks. Bahasa mesin berbeda pada satu jenis
komputer dengan jenis lainnya. Jadi program yang dikembangkan untuk jenis
komputer tertentu mungkin tidak berjalan di komputer jenis lain.

Bahasa Assembly:

• Untuk mengatasi masalah dalam bahasa pemrograman dan mempermudah proses


pemrograman, dikembangkan bahasa assembly yang secara logika setara dengan
bahasa mesin tetapi lebih mudah dibaca, ditulis, dan dipahami orang.
• Bahasa assembly adalah representasi simbolis dari bahasa mesin. Bahasa assembly
adalah bahasa pemrograman simbolik yang menggunakan notasi simbolik untuk
mewakili instruksi bahasa mesin. Disebut bahasa tingkat rendah karena baris-baris
kodenya sangat erat kaitannya dengan mesin.

Contoh: ADD a, b

Assember: Assembler adalah program yang menerjemahkan instruksi bahasa assembly ke


bahasa mesin.

Keuntungan:

• Mudah dipahami dan digunakan.


• Lebih mudah untuk menemukan dan memperbaiki kesalahan.

Kerugian:

• Tergantung mesin: Program bahasa rakitan yang dapat dijalankan pada mesin
tergantung pada arsitektur komputer tersebut.
• Masih cukup sulit untuk dipelajari: Ini bergantung pada mesin, jadi programmer
harus memiliki pengetahuan perangkat keras untuk membuat aplikasi menggunakan
bahasa assembly.
• Kurang efisien: Waktu eksekusi program bahasa assembly lebih lama dari pada
program bahasa mesin. Ini Karena assembler diperlukan untuk mengkonversi dari
bahasa assembly ke bahasa mesin.

Bahasa tingkat tinggi

Bahasa tingkat tinggi berisi kata-kata dan simbol bahasa Inggris (atau bahasa lain sesuai
ketetapan dari pembuatnya). Aturan yang ditentukan harus diikuti oleh programmer saat

13
menulis program dalam bahasa tingkat tinggi. Interpreter atau compiler digunakan untuk
mengonversi program ini ke dalam bentuk yang dapat dibaca oleh mesin.

Menerjemahkan bahasa tingkat tinggi ke bahasa mesin

Program yang menerjemahkan bahasa tingkat tinggi ke bahasa mesin disebut interpreter atau
compiler.

Compiler: Compiler adalah program yang menerjemahkan kode sumber (source code) yang
ditulis dalam bahasa tingkat tinggi ke dalam kode objek yang ada dalam program bahasa
mesin. Compiler membaca seluruh program yang ditulis dalam bahasa tingkat tinggi dan
menerjemahkannya ke bahasa mesin. Jika ada kesalahan yang ditemukan maka akan
ditampilkan pesan kesalahan.

Interpreter: Interpreter menerjemahkan program bahasa tingkat tinggi secara baris demi
baris. Interpreter menerjemahkan pernyataan bahasa tingkat tinggi dalam program sumber
ke kode mesin dan mengeksekusinya segera sebelum menerjemahkan pernyataan
berikutnya. Ketika kesalahan ditemukan, eksekusi program dihentikan dan pesan kesalahan
ditampilkan di layar.

Keuntungan:

• Keterbacaan: Bahasa tingkat tinggi lebih dekat dengan bahasa alami sehingga lebih
mudah dipelajari dan dipahami
• Mesin independen: Program bahasa tingkat tinggi biasanya lebih portabel antar
mesin, misalnya kode yang ditulis di platform Windows dapat dijalan dengan tanpa
perubahan di Platform Linux atau Mac.
• Debugging lebih mudah: Mudah untuk menemukan dan memperbaiki kesalahan
dalam bahasa tingkat tinggi

Kekurangan:

• Kurang efisien: Proses translasi meningkatkan waktu eksekusi dari program. Program
dalam bahasa tingkat tinggi membutuhkan lebih banyak memori dan membutuhkan
lebih banyak waktu eksekusi.

Bahasa pemrograman dibagi ke dalam kategori berikut:

1. Bahasa pemrograman yang ditafsirkan (Interpreted)


2. Bahasa pemrograman fungsional
3. Bahasa pemrograman yang dikompilasi (compiled)
4. Bahasa pemrograman prosedural
5. Bahasa pemrograman skrip (scripting)
6. Bahasa pemrograman markup
7. Bahasa pemrograman bersamaan (concurrent)
8. Bahasa pemrograman berorientasi objek

14
Bahasa pemrograman Interpreted:

Bahasa yang ditafsirkan adalah bahasa pemrograman yang sebagian besar implementasinya
mengeksekusi instruksi secara langsung, tanpa sebelumnya mengkompilasi program ke dalam
instruksi bahasa mesin. Interpreter mengeksekusi program secara langsung dengan
menerjemahkan setiap pernyataan ke dalam rangkaian satu atau lebih subrutin yang sudah
dikompilasi ke dalam kode mesin.

Contoh:

• Pascal
• Python

Bahasa pemrograman fungsional:

Bahasa pemrograman fungsional mendefinisikan setiap komputasi sebagai evaluasi


matematis. Jenis ini fokus pada bahasa pemrograman yang terikat pada perhitungan
matematika

Contoh:

• Clean
• Haskell

Bahasa Pemrograman Compiled:

Pemrograman terkompilasi adalah bahasa pemrograman yang implementasinya biasanya


menggunakan compiler dan bukan interpreter. Proses kompilasi menghasilkan kode mesin
dari kode sumber bahasa tingkat tinggi.

Contoh:

• C
• C++
• C#
• Java

Bahasa pemrograman prosedural:

• Pemrograman prosedural (imperatif) menyiratkan penentuan langkah-langkah yang


harus diambil oleh program untuk mencapai keadaan yang diinginkan.
• Prosedur adalah sekelompok pernyataan yang dapat dirujuk melalui pemanggilan
prosedur.
• Prosedur membantu dalam penggunaan kembali kode (reuse of code). Pemrograman
prosedural membuat program menjadi terstruktur dan mudah dilacak alirannya.

15
Contoh:

• Hyper Talk
• MATLAB

Bahasa Scripting:

Bahasa scripting adalah bahasa pemrograman yang mengontrol suatu aplikasi khusus.
Meeskipun begitu, skrip dapat saja dijalankan secara independen dari aplikasi lain. Skrip ini
sebagian besar tertanam dalam aplikasi yang harus dikontrol dan digunakan untuk
mengotomatisasi tugas yang sering dijalankan seperti berkomunikasi dengan program
eksternal.

Contoh:

• Skrip Apple
• Skrip VB di Microsoft Office

Bahasa markup:

Bahasa markup adalah bahasa artificial yang menggunakan anotasi terhadap teks yang
mendefinisikan bagaimana teks akan ditampilkan.

Contoh:

• HTML
• XML

Bahasa pemrograman concurrent:

Concurrent programming adalah teknik pemrograman komputer yang menyediakan eksekusi


operasi secara bersamaan, baik di dalam satu komputer atau di sejumlah sistem tersebar.

Contoh:

• Joule
• limbo

Bahasa pemrograman berorientasi objek:

Pemrograman berorientasi objek adalah paradigma pemrograman yang didasarkan pada


konsep objek yang dapat terdiri dari data (atribut, variabel) dan fungsi (atau prosedur) yang
sering dikenal sebagai metode.

16
Contoh:

• Lava
• Moto

4. Penyelesaian Masalah Secara Algoritmik


Algorithmic Problem Solving adalah penyelesaian masalah yang membutuhkan rumusan
algoritma untuk solusinya.

Gambar 1.5 Proses Analisis dan Perancangan Algoritma

4.1 Memahami Masalah (problem understanding)


• Merupakan proses menemukan input dari masalah yang akan dipecahkan oleh
algoritma.
• Sangat penting untuk menentukan dengan tepat (eksak) himpunan input yang perlu
ditangani oleh algoritma tersebut.
• Algoritma yang benar bukanlah yang bekerja hampir sepanjang waktu, tetapi yang
bekerja secara benar untuk semua input yang sah (legitimate).

17
4.2 Memutuskan Hal-hal Terkait Komputasi
Memilih bagaimana komputasi dilakukan, terurut atau paralel:

• Jika instruksi dieksekusi satu demi satu, itu disebut algoritma sekuensial.
• Jika beberapa instruksi dieksekusi secara bersamaan, itu disebut algoritma paralel.

Memilih antara Penyelesaian Masalah Tepat (Eksak) dan Perkiraan (Aproksimasi):

• Keputusan utama berikutnya adalah memilih antara menyelesaikan masalah secara


tepat atau menyelesaikannya secara kira-kira.
• Berdasarkan hal ini, algoritma diklasifikasikan sebagai algoritma eksak dan algoritma
aproksimasi.

Menentukan struktur data:

• Struktur data memainkan peran penting dalam merancang dan menganalisis


algoritma.
• Beberapa teknik desain algoritma juga bergantung pada penstrukturan data yang
menspesifikasikan instan dari masalah
• Algoritma+ Struktur data=program.

Teknik Desain Algoritma:

• Teknik (atau "strategi", "paradigma") desain algoritma adalah pendekatan umum


untuk memecahkan masalah secara algoritmik yang dapat diterapkan (applicable)
terhadap berbagai masalah dari berbagai bidang komputasi.
• Mempelajari teknik-teknik ini sangat penting karena alasan berikut:
o Pertama, teknik ini memberikan panduan untuk merancang algoritma untuk
masalah baru,
o Kedua, algoritma adalah landasan Informatika (ilmu komputer)

4.3 Merancang Algoritma


Sebagaimana telah dijelaskan, ada beberapa pendakatan dalam pembuatan algoritma:

• Pseudocode adalah campuran bahasa alami dan konstruksi seperti bahasa


pemrograman. Pseudocode biasanya lebih tepat daripada bahasa alami, dan
penggunaannya sering menghasilkan deskripsi algoritma yang lebih ringkas.
• Pada masa awal komputasi, kendaraan dominan untuk menentukan algoritma adalah
diagram alir (flowchart) , metode untuk mengekspresikan algoritma dengan
kumpulan bentuk geometris terhubung yang berisi deskripsi langkah-langkah
algoritma.
• Bahasa pemrograman dapat dimasukkan ke dalam komputer elektronik secara
langsung. Sebaliknya algortima harus ditransformasi menjadi program komputer yang
ditulis dalam bahasa komputer tertentu. Kita dapat melihat program seperti itu

18
sebagai cara lain untuk menentukan algoritma, meskipun lebih baik menganggapnya
sebagai implementasi algoritma.

4.4 Membuktikan Kebenaran Algoritma


• Setelah algoritma dirancang, kita harus membuktikan kebenarannya. Artinya, kita
harus membuktikan bahwa algoritma tersebut mampu memberikan hasil yang
diperlukan untuk setiap input yang sah dalam waktu yang terbatas.
• Teknik umum untuk membuktikan kebenaran adalah dengan menggunakan induksi
matematika karena iterasi suatu algoritma memberikan urutan langkah alami yang
diperlukan untuk pembuktian tersebut.
• Mungkin perlu disebutkan bahwa meskipun menelusuri kinerja algoritma untuk
beberapa input tertentu dapat menjadi aktivitas yang sangat bermanfaat, itu tidak
dapat membuktikan kebenaran algoritma secara meyakinkan. Tetapi untuk
menunjukkan bahwa suatu algoritma salah, kita hanya perlu satu contoh inputnya
yang menyebabkan algoritma itu gagal.

4.5 Menganalisis Algoritma


1. Efisiensi.
• Efisiensi waktu, menunjukkan seberapa cepat algoritma berjalan,
• Efisiensi ruang, menunjukkan berapa banyak memori ekstra yang digunakannya.
2. Kesederhanaan.
• Suatu algoritma harus tepat didefinisikan dan diselidiki (investigasi) dengan
ekspresi matematika.
• Algoritma yang lebih sederhana lebih mudah dipahami dan lebih mudah
diprogram.
• Algoritma sederhana biasanya mengandung lebih sedikit bug.

4.6 Mengkodekan Algoritma (coding)


• Kebanyakan algoritma ditakdirkan untuk akhirnya diimplementasikan sebagai
program komputer. Pemrograman algoritma menghadirkan bahaya dan peluang.
• Program yang bekerja memberikan peluang tambahan yang memungkinkan analisis
empiris dari algoritma yang mendasarinya. Analisis semacam itu didasarkan pada
pengaturan waktu dari program pada beberapa input dan kemudian menganalisis
hasil yang diperoleh.

5. Strategi Dasar Pengembangan Algoritma


1. Iterasi
2. Rekursi

19
5.1.Iterasi
Serangkaian pernyataan yang dijalankan sampai kondisi tertentu bernilai True (benar)
disebut iterasi. Ada dua pendekatan iterasi yang dapat dipilih yaitu:

1. perulangan for
2. perulangan while

Sintaks for Contoh: Mencetak n bilangan asli


FOR( start-value to end-value) DO BEGIN
statement GET n
... INITIALIZE i=1
ENDFOR FOR (i<=n) DO
PRINT i
i=i+1
ENDFOR
END
Sintaks while Contoh: Mencetak n bilangan asli
WHILE (condition) DO BEGIN
statement GET n
... INITIALIZE i=1
ENDWHILE WHILE(i<=n) DO
PRINT i
i=i+1
ENDWHILE
END

Gambar 1.6 Perulangan atau Iterasi

20
5.2 Rekursi
• Suatu fungsi yang memanggil dirinya sendiri dikenal sebagai rekursi
• Rekursi adalah proses dimana suatu fungsi memanggil dirinya sendiri secra berulang
sampai beberapa kondisi tertentu dipenuhi.

Algoritma untuk faktorial dari n bilangan menggunakan rekursi:

Fungsi utama:
Langkah 1: Start
Langkah 2: Get n
Langkah 3: call factorial(n)
Langkah 4: print fact
Langkah 5: Stop

Sub fungsi factorial(n):


Langkah 1: if(n==1) then fact=1 return fact
Langkah 2: else fact=n*factorial(n-1) and return fact

Gambar 1.7 Flowchart dari faktorial menggunakan rekursi

Sedangkan pseudocode untuk faktorial menggunakan rekursi di atas adalah

Fungsi utama:
BEGIN
GET n
CALL factorial(n)
PRINT fact
BIN

21
Sub fungsi factorial(n):
IF(n==1) THEN
fact=1
RETURN fact
ELSE
RETURN fact=n*factorial(n-1)

5.3 Contoh-contoh 3 Bentuk Algoritma

Tuliskan algoritma untuk mencari luas dari suatu persegipanjang


Langkah 1: Start BEGIN
Langkah 2: get l, b values READ l,b
Langkah 3: Calculate A=l*b CALCULATE A=l*b
Langkah 4: Display A DISPLAY A
Langkah 5: Stop END

Tuliskan algoritma untuk menghitung luas dan keliling suatu lingkran


Langkah 1: Start BEGIN
Langkah 2: get r value READ r
Langkah 3: Calculate A=3.14*r*r CALCULATE A and C
Langkah 4: Calculate C=2.3.14*r A=3.14*r*r
Langkah 5: Display A,C C=2*3.14*r
Langkah 6: Stop DISPLAY A
END

22
Tuliskan algoritma untuk menghitung simple interest
Langkah 1: Start BEGIN
Langkah 2: get P, n, r value READ P, n, r
Langkah3:Calculate CALCULATE S
SI=(p*n*r)/100 SI=(p*n*r)/100
Langkah 4: Display S DISPLAY SI
Langkah 5: Stop END

Tuliskan algoritma untuk menghitung engineering cutoff


Langkah 1: Start BEGIN
Langkah2: get P,C,M value READ P,C,M
Langkah3:calculate CALCULATE
Cutoff= (P/4+C/4+M/2) Cutoff= (P/4+C/4+M/2)
Langkah 4: Display Cutoff DISPLAY Cutoff
Langkah 5: Stop END

Algoritma untuk memeriksa nilai terbesar dari dua bilangan

Langkah 1: Start
Langkah 2: get a,b value
Langkah 3: check if(a>b) print a is greater
Langkah 4: else b is greater
Langkah 5: Stop

23
BEGIN
READ a,b
IF (a>b) THEN
DISPLAY a is greater
ELSE
DISPLAY b is greater
END IF
END
Algoritma untuk memeriksa tahun kabisat
Langkah 1: Start
Langkah 2: get y
Langkah 3: if(y%4==0) print leap year
Langkah 4: else print not leap year
Langkah 5: Stop

BEGIN
READ y
IF (y%4==0) THEN
DISPLAY leap year
ELSE
DISPLAY not leap year
END IF
END

24
Algoritma untuk memeriksa apakah suatu bilangan positif atau negatif
Langkah 1: Start
Langkah 2: get num
Langkah 3: check if(num>0) print a is positive
Langkah 4: else num is negative
Langkah 5: Stop

BEGIN
READ num
IF (num>0) THEN
DISPLAY num is positive
ELSE
DISPLAY num is negative
END IF
END
Algoritma untuk memeriksa apakah suatu bilangan genap atau ganjil
Langkah 1: Start
Langkah 2: get num
Langkah 3: check if(num%2==0) print num is even
Langkah 4: else num is odd
Langkah 5: Stop

25
BEGIN
READ num
IF (num%2==0) THEN
DISPLAY num is even
ELSE
DISPLAY num is odd
END IF
END
Algoritma untuk mengetahui bilangan terbesar dari tiga angka
Langkah1: Start
Langkah2: Get A, B, C
Langkah3: if(A>B) goto Langkah 4 else goto Langkah 5
Langkah4: If(A>C) print A else print C
Langkah5: If(B>C) print B else print C
Langkah6: Stop

26
BEGIN
READ a, b, c
IF (a>b) THEN
IF(a>c) THEN
DISPLAY a is greater
ELSE
DISPLAY c is greater
END IF
ELSE
IF(b>c) THEN
DISPLAY b is greater
ELSE
DISPLAY c is greater
END IF
END IF
END
Tuliskan algoritma untuk memeriksa apakah bilangan yang dimasukkan +tif, -tif atau nol
Langkah 1: Start
Langkah 2: Get n value.
Langkah 3: if (n ==0) print “Given number is Zero” Else goto Langkah 4
Langkah 4: if (n > 0) then Print “Given number is +ve”
Langkah 5: else Print “Given number is -ve”
Langkah 6: Stop

27
BEGIN
GET n
IF(n==0) THEN
DISPLAY “ n is zero”
ELSE
IF(n>0) THEN
DISPLAY “n is positive”
ELSE
DISPLAY “n is positive”
END IF
END IF
END
Write an algorithm to print all natural numbers up to n
Langkah 1: Start
Langkah 2: get n value.
Langkah 3: initialize i=1
Langkah 4: if (i<=n) go to Langkah 5 else go to Langkah 8
Langkah 5: Print i value
Langkah 6 : increment i value by 1
Langkah 7: go to Langkah 4
Langkah 8: Stop

28
BEGIN
GET n
INITIALIZE i=1
WHILE(i<=n) DO
PRINT i
i=i+1
ENDWHILE
END
Write an algorithm to print n odd numbers
Langkah 1: start
Langkah 2: get n value
Langkah 3: set initial value i=1
Langkah 4: check if(i<=n) goto Langkah 5 else goto Langkah 8
Langkah 5: print i value
Langkah 6: increment i value by 2
Langkah 7: goto Langkah 4
Langkah 8: stop

29
BEGIN
GET n
INITIALIZE i=1
WHILE(i<=n) DO
PRINT i
i=i+2
ENDWHILE
END
Write an algorithm to print n even numbers
Langkah 1: start
Langkah 2: get n value
Langkah 3: set initial value i=2
Langkah 4: check if(i<=n) goto Langkah 5 else goto Langkah8
Langkah 5: print i value
Langkah 6: increment i value by 2
Langkah 7: goto Langkah 4
Langkah 8: stop

30
BEGIN
GET n
INITIALIZE i=2
WHILE(i<=n) DO
PRINT i
i=i+2
ENDWHILE
END
Write an algorithm to print squares of a number
Langkah 1: start
Langkah 2: get n value
Langkah 3: set initial value i=1
Langkah 4: check i value if(i<=n) goto Langkah 5 else goto Langkah8
Langkah 5: print i*i value
Langkah 6: increment i value by 1
Langkah 7: goto Langkah 4
Langkah 8: stop

31
BEGIN
GET n
INITIALIZE i=1
WHILE(i<=n) DO
PRINT i*i
i=i+2
ENDWHILE
END
Write an algorithm to print to print cubes of a number
Langkah 1: start
Langkah 2: get n value
Langkah 3: set initial value i=1
Langkah 4: check i value if(i<=n) goto Langkah 5 else goto Langkah8
Langkah 5: print i*i *i value
Langkah 6: increment i value by 1
Langkah 7: goto Langkah 4
Langkah 8: stop

32
BEGIN
GET n
INITIALIZE i=1
WHILE(i<=n) DO
PRINT i*i*i
i=i+2
ENDWHILE
END
Buatkan algoritma untuk mencari jumlah total (sum) dari 1 sampai bilangan yang diberikan
Langkah 1: start
Langkah 2: get n value
Langkah 3: set initial value i=1, sum=0
Langkah 4: check i value if(i<=n) goto Langkah 5 else goto Langkah8
Langkah 5: calculate sum=sum+i
Langkah 6: increment i value by 1
Langkah 7: goto Langkah 4
Langkah 8: print sum value
Langkah 9: stop

33
BEGIN
GET n
INITIALIZE i=1,sum=0

WHILE(i<=n) DO
sum=sum+i
i=i+1
ENDWHILE

PRINT sum
END
Tuliskan suatu algoritma untuk mencari factorial dari suatu bilangan yang diberikan
Langkah 1: start
Langkah 2: get n value
Langkah 3: set initial value i=1, fact=1
Langkah 4: check i value if(i<=n) goto Langkah 5 else goto Langkah 8
Langkah 5: calculate fact=fact*i
Langkah 6: increment i value by 1
Langkah 7: goto Langkah 4
Langkah 8: print fact value
Langkah 9: stop

34
BEGIN
GET n
INITIALIZE i=1,fact=1
WHILE(i<=n) DO
fact=fact*i
i=i+1
ENDWHILE
PRINT fact
END

6. Contoh Program Python


6.1 Contoh Program Python Sangat Sederhana

Penambahan dua bilangan


a=eval(input(“enter first no”))
b=eval(input(“enter second no”))
c=a+b
print(“the sum is “,c)
Area of rectangle
l=eval(input(“enter the length of rectangle”))
b=eval(input(“enter the breath of rectangle”))
a=l*b
print(a)
Area & circumference of circle
r=eval(input(“enter the radius of circle”))
a=3.14*r*r
c=2*3.14*r
print(“the area of circle”,a)
print(“the circumference of circle”,c)

35
Calculate simple interest
p=eval(input(“enter principle amount”))
n=eval(input(“enter no of years”))
r=eval(input(“enter rate of interest”))
si=p*n*r/100
print(“simple interest is”,si)
Calculate engineering cutoff
p=eval(input(“enter physics marks”))
c=eval(input(“enter chemistry marks”))
m=eval(input(“enter maths marks”))
cutoff=(p/4+c/4+m/2)
print(“cutoff =”,cutoff)
Check voting eligibility
age=eval(input(“enter ur age”))
If(age>=18):
print(“eligible for voting”)
else:
print(“not eligible for voting”)
Find greatest of three numbers
a=eval(input(“enter the value of a”))
b=eval(input(“enter the value of b”))
c=eval(input(“enter the value of c”))
if(a>b):
if(a>c):
print(“the greatest no is”,a)
else:
print(“the greatest no is”,c)
else:
if(b>c):
print(“the greatest no is”,b)
else:
print(“the greatest no is”,c)

6.2 Program dengan Perulangan for


Print n natural numbers Output
for i in range(1,5,1): 1 2 3 4
print(i)
Print n odd numbers Output
for i in range(1,10,2): 1 3 5 7 9
print(i)
Print n even numbers Output
for i in range(2,10,2): 2 4 6 8
print(i)
Print squares of numbers Output
for i in range(1,5,1): 1 4 9 16
print(i*i)
Print cubic of numbers Output
for i in range(1,5,1): 1 8 27 64
print(i*i*i)

36
6.3 Program dengan Perulangan while
Print n natural numbers Output
i=1 1
while(i<=5): 2
print(i) 3
i=i+1 4
5
Print n odd numbers Output
i=2
while(i<=10):
print(i)
i=i+2
Print n even numbers Output
i=1
while(i<=10):
print(i)
i=i+2
Print n squares of numbers Output
i=1
while(i<=5):
print(i*i)
i=i+1
Print n cubes numbers Output
i=1
while(i<=3):
print(i*i*i)
i=i+1
find sum of n numbers Output
i=1
sum=0

while(i<=10):
sum=sum+i
i=i+1

print(sum)
factorial of n numbers/product of n numbers
i=1
product=1

while(i<=10):
product=product*i
i=i+1

print(product)
sum of n numbers
def add():
a=eval(input(“enter a value”))
b=eval(input(“enter b value”))

37
c=a+b
print(“the sum is”,c)

add()
area of rectangle using function
def area():
l=eval(input(“enter the length of rectangle”))
b=eval(input(“enter the breath of rectangle”))
a=l*b
print(“the area of rectangle is”,a)

area()
swap two values of variables
def swap():
a=eval(input("enter a value"))
b=eval(input("enter b value"))
c=a
a=b
b=c
print("a=",a,"b=",b)

swap()
check the no divisible by 5 or not
def div():
n=eval(input("enter n value"))
if(n%5==0):
print("the number is divisible by 5")
else:
print("the number not divisible by 5")

div()
find reminder and quotient of given no
def reminder():
a=eval(input("enter a"))
b=eval(input("enter b"))
R=a%b
print("the reminder is",R)

def quotient():
a=eval(input("enter a"))
b=eval(input("enter b"))
Q=a/b
print("the reminder is",Q)

reminder()
quotient()
Program Konversi Suhu
def ctof():
c=eval(input("enter temperature in centigrade"))
f=(1.8*c)+32
print("the temperature in Fahrenheit is",f)

def ftoc():

38
f=eval(input("enter temp in Fahrenheit"))
c=(f-32)/1.8
print("the temperature in centigrade is",c)

ctof()
ftoc()
Program Kalkulator Sederhana
def add():
a=eval(input("enter a value"))
b=eval(input("enter b value"))
c=a+b
print("the sum is",c)

def sub():
a=eval(input("enter a value"))
b=eval(input("enter b value"))
c=a-b
print("the diff is",c)

def mul():
a=eval(input("enter a value"))
b=eval(input("enter b value"))
c=a*b
print("the mul is",c)

def div():
a=eval(input("enter a value"))
b=eval(input("enter b value"))
c=a/b
print("the div is",c)

add()
sub()
mul()
div()

7. Soal-soal
7.1 Bagian A
1. Apa yang dimaksud dengan pemecahan masalah?
2. Sebutkan teknik pemecahan masalah?
3. Definisikan algoritma?
4. Apa saja sifat-sifat algoritma?
5. Sebutkan persamaan dari algoritma yang baik?
6. Tentukan pernyataan?
7. Tentukan keadaan?
8. Apa yang disebut aliran kontrol?
9. Apa yang disebut eksekusi urutan?
10. Tentukan iterasi?
11. Apa yang dimaksud dengan diagram alir?

39
12. Sebutkan simbol-simbol dasar untuk menggambar diagram alur?
13. Sebutkan aturan untuk menggambar diagram alur?
14. Apa keuntungan dari flowchart?
15. Apa kelemahan diagram alur?
16. Definisikan kode semu?
17. Sebutkan kata kunci yang digunakan dalam penulisan kode semu?
18. Sebutkan keuntungan menggunakan kode semu?
19. Sebutkan kerugian menggunakan kode semu?
20. Apa saja cara yang tersedia untuk merepresentasikan algoritma?
21. Bedakan flowchart dan pseudo code?
22. Bedakan algoritma dan kode semu?
23. Apa itu bahasa pemrograman?
24. Sebutkan jenis-jenis bahasa pemrograman!
25. Apa yang dimaksud dengan bahasa tingkat mesin?
26. Apa kelebihan dan kekurangan bahasa tingkat mesin?
27. Apa yang dimaksud dengan bahasa pemrograman tingkat tinggi dan sebutkan kelebihannya?
28. Apa saja langkah-langkah dalam pemecahan masalah algoritmik?
29. Tulis algoritma untuk setiap contoh!
30. Gambarkan diagram alir untuk contoh apa saja!
31. Tulis kode semu untuk contoh apa saja!

7.2 Bagian B
1. Jelaskan secara rinci tentang teknik pemecahan masalah!
2. Jelaskan secara rinci tentang blok bangunan algoritma!
3. Diskusikan simbol dan aturan menggambar flowchart beserta contohnya!
4. Jelaskan secara rinci tentang bahasa pemrograman!
5. Diskusikan secara singkat tentang pemecahan masalah algoritmik!
6. Tulis algoritma, kode semu dan diagram alir untuk suatu contoh yang belum disebutkan di dalam
Bab ini!
7. Jelaskan secara rinci tentang strategi sederhana untuk mengembangkan algoritma!

40

Anda mungkin juga menyukai