Senin, 16 Mei 2011

Supervised and Unsupervised

JARINGAN SARAF TIRUAN

Jaringan Saraf Tiruan (Artificial Neural Network) merupakan salah satu sistem pemrosesan informasi yang didesain dengan menirukan cara kerja otak manusia dalam menyelesaikan suatu masalah dengan melakukan proses belajar melalui perubahan bobot sinapsisnya. Jaringan saraf tiruan mampu melakukan pengenalan kegiatan berbasis data masa lalu. Data masa lalu akan dipelajari oleh jaringan saraf tiruan sehingga mempunyai kemampuan untuk memberikan keputusan terhadap data yang belum pernah dipelajari. Selain itu jaringan saraf tiruan merupakan suatu metode komputasi yang meniru sistem jaringan saraf biologi. Metode ini menggunakan ini elemen perhitungan non-linear dasar yang disebut neuron yang diorganisasikan sebagai jaringan yang saling berhubungan, sehingga mirip dengan jaringan saraf manusia. Jaringan saraf tiruan dibentuk untuk memecahkan masalah tertentu seperti pengenalan pola klafikasi karena proses pembelajaran. Layaknya neuron biologi, jaringan saraf tiruan merupakan sistem yang bersifat “foult tolerant” dalam 2  hal. Pertama dapat mengenali sinyal input yang agak berbeda dari yang pernah diterima. Kedua tetap mampu bekerja meskipun beberapa neuronnya tidak mampu bekerja dengan baik. Jika sebuah neuron rusak, neuron yang lainnya dapat dilatih untuk menggantikan fungsi neuron yang rusak tersebut.
Jaringan saraf tiruan seperti manusia, belajar dari suatu contoh karena mempunyai karakteristik yang adaptif, yaitu dapat belajar dari data-data sebelumnya dan mengenal pola data yang selalu berubah. Selain itu, jaringan saraf tiruan merupakan sistem yang terprogram artinya semua keluaran atau kesimpulan yang ditarik oleh jaringan didasarkan pada pengalamannya selama mengikiuti proses pembelajaran/pelatihan. Hal yang ingin dicapai dengan melatih jaringan saraf tiruan adalah untuk mencapai keseimbangan antara kemampuan memorisasi dan generalisasi. Kemampuan memorisasi adalah kemampuan jaringan saraf tiruan unutk mengambil kembali secara sempurna sebuah pola yang dipelajari. Sedangkan kemampuan generalisasi merupakan kemampuan jaringan saraf tiruan untuk menghasilkan respons yang bisa diterima terhadap pola-pola input yang serupa (namun tidak identik) dengan pola-pola yanhg sebelumnya telah dipelajari. Hal ini sangat bermanfaat bila pada suatu saat ke dalam jarinagn saraf tiruan itu diinputkan informasi baru yang belum pernah dipelajari, maka jarinagn saraf tiruan itu masih akan tetap dapat memberikan tanggapan yang baik, memberikan keluaran yang paling mendekati.
Cara pembelajaran atau pelatihan jaringan saraf  tiruan dikelompokkan menjadi beberapa bagian, 2 diantaranya supervised learning dan unsupervised learning.
A.    SUPERVISED LEARNING 1
Supervised learning merupakan suatu pembelajaran yang terawasi dimana jika output yang diharapkan telah diketahui sebelumnya. Biasanya pembelajaran ini dilakukan dengan menggunakan data yang telah ada. Pada metode ini, setiap pola yang diberikan kedalam jaringan saraf tiruan telah diketahui outputnya. Satu pola input akan diberikan ke satu neuron pada lapisan input. Pola ini akan dirambatkan di sepanjang jaringan syaraf hingga sampai ke neuron pada lapisan output. Lapisan output ini akan membangkitkan pola output yang nantinya akan dicocokkan dengan pola output targetnya. Nah, apabila terjadi perbedaan antara pola output hasil pembelajaran dengan pola output target, maka akan muncul error. Dan apabila nilai error ini masih cukup besar, itu berarti masih perlu dilakukan pembelajaran yang lebih lanjut. Contoh algoritma jaringan saraf tiruan yang mernggunakan metode supervised learning adalah hebbian (hebb rule), perceptron, adaline, boltzman, hapfield, dan backpropagation.
Pada kesempatan ini saya akan membahas tentang metode hebb rule dan perceptron.
v  Hebb rule merupakan metode pembelajaran dalam supervised yang paling sederhana, karena pada metoode ini pembelajaran dilakukan dengan cara memperbaiki nilai bobot sedemikian rupa sehingga jika ada 2 neuron yang terhubung, dan keduanya pada kondisi hidup (on) pada saat yang sama, maka bobot antara kedua dinaikkan. Apabila data dipresentasiakn secara bipolar, maka perbaikan bobotnya adalah
wi(baru)=wi(lama)+xi*y
Keterangan:
wi           : bobot data input ke-i;
xi             : input data ke-i;
y          : output data.
Misalkan kita menggunakan pasangan vektor input (s) dan vektor output sebagai pasangan vektor yang akan dilatih. Sedangkan vektor yang hendak digunakan sebagai testing adalah vektor (x).
Algoritma pasangan vektor diatas adalah sebagai berikut:
0.      Insialisasi semua bobot dimana:
wij=0;
i   =1,2......n;
j   =1,2.....m
1.      Pada pasangan input-output(s-t), maka terlebih dahulu dilakukan langkah-langkah sebagai berikut:
a.       Set input dengan nilai yang sama dengan vektor inputnya:
        xi=si;        (i=1,2......,n)
b.      Set outputnya dengan nilai yang sam dengan  vektor outputnya:
        yj=tj;        (j=1,2,.....,m)
c.       Kemudian jika terjadi kesalahan maka perbaiki bobotnya:
wij(baru)=wij(lama)+xi*yj;
(i=1,2,....,n dan j=1,2,....,m)
sebagai catatan bahwa nilai bias selalu 1.
Contoh:
Sebagaimana yang kita ketahui dalam fungsi OR jika A & B= 0 maka “OR” 0, tetapi jika salah satunya adalah 1 maka “OR” 1, atau dengan kata lain jika angkanya berbeda maka hasilnya 1. Misalkan kita ingin membuat jaringan syaraf untuk melakukan pembelajaran terhadap fungsi OR dengan input dan target bipolar sebagai berikut:
Input    Bias     Target
-1 -1     1          -1
-1  1     1          1
 1 -1     1          1
 1  1      1          1

X=                               T=                    Bobot awal=
 -1 -1                              -1                                   w=
 -1  1                               1                                      0
  1 -1                               1                                      0
  1  1                               1                                    b=0
(catatan penting: bobot awal dan bobot bias kita set=0)

Data ke-1
w1 = 0+1=1
w2 =0+1=1
b   =0-1=-1
Data ke-2
    w1 = 1-1=0
w2 =1+1=2
b   =0+1=1
Data ke-3
w1 = 0+1=1
w2 =2-1=1
b   =0+1=1
Data ke-4
w1 = 1+1=2
w2 =1+1=2
b   =1+1=2
Kita melakukan pengetesan terhadap salah satu data yang ada, misal kita ambil x=[-1-1] dan kita masukkan pada data ke-4 maka hasilnya adalah sebagai berikut:
y=2+(-1*2)+(-1*2)=-2
       karena nilai yin=-2, maka y=f(yin)=f(-2)=-1 (cocok dengan output yang      diberikan)
v  Perceptron merupakan salah satu bentuk jaringan syaraf tiruan yang sederhana. Perceptron biasanya digunakan untuk mengklasifikasikan suatu tipe pola tertentu yang sering dikenal dengan pemisahan secara linear. Pada dasarnya, perceptron pada jaringan syaraf dengan satu lapisan memiliki bobot yang bisa diatur dan suatu nilai ambang(thershold). Algoritma yang digunakan oleh aturan perceptron ini akan mengatur parameter-parameter bebasnya melalui proses pembelajaran. Nilai thershold(  pada fungsi aktivasi adalah non negatif. Fungsi aktivasi ini dibuat sedemikian rupa sehingga terjadi pembatasan antara daerah positif dan daerah negatif.
Garis pemisah antara daerah positif dan daerah nol memiliki pertidaksamaan yaitu:
w1x1+ w2x2+b >
Sedangkan garis pemisah antara daerah negatif dengan daerah nol memiliki pertidaksamaan:
w1x1+ w2x2+b < -
Misalkan kita gunakan pasangan vektor input (s) dan vektor output (t) sebagai pasangan vektor yang akan dilatih.
Algoritmanya adalah:
0.      Inisialisasi semua bobot dan bias:
(agar penyelesaiannya jadi lebih sederhana maka kita set semua bobot dan bias sama dengan nol).
Set learning rate( ): (0< 1).
1.      Selama kondisi berhenti bernilai false. Lakukan langkah-langkah sebagai berikut:
(i)  Untuk setiap pasangan pembelajaran s-t, maka:
a.       Set input dengan nilai sama dengan vektor input:
xi=si;
b.      Hitung respon untuk unit output:
yin=b+
y-
c.       Perbaiki bobot dan bias jika terjadi error:
jika y≠t maka:
wi(baru)=wi(lama)+
b(baru)=b(lama)+
jika tidak, maka:
wi(baru)= wi(lama)
b(baru)=b(lama)

(ii)     Selanjutnya lakukan tes kondisi berhenti: jika tidak terjadi perubahan pada bobot pada (i) maka kondisi berhenti adalah TRUE, namun jika masih terjadi perubahan pada kondisi berhenti maka FALSE.
Nah, algoritma seperti diatas dapat digunakan baik untuk input biner maupun bipolar,  dengan  tertentu, dan bias yang dapat diatur.  Pada algoritma tersebut bobot-bobot yang diperbaiki hanyalah bobot-bobot yang berhubungan dengan input  yang aktif (xi≠0) dan bobot-bobot yang tidak menghasilkan nilai y yang benar.
Sebagai contoh, misalkan kita ingin membuat jaringan syaraf yang melakukan pembelajaran terhadap fungsi AND dengan input biner dan target bipolar sebagai berikut:
Input                  Bias                 Target
1  1                       1                       1
1  0                       1                      -1
0  1                       1                      -1
0  0                       1                      -1
Bobot awal                  : w=[0,0 0,0]
Bobot bias awal           : b=[0,0]
Learning rate( )          : 0,8
Thershold(tetha)          : 0,5
Epoh ke-1(siklus perubahan bobot ke-1)
Data ke-1
yin=0,0+0,0+0,0=0,0
Hasil aktivasi= 0(-0,5 < yin < 0,5)
Target           = 1
Bobot baru yang diperoleh:
w1= 0,0+0,8*1,0*1,0=0,8
w2= 0,0+0,8*1,0*1,0=0,8
Maka bobot bias barunya:
b= 0,8+0,8*-1,0=0,8
Data ke-2
yin=0,8+0,8+0,0=1,6
Hasil aktivasi= 1(yin > 0,5)
Target           = -1
Bobot baru yang diperoleh:
w1= 0,8+0,8*-1,0*1,0=0,8
w2= 0,8+0,8*-1,0*1,0=0,0
Maka bobot bias barunya:
b= 0,8+0,8*-1,0=0,0
Data ke-3
yin=0,0+0,0+0,8=0,8
Hasil aktivasi= 1( yin > 0,5)
Target           = -1
Bobot baru yang diperoleh:
w1= 0,0+0,8*1,0*0,0=0,0
w2= 0,8+0,8*-1,0*1,0=0,8
Maka bobot bias barunya:
b= 0,0+0,8*-1,0=-0,8
Data ke-4
yin=-0,8+0,0+0,0=-0,8
Hasil aktivasi= -1( yin < - 0,5)
Target           = -1
Epoh ke-10(siklus perubahan bobot ke-10)
Data ke-1
yin=-3,2+1,6+2,4=0,8
Hasil aktivasi=-1(yin >0,5)
Target              = 1
Data ke-2
yin=-3,2+1,6+0,0=-1,6
Hasil aktivasi=-1(yin <-0,5)
Target              = -1
Data ke-3
yin=-3,2+0,0+2,4=-0,8
Hasil aktivasi=-1(yin <-0,5)
Target              = -1
Data ke-4
yin=-3,2+0,0+0,0=-3,2
Hasil aktivasi=-1(yin <-0,5)
Target              = -1
Siklus perubahan setiap bobot tersebut terus diulangi sampai tidak terjadi perubahan bobot lagi. Nah pada algoritma ini perubahan bobot(epoh) sudah tidak terjadi pada langkah ke-10 sehingga pembelajaran dihentikan. Dan hasil yang diperoleh adalah:
Nilai bobot(w1)=1,6
Nilai bobot(w2)=2,4
Bobot bias(b)   =-3,2.
Dengan demikian garis yang membatasi daerah positif dan daerah nol memenuhi pertidaksamaan:
1,6x1+2,4x2-3,2 > 0,5
Sedangkan garuis yang membatasi antara daerah negatif dan daerah nolnya memenuhi pertidaksamaan:
1,6x1+2,4x2-3,2 < - 0,5

B.     UNSUPERVISED LEARNING 1
Unsupervised learning merupakan pembelajan yang tidak terawasi dimana tidak memerlukan target output. Pada metode ini tidak dapat ditentukan hasil seperti apa yang diharapkan selama proses pembelajaran, nilai bobot yang disusun dalam proses range tertentu tergantung pada nilai output yang diberikan. Tujuan metode uinsupervised learning ini agar kita dapat mengelompokkan unit-unit yang hampir sama dalam satu area tertentu. Pembelajaran ini biasanya sangat cocok untuk klasifikasi pola. Contoh algoritma jaringan saraf tiruan yang menggunakan metode unsupervised ini adalah competitive, hebbian, kohonen, LVQ(Learning Vector Quantization), neocognitron.
Pada kali ini saya akan membahas tentang metode kohonen. Jaringan syaraf self organizing, yang sering disebut juga topology preserving maps, yang mengansumsikan sebuah struktur topologi antar unit-unit cluster. Jaringan syaraf self organizing ini pertama kali diperkenalkan oleh Tuevo Kohonen dari University of Helsinki pada tahun 1981. Jaringan kohonen SOM(Self Organizing Map) merupakan salah satu model jaringan syaraf yang menggunakan metode pembelajaran unsupervised. Jaringan kohonen SOM terdiri dari 2 lapisan(layer), yaitu lapisan input dan lapisan output. Setiap neuron dalalm lapisan input terhubung dengan setiap neuron pada lapisan output. Setiap neuron dalam lapisan output merepresentasikan kelas dari input yang diberikan.
Penulisan istilah yang ada pada struktur jaringan kohonen Self Organizing Map adalah sebagai berikut:
X         : vektor input pembelajaran.
                          X=(x1, x2,..., xj,.....,xn)
          : learning rate
          : radius neighborhood
X1           : neuron/node input
w0j          : bias pada neuron output ke-j
Yj         : neuron/node output ke-j
C          : konstanta

Berikut ini adalah tahapan Algoritma dari kohonen self organizing map adalah sebagai berikut :
Langkah 1. Inisialisasikan bobot wij. Set parameter-parameter tetangga dan set parameter learning rate.
Langkah 2. Selama kondisi berhenti masih bernilai salah, kerjakan langkah-langkah berikut ini :
a. Untuk masing-masing vektor input x, lakukan :
Titik Pusat
(0,0) x,y
b. Untuk masing-masing j, lakukan perhitungan :
                             D(j)= )
c. Tentukan J sampai D( j) bernilai minimum.
d. Untuk masing-masing unit j dengan spesifikasi tetangga tertentu pada j dan    untuk semua I, kerjakan :
wij(baru)=(wij)lama+  [xi –wij( lama)]
e. Perbaiki learning rate ( )
                                           =
f. Kurangi radius tetangga pada waktu-waktu tertentu.
g. Tes kondisi berhenti.
Sebagai contohnya, data yang digunakan adalah penelitian berupa realisasi penerimaan keuangan daerah tingkat II suatu propinsi serta jumlah penduduk pertengahan tahunnya dalam sebuah kabupaten/kota. Atribut-atribut yang digunakan dalam penelitian ini adalah:
a.       X1 = Jumlah penduduk
b.      Pendapatan Daerah Sendiri(PDS) yang terdiri dari:
1.      Pendapatan Asli Daerah(PDA) yang berupa:
ü  X2 = Pajak Daerah
ü  X3 = Retribusi Daerah
ü  X4 = Bagian laba usaha daerah
ü  X4 = Penerimaan lain-lain
2.      Bagian pendapatan dari pemerintah dan instansi yang lebih tinggi yang berupa:
ü  X6 = Bagi hasil pajak
ü  X7 = Bagi hasil bukan pajak
ü  X8 = Subsidi daerah otonom
ü  X9 = Bantuan pembangunan
ü  X10= Penerimaan lainnya
3.      Pinjaman pemerintah daerah
ü  X11= Pinjaman Pemerintah Pusat
ü  X12= Pinjaman Lembaga Keuangan Dalam Negeri
ü  X13= Pinjaman Dari Luar Negeri
Data set yang digunakan sebagai input tersebut dinormalkan dengan nilai rata-rata sebagai acuan yang analog dengan persamaan:
f(x)-
Berdasarkan data yang tesebut maka akan terlihat untuk masing-masing atribut memiliki nilai terendah, nilai tertinggi, dan nilai rata-rata. Selanjutnya dari nilai rata-rata tersebut maka akan menjadi acuan untuk menentukan input dari data menuju ke input pada jaringan saraf tiruan kohonen dengan pengkodean 1 dan 0. Kemudian data-data input tersebut akan diproses oleh JST sehingga menghasilkan output berupa kelompok daerah tingkat II berdasarkan penerimaan daerah. Jaringan kohonen SOM ini akan menghubungkan antara neuron input dan neuron output dengan koneksi bobot, yang mana bobot ini selalu diperbaiki pada proses iterasi pelatihan jaringan. Kemudian aliran informasi system JST ini akan mengelompokan tingkat kesejahteraan daerah tingkat II, diawali dengan dimasukkannya data penerimaan daerah. Data-data inilah yang akan berfungsi sebagai input awal selain parameter input berupa learning rate( ), dan radius neighborhood(R).

C.    ALGORITMA DAN BAHASA PEMROGRAMAN
Sebelum membahas lebih jauh tentang algoritma terlebih dahulu kita harus tahu tentang pengertian algoritma. Algoritma berasal dari nama Abu Ja’far Ibn Musa Al-Kwarizmi, seorang ilmuan yang berasal dari Persia menulis sebuah buku “Aljabar wal muqabala(rule of restoration end reduction)” yang dalam bukunya menjelaskan langkah-langkah dalam menyelesaikan berbagai persoalan aritmetika. jadi algoritma merupakan tekhnik penyusunan langkah-langkah dalam menyelesaikan masalah dalam bentuk kalimat dengan jumlah kata yang terbatas, tetapi tersusun secara logis dan sistematis. Sedangkan menurut saya sendiri, algoritma adalah sebuah alur cerita yang terstruktur dengan baik atau langkag-langkah yang logis dalam menyelesaikan suata masalah tertentu.
Jenis Proses Algoritma
1. Sequence Process: instruksi dikerjakan secara sekuensial, berurutan.
2. Selection Process: instruksi dikerjakan jika memenuhi kriteria tertentu
3. Iteration Process: instruksi dikerjakan selama memenuhi suatu kondisi tertentu.
4. Concurrent Process: beberapa instruksi dikerjakan secara bersama.
Sifat algoritma
1.   Input dimana suatu algoritma memilki input atau masukan atau bisa juga disebut sebagai kondisi awal sebelum algoritma dilaksanakan.
2.   Output adalah suatu algoritma akan menghasilkan output yang merupakan keluaran atau hasil dari input yang telah diproses melalui algoritma.
3.   Definiteness yaitu langkah-langkah yang dituliskan dalam algoritma yang  terdefinisi dengan jelas sehingga mudah mudah dilaksanakan oleh penggunanya.
4.   Finiteness dimana suatu algoritma harus mempunyai kondisi akhir atau output setelah melakukan langkah awal atau input.
5.   Effectiveness yaitu suatu langkah dalam algoritma bisa dilaksanakan dalam suatu selang waktu tertentu sehingga pada akhirnya memberi solusi yang diharapkan.
6.   Generality yaitu langkah-langkah algoritma berlaku untuk setiap himpunan yang sesuai dengan persoalan yang akan kita berikan, tidak hanya untuk himpunan tertentu.

Struktur dalam algoritma
Agar algoritma dapat ditulis teratur maka sebaiknya dibagi kedalam beberapa bagian yaitu:
·         Bagian kepala(header) memuat nama algoritma serta informasi atau keterangan tentang algoritma yang ditulis.
·         Bagian deklarasi/definisi variabel memuat definisi tentang nama variabel, nama tetapan, nama prosedur, nama fungsi, tipe data yang akan digunakan dalam algoritma.
·         Bagian deskripsi/rincian laangkah memuat langkah-langkah penyelesaian masalah, termasuk beberapa perintah seperti baca  data, tampilkan, ulangi, yang mengubah data input meenjadi output, dan sebagainya.
Dalam bidang komputer, algoritma sangat diperlukan dalam menyelesaikan berbagai masalah pemrograman, terutama dalam komputasi numeris. Tanpa algoritma yang dirancang baik maka proses pemrograman akan menjadi salah, rusak, atau lambat dan tidak efisien. Pelaksana algoritma adalah Komputer. Manusia dan komputer berkomunikasi dengan cara: manusia memberikan perintah-perintah kepada komputer berupa instruksi-instruksi yang disebut program. Nah, alat yang digunakan untuk membuat program tersebut adalah bahasa pemrograman. Bahasa pemrograman adalah kumpulan instruksi-instruksi tersendiri yang biasanya disebut source code yang dibuat oleh programmer itu sendiri. Bahasa pemrograman sangat bermacam-macam diantaranya adalah C, C++, Pascal, Java, C#, Basic, Perl, PHP, ASP, JSP, J#, J++ dan masih banyak bahasa lainnya. Dari berbagai bahasa pemrograman cara memberikan instruksinya berbeda-beda namun bertujuan menghasilkan output yang sama. Dalam makalah ini kita akan membuat algoritma dengan menggunakan bahasa pascal.

Paradigma Pemrograman:
1. Pemrograman Prosedural
􀂾 Berdasarkan urutan-urutan, sekuensial
􀂾 Program adalah suatu rangkaian prosedur untuk memanipulasi data. Prosedur
merupakan kumpulan instruksi yang dikerjakan secara berurutan.
􀂾 Harus mengingat prosedur mana yang sudah dipanggil dan apa yang sudah
diubah.
2. Pemrograman Fungsional
􀂾 Berdasarkan teori fungsi matematika
􀂾 Fungsi merupakan dasar utama program.
3. Pemrograman Terstruktur
􀂾 Secara berurutan dan terstrukrtur.
􀂾 Program dapat dibagai-bagi menjadi prosedur dan fungsi.
􀂾 Contoh: PASCAL dan C
4. Pemrograman Modular
􀂾 Pemrograman ini membentuk banyak modul.
􀂾 Modul merupakan kumpulan dari prosedur dan fungsi yang berdiri sendiri
􀂾 Sebuah program dapat merupakan kumpulan modul-modul.
􀂾 Contoh: MODULA-2 atau ADA
5. Pemrograman Berorientasi Obyek
􀂾 Pemrograman berdasarkan prinsip obyek, dimana obyek memiliki data/variabel/property dan method/event/prosedur yang dapat dimanipulasi
􀂾 Contoh: C++, Object Pascal, dan Java.
6. Pemrograman Berorientasi Fungsi
􀂾 Pemrograman ini berfokus pada suatu fungsi tertentu saja. Sangat tergantung pada tujuan pembuatan bahasa pemrograman ini.
􀂾 Contoh: SQL (Structured Query Language), HTML, XML dan lain-lain.
7. Pemrograman Deklaratif
􀂾 Pemrograman ini mendeskripsikan suatu masalah dengan pernyataan daripada memecahkan masalah dengan implementasi algoritma.
􀂾 Contoh: PROLOG


Langkah-langkah dalam pemrograman komputer

·         Mendefinisikan masalah
Ini merupakan langkah pertama yang sering dilupakan orang. Menurut hukum Murphy (oleh Henry Ledgard):
“Semakin cepat menulis program, akan semakin lama kita dapat menyelesaikannya”. Hal tersebut berlaku untuk permasalahan yang kompleks. Tentukan masalahnya, apa saja yang harus dipecahkan dengan menggunakan komputer, dan apa inputan serta outputnya.
·         Menemukan solusi
Setelah masalah didefinisikan, maka langkah berikutnya adalah menentukan solusi. Jika masalah terlalu kompleks, maka ada baiknya masalah tersebut dipecah menjadi modul-modul kecil agar lebih mudah diselesaikan.
·         Memilih algoritma
Pilihlah algoritma yang benar-benar sesuai dan efisien untuk permasalahan tersebut
·         Menulis program
Pilihlah bahasa yang mudah dipelajari, mudah digunakan, dan lebih baik lagi jika sudah dikuasai, memiliki tingkat kompatibilitas tinggi dengan perangkat keras dan platform lainnya.
·         Menguji program
Setelah program jadi, silahkan uji program tersebut dengan segala macam
kemungkinan yang ada, termasuk error-handlingnya sehingga program tersebut akan benar-benar handal dan layak digunakan.
·         Menulis dokumentasi
Menulis dokumentasi sangat penting agar pada suatu saat jika kita akan melakukan perubahan atau membaca source code yang sudah kita tulis dapat kita ingat-ingat lagi dan kita akan mudah membacanya. Caranya adalah dengan menuliskan komentar-komentar kecil tentang apa maksud kode tersebut, untuk apa, variabel apa saja yang digunakan, untuk apa, dan parameter-parameter yang ada pada suatu prosedur dan fungsi.
·         Merawat program
Program yang sudah jadi perlu dirawat untuk mencegah munculnya bug yang sebelumnya tidak terdeteksi. Atau mungkin juga pengguna membutuhkan fasilitas baru yang dulu tidak ada.
Setelah membahas tentang algoritma dan bahasa pemrograman khususnya bahasa pascal, kita juga harus tahu yang dimaksud dengan FLOWCHART. Flowchart merupakan bentuk atau gambaran suatu langkah-langkah atau urutan prosedur dari sebuah program. Flowchart berfungsi membantu programmer atau orang yang menjalankan program agar mampu menganalisa dan memecahan masalah ke dalam segmen-segmen yang lebih kecil dalam bentuk gambar atau bagan serta untuk menganalisa suatu alternative lain dalam system pengoperasian.
Dalam membuat flowchart seseorang tidak boleh menggambarkannya begitu saja, karena terdapat langka-langkah yang harus diperhatikan diantaranya:
Ø  Flowchart digambarkan dari halaman atas ke bawah dan dari kiri ke kanan.
Ø  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, misalkan kita akan membuat program “MENGHITUNG KONVERSI WAKTU”.
Ø  Setiap langkah aktivasi harus berada pada urutan yang benar.
Ø  Lingkup dan range dari aktifitas yang sedang digambarkan harus ditelusuri dengan hati-hati. Percabangan-percabangan yang memotong aktivitas tidak perlu digambarkan pada flowchart yang sama. Symbol konektor harus digunakan dan percabangannya diletakkan pada halaman yang terpisah atau hilangkan seluruhnya bila percabangannya tidak berkaitan dengan system.
Ø  Gunakan simbol-simbol flowchart yang standar.


Contoh algoritma dengan mengunakan bahasa pemrograman yaitu pascal:
Ø  Algoritma Sapa.
Algoritma_Sapa
{Algoritma ini menunjukkan pemakaian instruksi pilihan sapa 1 menggunakan Bahasa Jerman dan pilihan sapa 2 menggunakan Bahasa Korea}
Deklarasi
integer pilihan;
Deskripsi
write(‘masukkan angka 1 atau 2’);
read;
IF pilihan=1
then write(“Halo, Guten Morgen”);
else write (“Wie gehts?”);
endif
IF pilihan=2
then write (“Halo, joheun achimeyo”);
else write (“ottokhe jinaeseyo?”);
endif
endif.
Ø FLOWCHART
START
Pilihan

1: Halo, Guten Morgen
     Wie gehts?
2:  Halo, joheun achimeyo
     Ottokhe jinaeseyo?

END
Masukkan angka 1 atau 2
1.      Halo, Guten Morgen
                    Wie gehts?
2.      Halo, Joheun achimaeyo?
    Ottokhe jinaeseyo

PROSES

Algoritma diatas menunjukkan IF= pilihan yaitu 1 dan 2, dimana pilihan 1 menggunakan bahasa Jerman dan pilihan 2 menggunakan bahasa Korea. Pertama-tama kita memasukkan kaliamt sapa menggunakan bahasa Jerman, kemudian memasukkan kalimat sapa dengan menggunakan bahasa Korea. Setelah itu data akan diproses, jika kita menekan angka 1 lalu menekan tombol enter pada program pascalnya maka kalimat yang muncul adalah bahasa Jerman yaitu: (“Halo, guten morgen”) dan (“Wie gehts?”). Sementara jika kita menekan angka 2 maka maka kalimat yang muncul adalah (“Halo, joheun achimeyo”) dan (“Ottokhe jinaeseyo?”).










Ø  Algoritma Konversi_waktu
Algoritma konversi_waktu
{Algoritma ini menunjukkan konversi waktu meliputi jam, menit dan detik}
Deklarasi
Real f,c;
Deskripsi
write(“Program konversi waktu”);
write(“masukkan jumlah jam:”);
read;
write(“masukkan jumlah menit:”);
read;
write(“masukkan jumlah detik:”);
read;
write;h:=(j*3600)+(m*60)+d;
read;
write(“jadi hasil konversi:’,h,’detik”);
read;
end.



Ø
START
FLOWCHART


Var: j, m, d

OUTPUT
END
Masukkan jumlah jam
Masukkan jumlah menit
Masukkan jumlah detik


PROSES
h=(j*3600)+(m*60)+d


Algoritma diatas menunjukkan proses konversi dari jam ke menit dan detik. Pertama-tama kita memasukkan jumlah jam, kemudian jumlah menit dam yang terakhir jumlah detiknya. Jika kita kita menekan “enter” pada program yang kita buat maka kita akan diperintahkan untuk memasukkan jam, setelah itu tekan kembali enter dan kita akan diminta untuk memasukkan jumlah menit, dan jika kita menekan enter maka yang selanjutnya muncul adalah masukkan jumlah detik. Nah, setelah semua data  diinput maka hasil yang akan keluar  adalah hasil konversi dari jam, menit dan detik.


1 komentar: