Kamis, 22 Desember 2011

Modular programming pada C

Algoritma & Modular Programming merupakan paradigma pemrograman yang pertama kali diperkenalkan oleh Information & Systems Institute, Inc. pada the National Symposium on Modular Programming pada 1968. Salah satu tokoh modular programming adalah Larry Constantine . Pemrograman Modular adalah suatu teknik pemrograman di mana program yang biasanya cukup besar dibagi-bagi menjadi beberapa bagian program yang lebih kecil .
Keuntungan:
  1. Program lebih pendek
  2. Mudah dibaca dan dimengerti
  3. Mudah didokumentasi
  4. Mengurangi kesalahan dan mudah mencari kesalahan
  5. Kesalahan yang terjadi bersifat “lokal”
Modular programming pada C

Bahasa C sangat mendukung modular programming . Sejak awal bahasa C sudah membagi program-programnya menjadi modul-modul (bagian-bagian). Modul pada bahasa C dikenal dengan nama fungsi (function). Bahasa C terdiri dari fungsi-fungsi, baik yang langsung dideklarasikan dalam program ataupun dipisah di dalam header file. Fungsi yang selalu ada pada program C adalah fungsi main

Function
Fungsi/function adalah suatu kumpulan instruksi/perintah/program yang dikelompokkan menjadi satu, letaknya terpisah dari program yang menggunakan fungsi tersebut, memiliki nama tertentu yang unik, dan digunakan untuk mengerjakan suatu tujuan tertentu. Dalam bahasa pemrograman lain fungsi dapat disebut sebagai subrutin (basic, VB) atau procedure (pascal, Delphi)
Keuntungan Fungsi
  1. Dapat melakukan pendekatan top-down dan divide-and-conquer:
  2. Top-down: penelusuran program mudah
  3. Divide-and-conquer: program besar dapat dipisah menjadi program-program kecil.
  4. Kode program menjadi lebih pendek, mudah dibaca, dan mudah dipahami
  5. Program dapat dikerjakan oleh beberapa orang sehingga program cepat selesai dengan koordinasi yang mudah.
  6. Mudah dalam mencari kesalahan-kesalahan karena alur logika jelas dan sederhana Kesalahan dapat dilokalisasi dalam suatu modul tertentu saja.
  7. Modifikasi program dapat dilakukan pada suatu modul tertentu saja tanpa mengganggu program keseluruhan
  8. Fungsi – fungsi menjadikan program mempunyai struktur yang jelas.
  9. Dengan memisahkan langkah – langkah detail ke satu atau lebih fungsi – fungsi, maka fungsi utama (main) akan menjadi lebih pendek, jelas dan mudah dimengerti.
  10. Fungsi -fungsi digunakan untuk menghindari penulisan program yang sama yang ditulis secara berulang – ulang. Langkah – langkah tersebut dapat dituliskan sekali saja secara terpisah dalam bentuk fungsi. Selanjutnya bagian program yang membutuhkan langkah – langkah ini tidak perlu selalu menuliskannya, tidak cukup memanggil fungsi tersebut.
  11. Mempermudah dokumentasi.
  12. Reusability: Suatu fungsi dapat digunakan kembali oleh program atau fungsi lain
Sifat-sifat fungsi :
  1. Nilai fan-in tinggi, artinya semakin sering suatu modul dipanggil oleh pengguna semakin tinggi nilai fan-in
  2. Nilai Fan-out rendah, artinya semakin spesifik fungsi suatu modul akan semakin rendah nilai fan-out
  3. Memiliki Self-contained tinggi: artinya kemampuan untuk memenuhi kebutuhannnya sendiri
Kategori fungsi dalam C

Standard Library Function . Yaitu fungsi-fungsi yang telah disediakan oleh C dalam file-file header atau librarynya. Misalnya: clrscr(), printf(), getch(). Untuk function ini kita harus mendeklarasikan terlebih dahulu library yang akan digunakan, yaitu dengan menggunakan preprosesor direktif. Misalnya:  

#include
Programmer-Defined Function . Adalah function yang dibuat oleh programmer sendiri.
Function ini memiliki nama tertentu yang unik dalam program, letaknya terpisah dari program utama,dan bisa dijadikan satu ke dalam suatu library buatan programmer itu sendiri yang kemudian juga di-include-kan jika ingin menggunakannya.
Perancangan Fungsi
Dalam membuat fungsi, perlu diperhatikan:
  1. Data yang diperlukan sebagai inputan
  2. Informasi apa yang harus diberikan oleh fungsi yang dibuat ke pemanggilnya
  3. Algoritma apa yang harus digunakan untuk mengolah data menjadi informasi
Struktur Fungsi
Deklarasi function (function prototype/ declaration)Terdiri dari:
  1. Judul fungsi
  2. Tipe data yang akan dikembalikan/void
  3. Tidak ada kode implementasi function tersebut Bentuk umum: tipe_data|void nama_fungsi([arguman 1, argument 2,....]);
Deklarasi fungsi
Deklarasi fungsi diakhiri dengan titik koma . Tipe_data dapat berupa segala tipe data yang dikenal C ataupun tipe data buatan, namun tipe data dapat juga tidak ada dan digantikan dengan void yang berarti fungsi tersebut tidak mengembalikan nilai apapun. Nama fungsi adalah nama yang unik. Argumen dapat ada atau tidak (opsional) yang digunakan untuk menerima argumen/parameter. Antar argumen-argumen dipisahkan dengan menggunakan tanda koma. Suatu fungsi perlu dideklarasikan sebelum digunakan. Untuk alasan dokumentasi program yang baik, sebaiknya semua fungsi yang digunakan dideklarasikan terlebih dahulu Deklarasi fungsi ditulis sebelum fungsi tersebut digunakan
Struktur Fungsi
  1. Tubuh Function/Definisi Function (FunctionDefinition)Terdiri dari:
  2. Function prototype yang disertai dengan kode implementasi dari function yang berisikan statemen/instruksi yang akan melakukan tugas sesuai dengan tujuan dibuatnya fungsi tersebut.
Bentuk Umum Definisi Fungsi
Tubuh fungsi dapat berisi segala perintah yang dikenal oleh C, pada dasarnya tubuh fungsi sama dengan membuat program seperti biasa. Return bersifat opsional, adalah keyword pengembalian nilai dari fungsi ke luar fungsi, return wajib jika fungsi tersebut mengembalikan nilai berupa tipe data tertentu, sedangkan return tidak wajib jika fungsi tersebut bersifat void.
Kapan menggunakan Deklarasi dan Definisi Fungsi?
Karena prinsip kerja program C sekuensial, maka. Jika bagian dari program yang menggunakan fungsi diletakkan sebelum definisi dari fungsi, maka deklarasi dari fungsi diperlukan. Akan tetapi jika bagian dari program yang menggunakan fungsi terletak nsetelah definisi dari fungsi, maka deklarasi dari fungsi dapat tidak dituliskan.
Jenis fungsi dalam C

Fungsi Void
Fungsi yang void sering disebut juga prosedur . Disebut void karena fungsi tersebut tidak mengembalikan suatu nilai keluaran yang didapat dari hasil proses fungsi tersebut.
Ciri:
  1. Tidak adanya keyword return.
  2. tidak adanya tipe data di dalam deklarasi fungsi.
  3. menggunakan keyword void.
  4. Tidak dapat langsung ditampilkan hasilnya
  5. Tidak memiliki nilai kembalian fungsi
Fungsi non-void
Fungsi non-void disebut juga function. Disebut non-void karena mengembalikan nilai kembalian yang berasal dari keluaran hasil proses function tersebut .
Ciri:
  1. ada keyword return
  2. ada tipe data yang mengawali fungsi
  3. tidak ada keyword void
Memiliki nilai kembalian . Dapat dianalogikan sebagai suatu variabel yang memiliki tipe data tertentu sehingga dapat langsung ditampilkan hasilnya.

Keyword void
Keyword void juga digunakan jika suatu function tidak mengandung suatu parameter apapun. Contoh fungsi Faktorial

The main Function
Function main() dibutuhkan agar program C dapat dieksekusi! Tanpa function main, program C dapat dicompile tapi tidak dapat dieksekusi (harus dengan flag parameter -c, jika di UNIX) . Pada saat program C dijalankan, makacompiler C pertama kali akan mencari function main() dan melaksanakan instruksi-instruksi yang ada di sana. Function main, sering dideklarasikan dalam 2 bentuk:
  • int main()
  • void main()
int main() Berarti di dalam function main tersebut harus terdapat keyword return di bagian akhir fungsi dan mengembalikan nilai bertipe data int. Mengapa hasil return harus bertipe int juga? karena tipe data yang mendahului fungsi main() diatas dideklarasikan int. Tujuan nilai kembalian berupa integer adalahuntuk mengetahui status eksekusi program. jika “terminated successfully” (EXIT_SUCCESS) maka, akan dikembalikan status 0, sedangkan jika “terminated unsuccessfully” (EXIT_FAILURE) akan dikembalikan nilai status tidak 0, biasanya bernilai 1. Biasanya dipakai di lingkungan UNIX void main(). Berarti berupa function yang void sehingga tidak mengembalikan nilai status program sehingga nilai status program tidak bisa diketahui. Biasanya dipakai pada program C di lingkungan Windows Bentuk pemanggilan fungsi di C. Pada dasarnya fungsi dapat memanggil fungsi lain, bahkan fungsi dapat memanggil dirinya sendiri (rekursif).
 
Referensi :
Rabu, 21 Desember 2011

Simbol-simbol Flowchart


Simbol-simbol flowchart yang biasanya dipakai adalah simbol-simbol flowchart standar yang dikeluarkan oleh ANSI dan ISO.

Simbol-simbol ini dapat dilihat pada Gambar 6. Simbol Flowchart
Standar berikut ini :








  1. Jogiyanto, analisis dan desain system informasi Andi off set Yogyakarta, 1990.
  2. Tavri D. Mahyusir, Analisa Perancangan Sistem Pengolahan data. PT Elex Media Komputindo, 1989.
  3. Yourdon Edward, Modern Structur Analisis, Prentice – Hall, Inc, 1989.




Jenis-Jenis Flowchart


Flowchart terbagi atas lima jenis, yaitu :
  1. Flowchart Sistem (System Flowchart)
  2. Flowchart Paperwork / Flowchart Dokumen (Document Flowchart)
  3. Flowchart Skematik (Schematic Flowchart)
  4. Flowchart Program (Program Flowchart)
  5. Flowchart Proses (Process Flowchart)


1. FLOWCHART SISTEM


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 online (dihubungkan langsung dengan komputer) atau offline (tidak dihubungkan langsung dengan komputer, misalnya mesin tik, cash register atau kalkulator).

Contoh sederhana untuk flowchart sistem dapat dilihat pada Gambar 1.
berikut ini :
Gambar 1. Flowchart Sistem
 

 
2. FLOWCHART PAPERWORK / FLOWCHART DOKUMEN
 
Flowchart Paperwork menelusuri alur dari data yang ditulis melalui sistem. Flowchart Paperwork sering disebut juga dengan Flowchart Dokumen.
Kegunaan utamanya adalah untuk menelusuri alur form dan laporan sistem dari satu bagian ke bagian lain baik bagaimana alur form dan laporan diproses, dicatat dan disimpan.
Gambar 2. menggambarkan suatu contoh flowchart ini mengenai alur pembuatan kartu anggota untuk suatu perpustakaan.

FLOW DOKUMEN SISTEM BARU CALON ANGGOTA PERPUSTAKAAN

Gambar 2. Flowchart Paperwork
KETERANGAN :
# : Masukkan data calon anggota ke dalam komputer (proses pengisian data)
P : Tanda tangan dan validasi data

3.FLOWCHART SKEMATIK

Flowchart Skematik mirip dengan Flowchart Sistem yang menggambarkan suatu sistem atau prosedur. 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.

4. FLOWCHART PROGRAM
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.

Gambar 3. Flowchart Program
Suatu contoh flowchart program dapat dilihat pada Gambar 3.

5.  FLOWCHART PROSES

Flowchart Proses merupakan teknik penggambaran rekayasa industrial yang memecah dan menganalisis langkah-langkah selanjutnya dalam suatu prosedur atau sistem.

Flowchart Proses memiliki lima simbol khusus (lihat Gambar 4)


Gambar 4. Simbol Flowchart Proses
Flowchart Proses digunakan oleh perekayasa industrial dalam mempelajari dan mengembangkan proses-proses manufacturing. Dalam analisis sistem, flowchart ini digunakan secara efektif untuk menelusuri alur suatu laporan atau form.

Pada Gambar 5. menggambarkan suatu contoh flowchart proses.


Gambar 5. Flowchart Proses

Simbol-simbol Flowchart (Klik)
Memahami Flowchart (Diagram Alur) (Klik)

 
DAFTAR PUSTAKA



  1. Jogiyanto, analisis dan desain system informasi Andi off set Yogyakarta, 1990.
  2. Tavri D. Mahyusir, Analisa Perancangan Sistem Pengolahan data. PT Elex Media Komputindo, 1989.
  3. Yourdon Edward, Modern Structur Analisis, Prentice – Hall, Inc, 1989.




Memahami Flowchart (Diagram Alur)

1. Pengertian Flowchart 
 
Flowchart adalah penggambaran secara grafik dari langkah-langkah dan urut-urutan prosedur dari suatu program. Flowchart menolong analis dan programmer untuk memecahkan masalah kedalam segmen-segmen yang lebih kecil dan menolong dalam menganalisis alternatif-alternatif lain dalam pengoperasian.


Flowchart biasanya mempermudah penyelesaian suatu masalah khususnya masalah yang perlu dipelajari dan dievaluasi lebih lanjut.


2. Pedoman-pedoman Dalam Membuat Flowchart

  1. Bila seorang analis dan programmer akan membuat flowchart, ada beberapa petunjuk yang harus diperhatikan, seperti :
  2. Flowchart digambarkan dari halaman atas ke bawah dan dari kiri ke kanan.
  3. Aktivitas yang digambarkan harus didefinisikan secara hati-hati dan definisi ini harus dapat dimengerti oleh pembacanya.
  4. Kapan aktivitas dimulai dan berakhir harus ditentukan secara jelas.
  5. Setiap langkah dari aktivitas harus diuraikan dengan menggunakan deskripsi kata kerja, misalkan MENGHITUNG PAJAK PENJUALAN.
  6. Setiap langkah dari aktivitas harus berada pada urutan yang benar.
  7. Lingkup dan range dari aktifitas yang sedang digambarkan harus ditelusuri 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.
  8. Gunakan simbol-simbol flowchart yang standar.

4. Simbol-simbol Flowchart (Klik)

DAFTAR PUSTAKA



  1. Jogiyanto, analisis dan desain system informasi Andi off set Yogyakarta, 1990.
  2. Tavri D. Mahyusir, Analisa Perancangan Sistem Pengolahan data. PT Elex Media Komputindo, 1989.
  3. Yourdon Edward, Modern Structur Analisis, Prentice – Hall, Inc, 1989.




Selasa, 20 Desember 2011

Tiga Format Penulisan Algoritma

1. Deskriptif
Algoritma bertipe Deskriptif maksudnya adalah algoritma yang ditulis dengan bahasa manusia sehari-hari (misalnya Bahasa Indonesia atau Bahasa Inggris). Setiap Langkahnya ditulis dalam satu kalimat atau lebih. Tidak ada aturan untuk penulisan algoritma bertipe Deskriptif ini. Semua kalimat ditulis dengan sistematis, jelas, terbatas dan berurutan.

Contoh :
  1. Algoritma menghitung_luas_segitiga
  2. Untuk menghitung Luas Segitiga pertama Masukan nilai alas
  3. Kemudian masukan nilai tinggiKemudian hitung dengan menggunakan rumus Luas = Alas * Tinggi / 2
  4. Cetak Luas

2. Flowchart (diagram alur)
Algoritma bertipe Flow Chart adalah algoritma yang ditulis dalam bentuk diagram-diagram dengan anak panah sebagai penunjuk urutan langkah algoritmanya. Didalam Diagram terdapat Simbol-simbol yang mempunyai makna atau arti tersendiri. 
Contoh :

Flow chart menghitung_luas_segitiga

3. Pseudocode
Algoritma bertipe Pseudocode maksudnya adalah tiruan atau imitasi dari kode bahasa pemograman. Pada dasarnya, pseudocode merupakan suatu bahasa yang memungkinkan programer untuk berfikir terhadap permasalahan yang harus dipecahkan tanpa harus memikirkan syntax dari bahasa pemograman yang tertentu. Jadi pseudocode digunakan untuk menganmbarkan logika urut-urutan dari perogram tanpa memandang bagaimana bahasa pemorogramannya.
Contoh :

Algoritma menghitung_luas_segitiga

deklarasi:

luas,alas,tinggi : integer

deskripsi

read (alas)
read (tinggi)
luas ← alas * tinggi / 2
write (luas)

Thanks for xcode.or.id

Algoritma dalam kehidupan Sehari - Hari - Episode 2

Referensi :


Dalam kehidupan sehari – hari kita banyak menemukan langkah – langkah pengerjaan sesuatu meskipun kita tidak menyebutnya sebagai algoritma, contohnya resep membuat masakan  :
  • Tuangkan satu gelas santan ke dalam penggorengan
  • Masukan bumbu – bumbu  yang sudah dihaluskan, aduk hingga merata
  • Tambahkan garam, merica, dan kecap manis
  • Masak dengan api sedang sambil diaduk
  • Angkat bila sudah tercium aroma harum
Misalkan ada dua buah ember yang berisi air yang berwarna, ember A berisi air yang berwarna merah dan ember B berisi air yang berwarna biru, volume air didalam kedua ember adalah sama bagaimana mempertukarkan isi kedua ember itu sedemikian rupa sehingga nantinya ember A akan berisi air yang berwarna Biru, dan ember B berisi air yang berwarna Merah??
Penyelesian :
Kita tidak bisa langsung mempertukarkan air didalam kedua ember tadi begitu saja sebab cara seperti itu menyebabkan terjadinya percampuran. agar bisa dipertukarkan, kita memerlukan sebuah ember tambahan sebagai tempat penanganan sementara, misalkan tambahan tersebut adalah ember C, dengan menggunakan ember C ini, algoritma pertukaran isi kedua buah ember adalah sebagai berikut :
ALGORITMA mempertukarkan isi dua buah ember, A dan B
  1. Tuangkan air dari ember A ke dalam ember C
  2. Tuangkan air dari ember B ke dalam ember A
  3. Tuangkan air dari ember C ke dalam ember B
Masih soal ember  didalam literatur klasik terdapat persoalan yang dinamakan Water Jug Problem, misalkan anda mepunyai dua buah ember yang masing masing bervolume 5 liter air dan 3 liter air, anda diminta mendapatkan air (dari sebuah danau) sebayak 4 liter air dengan bantuan hanya dengan kedua buah ember tersebut(tidak ada peralatan bantuan lain yang tersedia, hanya kedua buah ember tersebut !!!), terserah menggunakan cara yang ada, anda boleh membuang seluruhnya, mengisi penuh kembali atau apapun, dengan satu syarat anda tidak diperbolehkan hanya dengan mengira – ngira, harus dengan menggunakan hitungan atau langkah yang pasti, buatlah algoritmanya??
Penyelesian :
ALGORITMA Mendapatkan air 4 liter dari dua buah ember bervolume 5 dan 3 liter
  1. Isi penuh ember 3 liter dengan air (ember 3 liter berisi 3 liter air)
  2. Tuangkan air dari ember 3 liter ke dalam ember air 5 liter (ember 5 liter,sekarang berisi 3 liter air)
  3. Isi penuh kembali ember ember 3 liter dengan air (ember 3 liter berisi 3 liter air)
  4. tuangkan air dari ember 3 liter kedalam ember 5 liter hingga penuh (di dalam ember 3 liter sekarang tersisa 1 liter air)
  5. Buang seluruh air dari ember 5 liter air (ember 5 liter kosong)
  6. tuangkan air dari ember 3 liter(yang tersisa 1 liter tadi) kedalam ember 5 liter (ember 5 liter sekarang berisi 1 liter air, ember 3 liter kosong)
  7. Isi penuh ember 3 liter dengan air (ember 3 liter berisi air 3 liter)
  8. Tuangkan air dari ember 3 liter ke dalam ember 5 liter (ember 5 liter sekarang berisi 1 + 3 = 4 liter air)

Algoritma dalam kehidupan Sehari - Hari - Episode 1

Dewasa ini, komputer digunakan di hampir semua bidang kehidupan manusia, mulai dari pendidikan, bisnis, sampai dengan permainan. Berbicara tentang komputer tidak lepas dari pemrogaman komputer. Hal ini karena komputer pada dasarnya merupakan mesin yang tidak bisa apa-apa. Kita harus memberikan serangkaian instruksi kepada komputer agar mesin ‘pintar’ ini dapat memecahkan suatu masalah. Langkah-langkah yang perlu dilakukan dalam memberikan instruksi kepada komputer untuk memecahkan masalah inilah yang dinamakan pemrogaman komputer. Adapun langkah-langkah pemrogaman komputer adalah sebagi berikut: mendefinisikan masalah, menentukan solusi, memilih algoritma, menulis program, menguji program, menulis dokumentasi, serta merawat program.
Sebelum membuat program, hendaknya kita membuat Flow Chart atau Pseudocode, sehingga memudahkan kita untuk memahami algoritma serta memudahkan kita dalam membuat program. Program yang ditulis juga harus jelas, nyata, dan komplit.

Algoritma adalah suatu prosedur yang tepat untuk memecahkan masalah dengan menggunakan bantuan komputer serta menggunakan suatu bahasa pemrogaman tertentu seperti bahasa Pascal, Visual Basic, Java, dan masih banyak lagi bahasa yang lain.Pranata (2002:8) dalam kehidupan sehari-hari, sebenarnya kita juga menggunakan algoritma untuk melaksanakan sesuatu. Sebagai contoh, ketika kita menulis surat, maka kita perlu melakukan beberapa langkah sebagai berikut:

  1. Mempersiapkan kertas dan amplop.
  2. Mempersiapkan alat tulis, seperti pena atau pensil.
  3. Mulai menulis.
  4. Memasukkan kertas ke dalam amplop.
  5. Pergi ke kantor pos untuk mengeposkan surat tersebut.

Fungsi Algoritma
Dengan algoritma, kita dapat mengatasi masalah dari yang sederhana sampai yang kompleks sekalipun. Namun, seorang user harus mampu membuat suatu program dengan menggunakan bahasa yang difahami oleh komputer. Sebelum disajikan dalam bentuk bahasa pemrogaman, sebaiknya kita membuat diagram alir (Flow Chart) dan Pseudocode. Hal ini dimaksudkan agar dapat mempermudah kerja atau mempermudah dalam membuat program. Selain itu, algoritma dapat mengatasi masalah logika dan masalah matematika dengan cara berurutan, tetapi kadang-kadang algoritma tidak selalu berurutan, hal ini dikenal dengan proses percabangan
Berikut ini adalah contoh algoritma untuk menghitung luas lingkaran:

  1. Masukkan R
  2. Pi ? 3,14
  3. L ? Pi*R*R
  4. Tulis L
Fungsi algoritma adalah untuk mempermudah kerja atau memudahkan kita dalam membuat program atau biasa di sebut sebagai Problem Solving. Selain itu, algoritma dapat mengatasi masalah logika dan masalah matematika
Algoritma.
  1. Para programer dapat menggunakan algoritma untuk memecahkan masalah dengan menggunakan bantuan komputer.
  2. Para programer dapat menggunakan algoritma sebagai Problem Solving dalam masalah logika dan masalah matematika.
  3. Para programer harus menulis program algoritma dengan jelas, nyata, dan komplit.
  4. Dapat membuat game atau software dengan algoritma

referensi:

Notasi Algoritmik

Notasi algoritmic di buat independen dari spesifikasi bahasa pemograman dan komponen komputer lainnya yang mengeksekusinya. Notasi algoritmic ini bisa di terjemahkan dalam berbagai bahasa pemograman.Analoginya seperti sama membuat kue. Seluruh resep dapat dibuat dalam bahasa apapun, bahasa inggris, jepang, perancis, belanda dan lainnya. Apapun bahasa resep yang di gunakan hasilnya akan tetap sama, sebab algoritmanya sama (dengan catatan semua langkah diikuti). Mengapa bisa demikian? Karena setiap juru masak (pemroses) dapat melakukan operasi yang sama, seperti mengocok telur, menimbang berat gula, menimbang telur dan lain sebagainya. Jadi membuat kue tidak terikat pada bahasa  dan juru masak yang mengerjakan.

Demikian pula halnya komputer. walaupun setiap pembuatan komputer berbeda teknologinya, tetapi pada dasarnya setiap komputer dapat melakukan operasi dasar dalam pemograman seperti operasi pembacaan data, operasi perbandingan, operasi aritmatika dan sebagainya. perkembangan teknologi komputer tidak mengubah operasi-operassi dasar itu, yang berubah hanyalah kecepatan, biaya, dan tingkat ketelitian. Pada sisi lain, setiap mesin sebelum akhirnya di kerjakan oleh CPU. Setiap intruksi dalam bahasa mesin menyajikan operasi dasar yang sesuai, dan menghasilkan efek netto yang sama pada setiap komputer.

Yang perlu di catat adalah notasi algoritmic bukan bahasa pemograman, sehingga siapapun dapat membuat notasi algoritmik yang berrbeda. Hal yang terpenting mengenai notasi tersebut adalah ia mudah di baca dan dimengerti. Selain itu notasi algoritmik bukan notasi yang baku, sebagai mana notasi bahasa pemograman, namun ketaatan dalam notasi algoritmik perlu agar mengurangi kesalahan.

Create by: M. Khoirudin ( Belajar Algoritma )

Belajar Memprogram dan belajar bahasa pemrograman


Belajar memprogram tidak sama dengan belajar belajar bahasa pemrograman. Belajar memprogram berarti mempelajari metodologi pemecahan masalah, kemudian menuliskan algoritma pemecahan masalah dalam notasi tertentu. Sedangkan belajar bahasa pemrograman berarti belajar memakai suatu bahasa komputer, aturan tata bahasanya, intrusksi-instruksinya, tata cara pengoprasian compiler-nya, dan memanfaatkan instruksi-instruksi tersebut untuk membuat program yang ditulis hanya dalam bahasa itu saja.
Di dalam pemrograman, kita lebih menekankan pada pemecahan masalah, sementara menulis kode program adalah aktivitas terakhir. Mula-mula kita pikirkan rancangan pemecahan masalah tanpa tergantung pada bahasa pemrograman yang digunakan atau komputer yang menjalankan program pemrograman yang digunakan atau komputer yang menjalankan program itu nanti. Rancangan tersebut berisi urutan langkah-langakah pencapaian solusi yang biasanya ditulis dalam notasi-notasi deskriptif (notasi ini kita namakan notasi algoritmik). Karena belajar memprogram yang baik bukanlah belajar membuat program “yang penting hasilnya benar”, tetapi perlu dipikirkan membuat program dengan menggunakan skema yang benar. Hal ini, akan membuat program yang kita buat dapat bersih dari kesalahan yang timbul pada waktu eksekusi.
Bila rancangan pemecahan masalah sudah dibuat dengan skema yang benar, maka rancangan tersebut siap dikodekan ke dalam bahasa pemrograman agar program bisa dieksekusi oleh komputer. Disinilah perlunya kita belajar bahasa pemrograman. Ada banyak bahasa pemrograman yang tersedia saat ini, tetapi desain pemecahan masalah harus dapat diterjemahkan ke dalam bahasa apapun.
Hingga saat ini terdapat puluhan bahasa pemrograman. Kita dapat menyebutkan antara lain bahasa rakitan (assembly), Fortran, Cobol, Ada, PL/I, Algol, Pascal, C, C++, Basic, Prolog, LISP, PRG, bahasa-bahasa simulasi seperti CSMP, Simscript, GPSS, Dinamo, dan masih banyak lagi. Belakangan juga muncul bahasa pemrograman baru seperti Java dan C#. Berdasarkan tujuan aplikasinya, bahasa pemrograman dapat digolongkan menjadi dua kelompok:
  1. Bahasa pemrograman bertujuan khusus (specific purpose programming language). Yang termasuk kelompok ini adalah Cobol (untuk terapan bisnis dan administrasi), Fortran (Aplikasi komputasi Ilmiah), bahasa assembly (aplikasi pemrograman mesin), prolog (aplikasi kecerdasan buatan, bahasa-bahasa simulasi (Simscript), dan sebagainya.
  2. Bahasa pemrograman bertujuan umum (general purpose programming language) yang dapat digunakan untuk berbagai aplikasi. Yang termasuk kelompok ini adalah bahasa pascal, Basic, dan C, C++.
Tentu saja pembagian ini tidak benar-benar kaku. Bahasa-bahasa bertujuan khusus tidak berarti tidak bisa digunakan untuk aplikasi lain. Cobol misalnya, dapat juga digunakan untuk terapan ilmiah, tetapi tentu kemampuanya sangat terbatas. Yang jelas, bahasa-bahasa pemrograman yang berbeda dikembangkan untuk bermacam-macam kegunaan yang berbeda pula.
Berdasarkan “kedekatan” bahasa pemrograman apakah lebih condong ke bahasa mesin atau ke bahasa manusia, maka bahasa pemrograman juga dapat dikelompokan atas dua macam:
  1. Bahasa tingkat rendah. Bahas ini dirancang agar setiap instruksinya langsung dikerjakan oleh komputer, tanpa harus melalui penerjemahan (translator). Contohnya adalah bahasa mesin (machine language). Bahasa mesin adalah sekumpulan kode biner (0 dan 1). Setiap perintah dalam bahasa mesin langsung “dimengerti” oleh mesin dan langsung dikerjakan. Bahasa tingkat rendah bersifat primitif, sangat sederhana, dan relatif sulit dipahami manusia. Bahasa assembly dimasukan kedalam kelompok ini karena “notasi” yang dipakai dalam bahasa ini merupakan bentuk “manusiawi” dari bahasa mesin, dan untuk melaksanakan instruksinya masih diperlukan penerjemahan (oleh assembler) ke dalam bahasa mesin. Bahasa tingkat rendah merupakan bahasa pemrograman generasi pertama yang pernah ditulis orang.
  2. Bahasa tingkat tinggi. Bahasa jenis ini membuat program menjadi lebih mudah dipahami, lebih manusiawi, dan lebih dekat ke bahasa manusia (bahasa inggris terutama). Kelemahannya, program dalam bahasa tingkat tinggi tidak dapat langsung dilaksanakan oleh komputer. Ia perlu diterjemahkan terlebih dahulu oleh sebuah translator bahasa (yang disebut kompilator atau compiler) ke dalam bahasa mesin sebelum akhirnya dieksekusi oleh CPU.
Tahapan pelaksanaan program oleh komputer



Sebenarnya batasan penggolongan bahasa pemrograman itu tidak selalu jelas. Pengertian tentang apa yang dimaksud dengan bahasa tingkat tinggiseringkali berbeda pada beberapa penulis. Ada penulis yang mendefinisikan bahasa tingkat tinggi dari sudut pandang kemudahan pemakaianya serta orientasinya yang lebih dekat ke bahasa manusia. Les Goldschlager menuliskan spektrum bahasa mulai dari bahasa tingkat tinggi(Pascal, Ada, PL/I, Cobol), bahasa tingkat menengah (Assembly, Basic, Fortran), sampai bahasa tingkat rendah (Bahasa mesin).

Kamis, 15 Desember 2011

Apakah Algortima dan Pemrograman itu?

Pemrograman sudah menjadi kegiatan yang sangat penting di era teknologi informasi. Program yang berjalan di komputer desktop, laptop, telepon genggam, PDA, dan sebagainya, tidak tercipta begitu saja, tetapi ditulis melalui proses analisis  dan perancangan yang cermat. Sebuah program komputer pada dasarnya mengimplementasikan suatu algoritma. Dengan kata lain, algoritma adalah ide dibalik program komputer apapun.

Definisi Algoritma
Algoritma adalah urutan langkah-langkah  untuk memecahkan suatu masalah.
Terdapat definisi lain dari algoritma tetapi pada prinsipnya senada dengan definisi yang diungkapkan di atas yang dikutip dari beberapa literatur, antara lain:
Algoritma adalah deretan langkah-langkah komputasi yang mentransformasikan data masukan menjadi keluaran.
Algoritma adalah deretan instruksi yang jelas untuk memecahkan masalah, yaitu untuk memperoleh keluaran yang diinginkan dari suatu masukan dalam jumlah waktu yang terbatas.
Algoritma adalah prosedur komputasi yang terdefinisi dengan baik yang menggunakan beberapa nilai sebagai masukan dan menghasilkan beberapa nilai yang disebut keluaran. Jadi Algoritma adalah deretan komputasi yang mentransformasikan masukan menjadi keluaran.
Dalam matematika dan komputasi, algoritma 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.
Contohnya jika kita mempunyai setumpuk kartu yang berjumlah n = 50 buah, maka secara tradisional langkah-langkah yang biasa dilakukan orang kalau mengurutkan kartu adalah dengan mencari kartu bernomer terkecil lebih dahulu, lalu letakan pada posisi pertama (atas). Selanjutnya, cari kartu dengan nomer terkecil berikutnya,lalu letakan dibawah kartu pertama.Begitulah kita mencari kartu dengan nomer terkecil ketiga, keempat dan seterusnya, samapi hanya tersisa satu kartu (kalau sudah tersisa satu kartu maka tidak perlu diurutkan lagi), dan kita memperoleh tumpukan kartu yang seluruh kartunya sudah terurut dari nomer kecil ke besar. Langkah-langkah pengurutan 50 kartu dapat kita  tuliskan sebagai berikut :
  • Cari kartu dengan nomer terkecil diantara kartu yang tersisa.
  • Tempatkan kartu tersebut pada posisi yang tepat.
  • Ulangi kembali dari langkah 1 sebanyak n-1 kali.
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

Algoritma adalah jantung ilmu computer atau informatika. Ditinjau dari asal usul kata, kata “algoritma” sendiri mempunyai sejarah yang cukup aneh. Kata ini tidak muncul di dalam kamus Webster sampai akhir tahun 1957. Orang hanya menemukan kata algorism yang berarti proses menghitung dengan angka Arab. Kata algorism berasal dari nama penulis buku Arab yang terkenal, yaitu Abu Ja’far Muhammad ibnu Musa al-Khuwarizmi ( al-Knuwarizmi dibaca orang barat menjadi algorism).
Pada tahun 1950, kata algoritma pertama kali digunakan pada “ algoritma Euclidean” (Euclid’s algorithm). Euclid, seorang matematikawan Yunani (lahir pada tahun 350 M), dalam bukunya berjudul Element menuliskan langkah-langkah untuk menemukan pembagi bersama terbesar (common greatest divisor atau gcd), dari dua buah bilangan bulat, mdan n [KNU73] (Euclid tidak menyebut metodenya sebagai algoritma, baru di abab modernlah orang-orang menyebut metodenya itu sebagai “algoritma Euclidean”).
Pembagi bersama terbesar dari dua buah bilangan bulat tak negative adalah bilangan bulat positif terbesar yang habis membagi kedua bilangan tersebut.

Misalnya, m=80 dan n=12. Semua factor pembagi 80 adlah

1,2,4,5,8,10,16,20,40,80,

Dan semua factor pembagi 12 adalah

1,2,3,4,6,12,

Maka gcd(80,12)=4. Langkah-langkah mencari gcd(80,12) dengan algoritma Euclidean sbb:

80 dibagi 12 hasilnya = 6, sisa = 8 (atau: 80 = 6 . 12 + 8)
12 dibagi 8 hasilnya = 1, sisa = 4 (atau: 12 =1 . 8 + 4)
8 dibagi 4 hasilnya = 2, sisa = 0 (atau: 8 = 4 .2 + 0)

Karena pembagian yang terakhir menghasilkan 0, maka sisa pembagian terakhir sebelum 0, yaitu 4, menjadi gcd(80,12). Jadi, gcd(80,12) = gcd(12,8) =gcd(8,4) = gcd(4,0) = 4.

Terdapat beberapa versi algoritma Euclidean, salah satu versinya dituliskan di bawah ini:

ALGORITMA EUCLIDEAN:

{Diberikan dua buah bilangan bulat tak-negatif m dan n (m>=n).
Algoritma Euclidean mencari pembagi bersama terbesar, gcd, dari kedua
bilangan tersebut, yaitu bilangan bulat positif terbesar yang habis
membagi m dan n.}
1. Jika n= 0 maka
m adalah jawabannya;
stop.
tetapi jika n#0,
lanjutkan ke langkah 2.
2. Bagilah m dengan n dan misalkan r adalah sisanya.
3. Ganti nilai m dengan nilai n dan nilai n dengan nilai r, lalu ulang
kembali ke langkah 1.

Dengan menggunakan algoritma Euclidean ini, kita dapat menhitung gcd dari dua buah bilangan bulat sembarang secara sistematis.
Contoh-contoh algoritma yang sudah dijelaskan di atas memberi dua pesan penting. Pertama, sebuah algoritma harus benar. Kedua, algoritma harus berhenti, dan setelah berhenti, algoritma memberi hasil yang benar.
Ciri-ciri Algoritma yang baik: Menurut Donald E.Knuth dalam bukunya yang berjudul the Art Of Computer Programming. Algoritma mempunyai 5 ciri penting yaitu:

  1.  Algoritma harus berhenti setelah mengerjakan sejumlah langkah terbatas.
  2. Setiap langkah didefenisikan dengan tepat dan tidak berarti dua (ambiguous).
  3. Algoritma memiliki nol atau lebih masukan(input). Masukan ialah besaran yang diberikan kepada algoritma untuk diproses.
  4. Algoritma mempunyai nol atau lebih keluaran(output). Keluaran dapat berupa Pesan atau besaran yang memiliki hubungan dengan masukan.
  5. Algoritma harus sangkil (effective). Setiap langkah harus sederhana sehingga dapat dikerjakan dalam sejumlah waktu yang masuk akal.

Ciri-ciri Algoritma yang baik:
  1. Tepat sasaran: memenuhi spesifikasi pekerjaan dan bekerja sesuai tujuan.
  2. Flexible dan portable: Flexible untuk dikembangkan lebih lanjut. Portable untuk digunakan pada berbagai system dan mesin.
  3. Bersih dari kesalahan system atau lojik.
  4. Efektif: setiap langkah harus sederhana sehingga dapat dikerjakan dalam sejumlah waktu yang masuk akal.
  5. Murah: Efisien dalam pengguna piranti memori dan penyimpanan lainnya. Cepat waktu pelaksanaanya.
  6. Didokumentasi dengan baik untuk pengoperasian, pemeliharaan dan Pengembangan.
  7. Algoritma merupakan pemberian (description) pelaksanaan suatu proses.
  8. Tidak ambiguous: tidak bermakna ganda.
  9. Harus berhenti setelah mengerjakan sejumlah langkah terbatas.

Program dan Pemrograman
Algoritma baru efektif jika dijalankan oleh sebuah pemroses (processor). Pemroses itu bisa manusia, komputer, robot, mesin dan sebagainya. Pemroses membaca setiap instruksi di dalam algoritma lalu mengerjakannya. Suatu pemroses harus :
  1. Mengerti setiap langkah dalam algoritma.
  2. Mengerjakan operasi yang bersesuaian dengan langkah tersebut.
Kita memfokuskan pemroses algoritma adalah komputer. Komputer adalah alat bantu untuk menjalankan perintah-perintah di dalam algoritma yang telah “dimasukan” ke dalamnya. Agar komputer mengerti perintah yang dimaksudkan, maka perintah tersebut harus ditulis dalam bahasa yang dipahami olehnya. Oleh karena itu algoritma harus ditulis dalam bahasa khusus, yaitu bahasa komputer. Algoritma yang ditulis dalam bahasa komputer dinamakan program . Bahasa komputer yang digunakan dalam menulis program dinamakan bahasa pemrograman. Orang yang membuat program komputer disebut pemrogram. Dan kegiatan merancang dan menulis program disebut pemrograman. Di dalam pemrograman ada aktivitas menulis kode program, kegiatan ini dinamakan coding.
 
;