bab ii
TRANSCRIPT
BAB II
PENYAJIAN ALGORITMA
1 Tujuan pembelajaran
2 Deskripsi umum
3 Penyajian
31 PENYAJIAN dan Notasi ALGORITMA
Bagaimanapun juga struktur data dan algoritma berhubungan sangat erat pada sebuah program Algoritma yang baik tanpa pemilihan struktur data yang tepat akan membuat program menjadi kurang baik demikian juga sebaliknyaPembuatan algoritma mempunyai banyak keuntungan di antaranya
a Pembuatan atau penulisan algoritma tidak tergantung pada bahasa pemrograman manapun artinya penulisan algoritma independen dari bahasa pemrograman dan komputer yang melaksanakannya
b Notasi algoritma dapat diterjemahkan ke dalam berbagai bahasa pemrograman
c Apapun bahasa pemrogramannya output yang akan dikeluarkan sama karena algoritmanya sama
Beberapa hal yang perlu diperhatikan dalam membuat algoritma a Teks algoritma berisi deskripsi langkah-langkah penyelesaian masalah
Deskripsi tersebut dapat ditulis dalam notasi apapun asalkan mudah dimengerti dan dipahami
b Tidak ada notasi yang baku dalam penulisan teks algoritma seperti notasi bahasa pemrograman Notasi yang digunakan dalam menulis algoritma disebut notasi algoritmik
c Setiap orang dapat membuat aturan penulisan dan notasi algoritmik sendiri Hal ini dikarenakan teks algoritma tidak sama dengan teks program Namun supaya notasi algoritmik mudah ditranslasikan ke dalam notasi bahasa pemrograman tertentu maka sebaiknya notasi algoritmik tersebut berkorespondensi dengan notasi bahasa pemrograman secara umum
d Notasi algoritmik bukan notasi bahasa pemrograman karena itu pseudocode dalam notasi algoritmik tidak dapat dijalankan oleh komputer Agar dapat dijalankan oleh komputer pseudocode dalam notasi algoritmik harus ditranslasikan atau diterjemahkan ke dalam notasi bahasa pemrograman yang dipilih Perlu diingat bahwa orang yang menulis program sangat terikat dalam aturan tata bahasanya dan spesifikasi mesin yang menjalannya
e Algoritma sebenarnya digunakan untuk membantu kita dalam mengkonversikan suatu permasalahan ke dalam bahasa pemrograman
f Algoritma merupakan hasil pemikiran konseptual supaya dapat dilaksanakan oleh komputer algoritma harus ditranslasikan ke dalam
notasi bahasa pemrograman Ada beberapa hal yang harus diperhatikan pada translasi tersebut yaitu Pendeklarasian variabel Untuk mengetahui dibutuhkannya
pendeklarasian variabel dalam penggunaan bahasa pemrograman apabila tidak semua bahasa pemrograman membutuhkannya
Pemilihan tipe data Apabila bahasa pemrograman yang akan digunakan membutuhkan pendeklarasian variabel maka perlu hal ini dipertimbangkan pada saat pemilihan tipe data
Pemakaian instruksi-instruksi Beberapa instruksi mempunyai kegunaan yang sama tetapi masing-masing memiliki kelebihan dan kekurangan yang berbeda
Aturan sintaksis Pada saat menuliskan program kita terikat dengan aturan sintaksis dalam bahasa pemrograman yang akan digunakan
Tampilan hasil Pada saat membuat algoritma kita tidak memikirkan tampilan hasil yang akan disajikan Hal-hal teknis ini diperhatikan ketika mengkonversikannya menjadi program
Cara pengoperasian compiler atau interpreter Bahasa pemrograman yang digunakan termasuk dalam kelompok compiler atau interpreter
Structure English merupakan alat yang cukup efisien untuk menggambarkan
suatu algoritma Basis dari structure english adalah bahasa inggris tetapi juga bisa
digunakan bahasa indonesia sedangkan pseudocode berarti kode yang mirip
dengan kode pemrograman sebenarnya Pseudocode berasal dari kata pseudo yang
berarti imitasimiripmenyerupai dan code yang berarti program Pseudocode
berbasis pada kode program yang sesungguhnya seperti Pascal C C++
Pseudocode lebih rinci dari structure english misalnya dalam menyatakan tipe
data yang digunakan
Contoh struktur Indonesia
Baca data jam_kerja
Hitung gaji adalah jam_kerja dikalikan tarif
Tampilkan gaji
Pseudocode dengan Pascal
Read jam_kerja
Gaji = jam_kerja tarif
Write gaji
311 Notasi Algoritma
Langkah-langkah penyelesaian masalah dalam teks algoritma dapat ditulis
dalam notasi apapun dengan syarat bahwa langkah-langkah tersebut mudah
dipahami dan dimengerti Tidak ada notasi yang baku dalam teks algoritma
sebagaimana notasi
Dalam bahasa pemrograman (notasi dalam algoritma disebut dengan notasi
algoritmik) Setiap orang dapat membuat aturan penulisan dan notasi algoritmik
sendiri Berkaitan hal itu untuk memudahkan translasi notasi algoritmik ke dalam
bahasa pemrograman sebaiknya notasi algoritmik tersebut berkorespondensi
dengan notasi bahasa pemrograman secara umum Sebagai contoh
Tulis nilai X dan Y
Dalam notasi algoritmik menjadi
Write(XY)
Notasi write ini berarti nilai X dan Y dicetak ke piranti keluaran Notasi
write ini berkorespondensi dengan write atau writeln dalam bahasa pascal printf
dalam bahasa C cout dalam bahasa C++ Jadi translasi write(XY) dalam masing-
masing bahasa tersebut adalah
writeln(XY) dalam bahasa pascal
printf(ldquod drdquo XY) dalam bahasa C
coutltltXltltY dalam bahasa C++
Perhatikan bahwa setiap bahasa pemrograman mempunyai aturan sendiri dalam
menggunakan perintah penulisan
Contoh lain
Isikan nilai X ke dalam max
Ditulis dalam notasi algoritmik menjadi
max lt- X
Notasi ldquolt-rdquo berarti mengisi (assign) peubah (variable) max dengan nilai peubah
X Translasi notasi ldquolt-rdquo kedalam bahasa Pascal adalah ldquo=rdquo dalam bahasa C
adalah ldquo=rdquo dalam bahasa C++ adalah ldquo=rdquo Translasi max1048773X dalam masing-
masing bahasa adalah
max = X dalam bahasa Pascal
max = X dalam bahasa C
max = X dalam bahasa C++
Algoritma berisi langkah-langkah penyelesaian masalah Langkah-langkah
penyelesaian tersebut secara umum dibedakan menjadi tiga macam struktur yaitu
runtunan (sequence) pemilihan (selection) dan pengulangan (repetition) Agar
mudah dibaca algoritma dituliskan dalam notasi algoritmik tidak ada notasi yang
standar untuk menuliskan algoritma kita dapat menuliskan algoritma dengan
notasi sendiri karena teks algoritma tidak sama dengan teks program komputer
Namun agar notasi algoritmik mudah ditranslasikan ke dalam notasi bahasa
pemrograman maka sebaiknya notasi algoritmik tersebut berupa pseudo-code
yang berkoresponden dengan notasi bahasa pemrograman secara umum
312 Kriteria Algoritma (Donald E Knuth)
Input algoritma dapat memiliki nol atau lebih inputan dari luar
Output algoritma harus memiliki minimal satu buah output keluaran
Definiteness (pasti) algoritma memiliki instruksi ndash instruksi yang jelas
dan tidak ambigu
Finiteness (ada batas) algoritma harus memiliki titik berhenti (stopping
role)
Effectiveness ( tepat dan efisien ) algoritma sebisa mungkin harus dapat
dilaksanakan dan efektif Contoh instruksi yang tidak efektif adalah A =
A + 0 atau A = A 1
Namun ada beberapa program yang memang dirancang untuk unterminatable
contoh SistemOperasi
313 Jenis Proses Algoritma
Sequence Process instruksi dikerjakan secara sekuensial berurutan
Selection Process instruksi dikerjakan jika memenuhi kriteria tertentu
Iteration Process instruksi dikerjakan selama memenuhi suatu kondisi
tertentu
Concurrent Process beberapa instruksi dikerjakan secara bersama
ContohAlgoritma
a Algoritma menghitung luas persegi panjang
Masukkan panjang(P)
Masukkan lebar(L)
Luas larr P L
Tulis Luas
b Sifat Umum
Tidak menggunakan simbol atau sintaks dari suatu bahasa pemrograman
Tidak tergantung pada suatu bahasa pemrograman
Notasi-notasinya dapat digunakan untuk seluruh bahasa mana pun
32 TAHAPAN ANALISA ALGORITMA 321 Bagaimana merencanakan suatu algoritma
Menentukan beberapa model atau desain sebagai penyelesaian dari suatu masalah untuk mendapat sebuah solusi yan mungkin Dengan demikian akan banyak terdapat variasi desain atau model yang dapat diambil yang terbaik
322 Bagaimana menyatakan suatu algoritmaMenentukan model suatu algoritma yang digunakan sehingga dapat membuat barisan langkah secara berurutan guna mendapatkan solusi penyelesaian masalah
323 Analisis Suatu Algoritma (Untuk melihat faktor efesiensi amp efektifitas dari algoritma tersebut) Dapat dilakukan terhadap suatu algoritma dengan melihat pada
a Waktu Tempuh (Running Time) dr suatu Algortima Adalah satuan waktu yang ditempuh atau diperlukan oleh suatu algoritma dalam menyelesaikan suatu masalah Hal2 yg dapat mempengaruhi daripada waktu tempuh adalah Banyaknya langkah Besar dan jenis input data Jenis Operasi Komputer dan kompilator
b Jumlah Memori Yang Digunakan
324 Syarat Sebuah Algoritma Yang Baika Tingkat kepercayaannya tinggi (realibility) Hasil yang diperoleh dari
proses harus berakurasi tinggi dan benarb Pemrosesan yang efisien (cost rendah) Proses harus diselesaikan secepat
mungkin dan frekuensi kalkulasi yang sependek mungkinc Sifatnya general Bukan sesuatu yang hanya untuk menyelesaikan satu
kasus saja tapi juga untuk kasus lain yang lebih general
d Bisa dikembangkan (expandable) Haruslah sesuatu yang dapat kita kembangkan lebih jauh berdasarkan perubahan requirement yang ada
e Mudah dimengerti Siapapun yang melihat dia akan bisa memahami algoritma Anda Susah dimengertinya suatu program akan membuat susah di-maintenance (kelola)
f Portabilitas yang tinggi (portability) Bisa dengan mudah diimplementasikan di berbagai platform komputer
g Precise (tepat betul teliti) Setiap instruksi harus ditulis dengan seksama dan tidak ada keragu-raguan dengan demikian setiap instruksi harus dinyatakan secara eksplisit dan tidak ada bagian yang dihilangkan karena pemroses dianggap sudah mengerti Setiap langkah harus jelas dan pasti
Contoh Tambahkan 1 atau 2 pada xInstruksi di atas terdapat keraguan
1 Jumlah langkah atau instruksi berhingga dan tertentu Artinya untuk kasus yang sama banyaknya langkah harus tetap dan tertentu meskipun datanya berbeda
2 Efektif Tidak boleh ada instruksi yang tidak mungkin dikerjakan oleh pemroses yang akan menjalankannya
Contoh Hitung akar 2 dengan presisi sempurnaInstruksi di atas tidak efektif agar efektif instruksi tersebut diubahMisal Hitung akar 2 sampai lima digit di belakang koma
1 Harus terminate Jalannya algoritma harus ada kriteria berhenti Pertanyaannya adalah apakah bila jumlah instruksinya berhingga maka pasti terminate
2 Output yang dihasilkan tepat Jika langkah-langkah algoritmanya logis dan diikuti dengan seksama maka dihasilkan output yang diinginkan
Latihan
1 Buat algoritma untuk menentukan apakah suatu bilangan merupakan bilangan
prima atau bukan kemudian buat flowchart untuk program tersebut
2 Buat algoritma untuk mencetak N buah bilangan prima yang pertama
kemudian buat flowchart untuk program tersebut
3 Buat algoritma untuk menentukan jenis akar dari suatu persamaan kuadrat
kemudian buat flowchart untuk program tersebut
4 Buat algoritma untuk menghitung jumlah N suku dari deret aritmatika berikut
Sn = 3 + 7 + 11 + helliphellip + (4n-1)
5 Buat algoritma untuk menghitung nilai faktorial dari suatu bilangan kemudian
buat flowchart untuk program tersebut
6 Buat flowchart untuk mencetak pasangan nilai X dan Y dimana hubungan
antara X dan Y memenuhi persamaan Y = X3 ndash 2X +1 dan nilai x berubah dari
ndash10 sampai 10
notasi bahasa pemrograman Ada beberapa hal yang harus diperhatikan pada translasi tersebut yaitu Pendeklarasian variabel Untuk mengetahui dibutuhkannya
pendeklarasian variabel dalam penggunaan bahasa pemrograman apabila tidak semua bahasa pemrograman membutuhkannya
Pemilihan tipe data Apabila bahasa pemrograman yang akan digunakan membutuhkan pendeklarasian variabel maka perlu hal ini dipertimbangkan pada saat pemilihan tipe data
Pemakaian instruksi-instruksi Beberapa instruksi mempunyai kegunaan yang sama tetapi masing-masing memiliki kelebihan dan kekurangan yang berbeda
Aturan sintaksis Pada saat menuliskan program kita terikat dengan aturan sintaksis dalam bahasa pemrograman yang akan digunakan
Tampilan hasil Pada saat membuat algoritma kita tidak memikirkan tampilan hasil yang akan disajikan Hal-hal teknis ini diperhatikan ketika mengkonversikannya menjadi program
Cara pengoperasian compiler atau interpreter Bahasa pemrograman yang digunakan termasuk dalam kelompok compiler atau interpreter
Structure English merupakan alat yang cukup efisien untuk menggambarkan
suatu algoritma Basis dari structure english adalah bahasa inggris tetapi juga bisa
digunakan bahasa indonesia sedangkan pseudocode berarti kode yang mirip
dengan kode pemrograman sebenarnya Pseudocode berasal dari kata pseudo yang
berarti imitasimiripmenyerupai dan code yang berarti program Pseudocode
berbasis pada kode program yang sesungguhnya seperti Pascal C C++
Pseudocode lebih rinci dari structure english misalnya dalam menyatakan tipe
data yang digunakan
Contoh struktur Indonesia
Baca data jam_kerja
Hitung gaji adalah jam_kerja dikalikan tarif
Tampilkan gaji
Pseudocode dengan Pascal
Read jam_kerja
Gaji = jam_kerja tarif
Write gaji
311 Notasi Algoritma
Langkah-langkah penyelesaian masalah dalam teks algoritma dapat ditulis
dalam notasi apapun dengan syarat bahwa langkah-langkah tersebut mudah
dipahami dan dimengerti Tidak ada notasi yang baku dalam teks algoritma
sebagaimana notasi
Dalam bahasa pemrograman (notasi dalam algoritma disebut dengan notasi
algoritmik) Setiap orang dapat membuat aturan penulisan dan notasi algoritmik
sendiri Berkaitan hal itu untuk memudahkan translasi notasi algoritmik ke dalam
bahasa pemrograman sebaiknya notasi algoritmik tersebut berkorespondensi
dengan notasi bahasa pemrograman secara umum Sebagai contoh
Tulis nilai X dan Y
Dalam notasi algoritmik menjadi
Write(XY)
Notasi write ini berarti nilai X dan Y dicetak ke piranti keluaran Notasi
write ini berkorespondensi dengan write atau writeln dalam bahasa pascal printf
dalam bahasa C cout dalam bahasa C++ Jadi translasi write(XY) dalam masing-
masing bahasa tersebut adalah
writeln(XY) dalam bahasa pascal
printf(ldquod drdquo XY) dalam bahasa C
coutltltXltltY dalam bahasa C++
Perhatikan bahwa setiap bahasa pemrograman mempunyai aturan sendiri dalam
menggunakan perintah penulisan
Contoh lain
Isikan nilai X ke dalam max
Ditulis dalam notasi algoritmik menjadi
max lt- X
Notasi ldquolt-rdquo berarti mengisi (assign) peubah (variable) max dengan nilai peubah
X Translasi notasi ldquolt-rdquo kedalam bahasa Pascal adalah ldquo=rdquo dalam bahasa C
adalah ldquo=rdquo dalam bahasa C++ adalah ldquo=rdquo Translasi max1048773X dalam masing-
masing bahasa adalah
max = X dalam bahasa Pascal
max = X dalam bahasa C
max = X dalam bahasa C++
Algoritma berisi langkah-langkah penyelesaian masalah Langkah-langkah
penyelesaian tersebut secara umum dibedakan menjadi tiga macam struktur yaitu
runtunan (sequence) pemilihan (selection) dan pengulangan (repetition) Agar
mudah dibaca algoritma dituliskan dalam notasi algoritmik tidak ada notasi yang
standar untuk menuliskan algoritma kita dapat menuliskan algoritma dengan
notasi sendiri karena teks algoritma tidak sama dengan teks program komputer
Namun agar notasi algoritmik mudah ditranslasikan ke dalam notasi bahasa
pemrograman maka sebaiknya notasi algoritmik tersebut berupa pseudo-code
yang berkoresponden dengan notasi bahasa pemrograman secara umum
312 Kriteria Algoritma (Donald E Knuth)
Input algoritma dapat memiliki nol atau lebih inputan dari luar
Output algoritma harus memiliki minimal satu buah output keluaran
Definiteness (pasti) algoritma memiliki instruksi ndash instruksi yang jelas
dan tidak ambigu
Finiteness (ada batas) algoritma harus memiliki titik berhenti (stopping
role)
Effectiveness ( tepat dan efisien ) algoritma sebisa mungkin harus dapat
dilaksanakan dan efektif Contoh instruksi yang tidak efektif adalah A =
A + 0 atau A = A 1
Namun ada beberapa program yang memang dirancang untuk unterminatable
contoh SistemOperasi
313 Jenis Proses Algoritma
Sequence Process instruksi dikerjakan secara sekuensial berurutan
Selection Process instruksi dikerjakan jika memenuhi kriteria tertentu
Iteration Process instruksi dikerjakan selama memenuhi suatu kondisi
tertentu
Concurrent Process beberapa instruksi dikerjakan secara bersama
ContohAlgoritma
a Algoritma menghitung luas persegi panjang
Masukkan panjang(P)
Masukkan lebar(L)
Luas larr P L
Tulis Luas
b Sifat Umum
Tidak menggunakan simbol atau sintaks dari suatu bahasa pemrograman
Tidak tergantung pada suatu bahasa pemrograman
Notasi-notasinya dapat digunakan untuk seluruh bahasa mana pun
32 TAHAPAN ANALISA ALGORITMA 321 Bagaimana merencanakan suatu algoritma
Menentukan beberapa model atau desain sebagai penyelesaian dari suatu masalah untuk mendapat sebuah solusi yan mungkin Dengan demikian akan banyak terdapat variasi desain atau model yang dapat diambil yang terbaik
322 Bagaimana menyatakan suatu algoritmaMenentukan model suatu algoritma yang digunakan sehingga dapat membuat barisan langkah secara berurutan guna mendapatkan solusi penyelesaian masalah
323 Analisis Suatu Algoritma (Untuk melihat faktor efesiensi amp efektifitas dari algoritma tersebut) Dapat dilakukan terhadap suatu algoritma dengan melihat pada
a Waktu Tempuh (Running Time) dr suatu Algortima Adalah satuan waktu yang ditempuh atau diperlukan oleh suatu algoritma dalam menyelesaikan suatu masalah Hal2 yg dapat mempengaruhi daripada waktu tempuh adalah Banyaknya langkah Besar dan jenis input data Jenis Operasi Komputer dan kompilator
b Jumlah Memori Yang Digunakan
324 Syarat Sebuah Algoritma Yang Baika Tingkat kepercayaannya tinggi (realibility) Hasil yang diperoleh dari
proses harus berakurasi tinggi dan benarb Pemrosesan yang efisien (cost rendah) Proses harus diselesaikan secepat
mungkin dan frekuensi kalkulasi yang sependek mungkinc Sifatnya general Bukan sesuatu yang hanya untuk menyelesaikan satu
kasus saja tapi juga untuk kasus lain yang lebih general
d Bisa dikembangkan (expandable) Haruslah sesuatu yang dapat kita kembangkan lebih jauh berdasarkan perubahan requirement yang ada
e Mudah dimengerti Siapapun yang melihat dia akan bisa memahami algoritma Anda Susah dimengertinya suatu program akan membuat susah di-maintenance (kelola)
f Portabilitas yang tinggi (portability) Bisa dengan mudah diimplementasikan di berbagai platform komputer
g Precise (tepat betul teliti) Setiap instruksi harus ditulis dengan seksama dan tidak ada keragu-raguan dengan demikian setiap instruksi harus dinyatakan secara eksplisit dan tidak ada bagian yang dihilangkan karena pemroses dianggap sudah mengerti Setiap langkah harus jelas dan pasti
Contoh Tambahkan 1 atau 2 pada xInstruksi di atas terdapat keraguan
1 Jumlah langkah atau instruksi berhingga dan tertentu Artinya untuk kasus yang sama banyaknya langkah harus tetap dan tertentu meskipun datanya berbeda
2 Efektif Tidak boleh ada instruksi yang tidak mungkin dikerjakan oleh pemroses yang akan menjalankannya
Contoh Hitung akar 2 dengan presisi sempurnaInstruksi di atas tidak efektif agar efektif instruksi tersebut diubahMisal Hitung akar 2 sampai lima digit di belakang koma
1 Harus terminate Jalannya algoritma harus ada kriteria berhenti Pertanyaannya adalah apakah bila jumlah instruksinya berhingga maka pasti terminate
2 Output yang dihasilkan tepat Jika langkah-langkah algoritmanya logis dan diikuti dengan seksama maka dihasilkan output yang diinginkan
Latihan
1 Buat algoritma untuk menentukan apakah suatu bilangan merupakan bilangan
prima atau bukan kemudian buat flowchart untuk program tersebut
2 Buat algoritma untuk mencetak N buah bilangan prima yang pertama
kemudian buat flowchart untuk program tersebut
3 Buat algoritma untuk menentukan jenis akar dari suatu persamaan kuadrat
kemudian buat flowchart untuk program tersebut
4 Buat algoritma untuk menghitung jumlah N suku dari deret aritmatika berikut
Sn = 3 + 7 + 11 + helliphellip + (4n-1)
5 Buat algoritma untuk menghitung nilai faktorial dari suatu bilangan kemudian
buat flowchart untuk program tersebut
6 Buat flowchart untuk mencetak pasangan nilai X dan Y dimana hubungan
antara X dan Y memenuhi persamaan Y = X3 ndash 2X +1 dan nilai x berubah dari
ndash10 sampai 10
Langkah-langkah penyelesaian masalah dalam teks algoritma dapat ditulis
dalam notasi apapun dengan syarat bahwa langkah-langkah tersebut mudah
dipahami dan dimengerti Tidak ada notasi yang baku dalam teks algoritma
sebagaimana notasi
Dalam bahasa pemrograman (notasi dalam algoritma disebut dengan notasi
algoritmik) Setiap orang dapat membuat aturan penulisan dan notasi algoritmik
sendiri Berkaitan hal itu untuk memudahkan translasi notasi algoritmik ke dalam
bahasa pemrograman sebaiknya notasi algoritmik tersebut berkorespondensi
dengan notasi bahasa pemrograman secara umum Sebagai contoh
Tulis nilai X dan Y
Dalam notasi algoritmik menjadi
Write(XY)
Notasi write ini berarti nilai X dan Y dicetak ke piranti keluaran Notasi
write ini berkorespondensi dengan write atau writeln dalam bahasa pascal printf
dalam bahasa C cout dalam bahasa C++ Jadi translasi write(XY) dalam masing-
masing bahasa tersebut adalah
writeln(XY) dalam bahasa pascal
printf(ldquod drdquo XY) dalam bahasa C
coutltltXltltY dalam bahasa C++
Perhatikan bahwa setiap bahasa pemrograman mempunyai aturan sendiri dalam
menggunakan perintah penulisan
Contoh lain
Isikan nilai X ke dalam max
Ditulis dalam notasi algoritmik menjadi
max lt- X
Notasi ldquolt-rdquo berarti mengisi (assign) peubah (variable) max dengan nilai peubah
X Translasi notasi ldquolt-rdquo kedalam bahasa Pascal adalah ldquo=rdquo dalam bahasa C
adalah ldquo=rdquo dalam bahasa C++ adalah ldquo=rdquo Translasi max1048773X dalam masing-
masing bahasa adalah
max = X dalam bahasa Pascal
max = X dalam bahasa C
max = X dalam bahasa C++
Algoritma berisi langkah-langkah penyelesaian masalah Langkah-langkah
penyelesaian tersebut secara umum dibedakan menjadi tiga macam struktur yaitu
runtunan (sequence) pemilihan (selection) dan pengulangan (repetition) Agar
mudah dibaca algoritma dituliskan dalam notasi algoritmik tidak ada notasi yang
standar untuk menuliskan algoritma kita dapat menuliskan algoritma dengan
notasi sendiri karena teks algoritma tidak sama dengan teks program komputer
Namun agar notasi algoritmik mudah ditranslasikan ke dalam notasi bahasa
pemrograman maka sebaiknya notasi algoritmik tersebut berupa pseudo-code
yang berkoresponden dengan notasi bahasa pemrograman secara umum
312 Kriteria Algoritma (Donald E Knuth)
Input algoritma dapat memiliki nol atau lebih inputan dari luar
Output algoritma harus memiliki minimal satu buah output keluaran
Definiteness (pasti) algoritma memiliki instruksi ndash instruksi yang jelas
dan tidak ambigu
Finiteness (ada batas) algoritma harus memiliki titik berhenti (stopping
role)
Effectiveness ( tepat dan efisien ) algoritma sebisa mungkin harus dapat
dilaksanakan dan efektif Contoh instruksi yang tidak efektif adalah A =
A + 0 atau A = A 1
Namun ada beberapa program yang memang dirancang untuk unterminatable
contoh SistemOperasi
313 Jenis Proses Algoritma
Sequence Process instruksi dikerjakan secara sekuensial berurutan
Selection Process instruksi dikerjakan jika memenuhi kriteria tertentu
Iteration Process instruksi dikerjakan selama memenuhi suatu kondisi
tertentu
Concurrent Process beberapa instruksi dikerjakan secara bersama
ContohAlgoritma
a Algoritma menghitung luas persegi panjang
Masukkan panjang(P)
Masukkan lebar(L)
Luas larr P L
Tulis Luas
b Sifat Umum
Tidak menggunakan simbol atau sintaks dari suatu bahasa pemrograman
Tidak tergantung pada suatu bahasa pemrograman
Notasi-notasinya dapat digunakan untuk seluruh bahasa mana pun
32 TAHAPAN ANALISA ALGORITMA 321 Bagaimana merencanakan suatu algoritma
Menentukan beberapa model atau desain sebagai penyelesaian dari suatu masalah untuk mendapat sebuah solusi yan mungkin Dengan demikian akan banyak terdapat variasi desain atau model yang dapat diambil yang terbaik
322 Bagaimana menyatakan suatu algoritmaMenentukan model suatu algoritma yang digunakan sehingga dapat membuat barisan langkah secara berurutan guna mendapatkan solusi penyelesaian masalah
323 Analisis Suatu Algoritma (Untuk melihat faktor efesiensi amp efektifitas dari algoritma tersebut) Dapat dilakukan terhadap suatu algoritma dengan melihat pada
a Waktu Tempuh (Running Time) dr suatu Algortima Adalah satuan waktu yang ditempuh atau diperlukan oleh suatu algoritma dalam menyelesaikan suatu masalah Hal2 yg dapat mempengaruhi daripada waktu tempuh adalah Banyaknya langkah Besar dan jenis input data Jenis Operasi Komputer dan kompilator
b Jumlah Memori Yang Digunakan
324 Syarat Sebuah Algoritma Yang Baika Tingkat kepercayaannya tinggi (realibility) Hasil yang diperoleh dari
proses harus berakurasi tinggi dan benarb Pemrosesan yang efisien (cost rendah) Proses harus diselesaikan secepat
mungkin dan frekuensi kalkulasi yang sependek mungkinc Sifatnya general Bukan sesuatu yang hanya untuk menyelesaikan satu
kasus saja tapi juga untuk kasus lain yang lebih general
d Bisa dikembangkan (expandable) Haruslah sesuatu yang dapat kita kembangkan lebih jauh berdasarkan perubahan requirement yang ada
e Mudah dimengerti Siapapun yang melihat dia akan bisa memahami algoritma Anda Susah dimengertinya suatu program akan membuat susah di-maintenance (kelola)
f Portabilitas yang tinggi (portability) Bisa dengan mudah diimplementasikan di berbagai platform komputer
g Precise (tepat betul teliti) Setiap instruksi harus ditulis dengan seksama dan tidak ada keragu-raguan dengan demikian setiap instruksi harus dinyatakan secara eksplisit dan tidak ada bagian yang dihilangkan karena pemroses dianggap sudah mengerti Setiap langkah harus jelas dan pasti
Contoh Tambahkan 1 atau 2 pada xInstruksi di atas terdapat keraguan
1 Jumlah langkah atau instruksi berhingga dan tertentu Artinya untuk kasus yang sama banyaknya langkah harus tetap dan tertentu meskipun datanya berbeda
2 Efektif Tidak boleh ada instruksi yang tidak mungkin dikerjakan oleh pemroses yang akan menjalankannya
Contoh Hitung akar 2 dengan presisi sempurnaInstruksi di atas tidak efektif agar efektif instruksi tersebut diubahMisal Hitung akar 2 sampai lima digit di belakang koma
1 Harus terminate Jalannya algoritma harus ada kriteria berhenti Pertanyaannya adalah apakah bila jumlah instruksinya berhingga maka pasti terminate
2 Output yang dihasilkan tepat Jika langkah-langkah algoritmanya logis dan diikuti dengan seksama maka dihasilkan output yang diinginkan
Latihan
1 Buat algoritma untuk menentukan apakah suatu bilangan merupakan bilangan
prima atau bukan kemudian buat flowchart untuk program tersebut
2 Buat algoritma untuk mencetak N buah bilangan prima yang pertama
kemudian buat flowchart untuk program tersebut
3 Buat algoritma untuk menentukan jenis akar dari suatu persamaan kuadrat
kemudian buat flowchart untuk program tersebut
4 Buat algoritma untuk menghitung jumlah N suku dari deret aritmatika berikut
Sn = 3 + 7 + 11 + helliphellip + (4n-1)
5 Buat algoritma untuk menghitung nilai faktorial dari suatu bilangan kemudian
buat flowchart untuk program tersebut
6 Buat flowchart untuk mencetak pasangan nilai X dan Y dimana hubungan
antara X dan Y memenuhi persamaan Y = X3 ndash 2X +1 dan nilai x berubah dari
ndash10 sampai 10
max = X dalam bahasa C++
Algoritma berisi langkah-langkah penyelesaian masalah Langkah-langkah
penyelesaian tersebut secara umum dibedakan menjadi tiga macam struktur yaitu
runtunan (sequence) pemilihan (selection) dan pengulangan (repetition) Agar
mudah dibaca algoritma dituliskan dalam notasi algoritmik tidak ada notasi yang
standar untuk menuliskan algoritma kita dapat menuliskan algoritma dengan
notasi sendiri karena teks algoritma tidak sama dengan teks program komputer
Namun agar notasi algoritmik mudah ditranslasikan ke dalam notasi bahasa
pemrograman maka sebaiknya notasi algoritmik tersebut berupa pseudo-code
yang berkoresponden dengan notasi bahasa pemrograman secara umum
312 Kriteria Algoritma (Donald E Knuth)
Input algoritma dapat memiliki nol atau lebih inputan dari luar
Output algoritma harus memiliki minimal satu buah output keluaran
Definiteness (pasti) algoritma memiliki instruksi ndash instruksi yang jelas
dan tidak ambigu
Finiteness (ada batas) algoritma harus memiliki titik berhenti (stopping
role)
Effectiveness ( tepat dan efisien ) algoritma sebisa mungkin harus dapat
dilaksanakan dan efektif Contoh instruksi yang tidak efektif adalah A =
A + 0 atau A = A 1
Namun ada beberapa program yang memang dirancang untuk unterminatable
contoh SistemOperasi
313 Jenis Proses Algoritma
Sequence Process instruksi dikerjakan secara sekuensial berurutan
Selection Process instruksi dikerjakan jika memenuhi kriteria tertentu
Iteration Process instruksi dikerjakan selama memenuhi suatu kondisi
tertentu
Concurrent Process beberapa instruksi dikerjakan secara bersama
ContohAlgoritma
a Algoritma menghitung luas persegi panjang
Masukkan panjang(P)
Masukkan lebar(L)
Luas larr P L
Tulis Luas
b Sifat Umum
Tidak menggunakan simbol atau sintaks dari suatu bahasa pemrograman
Tidak tergantung pada suatu bahasa pemrograman
Notasi-notasinya dapat digunakan untuk seluruh bahasa mana pun
32 TAHAPAN ANALISA ALGORITMA 321 Bagaimana merencanakan suatu algoritma
Menentukan beberapa model atau desain sebagai penyelesaian dari suatu masalah untuk mendapat sebuah solusi yan mungkin Dengan demikian akan banyak terdapat variasi desain atau model yang dapat diambil yang terbaik
322 Bagaimana menyatakan suatu algoritmaMenentukan model suatu algoritma yang digunakan sehingga dapat membuat barisan langkah secara berurutan guna mendapatkan solusi penyelesaian masalah
323 Analisis Suatu Algoritma (Untuk melihat faktor efesiensi amp efektifitas dari algoritma tersebut) Dapat dilakukan terhadap suatu algoritma dengan melihat pada
a Waktu Tempuh (Running Time) dr suatu Algortima Adalah satuan waktu yang ditempuh atau diperlukan oleh suatu algoritma dalam menyelesaikan suatu masalah Hal2 yg dapat mempengaruhi daripada waktu tempuh adalah Banyaknya langkah Besar dan jenis input data Jenis Operasi Komputer dan kompilator
b Jumlah Memori Yang Digunakan
324 Syarat Sebuah Algoritma Yang Baika Tingkat kepercayaannya tinggi (realibility) Hasil yang diperoleh dari
proses harus berakurasi tinggi dan benarb Pemrosesan yang efisien (cost rendah) Proses harus diselesaikan secepat
mungkin dan frekuensi kalkulasi yang sependek mungkinc Sifatnya general Bukan sesuatu yang hanya untuk menyelesaikan satu
kasus saja tapi juga untuk kasus lain yang lebih general
d Bisa dikembangkan (expandable) Haruslah sesuatu yang dapat kita kembangkan lebih jauh berdasarkan perubahan requirement yang ada
e Mudah dimengerti Siapapun yang melihat dia akan bisa memahami algoritma Anda Susah dimengertinya suatu program akan membuat susah di-maintenance (kelola)
f Portabilitas yang tinggi (portability) Bisa dengan mudah diimplementasikan di berbagai platform komputer
g Precise (tepat betul teliti) Setiap instruksi harus ditulis dengan seksama dan tidak ada keragu-raguan dengan demikian setiap instruksi harus dinyatakan secara eksplisit dan tidak ada bagian yang dihilangkan karena pemroses dianggap sudah mengerti Setiap langkah harus jelas dan pasti
Contoh Tambahkan 1 atau 2 pada xInstruksi di atas terdapat keraguan
1 Jumlah langkah atau instruksi berhingga dan tertentu Artinya untuk kasus yang sama banyaknya langkah harus tetap dan tertentu meskipun datanya berbeda
2 Efektif Tidak boleh ada instruksi yang tidak mungkin dikerjakan oleh pemroses yang akan menjalankannya
Contoh Hitung akar 2 dengan presisi sempurnaInstruksi di atas tidak efektif agar efektif instruksi tersebut diubahMisal Hitung akar 2 sampai lima digit di belakang koma
1 Harus terminate Jalannya algoritma harus ada kriteria berhenti Pertanyaannya adalah apakah bila jumlah instruksinya berhingga maka pasti terminate
2 Output yang dihasilkan tepat Jika langkah-langkah algoritmanya logis dan diikuti dengan seksama maka dihasilkan output yang diinginkan
Latihan
1 Buat algoritma untuk menentukan apakah suatu bilangan merupakan bilangan
prima atau bukan kemudian buat flowchart untuk program tersebut
2 Buat algoritma untuk mencetak N buah bilangan prima yang pertama
kemudian buat flowchart untuk program tersebut
3 Buat algoritma untuk menentukan jenis akar dari suatu persamaan kuadrat
kemudian buat flowchart untuk program tersebut
4 Buat algoritma untuk menghitung jumlah N suku dari deret aritmatika berikut
Sn = 3 + 7 + 11 + helliphellip + (4n-1)
5 Buat algoritma untuk menghitung nilai faktorial dari suatu bilangan kemudian
buat flowchart untuk program tersebut
6 Buat flowchart untuk mencetak pasangan nilai X dan Y dimana hubungan
antara X dan Y memenuhi persamaan Y = X3 ndash 2X +1 dan nilai x berubah dari
ndash10 sampai 10
a Algoritma menghitung luas persegi panjang
Masukkan panjang(P)
Masukkan lebar(L)
Luas larr P L
Tulis Luas
b Sifat Umum
Tidak menggunakan simbol atau sintaks dari suatu bahasa pemrograman
Tidak tergantung pada suatu bahasa pemrograman
Notasi-notasinya dapat digunakan untuk seluruh bahasa mana pun
32 TAHAPAN ANALISA ALGORITMA 321 Bagaimana merencanakan suatu algoritma
Menentukan beberapa model atau desain sebagai penyelesaian dari suatu masalah untuk mendapat sebuah solusi yan mungkin Dengan demikian akan banyak terdapat variasi desain atau model yang dapat diambil yang terbaik
322 Bagaimana menyatakan suatu algoritmaMenentukan model suatu algoritma yang digunakan sehingga dapat membuat barisan langkah secara berurutan guna mendapatkan solusi penyelesaian masalah
323 Analisis Suatu Algoritma (Untuk melihat faktor efesiensi amp efektifitas dari algoritma tersebut) Dapat dilakukan terhadap suatu algoritma dengan melihat pada
a Waktu Tempuh (Running Time) dr suatu Algortima Adalah satuan waktu yang ditempuh atau diperlukan oleh suatu algoritma dalam menyelesaikan suatu masalah Hal2 yg dapat mempengaruhi daripada waktu tempuh adalah Banyaknya langkah Besar dan jenis input data Jenis Operasi Komputer dan kompilator
b Jumlah Memori Yang Digunakan
324 Syarat Sebuah Algoritma Yang Baika Tingkat kepercayaannya tinggi (realibility) Hasil yang diperoleh dari
proses harus berakurasi tinggi dan benarb Pemrosesan yang efisien (cost rendah) Proses harus diselesaikan secepat
mungkin dan frekuensi kalkulasi yang sependek mungkinc Sifatnya general Bukan sesuatu yang hanya untuk menyelesaikan satu
kasus saja tapi juga untuk kasus lain yang lebih general
d Bisa dikembangkan (expandable) Haruslah sesuatu yang dapat kita kembangkan lebih jauh berdasarkan perubahan requirement yang ada
e Mudah dimengerti Siapapun yang melihat dia akan bisa memahami algoritma Anda Susah dimengertinya suatu program akan membuat susah di-maintenance (kelola)
f Portabilitas yang tinggi (portability) Bisa dengan mudah diimplementasikan di berbagai platform komputer
g Precise (tepat betul teliti) Setiap instruksi harus ditulis dengan seksama dan tidak ada keragu-raguan dengan demikian setiap instruksi harus dinyatakan secara eksplisit dan tidak ada bagian yang dihilangkan karena pemroses dianggap sudah mengerti Setiap langkah harus jelas dan pasti
Contoh Tambahkan 1 atau 2 pada xInstruksi di atas terdapat keraguan
1 Jumlah langkah atau instruksi berhingga dan tertentu Artinya untuk kasus yang sama banyaknya langkah harus tetap dan tertentu meskipun datanya berbeda
2 Efektif Tidak boleh ada instruksi yang tidak mungkin dikerjakan oleh pemroses yang akan menjalankannya
Contoh Hitung akar 2 dengan presisi sempurnaInstruksi di atas tidak efektif agar efektif instruksi tersebut diubahMisal Hitung akar 2 sampai lima digit di belakang koma
1 Harus terminate Jalannya algoritma harus ada kriteria berhenti Pertanyaannya adalah apakah bila jumlah instruksinya berhingga maka pasti terminate
2 Output yang dihasilkan tepat Jika langkah-langkah algoritmanya logis dan diikuti dengan seksama maka dihasilkan output yang diinginkan
Latihan
1 Buat algoritma untuk menentukan apakah suatu bilangan merupakan bilangan
prima atau bukan kemudian buat flowchart untuk program tersebut
2 Buat algoritma untuk mencetak N buah bilangan prima yang pertama
kemudian buat flowchart untuk program tersebut
3 Buat algoritma untuk menentukan jenis akar dari suatu persamaan kuadrat
kemudian buat flowchart untuk program tersebut
4 Buat algoritma untuk menghitung jumlah N suku dari deret aritmatika berikut
Sn = 3 + 7 + 11 + helliphellip + (4n-1)
5 Buat algoritma untuk menghitung nilai faktorial dari suatu bilangan kemudian
buat flowchart untuk program tersebut
6 Buat flowchart untuk mencetak pasangan nilai X dan Y dimana hubungan
antara X dan Y memenuhi persamaan Y = X3 ndash 2X +1 dan nilai x berubah dari
ndash10 sampai 10
d Bisa dikembangkan (expandable) Haruslah sesuatu yang dapat kita kembangkan lebih jauh berdasarkan perubahan requirement yang ada
e Mudah dimengerti Siapapun yang melihat dia akan bisa memahami algoritma Anda Susah dimengertinya suatu program akan membuat susah di-maintenance (kelola)
f Portabilitas yang tinggi (portability) Bisa dengan mudah diimplementasikan di berbagai platform komputer
g Precise (tepat betul teliti) Setiap instruksi harus ditulis dengan seksama dan tidak ada keragu-raguan dengan demikian setiap instruksi harus dinyatakan secara eksplisit dan tidak ada bagian yang dihilangkan karena pemroses dianggap sudah mengerti Setiap langkah harus jelas dan pasti
Contoh Tambahkan 1 atau 2 pada xInstruksi di atas terdapat keraguan
1 Jumlah langkah atau instruksi berhingga dan tertentu Artinya untuk kasus yang sama banyaknya langkah harus tetap dan tertentu meskipun datanya berbeda
2 Efektif Tidak boleh ada instruksi yang tidak mungkin dikerjakan oleh pemroses yang akan menjalankannya
Contoh Hitung akar 2 dengan presisi sempurnaInstruksi di atas tidak efektif agar efektif instruksi tersebut diubahMisal Hitung akar 2 sampai lima digit di belakang koma
1 Harus terminate Jalannya algoritma harus ada kriteria berhenti Pertanyaannya adalah apakah bila jumlah instruksinya berhingga maka pasti terminate
2 Output yang dihasilkan tepat Jika langkah-langkah algoritmanya logis dan diikuti dengan seksama maka dihasilkan output yang diinginkan
Latihan
1 Buat algoritma untuk menentukan apakah suatu bilangan merupakan bilangan
prima atau bukan kemudian buat flowchart untuk program tersebut
2 Buat algoritma untuk mencetak N buah bilangan prima yang pertama
kemudian buat flowchart untuk program tersebut
3 Buat algoritma untuk menentukan jenis akar dari suatu persamaan kuadrat
kemudian buat flowchart untuk program tersebut
4 Buat algoritma untuk menghitung jumlah N suku dari deret aritmatika berikut
Sn = 3 + 7 + 11 + helliphellip + (4n-1)
5 Buat algoritma untuk menghitung nilai faktorial dari suatu bilangan kemudian
buat flowchart untuk program tersebut
6 Buat flowchart untuk mencetak pasangan nilai X dan Y dimana hubungan
antara X dan Y memenuhi persamaan Y = X3 ndash 2X +1 dan nilai x berubah dari
ndash10 sampai 10
Latihan
1 Buat algoritma untuk menentukan apakah suatu bilangan merupakan bilangan
prima atau bukan kemudian buat flowchart untuk program tersebut
2 Buat algoritma untuk mencetak N buah bilangan prima yang pertama
kemudian buat flowchart untuk program tersebut
3 Buat algoritma untuk menentukan jenis akar dari suatu persamaan kuadrat
kemudian buat flowchart untuk program tersebut
4 Buat algoritma untuk menghitung jumlah N suku dari deret aritmatika berikut
Sn = 3 + 7 + 11 + helliphellip + (4n-1)
5 Buat algoritma untuk menghitung nilai faktorial dari suatu bilangan kemudian
buat flowchart untuk program tersebut
6 Buat flowchart untuk mencetak pasangan nilai X dan Y dimana hubungan
antara X dan Y memenuhi persamaan Y = X3 ndash 2X +1 dan nilai x berubah dari
ndash10 sampai 10