Kamis, 14 Agustus 2014

Algoritma

Pengertian Algoritma :
Dalam matematika dan komputasi, algoritma atau algoritme . merupakan kumpulan perintah untuk menyelesaikan suatu masalah. Perintah-perintah ini dapat diterjemahkan secara bertahap dari awal hingga akhir. Masalah tersebut dapat berupa apa saja, dengan catatan untuk setiap masalah, ada kriteria kondisi awal yang harus dipenuhi sebelum menjalankan algoritma. Algoritma akan dapat selalu berakhir untuk semua kondisi awal yang memenuhi kriteria, dalam hal ini berbeda dengan heuristik. Algoritma sering mempunyai langkah pengulangan (iterasi) atau memerlukan keputusan (logika Boolean dan perbandingan) sampai tugasnya selesai.
Desain dan analisis algoritma adalah suatu cabang khusus dalam ilmu komputer yang mempelajari karakteristik dan performa dari suatu algoritma dalam menyelesaikan masalah, terlepas dari implementasi algoritma tersebut. Dalam cabang disiplin ini algoritma dipelajari secara abstrak, terlepas dari sistem komputer atau bahasa pemrograman yang digunakan. Algoritma yang berbeda dapat diterapkan pada suatu masalah dengan kriteria yang sama.
Kompleksitas dari suatu algoritma merupakan ukuran seberapa banyak komputasi yang dibutuhkan algoritma tersebut untuk menyelesaikan masalah. Secara informal, algoritma yang dapat menyelesaikan suatu permasalahan dalam waktu yang singkat memiliki kompleksitas yang rendah, sementara algoritma yang membutuhkan waktu lama untuk menyelesaikan masalahnya mempunyai kompleksitas yang tinggi.

Sejarah Algoritma :  
Kata algoritma berasal dari latinisasi nama seorang ahli matematika dari Uzbekistan Al Khawārizmi (hidup sekitar abad ke-9), sebagaimana tercantum pada terjemahan karyanya dalam bahasa latin dari abad ke-12 "Algorithmi de numero Indorum". Pada awalnya kata algorisma adalah istilah yang merujuk kepada aturan-aturan aritmetis untuk menyelesaikan persoalan dengan menggunakan bilangan numerik arab (sebenarnya dari India, seperti tertulis pada judul di atas). Pada abad ke-18, istilah ini berkembang menjadi algoritma, yang mencakup semua prosedur atau urutan langkah yang jelas dan diperlukan untuk menyelesaikan suatu permasalahan. Masalah timbul pada saat akan menuangkan bagaimana proses yang harus dilalui dalam suatu/sebuah sistem (program) bagi komputer sehingga pada saat eksekusinya, komputer dapat bekerja seperti yang diharapkan. Programer komputer akan lebih nyaman menuangkan prosedur komputasinya atau urutan langkah proses dengan terlebih dahulu membuat gambaran (diagram alur) diatas kertas.

 Klasifikasi Algoritma  :  

Berdasarkan implementasi

Salah satu yang perlu dipikirkan adalah bagaimana dan dimana implemntasi algoritma itu sendiri.
Rekursi atau iterasi
Dalam banyak kasus, kita perlu memecahkan suatu masalah dimana harus melakukan pekerjakan yang berulang-ulang terhadap benda yang sama. Dalam algoritma, dikenal dua teknik kasus yang cocok menangani kasus tersebut:
Algoritma rekursif adalah proses memanggil dirinya sendiri sampai suatu kondisi terpenuhi, teknik ini menggunakan fungsi atau prosedur yang dikenal dalam pemrograman prosedural. Sedangkan algoritma iterasi adalah kontruksi pengulangan suatu metode yang menggunakan loop dan biasanya juga menggunakan |struktur data. Satu implementasi memang cocok untuk beberapa masalah, namun tidak semua masalah dapat diselesaikan secara maksimal hanya dengan mengandalkan satu implementasi saja. Contoh yang paling baik adalah menara hanoi dimana masalah ini dapat diselesaikan dengan baik melalui implementasi algoritma rekursif.

Berdasarkan desain paradigma

Salah satu cara untuk melakukan klasifikasi jenis-jenis algoritma adalah dengan memperhatikan paradigma dan metode yang digunakan untuk mendesain algoritma tersebut. Beberapa paradigma yang digunakan dalam menyusun suatu algoritma akan dipaparkan dibagian ini. Masing-masing paradigma dapat digunakan dalam banyak algoritma yang berbeda.
Bagi and selesaikan
Paradigma untuk membagi suatu permasalahan besar menjadi permasalahan-permasalahan yang lebih kecil. Pembagian masalah ini dilakukan terus menerus sampai ditemukan bagian masalah kecil yang mudah untuk dipecahkan. Singkatnya menyelesaikan keseluruhan masalah dengan membagi masalah besar dan kemudian memecahkan permasalahan-permasalahan kecil yang terbentuk.

Optimalisasi masalah

Pemrograman dinamis
Paradigma pemrograman dinamis akan sesuai jika digunakan pada suatu masalah yang mengandung sub-struktur yang optimal (, dan mengandung beberapa bagian permasalahan yang tumpang tindih . Paradigma ini sekilas terlihat mirip dengan paradigma Divide and Conquer, sama-sama mencoba untuk membagi permasalahan menjadi sub permasalahan yang lebih kecil, tapi secara intrinsik ada perbedaan dari karakter permasalahan yang dihadapi.
Metode serakah
Sebuah algoritma serakah mirip dengan sebuah Pemrograman dinamis, bedanya jawaban dari submasalah tidak perlu diketahui dalam setiap tahap; dan menggunakan pilihan "serakah" apa yang dilihat terbaik pada saat itu... Sumber :  http://id.wikipedia.org/wiki/Algoritma


Jenis Algoritma :
algoritma Brute force  
Algoritma  Brute Force adalah sebuah  pendekatan
yang lempang (straightforward) untuk memecahkan
suatu masalah, biasanya didasarkan pada pernyataan
masalah (problem statement) dan definisi konsep
yang dilibatkan.
Prinsip –  prinsip algoritma brute force untuk
menyelesaikan persoalan Integer Knapsack ialah:
1)  Mengenumerasikan semua himpunan  bagian
dari solusi.
2)  Mengevaluasi total keuntungan  dari  setiap
himpunan bagian dari langkah pertama
3)  Pilih himpunan bagian yang mempunyai total
keuntungan terbesar
Algoritma Greedy
Secara harfiah,  greedy  berarti rakus atau tamak.
Algoritma  Greedy  merupakan  algoritma sedarhana
dan lempang yang paling populer untuk pemecahan
persoalan  optimasi (maksimum atau  minimum).
Prinsip  greedy   adalah: “take what you  can  get
now!”, yang digunakan dalam konteks positif.[7]
Ada tiga pendekatan dalam  menyelesaikan
persoalan  Integer Knapsack dengan algoritma
Greedy:
        i.            Greedy by profit. 
Pada setiap langkah,  knapsack diisi dengan objek
yang mempunyai keuntungan terbesar. Strategi ini
mencoba memaksimumkan keuntungan dengan
memilih objek yang paling menguntungkan terlebih
dahulu.
      ii.            Greedy by weight.
Pada setiap langkah,  knapsack diisi dengan objek
yang mempunyai berat paling  ringan. Strategi ini
mencoba memaksimumkan keuntungan dengan
memasukkan sebanyak mungkin objek ke dalam
knapsack.
    iii.            Greedy by density. 
Pada setiap langkah,  knapsack diisi dengan objek
yang mempunyai densitas,  pi  /wi  terbesar.   Strategi
ini mencoba  memaksimumkan keuntungan  dengan
memilih objek yang mempunyai keuntungan per unit
berat terbesar
Algoritma Dynamic Programming
Program Dinamis (dynamic programming): metode
pemecahan masalah dengan cara menguraikan solusi
menjadi  sekumpulan langkah (step) atau tahapan
(stage) sedemikian  sehingga solusi dari  persoalan
dapat dipandang  dari serangkaian keputusan  yang
saling berkaitan.
Pada penyelesaian persoalan dengan metode ini:
           I.            terdapat sejumlah berhingga pilihan  yang
mungkin,
        II.            solusi pada setiap tahap dibangun  dari hasil
solusi tahap sebelumnya,
     III.            kita menggunakan  persyaratan  optimasi dan
kendala untuk membatasi sejumlah pilihan yang
harus dipertimbangkan pada suatu tahap.
Dua  pendekatan yang digunakan  dalam  Dynamic
Progamming  adalah maju (forward atau  up-down)
dan mundur (backward atau bottom-up). 
Misalkan x1, x2, …, xn menyatakan peubah (variable)
keputusan  yang harus dibuat masing-masing untuk
tahap 1, 2, …, n. Maka,
a.  Program dinamis  maju: Program dinamis
bergerak mulai dari tahap 1, terus maju ke tahap 2, 3, dan seterusnya sampai  tahap n. Runtunan
peubah keputusan adalah x1, x2, …, xn.
b.  Program dinamis  mundur: Program dinamis
bergerak mulai dari tahap  n, terus mundur ke
tahap n – 1, n – 2, dan seterusnya sampai tahap
1.  Runtunan peubah keputusan  adalah  xn,  xn-1,
…, x1.
Secara  umum, ada empat langkah yang  dilakukan
dalam  mengembangkana algoritma program
dinamis:
1.  Karakteristikkan struktur solusi optimal.
2.  Definisikan secara rekursif nilai solusi optimal.
3.  Hitung nilai solusi optimal secara maju atau mundur.
4.  Konstruksi solusi optimal.
BRANCH AND BOUND
          Metode Branch and Bound adalah sebuah teknik algoritma yang secara khusus mempelajari bagaimana caranya memperkecil Search Tree menjadi sekecil mungkin.
          Sesuai dengan namanya, metode ini terdiri dari 2 langkah yaitu :
          Branch yang artinya membangun semua cabang tree yang mungkin menuju solusi.
       Bound yang artinya menghitung node mana yang merupakan active node (E-node) dan node mana yang merupakan dead node (D-node) dengan menggunakan syarat batas constraint (kendala).
TEKNIK BRANCH AND BOUND
          FIFO Branch and Bound
 Adalah teknik Branch and Bound yang menggunakan bantuan queue untuk perhitungan Branch     and Bound secara First In First Out.
          LIFO Branch and Bound
             Adalah teknik Branch and Bound yang menggunakan bantuan stack untuk perhitungan Branch and Bound secara Last In First Out.
          Least Cost Branch and Bound
         Teknik ini akan menghitung cost setiap node. Node yang memiliki cost paling kecil dikatakan memiliki kemungkinan paling besar menuju solusi.
MASALAH YANG DAPAT DIPECAHKAN
          Branch and Bound dapat digunakan untuk memecahkan berbagai masalah yang menggunakan Search Tree
  -      Traveling Salesman Problem
  -       N-Queen Problem
  -        15 Puzzle Problem
  -       0/1 Knapsack Problem
  -    Shortest Path
   Algoritma Pseudo-Code
Algoritma Pseudo-Code merupakan algoritma yang paling mendekati bahasa pemrograman dan yang paling mudah untuk digunakan langsung pada bahasa pemrograman. Kedua algoritma sebelumnya memerlukan penulisan ulang saat akan dipindahkan pada suatu bahasa pemrograman tertentu. Algoritma Pseudo-Code adalah penulisan langkah-langkah penyelesaian masalah yang Paling mendekati bahasa pemrograman sehingga memudahkan pembahasan
Divide and Conquer
paradigma untuk membagi suatu permasalahan besar menjadi permasalahan-permasalahan yang lebih kecil. Pembagian masalah ini dilakukan terus menerus sampai ditemukan bagian masalah kecil yang mudah untuk dipecahkan. Singkatnya menyelesaikan keseluruhan masalah dengan membagi masalah besar dan kemudian memecahkan permasalahan-permasalahan kecil yang terbentuk.
Dynamic programming
 paradigma pemrograman dinamik akan sesuai jika digunakan pada suatu masalah yang mengandung sub-struktur yang optimal (, dan mengandung beberapa bagian permasalahan yang tumpang tindih . Paradigma ini sekilas terlihat mirip dengan paradigma Divide and Conquer, sama-sama mencoba untuk membagi permasalahan menjadi sub permasalahan yang lebih kecil, tapi secara intrinsik ada perbedaan dari karakter permasalahan yang dihadapi.
 Algoritma Kalimat
Algoritma kalimat tersusun atas kalimat - kalimat dalam suatu bahasa yang menerangkan cara cara untuk menyelesaikan masalah. Karenakita berbicara mengenai ilmu komputer ,maka kita berbicara masalh bagaimana caranya meminta dan mengolah input user dan menampilkan output hasi pengolahan input tersebut.
Algoritma Flowchart
Algoritma flowchart dibuat untuk menyederhanakan algoritma kalimat dan untuk memudahkan penggambaran jalannya program . Sumber : http://arissupri.blogspot.com/2013/06/jenis-jenis-algoritma.html

 Konsep Bahasa Algoritma :
Program
Agar komputer dapat melakukan tindakan tertentu, maka komputer harus diberikan sebuah instruksi yang berbentuk kumpulan perintah-perintah dasar. Program komputer adalah sekumpulan instruksi yang dikenal oleh komputer yang disusun secara urut dengan logis untuk dapat menyelesaikan suatu masalah.
Pemrograman dan Bahasa Pemrograman
Pemrograman adalah proses mengimplementasikan urutan langkah untuk menyelesaikan suatu masalah dengan menggunakan bahasa pemrograman. Yang dimaksud dengan bahasa pemrograman adalah bahasa yang dapat digunakan menjadi kumpulan perintah-perintah dasar mengenai penulisan program. Bahasa pemrograman memiliki beberapa tingkatan, diantaranya
  • Bahasa pemrograman tingkat dasar, seperti Bahasa Mesin, Bahasa Assembly
  • Bahasa pemrograman tingkat tengah, seperti Bahasa C, Bahasa FORTH
  • dan Bahasa pemrograman tingkat tinggi, seperti Bahasa PASCAL, FORTRAN, COBOL.
Bahasa pemrograman tingkat dasar umumnya sulit untuk dipelajari, karena sifatnya yang sangat tergantung pada mesinnya itu (machine dependent). Untuk menguasai bahasa ini, harus dipelajari dan dikuasai teknologi dan arsitektur komputer, matematika diskrit, elektronika, dan lain-lain. Bahasa ini masih menggunakan simbol-simbol yang bersifat mnemonic (simbol yang mudah untuk diingat).
Bahasa pemrograman tingkat tengah, sifatnya sudah lebih mudah daripada bahasa pemrograman tingkat dasar, perintah-perintahnya sudah lebih mudah dibaca sebab sudah menggunakan huruf-huruf.
Bahasa pemrograman tingkat tinggi adalah bahasa komputer yang sudah mirip dengan bahasa manusia. Perintah-perintahnya sudah dibuat dalam bahasa yang mudah dimengerti manusia, seperti PRINT, WRITE, IF, THEN, ELSE, dan lain-lain.
 
 
Tahapan dalam Pemrograman
Langkah-langkah yang dilakukan dalam menyelesaikan masalah dalam pemrograman dengan komputer adalah
  1. Definisikan masalah
a. Tentukan apa yang menjadi masalah
b. Tentukan data input yang diperlukan
c. Tentukan output apa yang diinginkan
    2.  Buat bagan dan struktur cara penyelesaian
a. Bagan secara global
b. Deskripsikan tugas masing-masing subprogram
3. Pilih Metode Penyelesaian
a. Pilih struktur data dan Algoritma terbaik
4. Pengkodean
a. Pilih bahasa pemrograman yang sesuai
b. Menterjemahkan algoritma ke bahasa pemrograman
5. Mencari Kesalahan
a. Kesalahan sintaks (penulisan program)
b. Kesalahan Pelaksanaan: Semantik, Logika, dan ketelitian
6. Uji dan Verifikasi Program
7. Dokumentasi Program
8. Pemiliharaan Program
a. Memperbaiki kekurangan yang ditemukan kemudian
b. Memodifikasi, karena perubahan spesifikasi.
Data
            Data adalah sekumpulan bahan mentah yang kemudian diolah untuk menjadi sebuah informasi yang berguna bagi yang membutuhkan informasi tersebut.
Model Komputasi
          Ada tiga model dasar komputasional, yaitu fungsional, logika, dan imperatif. Masing-masing model komputasional mempunyai satu set operasi yang digunakan untuk menggambarkan komputasi.
a. Model Fungsional : terdiri dari satu set nilai-nilai, fungsi-fungsi dan operasi aplikasi fungsi dan komposisi fungsi. Fungsi dapat mengambil fungsi lain sebagai argumentasi dan mengembalikan fungsi sebagai hasil. Suatu program adalah koleksi definisi fungsi-fungsi dan suatu komputasi adalah aplikasi fungsi.
b. Model Logika : terdiri dari satu set nilai-nilai, definisi hubungan dan kesimpulan logis. Program terdiri dari definisi hubungan dan suatu komputasi adalah suatu bukti(suatu urutan kesimpulan).
c. Model Imperatif : terdiri dari satu set nilai-nilai yang mencakup suatu keadaan dan operasi tugas untuk memodifikasi pernyataan. Pernyataan adalah set pasangan nilai-nama dari konstanta dan variabel. Program terdiri dari urutan tugas dan suatu komputasi terdiri dari urutan pernyataan.
Prinsip Bahasa Pemrograman
- Prinsip Kelengkapan Komputasional
Model komputasional untuk tujuan umum suatu bahasa pemrograman harus universal.
- Prinsip Implementasi
Implementasi harus efisien dalam penggunaan waktu dan ruangnya. Prinsip memrogram harus ditulis dalam suatu bahasa yang mencerminkan daerah masalah.
 Sintaks, Semantik dan Pragmatik
            Bahasa pemrograman memiliki 3 konsep penting, yakni sintaks, semantik dan pragmatik.
  • Sintaks adalah aturan gramatikal atau komposisi suatu program yang mengatur tata cara penulisan huruf, angka dan karakter lainnya. Sintaks ini berhubungan dengan struktur bahasa.
  • Semantik adalah sebuah bahasa yang menggambarkan hubungan antara sintaks dan model komputasi. Singkat kata, semantik ini menjelaskan arti dari program.
  • Pragmatik berhubungan kemudahan implementasi dan efisiensi. Ini berhubungan dengan peng-kodingan dalam suatu bahasa pemrograman.
Sumber : http://postinganblogger.blogspot.com/2013/09/konsep-bahasa-algoritma.html

Tipe Data Algoritma :  

TIPE DATA ALGORITMA

Penentuan tipe data berguna untuk memberi pengenal pada isi data yang 
akan diakses, oleh variabel.

a. Tipe Data Numerik
Tipe data ini digunakan untuk menyatakan bilangan yang tidak 
mempunyai angka desimal. Tipe Integer terdiri dari beberapa tipe lagi, 
yang sebagian berbeda rentang nilai dan ukuran memorinya.

* Bilangan bulat memiliki 2 tipe yaitu Integer dan Long
* Bilangan real memiliki 2 tipe yaitu Single dan Double


b. Tipe Real
Tipe real digunakan untuk menyatakan bilangan yang mempunyai 
angka desimal. Tipe data real ini terdiri dari beberapa tipe lagi, yang 
sebagian rentang nilai dan ukuran penggunaan memorinya.

c. Tipe Boolean
Tipe data boolean untuk menyatakan data logika, yaitu True ( benar) dan False (salah). Tipe ini memiliki 2 jenis yaitu True dan False. Operator pembanding digunakan untuk membandingkan dua buah operand. Misalnya : Yang dibandingkan dalam string ialah nilai ASCII dari string tersebut.
Disarankan penggunaan tipe logika menggunakan tipe Boolean. Untuk ByteBool, WordBool, dan LongBool sebaiknya hanya digunakan untuk menjaga kompabilitas, yaitu jika program akan dihubungkan dengan program bahasa lain.

d. Tipe Character
Tipe data character digunakan untuk menyatakan karakter satu huruf.

e. Tipe String
Tipe data string digunakan untuk menyatakan sederetan 
karakter yang membentuk satu kesatuan, misalnya nama, 
alamat dan sebagainya.Tipe ShortString disediakan hanya untuk menjaga kompabilitas 
dengan versi sebelumnya. AnsiString untuk menyimpan karakter 
ANSI dan WideString dapat menyimpan karakter Unicode.
String adalah semua karakter yang ada dalam tabel ASCII, contoh : ‘a’…’z’…’0′…’9′. Operasi yang bisa dilakukan hanya operasi perbandingan saja. Tipe String ialah gabungan dari karakter, tipe string digunakan untuk menyimpan data yang berupa untaian karakter.
f. Tipe Record
Tipe record digunakan untuk menyimpan sekumpulan data yang 
mungkin tipenya berbeda, tetapi saling berhubungan.h. Tipe Terenumerasi dan Subrange
Tipe data terenumerasi dan tipe data subrange dipakai untuk 
menyatakan data berurutan yang bertipe sama.

Konstanta
Konstanta adalah nilai yang bersifat tetap, misal angka 1, huruf A, nama 
dan lainlain.
Contoh :
Const
Diskon = 0.25;
Kampus = ‘LPKIA’; 
Sumber  : http://kakaras27.blogspot.com/2013/02/tipe-data-algoritma.html

Percabangan Algoritma

Sebuah program tidak selamanya akan berjalan dengan mengikuti struktur berurutan, kadang-kadang kita perlu merubah urutan pelaksanaan program dan menghendaki agar pelaksanaan program meloncat ke baris tertentu. Peristiwa ini kadang disebut sebagai percabangan/pemilihan atau keputusan. Hal ini seperti halnya ketika mobil berada dalam persimpangan seperti pada gambar 5.7. Pengemudi harus memutuskan apakah harus menempuh jalur yang kanan atau yang kiri (lurus).

Pada struktur percabangan, program akan berpindah urutan pelaksanaan jika suatu kondisi yang disyaratkan dipenuhi. Pada proses seperti ini simbol flowchart Decision harus digunakan. Simbol decision akan berisi pernyataan yang akan diuji kebenarannya. Nilai hasil pengujian akan menentukan cabang mana yang akan ditempuh.

Contoh 5.15. Struktur percabangan untuk masalah batasan umur.

Sebuah aturan untuk menonton sebuah film tertentu adalah sebagai berikut: Jika usia penonton lebih dari 17 tahun maka penonton diperbolehkan, dan apabila kurang dari 17 tahun maka penonton tidak diperbolehkan nonton. Buatlah flowchart untuk permasalahan tersebut.

Penyelesaian:
Permasalahan diatas merupakan ciri permasalahan yang menggunakan struktur percabangan. Hal ini ditandai dengan adanya pernyataan: jika .. maka ...(atau If ... Then dalam Bahasa Inggris).

Flowchart penyelesaian masalah tampak pada gambar 5.9. Pada gambar tersebut, tampak penggunaan simbol Decision. Pada simbol ini terjadi pemeriksaan kondisi, yaitu: apakah usia lebih dari 17 tahun atau tidak. Jika jawaban ya maka program akan menghasilkan keluaran teks "Silahkan Menonton", sedangkan jika input usia kurang dari 17 tahun maka program akan menghasilkan keluaran teks "Anda Tidak Boleh Menonton".


Contoh 5.16. Struktur percabangan untuk perhitungan dua buah bilangan.

Dalam suatu perhitungan, nilai P = X + Y. Jika P positif, maka Q = X * Y, sedangkan jika negative maka nilai Q = X/Y. Buatlah flowchart untuk mencari nilai P dan Q

Penyelesaian:
Pada contoh ini input yang dibutuhkan adalah nilai X dan Y, sedangkan proses pemeriksaan kondisi dilakukan pada nilai P apakah positif (termasuk 0) ataukah negative. Perhatikan flowchart penyelesaian masalah pada gambar 5.10.


dalam struktur percabangan yang lain, atau yang biasa disebut nested (bersarang). Perhatikan contoh-contoh berikut.

Contoh 5.17. Struktur percabangan bersarang untuk masalah fotokopi.

Sebuah usaha fotokopi mempunyai aturan sebagai berikut:
  • Jika yang fotokopi statusnya adalah langganan, maka berapa lembar pun dia fotokopi, harga perlembarnya Rp. 75,-
  • Jika yang fotokopi bukan langganan, maka jika dia fotokopi kurang dari 100 lembar harga perlembarnya Rp. 100,-. Sedangkan jika lebih atau sama dengan 100 lembar maka harga perlembarnya Rp. 85,-.
Buatlah flowchart untuk menghitung total harga yang harus dibayar jika seseorang memfotokopi sejumlah X lembar.

Penyelesaian:
Pada contoh ini, masalah terlihat lebih rumit. Ada dua percabangan yang terjadi. Yang pertama adalah pemeriksaan apakah status seseorang pelanggan atau bukan. Kedua, apabila status seseorang bukan pelanggan, maka dilakukan pemeriksaan berapa jumlah lembar fotokopi, apakah lebih dari 100 lembar atau tidak.

Pada soal ini kita juga menjumpai apa yang disebut sebagai nested. Perhatikan pernyataan pada syarat kedua dari persoalan di atas.

'Jika yang fotokopi bukan langganan, maka jika dia fotokopi kurang dari 100 lembar harga perlembarnya Rp.100'

pernyataan jika yang kedua berada di dalam jika yang pertama.

Input yang dibutuhkan untuk permasalahan ini adalah status orang yang fotokopi, dan jumlah lembar yang difotokopi. Sehingga variable input yang digunakan adalah:
  • Status untuk status orang yang fotokopi
  • JLF untuk jumlah lembar yang difotokopi
Selain itu, terdapat variable dengan nama HPP yang digunakan untuk menyimpan harga per lembar, dan TH untuk menyimpan nilai total harga. Perhatikan, variable Status bertipe data char, sehingga penulisannya harus menggunakan tanda " ".

Flowchart penyelesaian masalah ini dapat dilihat pada gambar 5.11.


Contoh 5.18. Struktur percabangan bersarang untuk masalah kelulusan siswa.

Aturan kelulusan siswa pada mata pelajaran Pemrograman Web diterapkan sebagai berikut:
  • Jika nilai ujian tengah semester (UTS) lebih besar dari 70 maka siswa dinyatakan lulus dan Nilai Akhir sama dengan nilai UTS.
  • Jika nilai UTS kurang atau sama dengan 70, maka siswa dinyatakan lulus jika Nilai Akhir lebih besar atau sama dengan 60 dimana Nilai Akhir = (nilai UTS x 40%) + (nilai UAS x 60%).
Buatlah flowchart penyelesaian masalah tersebut apabila output yang diinginkan adalah NIM, Nama Siswa, Nilai Akhir, dan Status Kelulusan.

Penyelesaian:
Pada contoh ini, ada dua percabangan. Yang pertama adalah pemeriksaan apakah nilai UTS siswa lebih dari 70. Kedua, apabila nilai UTS tidak lebih dari 70, maka dilakukan pemeriksaan apakah nilai akhir lebih dari 60. Input yang dibutuhkan untuk permasalahan ini adalah NIM, nama siswa, nilai UTS, dan nilai UAS. Sehingga variable input yang digunakan adalah: NIM untuk Nomor induk siswa, nama untuk nama siswa, NUTS untuk nilai ujian tengah semester, dan NUAS untuk nilai ujian akhir semester. Sedangkan variabel ouput terdiri dari NA yang digunakan untuk menyimpan nilai akhir, dan Status untuk menyimpan status kelulusan.  Sumber : http://www.varia.web.id/2013/05/struktur-algoritma-percabangan.html



Flowchart :

Flowchart atau diagram alir merupakan sebuah diagram dengan simbol-simbol grafis yang menyatakan aliran algoritma atau proses yang menampilkan langkah-langkah yang disimbolkan dalam bentuk kotak, beserta urutannya dengan menghubungkan masing masing langkah tersebut menggunakan tanda panah. Diagram ini bisa memberi solusi selangkah demi selangkah untuk penyelesaian masalah yang ada di dalam proses atau algoritma tersebut.

Simbol-Simbol

Gambar berikut adalah simbol flowchart yang umum digunakan.
Gambar Simbol untuk Keterangan
G-proses.JPG Proses / Langkah Menyatakan kegiatan yang akan ditampilkan dalam diagram alir.
G-keputusan.JPG Titik Keputusan Proses / Langkah dimana perlu adanya keputusan atau adanya kondisi tertentu. Di titik ini selalu ada dua keluaran untuk melanjutkan aliran kondisi yang berbeda.
G-data.JPG Masukan / Keluaran Data Digunakan untuk mewakili data masuk, atau data keluar.
G-awal.JPG Terminasi Menunjukkan awal atau akhir sebuah proses.
G-panah.JPG Garis alir Menunjukkan arah aliran proses atau algoritma.
G-kontrol.JPG Kontrol / Inspeksi Menunjukkan proses / langkah dimana ada inspeksi atau pengontrolan.

Jenis-Jenis Diagram Alir

Sterneckert (2003) menyarankan untuk membuat model diagram alir yang berbeda sesuai dengan perspektif pemakai (managers, system analysts and clerks) sehingga dikenal ada 4 jenis diagram alir secara umum: [2]
  • Diagram Alir Dokumen, menunjukkan kontrol dari sebuah sistem aliran dokumen.
  • Diagram Alir Data, menunjukkan kontrol dari sebuah sistem aliran data.
  • Diagram Alir Sistem, menunjukkan kontrol dari sebuah sistem aliran secara fisik.
  • Diagram Alir Program, menunjukkan kontrol dari sebuah program dalam sebuah sistem.

  Sumber : http://id.wikipedia.org/wiki/Flowchart

  
Membuat Algoritma dalam Kehidupan sehari-hari : \

Algoritma Membuat Mie Goreng Instant
1. Siapkan mie goreng instant
2. Apakah mie instant ada?
3. Jika tika tidak, beli di warung
4. Jika ada buka kemasan mie instant
5. Keluarkan mie beserta bumbu-bumbunya
6. Siapkan piring
7. Lihat kondisi piring, jika kotor dicuci dulu
8. Jika bersih siap digunakan
9. Buka bumbu-bumbunya
10. Letakkan didalam piring
11. Siapkan panci
12. Lihat kondisi panci, jika kotor dicuci dulu
13. Jika bersih panci dengan air secukupnya
14. Letakkan panci diatas kompor
15. Nyalakan kompor
16. Tunggu hingga air mendidih
17. Jika sudah mendidih, masukkan mie
18. Tunggu hingga mie matang
19. Setelah mie matang, matikan kompor
20. Siapkan saringan, lihat kondisi saringan jika kotor dicuci dulu
21. Tuang mie ke saringan, tunggu sampai airnya tiris
22. Masukkan kedalam piring
23. Siapkan sendok dan garpu, lihat kondisinya jika kotor dicuci duu
24. Jika bersih aduk mie menggunakan sendok dan garpu
25. Mie goreng siap dihidangkan

Terima kasih