DESAIN ALGORITMA

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