NPM : 50414471
Kelas : 1IA17
Mata Kuliah : Algoritma dan Pemrograman 1A
Dosen : Kunto Bayu A.ST
Algoritma
Definisi Algoritma
1. Langkah-langkah yang dilakukan agar solusi masalah dapat diperoleh
2. Suatu prosedur yang merupakan urutan langkah-langkah yang berintegrasi
3. Suatu metode khusus yang digunakan untuk menyelesaikan suatu masalah yang nyata.(Webster Dictionary)
Kriteria Pemilihan Algoritma
1. Ada output: mengacu pada definisi algoritma, suatu algoritma haruslah mempunyai output yang harus merupakan solusi dari masalah yang sedang diselesaikan.
2. Efektifitas dan Efisiensi :Dikatakan efektif jika algoritma tersebut menghasilkan suatu solusi yang sesuai dengan masalah yang diselesaikan dalam arti algoritma harus tepat guna.Dikatakan efisiensi jika waktu proses suatu algoritma relatif lebih singkat dan penggunaan memori komputernya lebih sedikit.
3. Jumlah langkahnya berhingga : maksudnya adalah barisan instruksi yang dibuat harus dalam suatu urutan tertentu atau harus berhingga agar masalah yang dihadapi dapat diselesaikan dengan tidak memerlukan waktu relatif lama.
4. Berakhir à (Semi Algoritma) : proses didalam mencari penyelesaian suatu masalah harus berhenti dan berakhir dengan hasil akhir yang merupakan solusinya atau berupa informasi yang tidak diketemukan solusinya. Artinya baik dalam kondisi solusi ada atau tidak ada, proses akan tetap harus berakhir dan berhenti. Istilah lain dalam algoritma dikenal sebagai SEMI ALGORITMA, yaitu suatu prosedur yang hanya akan berhenti jika mempunyai atau menghasilkan solusi, sedangkan jika tidak menghasilkan solusi, maka prosedur tersebut akan berjalan tanpa henti.
5. Terstruktur : yaitu urutan barisan langkah-langkah yang digunakan harus disusun sedemikian rupa agar proses penyelesaian tidak berbelit-belit sedemikian sehingga bagian-bagian proses dapat dibedakan dengan jelas mana bagian input, proses dan output sehingga memudahkan user melakukan pemeriksaan ulang.
Kesimpulannya:
Suatu Algoritma yang terbaik(The Best) : “Suatu algoritma harus menghasilkan output yan tepat guna(efektif) dalam waktu yang relatif singkat & penggunaan memori yang relatif sedikit(efisien) dengan langkah yang berhingga & prosedurnya berakhir baik dalam keadan diperoleh suatu solusi ataupun tidak ada solusinya”
Contoh:
A. Algoritma untuk mengirimkan surat
1. Tulis surat pada secarik kertas surat
2. Ambil sampul surat atau amplop
3. Masukkan surat ke dalam amplop
4. Tutup amplop surat dengan lem perekat
5. Tulis alamat surat yang dituju, jika tidak diingat, lebih dahulu ambil buku alamat & cari alamat yang dituju, lalu tulis alamat tersebut pada amplop surat
6. Tempelkan perangko pada amplop surat
7. Bawa surat ke kantor pos untuk diserahkan pada pegawai pos atau menuju ke bis surat untuk memasukkan surat ke dalam kotak/bis surat.
B. Algoritma untuk menentukan bilangan akar kuadrat dari suatu bilangan bulat positif yang diinput.
1. Baca bilangan bulat positif yang diinput, sebut saja sebagai A.
2. Dinyatakan Nilai B adalah 0
3. Jika Nilai C sama dengan Nilai A, maka Nilai B adalah Akar dari Nilai A, lalu stop
4. Jika tidak, maka nilai B akan bertambah 1
5. Kembali ke langkah pada No.3
Tahapan Analisa Algoritma
1. Bagaimana merencakan 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.
2. Bagaimana menyatakan suatu algoritma
Menentukan model suatu algoritma yang
digunakan sehingga dapat membuat barisan langkah secara berurutan guna
mendapatkan solusi penyelesaian masalah. Menentukan model tersebut agar
dapat digunakan dengan cara:
- Dengan Bahasa semu(Pseudocode):
yaitu dengan menggunakan bahasa sehari-hari, tetapi harus jelas dan
terstruktur, seperti telah penulis sebutkan pada contoh-contoh
sebelumnya(Contoh prosedur berikirm surat)
Contoh:1. Untuk mengitung Luas Segitiga:
2. Masukan Nilai Alas
3. Masukan Nilai Tinggi
4. Hitung Luas = (Alas * Tinggi)/2
5. Cetak Luas
- Dengan diagram alur atau flowchart: yaitu dengan membuat suatu penulisan atau penyajian algoritma berupa diagram yang menggambarkan susunan alur logika dari suatu permasalahan
Contoh:
- Dengan Statement Program/Penggalan Program
Contoh:
1. Read Alas
2. Read Tinggi
3. Luas=(Alas*Tinggi)/2
4. Write(luas)
3. Bagaimana validitas suatu algoritma
Yakni
jika penyelesaian memenuhi solusi yang sebenarnya, artinya solusi yang
didapat merupakan penyelesaian suatu masalah dan bukannya membuat
masalah baru.
4. Bagaimana menganalisa suatu algoritma
Caranya
melihat running time atau waktu tempuh yang digunakan dalam
menyelesaikan masalah serta jumlah memori yang digunakan dalam
penyelesaian masalah tersebut.
5. Bagaimana menguji program dari suatu algoritma
Yaitu
dengan cara menyajikannya dalam salah satu bahasa pemrogramana,
misalnya BASIC, PASCAL, FORTRAN, dBase, atau yang lainnya. Dalam proses,
uji program oleh komputer akan melalui beberapa tahap yaitu:
1. Fase Debugging,
yaitu fase dari suatu proses program eksekusi yang akan melakukan
koreksi terhadap kesalahan program. Yang dimaksud disni adalah error
atau salah dalam penulisan program baik logika maupun sintaksnya.
2. Fase Profilling,
yaitu fase yang akan bekerja jika program tersebut sudah benar atau
telah melalui proses pada fase debugging. Fase ini bekerja untuk melihat
dan mengukur waktu tempuh atau running time yang diperlukan serta
jumlah memori/storage yang digunakan dalam menyelesaikan suatu
algoritma.
ANALISIS SUATU ALGORITMA
(Untuk melihat faktor
efisiensi & efektifitas dari algoritma tersebut), dapat dilakukan
terhadap suatu algoritma dengan melihat pada:
- Waktu tempu(Running Time) dari suatu algoritma: adalah satuan waktu yang ditempuh atau diperlukan oleh suatu algoritma dalam menyelesaikan suatu masalah.
Hal-hal yang dapat mempengaruhi daripada waktu tempuh adalah:
1. Banyaknya langkah:
Makin banyak langkah atau instruksi yang digunakan dalam menyelesaikan
masalah, maka makin lama waktu tempuh yang dibutuhkan dalam proses
tersebut
2. Besar dan jenis input data:
Besar dan jenis input data pada suatu algoritma akan sangat berpengaruh
pada proses perhitugan yang terjadi. Jika jenis data adalah tingkat
ketelitian tunggal(Single precision), maka waktu tempuh akan menjadi
relatif lebih cepat dibandingkan dengan tingkat ketelitian ganda(double
precesion)
3. Jenis operasi:
Waktu tempuh juga dipengaruhi oleh jenis operasi yang digunakan. Jenis
operasi tersebut meliputi operasi matematika, nalar atau logika, atau
yang lainnya. Sebagai contoh, operasi perkalian atau pembagian akan
memakan waktu lebih lama dibandingkan operasi penjumlahan atau
pengurangan.
4. Komputer dan kompilator:
hal terakhir yang mempengaruhi waktu tempuh suatu proses algoritma
adalah komputer dan kompilatornya, walaupun sebenarnya faktor ini diluar
tahap rancangan atau tahap pembuatan algoritma yang efisien. Algoritma
dibuat untuk mencapai waktu tempuh yang seefektif dan seefisien mungkin,
tetapi kesemuanya itu akan sangat bergantung pada kemampuan komputer
yang tentunya harus sesuai dengan jumlah program atau langkah yang
diperlukan oleh algoritma, begitu juga dengan kompilator tersebut,
misalnya PC XT 8086 akan kalah cepat dibandingkan 8088 atau dengan AT
80286 atau 80386 atau 80486 dan seterusnya
- Jumlah Memori Yang digunakan:
banyaknya langkah yang digunakan dan jenis variabel data yang dipakai
dalam suatu algoritma akan sangat mempengaruhi penggunaan memori. Dalm
hal ini, diharapkan dapat memperkirakan seberapa banyak kebutuhan memori
yang diperlukan selama proses berlangsung hingga proses selesai
dikerjakan. Dengan demikian, dapat disiapkan storage yang memadai agar
proses suatu algoritma berjalan tanpa ada hambatan atau kekurangan
memori.
Sifat-Sifat Algoritma
- Banyaknya langkah instruksi harus berhingga:
pelaksanaan sebuah algoritma yang terprogram haruslah dapat diakhiri
atau diselesaikan melalui sejumlah langkah operasional yang berhingga.
Jika tidak demikian, kita tidak akan dapat mengharapkan bahwa pelaksaan
algoritma tersebut dapat menghasilkan suatu solusi yang baik.
- Langkah atau instruksi harus jelas:
artinya bahwa penulisa setiap langkah yang terdapat didalam sebuah
algoritma harus memiliki arti yang khusus atau spesifik sehingga dapat
dibedakan antara penulisan langkah untuk komputer(program/pemrograman)
dengan penulisan langkah bagi manusia(pesudocode). Manusia akan lebih
mudah memahami algoritma yang terdiri atas simbol-simbol(Contoh:
pembuatan algoritma dengan diagram alur/flowchart) sedangkan komputer
hanya membutuhkan sebuah penulisan algoritma dengan kode-kode yang
dituangkan dalam bahasa yang dimengerti oleh komputer itu sendiri(bahasa
pemrograman).
- Proses harus jelas dan mempunyai batasan:
rangkaian suatu proses yang berisi langkah-langkah instruksi dari suatu
algoritma yang akan dilaksanakn harus ditetapkan dengna jelas, baik dan
pasti sebab sebuah algoritma harus memiliki instruksi dasar tertentu
dimana setiap instruksi harus memiliki unsur pelaksana yang berfungsi
sebagai pemroses data yang akan dimasukkan dalam sebuah komputer. Dengan
demikian, sebuah algoritma harus ditulis dengan jelas tentang
batasa-batasan proses yang akan dilaksanakan oleh komputer.
- Input dan Output harus mempunyai batasan:
input merupakan data yang dimasukkan ke dalam algoritma yang untuk
kemudian akan dilaksanakan oleh komputer. Dengan begitu, input yang
diberikan harus sesuai dengan jenis dari bahasa pemrograman yang
digunakan, sedangkan ouput merupakan hasil yang diperoleh dari pekerjaan
yang dilaksanakan komputer untuk kepentingan user yang merupakan pihak
diluar komputer. Algoritma harus menghasilkan output karena merupaka
solusi yang diharapkan dari suatu masalah yang timbul.
- Efektifitas:
instruksi yang diberikan pada komputer agar hanya menjalankan atau
melaksanakan proses yang mampu dilaksanakannya. Yang dimaksud mampu
adalah bahwa suatu algoritma atau instruksi-instruksi dalam sebuah
program hanya akan dapat dilaksanakan jika informasi yang diberikan oleh
instruksi-instruksi tersebut lengkap, benar dan jelas.
- Adanya batasan ruang lingkup,
sebuah algoritma yang baik adalah hanya ditujukan bagi suatu masalah
tertentu saja. Susunana input harus ditentukan lebih dulu sebab susunan
tersebut enentukan sifat umum dari algoritma yang bersangkutan.Flowchart
Flowchart adalah diagram alir yang menggambarkan urutan perintah dan proses pemecahan masalah dengan menggunakan simbol-simbol tertentu yang sudah standard.
Jenis-jenis Flowchart :
1. System Flowchart.
Flowchart Sistem merupakan bagan yang menunjukkan alur kerja atau apa yang sedang dikerjakan di dalam sistem secara keseluruhan dan menjelaskan urutan dari prosedur-prosedur yang ada di dalam sistem. Dengan kata lain, flowchart ini merupakan deskripsi secara grafik dari urutan prosedur-prosedur yang terkombinasi yang membentuk suatu sistem.
Flowchart Sistem terdiri dari data yang mengalir melalui sistem dan proses yang mentransformasikan data itu. Data dan proses dalam flowchart sistem dapat digambarkan secara (dihubungkan langsung dengan komputer) atau (tidak dihubungkan langsung dengan komputer, misalnya mesin tik, cash register atau kalkulator)
2. Schematic Flowchart
Flowchart Skematik ini bukan hanya menggunakan simbol-simbol flowchart standar, tetapi juga menggunakan gambar-gambar komputer, peripheral, form-form atau peralatan lain yang digunakan dalam sistem. Flowchart Skematik digunakan sebagai alat komunikasi antara analis sistem dengan seseorang yang tidak familiar dengan simbol-simbol flowchart yang konvensional. Pemakaian gambar sebagai ganti dari simbol-simbol flowchart akan menghemat waktu yang dibutuhkan oleh seseorang untuk mempelajari simbol abstrak sebelum dapat mengerti flowchart.
Gambar-gambar ini mengurangi kemungkinan salah pengertian tentang sistem, hal ini disebabkan oleh ketidak-mengertian tentang simbol-simbol yang digunakan. Gambar-gambar juga memudahkan pengamat untuk mengerti segala sesuatu yang dimaksudkan oleh analis, sehingga hasilnya lebih menyenangkan dan tanpa ada salah pengertian.
3. Program Flowchart
Flowchart Program dihasilkan dari Flowchart Sistem. Flowchart Program merupakan keterangan yang lebih rinci tentang bagaimana setiap langkah program atau prosedur sesungguhnya dilaksanakan. Flowchart ini menunjukkan setiap langkah program atau prosedur dalam urutan yang tepat saat terjadi. Programmer menggunakan flowchart program untuk menggambarkan urutan instruksi dari program komputer. Analis Sistem menggunakan flowchart program untuk menggambarkan urutan tugas-tugas pekerjaan dalam suatu prosedur atau operasi.
4. Process Flowchart
Bagan alir proses (process flowchart) merupakan bagan alir yang banyak digunakan di teknik industri. Bagan alir ini juga berguna bagi analis sistem untuk menggambarkan proses dalam suatu prosedur.
Simbol-simbol dan Notasi Flowchart
Dipakai sebagai alat Bantu menggambarkan proses di dalam program. Dan dibagi menjadi tiga kelompok :
♦ Flow Direction Symbols ♦
dipakai untuk menggabungkan antara symbol yang satu dengan symbol lainnya
Symbol Off-line Connector ( Simbol untuk keluar/masuk prosedure atau proses dalam lembar/halaman yang lain)
Symbol Connector (Simbol untuk keluar/masuk prosedur atau proses dalam lembar/halaman yang sama)♦ Processing symbols ♦
Menunjukkan jenis operasi pengolahan dalam suatu prosedur
Symbol Process (Simbol yang menunjukkan pengolahan yang dilakukan oleh komputer)
Symbol Manual Operation (Simbol yang menunjukkan pengolahan yang tidak dilakukanoleh komputer)
Symbol Decision (Simbol untuk kondisi yang akan menghasilkan beberapa kemungkinan jawaban/aksi)
Symbol Predefined Process (Simbol untuk mempersiapkan penyimpanan yang akan digunakan sebagai tempat pengolahan di dalam storage)
Symbol Terminal (Simbol untuk permulaan atau akhir dari suatu program)
Symbol Off-line Storage (Simbol yang menunjukkan bahwa data di dalam symbol ini akan disimpan)
Symbol Keying Operation (Simbol operasi dengan menggunakan mesin yang mempunyai keyboard)♦ Input-output symbols ♦
menyatakan jenis peralatan yang digunakan sebagai media input atau output.
Symbol input-output (Symbol yang menyatakan proses input dan output tanpa tergantung dengan jenis peralatannya)
Symbol magnetic-tape unit (Symbol yang menyatakan input berasal pita magnetic atau output disimpan ke pita magnetic)
Symbol punched card (Symbol yang menyatakan input berasal dari kartu atau output ditulis ke kartu)
Symbol disk and on-line storage (Symbol untuk menyatakan input berasal dari disk atau output disimpan ke disk)
Symbol display (Symbol yang menyatakan peralatan output yang digunakan yaitu layar, plotter, printer, dan sebagainya)
Symbol dokumen (symbol yang menyatakan input berasal dari dokumen dalam bentuk kertas atau output dicetak ke kertas)Membuat Flowchart
Bila seorang analis dan programmer akan membuat flowchart, ada beberapa petunjuk yang harus diperhatikan, seperti:
- Flowchart digambarkan dari halaman atas ke bawah dan dari kiri kekanan.
- Aktivitas yang digambarkan harus didefinisikan secara hati-hati dan definisi ini harus dapat dimengerti oleh pembacanya.
- Kapan aktivitas dimulai dan berakhir harus ditentukan secara jelas.
- Setiap langkah dari aktivitas harus diuraikan dengan menggunakan deskripsi kata kerja
- Setiap langkah dari aktivitas harus berada pada urutan yang benar.
- Lingkup dan range dari aktifitas yang sedang digambarkan harusditelusuri dengan hati-hati. Percabangan-percabangan yang memotong aktivitas yang sedang digambarkan tidak perlu digambarkan pada flowchart yang sama. Simbol konektor harus digunakan dan percabangannya diletakan pada halaman yang terpisah atau hilangkan seluruhnya bila percabangannya tidak berkaitan dengan sistem.
- Gunakan simbol-simbol flowchart yang standar.

Sumber:
http://yusriel.wordpress.com/2008/09/24/pertemuan-1-pengertian-dasar-logika-dan-algoritma/
http://blog.ub.ac.id/ichwanthoyib/2014/04/07/algoritma-dan-flowchart/

