Wawasan Nusantara sebagai satu kesatuan, politik, ekonomi, sosial, budaya, d...
ALGO-PENYAJIAN
1. BAB II
PENYAJIAN ALGORITMA
1. Tujuan pembelajaran
2. Deskripsi umum
3. Penyajian
3.1 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 sebaliknya.
Pembuatan 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
2. 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 imitasi/mirip/menyerupai 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
3.1.1. Notasi Algoritma
3. 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(X,Y)
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(X,Y) dalam masing-
masing bahasa tersebut adalah :
writeln(X,Y); { dalam bahasa pascal }
printf(“%d %d”, X,Y); /* dalam bahasa C */
cout<<X<<Y; /* 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 <- X
Notasi “<-” berarti mengisi (assign) peubah (variable) max dengan nilai peubah
X. Translasi notasi “<-” kedalam bahasa Pascal adalah “:=”, dalam bahasa C
adalah “=”, dalam bahasa C++ adalah “=”. Translasi max�X dalam masing-
masing bahasa adalah :
max := X; { dalam bahasa Pascal }
max = X; /* dalam bahasa C */
4. 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.
3.1.2. 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 – 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
3.1.3. 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
5. a. Algoritma menghitung luas persegi panjang:
Masukkan panjang(P)
Masukkan lebar(L)
Luas ← 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
3.2. TAHAPAN ANALISA ALGORITMA :
3.2.1. 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.
3.2.2. Bagaimana menyatakan suatu algoritma
Menentukan model suatu algoritma yang digunakan sehingga dapat
membuat barisan langkah secara berurutan guna mendapatkan solusi
penyelesaian masalah.
3.2.3. Analisis Suatu Algoritma
(Untuk melihat faktor efesiensi & 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.
3.2.4. Syarat Sebuah Algoritma Yang Baik
a. Tingkat kepercayaannya tinggi (realibility). Hasil yang diperoleh dari
proses harus berakurasi tinggi dan benar.
b. Pemrosesan yang efisien (cost rendah). Proses harus diselesaikan secepat
mungkin dan frekuensi kalkulasi yang sependek mungkin.
c. Sifatnya general. Bukan sesuatu yang hanya untuk menyelesaikan satu
kasus saja, tapi juga untuk kasus lain yang lebih general.
6. 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 x.
Instruksi 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 sempurna.
Instruksi di atas tidak efektif, agar efektif instruksi tersebut diubah.
Misal: 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.
7.
8.
9.
10.
11. 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 + …… + (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 – 2X +1 dan nilai x berubah dari
–10 sampai 10 !