Minggu, 15 Agustus 2010

Fundamental Dasar Algoritma

Algoritma itu Mudah

SEJARAH ALGORITMA

Asal kata Algoritma berasal dari nama Abu Ja’far Mohammed Ibn Musa al-Khwarizmi, ilmuan Persia yang menulis kitab al jabr w’al-muqabala (rules of restoration and reduction) sekitar tahun 825 M.



A. Pengenalan Algoritma
  • Urutan langkah-langkah untuk memecahkan masalah.
  • Urutan logis pengambilan putusan untuk memcahkan masalah. Urutan langkah logis, berarti algoritma harus mengikuti suatu urutan tertentu, tidak boleh melompat-lompat.
  • Alur pemikiran dalam menyelesaikan suatu pekerjaan yang dituangkan secara tertulis. Alur pikiran yang artinya algoritma seseorang dapat berbeda dari algoritma orang lain. Tertulis, yang artinya dapat berupa kalimat, gambar, atau tabel tertentu.
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.

Note:
Algoritma dibutuhkan untuk memerintah komputer mengambil langkah-langkah tertentu untuk menyelesaikan masalah.

Algoritma -> Pemrograman -> Program

Agar algoritma dapat memerintah (diproses) komputer, maka dirubah menjadi bentuk program (melalui proses pemrograman).

Penulisan Algoritma
  1. Menggunakan bahasa natural (Bahasa manusia: Indonesia, Inggris).
    Kelemahannya masih sering membingungkan (ambigu) / sulit dipahami.

  2. Menggunakan Flowchart.
    Baik, karena alur algoritma dapat dilihat secara visual, tetapi repot pembuatannya jika algoritma panjang.

  3. Menggunakan Pseudocode.
    Sudah dekat dengan bahasa pemrograman, tetapi sulit dimengerti oleh orang yang belum tahu pemrograman.
B. Tahap Desain Algoritma
  1. Bagaimana merencanakan sebuah algoritma? Yaitu dengan mendefinisikan masalah.
    Contoh : Permasalahan menghitung luas lingkaran, dengan data yang diketahui adalah diameter lingkaran.
    Rumus : ∏ . r2 dengan Phi = 3.14 atau 22/7.
  2. Bagaimana menyatakan suatu algoritma (menulis algoritma)?
    • Dengan PseudoCode
      suatu cara penulisan algoritma agar ide dan logika dari algoritma dapat disampaikan/diekspresikan menggunakan gaya bahasa pemrograman-pemrograman tertentu.
    • Dengan FlowChart / Diagram Alir
      FlowChart / Diagram Alir merupakan sebuah diagram / bagan yang menggambarkan urutan / aliran logika dari suatu prosedur pemecahan masalah pemrograman.
    • Dengan Statement Program / Penggalan Program
      Selain dengan menggunakan PseudoCode dan FlowChart / Diagram Alir, untuk menuliskan sebuah algoritma yang utuh kita juga dapat menggunakan notasi-notasi dalam bahasa pemrograman yang kita pakai. Misal bahasa pemrograman yang kita pakai adalah bahasa pemrograman C, maka untuk menuliskan algoritma programnya kita dapat memakai notasi / perintah-perintah dalam bahasa pemrograman C tersebut.
  3. Bagaimana validitas suatu algoritma.
  4. Bagaimana menganalisa suatu algoritma.
  5. Bagaimana menguji program dari suatu algoritma.
Studi Kasus :
Buatlah Algoritma untuk memilih bilangan terbesar dari 3 buah bilangan?
  • Dengan Bahasa Natural
  1. Ambil bilangan pertama dan set maks sama dengan bilangan pertama
  2. Ambil bilangan kedua dan bandingkan dengan maks
  3. Apabila bilangan kedua lebih besar dari maks, set maks sama dengan bilangan kedua
  4. Ambil bilangan ketiga dan bandingan dengan maks
  5. Apabila bilangan ketiga lebih besar dari maks, set maks sama dengan bilangan ketiga
  6. Variabel maks berisi bilangan terbesar. Tampilkan hasilnya
  • Dengan PseudoCode
  1. maks ← bilangan pertama;
  2. if (maks != bilangan kedua) then
  3.      maks ← bilangan kedua;
  4. endif;
  5. if (maks != bilangan ketiga) then
  6.      maks ← bilangan ketiga;
  7. endif;
  8. write('Bilangan terbesar : ',maks);
C. Tahap Pengujian Algoritma
  1. Tahap Debugging :
    Pada tahap debugging ini kita mencari kesalahan dalam program kita, baik itu kesalahan pada sintaks maupun kesalahan logika program.

  2. Tahap Profiling
    Pada tahap profiling ini kita melakukan pengujian terhadap program tentang seberapa lama waktu runtime dan seberapa besar memori total yang dialokasikan / terpakai pada program yang kita bangun.
D. Tahap Analisis Algoritma

Pada tahap analisis algoritma ini kita melakukan analisa keefisiensian dan keefektifitasan dari suatu algoritma yang kita desain, hal ini dapat kita tinjau berdasarkan beberapa hal seperti berikut ini :
  1. Waktu Tempuh dari Suatu Algoritma.
  2. Jumlah Memori yang Digunakan.
E. Ciri-ciri Algoritma yang Benar

Ciri-ciri algoritma yang baik menurut Donnald E. Knuth adalah sebagai berikut :
  1. Finite :
    Algoritma harus berhenti setelah mengerjakan sejumlah langkah yang terbatas.

  2. Definite :
    Setiap langkah dalam algoritma harus didefinisikan secara jelas, tepat guna, presisi, dan tidak ambigu (bermakna ganda).

  3. Input :
    Algoritma minimal dapat memiliki nol atau lebih masukkan (input). Input merupakan besaran yang diberikan kepada algoritma sebelum algoritma mulai dikerjakan.

  4. Output :
    Algoritma minimal dapat memiliki satu atau lebih keluaran (output). Keluaran merupakan besaran yang berkaitan dengan masukkan (input).

  5. Effective & Efficient :
    Algoritma harus efektif dan efisien. Setiap langkah dalam algoritma harus sederhana sehingga dapat dikerjakan dalam sejumlah waktu yang masuk akal.
F. Struktur Dasar Algoritma
  1. Sequence Process :
    Instruksi dikerjakan secara berurutan satu persatu dimulai dari langkah yang pertama sampai yang terakhir.

  2. Selection Process :
    Instruksi pemilihan proses (percabangan), sehingga apabila memenuhi persyaratan / kondisi tertentu maka instruksi akan dikerjakan.
    Contoh :
    • Jika pembayaran tunai diberi diskon 10%
    • Jika dilakukan secara kredit maka diskon 0%
      (dalam pernyataan diatas, hanya boleh melakukan 1 instruksi dari 2 alternatif instruksi yang tersedia)

  3. Iteration Process :
    Instruksi yang dikerjakan secara berulang-ulang selama masih memenuhi suatu persyaratan / kondisi tertentu.

Tugas
Buatlah algoritma (dengan bahasa natural) :
  1. Menampilkan bilangan ganjil dari 1 sampai dengan 10.
  2. Menghitung jumlah deret : 1 + 2 + 3 + 4 + .... + N.
    N = jumlah maksimum suatu nilai yang dimasukkan.

Selengkapnya 

Selasa, 03 Agustus 2010

Pemrograman dan Bahasa Pemrograman

Pemrograman dan Bahasa Pemrograman

PENDAHULUAN

Kali ini saya akan membahas secara singkat mengenai pemrograman dan bahasa pemrograman, rambu-rambu dalam belajar atau mengajar bahasa pemrograman, serta masalah pemilihan bahasa pemrograman pertama bagi pemula. Kalau kita membayangkan abad informasi, yang muncul adalah kosakata seperti komputer, network, komunikasi dan informasi itu sendiri. Memang abad informasi dan komputer tidak dapat dipisahkan. Perkembangan ilmu dan teknik komputer mempercepat perkembangan informasi, atau sebaliknya permintaan akan informasi yang terus bertambah baik dari segi kuantitas maupun kualitas, mendorong percepatan perkembangan ilmu dan teknik komputer dan ilmu-ilmu lainnya.

Dengan semangat efesiensi, keberadaan komputer di kantor menjadi sangat penting. Di awal perkembangan komputer, program aplikasi sangat sedikit, primitif dan “sulit”, sehingga setiap kantor memerlukan programer. Bagi Anda yang dapat menggunakan WordStar ataupun LaTeX, maka dapat dikatakan bahwa Anda pun seorang programer, karena Anda harus mengetikan perintah-perintah khusus untuk menghasilkan walau sebuah surat sederhana. Kini dengan munculnya aplikasi-aplikasi mutakhir dan tehnologi plug-in, pengguna tidak perlu lagi susah-susah menjadi programer. Apalagi dengan munculnya tehnologi visual-programming, maka seorang programer pun tidak perlu mengetikkan seluruh kode dari sebuah program yang dibuatnya. Namun demikian, bagaimana pun juga, keberadaan programer masih sangat diperlukan untuk usaha otomatisasi berbagai bidang kehidupan. Permintaan yang mendesak dari dunia bisnis, seringkali membuat dunia pendidikan kewalahan dalam mensuplai programer yang sanggup menghadapi perkembangan tehnologi komputer yang sangat cepat ini.


PEMROGRAMAN DAN BAHASA PEMROGRAMAN

Pemrograman dapat diklasifikasikan sebagai berikut [Rechenberg]:
  1. Berorientasi prosedur (procedural oriented)
  2. Berorientasi fungsi (functional oriented)
  3. Berorientasi logik (logic oriented)
  4. Berorientasi obyek (object oriented)
Masing-masing memiliki kelebihan tersendiri. Kadangkala dalam membangun suatu aplikasi dibutuhkan gabungan metode pemrograman tersebut. Misalnya dalam C++ dan Java (bahasa pemrograman berorientasi obyek), kita masih dapat menemukan tehnik-tehnik pemrograman berorientasi prosedur dalam setiap method/function member dalam obyek-obyeknya. Suatu bahasa pemrograman pada asalnya hanya dapat digunakan dalam satu metode. Pascal mulanya untuk procedural-oriented, Lisp untuk functional-oriented, Smaltalk untuk object-oriented dan lain-lain. Seiring dengan perkembangan tehnologi informasi dan komputer, puluhan bahkan ratusan bahasa pemrograman baru lahir. Masing-masing memiliki keunikan dan kelebihan spesifik. Ada yang khusus untuk jenis komputer tertentu, ada pula yang khusus untuk paradigma pemrograman tertentu.


BELAJAR PEMROGRAMAN
Lalu bagaimana seorang programer mulai belajar memprogram? Dalam menjawab pertanyaan ini kita sering terjebak dalam masalah pemilihan bahasa pemrograman pertama bagi pemula. Bahasa pemrograman apakah yang paling tepat diajarkan kepada seorang pemula, sehingga kelak ia dapat survive di antara sekian ratus bahasa pemrograman. Sampai saat ini pun perdebatan masih terus berlanjut untuk memilih bahasa pemrograman pertama yang paling tepat. Tidak dapat diragukan lagi bahwa bahasa pemrograman hampir sebanyak bahasa manusia, atau mungkin lebih banyak lagi.

Pemilihan bahasa pemrograman pertama merupakan masalah pelik. Sebab bahasa pemrograman pertama akan mempengaruhi cara berfikir programer di masa yang akan datang. Programer dengan bahasa pertamanya Pascal akan lebih mudah berpindah ke bahasa pemrograman yang memiliki paradigma sama, yaitu berorientasi prosedur seperti C, Modula, Oberon. Tetapi programer tersebut kesulitan untuk berpindah ke bahasa pemrograman dengan paradigma yang lain seperti CLOS dan Scheme, yaitu bahasa pemrograman keluarga Lisp. Selain daripada itu, setelah menentukan paradigmanya, masalah berikutnya yang muncul adalah memilih bahasa pemrograman yang paling dominan dalam paradigma tersebut. Misalnya, untuk paradigma berorientasi fungsi manakah yang paling tepat diajarkan kepada pemula, apakah CLOS atau Scheme atau EmacsLisp. Masalah kedua ini berkaitan dengan, kemudahan dalam belajar, dialek dalam keluarga bahasa pemrograman tersebut, atau bahkan kecenderungan pasar.


Pada umumnya, lembaga pendidikan memilih paradigma pemrograman berorientasi prosedur sebagai paradigma pertama siswa mereka. Bahasa yang digunakan umumnya Pascal atau C. Hal ini dikarenakan paradigma tersebut lebih sering dipakai di dalam kehidupan sehari-hari. Setelah itu, disesuaikan dengan situasi dan kondisi diajarkan paradigma lain. Tetapi ada pula lembaga pendidikan yang memilih bahasa ML, bahasa dengan paradigma berorientasi fungsi, seperti MIT. Alasan MIT, karena sebagian mahasiswa sebelumnya telah memiliki ketrampilan dan pengetahuan dalam paradigma pemrograman berorientasi prosedur, demi alasan keadilan dipilihlah bahasa dan pemrograman yang asing untuk sebagian besar mahasiswa. Dengan demikian sebagian besar mahasiswa memulai belajar pemrograman dari awal yang sama.

Yang perlu kita perhatikan adalah mengajar/belajar pemrograman tidaklah sama dengan belajar bahasa pemrograman. Agar kita tidak salah langkah dalam mengajar/belajar pemrograman, Derek Andrew [Woodman, pp.255-276] memberikan rambu-rambu sebagai berikut:
  • Kita tidak belajar atau mengajar bahasa pemrograman, tetapi belajar atau mengajar bagaimana cara memprogram
  • Kita tidak belajar atau mengajar bahasa pemrograman, tetapi belajar atau mengajar bagaimana memecahkan masalah
  • Kita tidak belajar atau mengajar bahasa pemrograman, tetapi belajar atau mengajar bagaimana mendesain sistem
  • Kita tidak belajar atau mengajar bahasa pemrograman, tetapi belajar atau mengajar prinsip-prinsip bahasa pemrograman
  • Kita tidak belajar atau mengajar bahasa pemrograman, tetapi belajar atau mengajar teori semantik
  • Kita tidak belajar atau mengajar bahasa pemrograman, tetapi belajar atau mengajar teori pemrograman
Bagi seorang pengajar point terpenting adalah point pertama : perlunya mengajari ahli komputer kita bagaimana cara memprogram. Asalkan suatu bahasa pemrograman itu cukup memadai bagi kita untuk belajar atau mengajar pemrograman, apapun bahasa pemrograman yang kita gunakan tidak menjadi masalah.

KESIMPULAN

Posting saya kali ini membahas secara singkat tentang pemrograman dan bahasa pemrograman, serta rambu-rambu dalam belajar atau mengajar bahasa pemrograman. Pemilihan suatu bahasa pemrograman pertama bagi pemula tergantung dari apa yang akan dikerjakan olehnya di masa mendatang.

Sumber : Ilmu Komputer
Selengkapnya 

Sabtu, 31 Juli 2010

Pengantar Algoritma dan Pemrograman

Al-Khwarizmi1.1. Apa Itu Algoritma

Kata algoritma, mungkin bukan sesuatu yang asing bagi kita. Penemunya adalah seorang ahli matematika dari uzbekistan yang bernama Abu Abdullah Muhammad Ibn Musa Al-Khwarizmi (770-840). Di literatur barat dia lebih terkenal dengan sebutan Algorizm. Panggilan inilah yang kemudian dipakai untuk menyebut konsep algorithm yang ditemukannya. Dalam bahasa Indonesia kita kemudian menyebutkannya sebagai algoritma. Algoritma adalah kunci dari bidang ilmu komputer, karena banyak bidang di bawah ilmu komputer yang lahir berdasarkan konsep algoritma ini. Pada hakekatnya algoritma juga adalah kunci dari kehidupan kita. Cara membuat masakan (resep masakan) adalah juga sebuah contoh nyata dari algoritma.

Definisi Algoritma
Kita bisa mendefinisikan algoritma seperti dibawah:

Algoritma adalah logika, metode dan tahapan (urutan) sistematis yang digunakan untuk memecahkan suatu permasalahan.

Kamus besar bahasa Indonesia (Balai Pustaka 1988) secara formal mendefinisikan algoritma sebagai:

Algoritma adalah urutan logis pengambilan putusan untuk pemecahan masalah.

Beda Algoritma dan Program
Program adalah kompulan instruksi komputer, sedangkan metode dan tahapan sistematis dalam program adalah algoritma. Program ini ditulis dengan menggunakan bahasa pemrograman. Jadi bisa kita sebut bahwa program adalah suatu implementasi dari bahasa pemrograman.

Beberapa pakar memberi formula bahwa:

program = struktur data + algoritma

Bagaimanapun juga struktur data dan algoritma berhubungan sangat erat pada sebuah program. Algoritma yang baik tanpa pemilihan struktur data yang tepat akan membuat program menjadi kurang baik, demikian juga sebaliknya. Struktur data disini bisa berupa list, tree, graph, dsb. Akan dibahas secara mendetail pada bab-bab mendatang.


1.2. Menilai Sebuah Algoritma

Ketika manusia berusaha memecahkan masalah, metode atau teknik yang digunakan untuk memecahkan masalah itu ada kemungkinan bisa banyak (tidak hanya satu). Dan kita memilih mana yang terbaik diantara teknik-teknik itu. Hal ini sama juga dengan algoritma, yang memungkinkan suatu permasalahan dipecahkan dengan metode dan logika yang berlainan.

Lalu bagaimana mengukur mana algoritma yang terbaik ?

Beberapa persyaratan untuk menjadi algoritma yang baik adalah:
  • Tingkat kepercayaannya tinggi (realibility). Hasil yang diperoleh dari proses harus berakurasi tinggi dan benar.
  • Pemrosesan yang efisien (cost rendah). Proses harus diselesaikan secepat mungkin dan frekuensi kalkulasi yang sependek mungkin.
  • Sifatnya general. Bukan sesuatu yang hanya untuk menyelesaikan satu kasus saja, tapi juga untuk kasus lain yang lebih general.
  • Bisa Dikembangkan (expandable). Haruslah sesuatu yang dapat kita kembangkan lebih jauh berdasarkan perubahan requirement yang ada.
  • Mudah dimengerti. Siapapun yang melihat, dia akan bisa memahami algoritma anda. Susah dimengertinya suatu program akan membuat susah di maintenance (kelola).
  • Portabilitas yang tinggi (Portability). Bisa dengan mudah diimplementasikan di berbagai platform komputer.
Selengkapnya 

Jumat, 30 Juli 2010

Perbedaan Ilmu Komputer dan Sistem Informasi

Perbedaan Ilmu Komputer dan Sistem InformasiSistem Informasi

Program Sistem Informasi lebih berfokus pada pengintegrasian solusi berbasis teknologi informasi dengan proses bisnis untuk memenuhi kebutuhan informasi bisnis dan usaha-usaha lain, yang memungkinkan tercapainya tujuan sebuah organisasi dengan efektif dan efisien. Perspektif bidang ilmu ini lebih memandang teknologi sebagai instrumen untuk mencatat, menghasilkan, mengolah, serta mendistribusikan informasi. Ahli-ahli di bidang ini memiliki kemampuan untuk memetakan kebutuhan informasi sebuah organisasi, dan menentukan cara terbaik teknologi informasi dapat digunakan untuk memenuhi kebutuhan tersebut.

Selain penguasaan aspek teknologi informasi, seorang pakar sistem informasi juga harus memahami prinsip-prinsip manajemen dan bisnis. Sebagai konsekuensinya, kurikulum di bidang sistem informasi juga mencakup materi mengenai kerangka bisnis dan manajemen, di samping penguasaan teknologi perangkat lunak dan perangkat keras komputer.

Lulusan dari program ini memiliki keahlian yang sangat dibutuhkan industri saat ini, di mana pemanfaatan teknologi informasi sering menjadi kunci keunggulan sebuah organisasi.

Ilmu Komputer
Teknik Informatika

Program yang berjudul Ilmu Komputer dan Teknik Informatika pada dasarnya adalah program yang sama. Cakupannya cukup luas, mulai dari fondasi teoritis mengenai perancangan algoritma, yaitu konsep dasar yang melandasi pengembangan perangkat lunak, sampai kepada penerapan mutakhir berupa aplikasi robotika, kecerdasan buatan, bio-informatika, dan topik-topik menarik lainnya.

Fokus kurikulum Ilmu Komputer dan Teknik Informatika seringkali lebih ilmiah dan teoritis, dan cukup banyak mengandung unsur matematika dan logika.

Seorang lulusan Ilmu Komputer/Teknik Informatika memiliki kemampuan untuk merancang dan mengembangkan perangkat lunak yang canggih untuk menyelesaikan permasalahan yang rumit. Mereka jugalah yang senantiasa menemukan inovasi baru di bidang ilmu komputer. Sebagai contoh, saat ini kita sudah mengenal baik fasilitas Internet dan World Wide Web, yang tidak akan terwujud tanpa kemajuan di sub-bidang ilmu komputer seperti jaringan komputer (computer networking), basis data (database), serta interaksi manusia komputer. Saat ini, ilmuwan komputer menggunakan teknologi komputer untuk pengembangan robot yang cerdas, pemodelan DNA manusia, serta pembuatan program yang dapat memahami berbagai data dalam bentuk teks, gambar, suara, maupun video.

Teknik Komputer
Teknologi Komputer

Program ini berfokus pada perancangan dan pembangunan komputer dan sistem berbasis komputer. Topik yang dipelajari adalah perangkat keras, perangkat lunak, sistem komunikasi, serta interaksi antara semua elemen tersebut. Sistem pendidikannya biasanya lebih banyak menganut pendekatan rekayasa/terapan (engineering) daripada ilmiah (science).

Mahasiswa pada program Teknik/Teknologi Komputer lebih banyak mempelajari perancangan sistem perangkat keras dijital, termasuk komputer dan sistem telekomunikasi. Perangkat lunak tetap dipelajari,namun fokusnya terletak pada interaksinya dengan perangkat keras.

Sebuah sub-bidang yang cukup banyak diminati di Teknik/Teknologi Komputer adalah sistem tertanam (Embedded Systems), yaitu pengembangan perangkat selain komputer yang sebetulnya memiliki sistem perangkat keras maupun lunak ‘tertanam’ di dalamnya, misalnya telepon seluler, sensor dan peralatan medis, dan lain-lain.

Sumber :

Selengkapnya 

Sabtu, 24 Juli 2010

Definisi Sistem Informasi

Definisi Sistem InformasiSesungguhnya yang dimaksud sistem informasi tidak harus melibatkan komputer, sistem informasi yang menggunakan komputer biasa disebut sistem informasi berbasis komputer (computer based information system atau CBIS), tetapi dalam prakteknya sistem informasi lebih sering dikait-kaitkan dengan komputer. Berikut beragam definisi sistem informasi :

1. Turban, McLean, dan Wetherbe (1999)
Sistem informasi adalah sebuah sistem informasi yang mempunyai fungsi mengumpulkan, memproses, menyimpan, menganalisis, dan menyebarkan informasi untuk tujuan yang spesifik.

2. Bodnar dan HopWood (1993)
Sistem informasi adalah kumpulan perangkat keras dan lunak yang dirancang untuk mentransformasikan data ke dalam bentuk informasi yang berguna.

3. Alter (1992)
Sistem informasi adalah kombinasi antara prosedur kerja, informasi, orang, dan teknologi informasi yang diorganisasikan untuk mencapai tujuan dalam sebuah perusahaan.
Selengkapnya