Upload
faishal-hafizh
View
239
Download
0
Embed Size (px)
Citation preview
8/18/2019 DESAIN ALGORITMA
1/19
Desain Algoritma
Sekarang kita mulai proses pengembangan program komputer. Sebuah
program adalah sekumpulan instruksi belaka bagi komputer. Semua program yang
dibutuhkan untuk dijalankan pada sebuah komputer secara bersama-sama disebut
piranti lunak (software).
GAMA! . "ima #angkah yang diperlukan untuk membuat dan memeli hara piranti
lunak berkualitas tinggi. $anah catu-balik menun jukkan bahwa empat langkah yang
pertama dapat diperbaiki berdasarkan pengalaman.
Sebuah algoritma adalah urutan langkah-langkah logika yang dibutuhkan guna
melakukan suatu tugas spesifik seperti halnya penyelesaian suatu masalah. Algoritma
8/18/2019 DESAIN ALGORITMA
2/19
yang baik memiliki sejumlah sifat. Algoritma harus selalu berakhir setelah sejumlah
langkah berhingga dan mestinya cukup umum dalam menghadapi segala jenis
kemungkinan. Algoritma yang baik harus deterministik% artinya& tidak satu pun dari
kesempatan yang tertinggal. 'asil akhir tidak tergantung pada siapa yang mengikuti
algoritma tersebut. alam pengertian ini& suatu algoritma analog dengan sebuah
resep. ua koki bekerja saling bebas memakai suatu resep yang baik& lalu berakhir
dengan masakan yang identik.
GAMA! (a) Algoritma dan (b) diagram alir untuk pemecahan masalah
penambahan sederhana.
Gambar (a) memperlihatkan suatu algoritma untuk menyelesaikan masalah sederhana
dari penambahan dua bilangan. ua orang pemrogram yang bekerja dengan algoritma
ini mungkin saja mengembangkan program dengan gaya yang berlainn tetapi dari
data yang sama& program harus memberikan hasil yang sama.
8/18/2019 DESAIN ALGORITMA
3/19
Suatu alternatif untuk menyatakan sebuah algoritma adalah dengan sebuah diagram
alir (flowchart). #ni merupakan pernyataan algoritma secara *isual atau grafis dengan
menggunakan sederetan blok dan tanda panah. Setiap blok pada diagram alir
menunjukkn suatu pengoperasian tertentu atau langkah dalam algoritma. +anda
panah menunjukkan arah urutan operasi yang akan dilaksanakan. Gambar berikut
mengilustrasikan delapan tipe blok tanda panah yang memastikan pengoperasian
yang diperlukan bagi pemrograman pada komputer pribadi. Gambar (b) diatas
memperlihatkan sebuah diagram alir untuk masalah sederhana untuk penambahan dua
bilangan. iagram alir memiliki manfaat teristimewa untuk melukiskan algoritma
yang rumit. ,ntuk hal-hal serupa ini& suatu lukisan grafik dapat membantu
mem*isualisasikan aliran logika algoritma. alam buku ini& kami menyertakan
diagram alir untuk kebanyakan metode utama. Anda dapat memakai diagram alir ini
sebagai dasar pengembangan program anda sendiri.
omposisi $rogram
Setelah selesai meramu algoritma& langkah selanjutnya adalah menyatakan
logaritma sebagai suatu urutan pernyataan program yang disebut kode. Menahan
keinginan untuk menulis kode adalah penting sebelum keseluruhan ruang lingkup
masalah terdefinisi secara jelas dan teknik pemecahan dari algoritma dirancang secara
hati-hati. Masalah yang paling umum dihadapi oleh pemrogram yang belum
berpengalaman biasanya suatu kode yang persiapannya ditemukan belum matang
yang tidak mencakup suatu strategi atau rancangan menyeluruh.
Setelah suatu algoritma yang baik dirancang& kode ditulis dalam suatu bentuk
komputer tingkat tinggi. !atusan bahasa tingkat tinggi telah dikembangkan semenjak
mulainya abad komputer. i antaranya ada tiga buah bahasa yang paling serasi
dengan komputer pribadi& yakni AS#& /0!+!A1 dan $ascal.
/0!+!A1&singkatan dan formula translation& telah dikembangkan pada tahun 2345-
an.arena dirancang untuk komputasi& /0!+!A1 merupakan bahasa terapan yang
paling luas digunakan untuk teknik dan ilmu pengetahuan.
8/18/2019 DESAIN ALGORITMA
4/19
GAMA! Simbol yang dipakai dalam diagram alir.
AS#& singkatan dari beginner6s all-purposes symbolic instruction code&
dikembangkan pada tahun 2375-an. AS# membutuhkan sejumlah kecil memori
dan relatif mudah dilaksanakan. engan sendirinya merupakan bahasa yang sangat
luas dipakai pada komputer tadi. +etapi AS# tidak semampu
8/18/2019 DESAIN ALGORITMA
5/19
/0!+!A1 dan terkadang kurang menyenangkan untuk program yang besar dan.
kompleks.
$ascal& diberi nama seperti nama ilmuwan dan ahli filsafat $erancis& laise
$ascal& merupakan bahasa struktur yang dikembangkan pada tahun 2385-an. $rogram
yang ditulis dalam bahasa $ascal dengan mudah dapat dijalankan pada komputer
lainnya. Meskipun $ascal lebih sukar dipelajari dibanding AS# dan /0!+!A1&
kekuatannya menunjukkan bahwa pada masa mendatang& $ascal akan menjadi
penting. 'al ini ternyata benar& teristimewa untuk pemrograman lanjut yang berskala
besar.
AS# dan /0!+!A1 memang baik dan cocok untuk program yang singkat
dan sederhana& juga menyenangkan sewaktu melakukan kebanyakan metode numerik
dalam buku ini. engan demikian kami telah membatasi pemilihan penyajian dalam
buku ini pada program dalam bahasa-bahasa tersebut. AS# adalah pilihan yang
jelas karena memang sudah tersedia secara luas. /0!+!A1 dimasukkan& karena
pengertiannya yang berkesinambungan dengan pekerjaan teknik. 9alaupun buku ini
ditekankan pada komputer pribadi& tetapi dapat juga digunakan bagi mereka yang
akan memakai mesin mainframe yang berhubungan dengan pemakaian sembarang
bahasa tingkat tinggi. alam hal ini& program dan diagram alir kita cukup mudah&
sehingga dapat melayani sebagai landasan pengembangan piranti lunak bagi mereka
yang telah terbiasa dengan $ascal.
$enjelasan yang lebih lengkap mengenai AS# dan /0!+!A1 tentunya di
luar ruang lingkup buku ini. +ambahan pula& sejumlah dialek yang tersedia pada
masing-masing bahasa akan menyukarkan penjelasan lebih jauh. Misalnya& dewasa
ini lebih dari 25 dialek utama dalam AS#. +etapi dengan membatasi pembicaraan
kita terhadap hal yang mendasar& bahan yang diliput cukup& sehingga anda dapat
8/18/2019 DESAIN ALGORITMA
6/19
mengerti dan secara efektif melaksanakan materi buku selebihnya yang berhubungan
dengan komputer.
Gambar dibawah ini menunjukkan kode dalam kedua bahasa /0!+!A1 dan
AS# untuk penambahan dua bilangan& memperlihatkan perbedaan struktur utama
di antara kedua bahasa label dan spasi kode. ,ntuk AS#& setiap instruksj ditulis
pada satu baris yang diberi label nomor. Sebaliknya& hanya pernyataan /0!+!A1
yang membutuhkan identifikasi yang perlu diberi label dengan nomor. Misalnya
pernyataan 2 dari /0!+!A1 *ersi Gambar dibawah ini disebut pernyataan
/0!MA+& menyatakan berapa baris dan masukan :input; dan keluaran :output; akan
diperagakan. ?4
25A > ?4
25 A > ?4
dan komputer akan menginterpretasikan setiap *ersi tersebut sebagai salah satu hal
yang sepadan. Sebaliknya suku-suku dalam kode /0!+!A1 harus diluruskan pada
8/18/2019 DESAIN ALGORITMA
7/19
kolom tertentu. $erjanjian sehubungan dengan letak pengaturan lurus itu semula dari
kenyataan bahwa program /0!+!A1 itu dimasukkan ke dalam komputer memakai
kartu punch (berlubang). 9alaupun kartu-kartu tersebut sudah jarang dipakai saat ini&
perjanjian spasi tetap senantiasa dijaga.
artu punch sebanyak @5 kolom disebut field kartu. Sebagian field itu terletak
diluar untuk maksud tertentu. 'al ini diperlihatkan oleh formulir koding
(codingform) pada Gambar berikut. Suatu formulir koding ialah selembar kertas di
mana sebuah program dapat ditulis dan diperiksa kcsalahannya sebelum dimasukkan
ke dalam komputer. $erlu dicatat bahwa a mempunyai field @5 kolom mirip seperti
kartu punch. Amati pula bahwa bagian tertentu dari field itu dipakai untuk tujuan-
tujuan tertentu.
iluar struktur& kedua bahasa memperlihatkan perbedaan lain atau beberapa
kesamaan yang kuat. 'al ini terlihat pada +abel berikut. +abel ini menyajikan suatu
perbandingan paralel dari enam elemen utama pemrograrnan yang langsung berkaitan
dengan metode numerik. esemuanya itu ialah=
2. onstanta dari *ariabel. on*ensi harus ditaati untuk menyatakan
bilangan dan nama simbolik dalam kedua bahasa. Seperti terlihat dalam +abel
berikut& ini merupakan suatu kawasan di mana perbedaan AS# dan
/0!+!A1 sangat berarti.
?. Masukan-keluaran (input-output). #ni merupakan instruksi-instruksi di
mana informasi dikirimkan ke dalam dan ke luar komputer. #ni merupakan
kawasan lainnya di mana bahasa-bahasa itu menunjukkan perbedaan yang
perlu dipertimbangkan. 9alaupun kebanyakan dialek modern memperbaiki
keadaan ini& secara historis& kemampuan masukan-masukan AS# menurut
jenisnya agak terbatas. Sebaliknya pernyataan /0!MA+ dalam /0!+!A1
merupakan hal yang sangat berdayaguna untuk memberi label dan spasi
keluaran. +etapi bagi orang baru& pernyataan itu lebih sukar dikuasai.
8/18/2019 DESAIN ALGORITMA
8/19
B. omputasi. $engoperasian matematika hampir serupa dalam kedua
bahasa. 9alaupun nomenklatur menunjukkan sedikit perbedaan& persamaan-
persamaan yang ditulis dalam kedua bahasa hampir tidak dapat dibedakan.
C. ontrol. $ernyataan-pernyataan ini dipakai untuk mengarahkan urutan
logika instruksi di dalam program. ,ntuk metode numerik& tiga jenis biasanya
sudah cukup pernyataan G0 +0& logika #/ dan loop (perintah ulang).
9alaupun terdapa+ perbedaan nomenklatur di antara kedua bahasa&
pengoperasiannya dalam praktik hampir bersamaan.
4. Subprogram. Seperti namanya& subprogram merupakan program mini di
dalam program utama& dirancang untuk melakukan suatu pernyataan atau
sekumpulan pernyataan yang diulangi berkali-kali dalam program. aripada
menulis program mini itu berkali-kali& ia dapat ditulis sekali saja& lain
dipanggil oleh sebuah pernyataan tunggal bilamana diperlukan. Subprogram
ini& yang mencakup sub rutin& fungsi yang didefinisikan pemakai& dan fungsi
pernyataan& adalah hal lain di mana /0!+!A1 dan AS# berbeda secara
berarti. $erbedaannya dihubungkan dengan cara di mana informasi di
lewatkan antara badan utama program dan subprogram. Seperti terlihat pada
+abel berikut dibawah& argumen untuk subprogram /0!+!A1 bertindak
seakan jendela untuk mengendalikan lintasan informasi ini merupakan contoh
betapa /0!+!A1 lebih rumit& tetapi sebagai akibatnya lebih berdayaguna
daripada AS#.
7. okumentasi. $ernyataan-pernyataan di sini memungkinkan pemasukan
informasi dalam program yang berorientasi pemakai.
!ingkasnya& /0!+!A1 sedikit lebih luwes dan berdayaguna& tetapi juga
lebih sukar dipelajari daripada AS#. +etapi karena AS# semula dikembangkan
sebagai suatu *ersi pemudahan /0!+!A1& manifestasi kedua bahasa mengandung
banyak kesamaan. 9alaupun masing-masing memiliki kon*ensi gaya tertentu yang
harus diamati& keseluruhan perbendaharaan kata (*ocabulary) dan tata bahasa
(grammar) cukup mirip untuk memudahkan penerjemahan kebanyakan program dari
8/18/2019 DESAIN ALGORITMA
9/19
satu bahasa ke bahasa lainnya. onsekuensinya& semua kode komputer dalam buku
ini disajikan dalam format sejajar dengan Gambar diatas. 9alaupun terkadang ini
berarti bahwa kita harus me nguasai salah satu bahasa& tetapi ia menyebabkan anda
mencapai pengetahuan bekerjanya bahasa /0!+!A1 dan AS#.
+AD"& !eferensi singkat= $erbandingan bahasa /0!+!A1 dan AS#. /0!+!A1
dan AS# mudah dipelajari dan praktis digunakan serta merupakan
bahasa komputer terlama yang diajarkan kepada mahasiswa teknik.
Seperti kebanyakan bahasa lainnya& pelbagai dialek muncul& dan hal ini
membuat kesukaran dalam penjelasan secara komprehensif $erbandingan
berikut ini adalah suatu usaha untuk menggambarkan perbedaan dan
kesamaan umum antara /0!+!A1 dan AS#& dan akan dibutuhkan
manfaatnya sebagai referensi singkat penyegar. Sumber lainnya akan
dapat dikonsumsi secara terinci berkenaan dengan dialek khusus.
!ingkasan ini difokuskan dan dibatasi pada bahan yang berkaitian
langsung dengan metode numerik& juga piranti lunak terkait yang
dijelaskan dalam buku ini.
8/18/2019 DESAIN ALGORITMA
10/19
lanjutan=
8/18/2019 DESAIN ALGORITMA
11/19
lanjutan=
8/18/2019 DESAIN ALGORITMA
12/19
lanjutan=
8/18/2019 DESAIN ALGORITMA
13/19
lanjutan=
8/18/2019 DESAIN ALGORITMA
14/19
lanjutan=
8/18/2019 DESAIN ALGORITMA
15/19
lanjutan=
8/18/2019 DESAIN ALGORITMA
16/19
lanjutan=
8/18/2019 DESAIN ALGORITMA
17/19
lanjutan=
8/18/2019 DESAIN ALGORITMA
18/19
lanjutan=
8/18/2019 DESAIN ALGORITMA
19/19