Minggu, 24 Maret 2013

Algoritma

Algoritma

Dari Wikipedia bahasa Indonesia, ensiklopedia bebas


Diagram Alur sering digunakan untuk menggambarkan sebuah 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 istilah "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.

Jenis-jenis Algoritma

Terdapat beragam klasifikasi algoritma dan setiap klasifikasi mempunyai alasan tersendiri. 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.
  • 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.
  • Metode serakah. Sebuah algoritma serakah mirip dengan sebuah Pemrograman dinamik, bedanya jawaban dari submasalah tidak perlu diketahui dalam setiap tahap; dan menggunakan pilihan "serakah" apa yang dilihat terbaik pada saat itu.
Menentukan algoritma
Dalam pemilihan algoritma, pemrogram atau analis harus menggunakan algoritma yang sesuai dan efisien untuk masalah yang dihadapi.
Menulis program
Penulisan program bisa dilakukan dengan menggunakan bahasa pemrograman yang dikuasai dan memiliki kompabilitas dengan perangkat keras yang akan menggunakan program tersebut.
Menguji program
Bila program sudah selesai dibuat, pengujian diperlukan untuk mengetahui apakah program yang dibuat sudah layak untuk digunakan.
Mendokumentasikan program
Penulisan dokumentasi yang biasanya dilupakan oleh pemrogram menjadi sangat penting saat akan dilakukan perubahan pada program yang dibuat. penulisan program ini dapat dilakukan dengan menulis komentar pada source code tentang kegunaannya (variabel, parameter, procedur, fungsi).
Merawat program
Program yang sudah selesai dibuat juga perlu dirawat dengan pendeteksian bug yang belum diketahui sebelumnya juga penambahan fasilitas baru yang mempermudah pengguna program.
Dari penjelasan diatas, dapat kita peroleh kesimpulan bahwa pembelajaran algoritma pemrograman adalah bagian dari langkah-langkah pembuatan program. Untuk lebih jelasnya tentang algoritma pemrograman akan diulas sebagai berikut :
Algoritma
Algoritma yaitu kumpulan langkah-langkah / steps untuk menyelesaikan masalah menggunakan komputer (program komputer) dengan syarat tertentu. Adapun syarat-syaratnya adalah sebagai berikut :
  1. Setiap langkah harus DEFINITE (pasti, tertentu), dalam algoritma terdapat instruksi-instruksi yang jelas dan tidak ambigu.
  2. Minimum mempunyai 1 output (input boleh tidak ada)
  3. Harus ada stoping criteria (bisa berhenti).
Algoritma juga mempunyai beberapa jenis yaitu :
  1. Sequence, instruksi dikerjakan berurutan (sekuensial).
  2. Selection, instruksi dikerjakan bila kreteria tertentu terpenuhi.
  3. Iteration, instruksi dikerjakan selama memenuhi kondisi tertentu.
  4. Concurrent, mengerjakan banyak instruksi secara bersama.
Contoh algoritma
Algoritma menghitung luas persegi.
  1. Masukkan sisi (S)
  2. Luas <- S * S
  3. Tulis Luas
Untuk menulis suatu penjelasan cara menyelesaikan masalah dapat pula digunakan Pseudo Code yaitu berupa pengkodean atau penandaan yang menyerupai suatu program. Pseudo Code ini sering digunakan dalam penulisan algoritma.
Contoh : Mencari bilangan terkecil dari dua bilangan yang dimasukkan.
Algoritma :
  1. Masukkan bil pertama
  2. Masukkan bil kedua
  3. Jika bil pertama < bil kedua maka kerjakan langkah 4, bila tidak maka dikerjakan langkah 5.
  4. Tampilkan bil pertama
  5. Tampilkan bil kedua
Pseudo code:
  1. Input x
  2. Input y
  3. If x < y then langkah 4 else langkah 5
  4. write x
  5. write y
Dari penjelasan diatas tampaklah perbedaan antara penulisan algoritma dalam bentuk tertentu. Dengan begitu akan lebih mudah dipahami oleh pemrogram dan orang lain yang ingin di beri pemahaman.
Selamat belajar.

Minggu, 10 Maret 2013


Sejarah Perkembangan Komputer Dari Masa ke Masa

A. Komputer Sebelum Tahun 1940
Sejarah perkembangan komputer bermula dengan berkembangnya ilmu matematika. Dimulai dengan penggunaan jari-jemari manusia, kemudian tercipta alat Abakus yang dapat melakukan operasi hitung sederhana.
Contoh adalah abacus:


Kemudian pada tahun 1617, John Napier telah
mengemukakan sifir logaritma dan alat ini dipanggil tulang Napier yang dapat melakukan berbagai macam perhitungan angka-angka. Kemudian Blaise Pascal pula menciptakan mesin hitung mekanikal pertama pada tahun 1642 yang beroperasi dengan cara menggerakkan gear pada roda dan kemudian telah dikembangkan oleh William Leibnitz.
Pada tahun 1816 pula Charles Babbage telah membina the difference engine yang telah dapat menyelesaikan masalah perhitungan sifir matematik seperti logaritma secara mekanikal dengan tepat sampai dengan dua puluh digit. Mesin ini juga telah menggunakan semacam "card" sebagai input, untuk menyimpan "file-file" data melakukan perhitungan secara otomatis dan seterusnya mengeluarkan output dalam bentuk cetakan pada kertas. Kemudian beliau telah memberikan perhatian kepada the analytical engine pula. "card" tersebut pertama kali telah digunakan sebagai alat input dalam industri tekstil pada mesin tenun otomatis ciptaan Joseph Jecquard pada tahun 1801.
Herman Hoolerith telah mempopularkan penggunaan "card" sebagai alat input data yang telah banyak digunakan penduduk Amerika pada tahun 1887. Howard Aiken memperkenalkan penggunaan mesin elektromekanika yang disebut "Mark 1" pada tahun 1937;elektronik dan mekanikal. Mesin ini dapat menyelesaikan masalah fungsi-fungsi trigonometri di samping perhitungan-perhitungan yang telah dilakukan mesin-mesin sebelum ini.

B. Komputer Generasi Pertama 1940 - 1959


ENIAC (Electronic Numerical Integrator and Calculator)
Komputer ENIAC ini diciptakan oleh Dr John Mauchly dan Presper Eckert pada tahun 1946


EDVAC (Electronic Discrete Variable Automatic Computer)
Penggunaan tiub tiub vakum juga telah dikurangi di dalam EDVAC, di mana proses perhitungan telah menjadi lebih cepat dibandingkan ENIAC

EDSAC (Electronic Delay Storage Automatic Calculator)
EDSAC telah memperkenalkan penggunaan raksa (merkuri) dalam tube untuk menyimpan memori.
UNIVAC I (Universal Automatic Calculator)
Pada tahun 1951 Dr Mauchly dan Eckert menciptakan UNIVAC I , komputer pertama yang digunakan untuk memproses data perniagaan.

C. Komputer Generasi Ke Dua ( 1959-1964 )
Komputer-komputer generasi kedua telah menggunakan transistor dan diode untuk menggantikan saluran-saluran vakum dan menjadikan ukuran komputer lebih kecil dan murah. Cara baru menyimpan memori juga diperkenalkan melalui teknologi magnetik. Keupayaan pemprosesan dan ukuran memori utama komputer juga bertambah dan manjadikan ia lebih efisien.
Kemunculan FORTRAN dan COBOL menandakan permulaan bahasa tingkat tinggi untuk menggantikan bahasa pengantar dalam mesin yang lebih sukar.
Minikomputer juga telah diperkenalkan yaitu yang kedua terbesar di dalam generasi komputer. Versinya yang pertama ialah DEC PDP 8 yang diciptakan pada tahun 1964 yang berguna untuk memproses data-data.

D. Komputer Generasi Ke Tiga (1964-awal 80-an)
Chip mulai menggantikan transistor sebagai bahan logis komputer dengan terhasilnya litar terkamir atau lebih dikenal dengan sebutan chip.
Jenis komputer terkecil mikrokomputer telah muncul dan paling cepat menjadi popular seperti Apple II, IBM PC dan Sinclair.
Banyak bahasa pemrograman telah muncul seperti BASIC, Pascal dan PL/1. Kebanyakan mikrokomputer didasari dengan tafsiran bahasa secara mendalam, chip ROM untuk menggunakan bahasa BASIC.

E. Komputer Generasi Ke Empat (awal 80-an-??)

Chip masih digunakan untuk memproses dan menyimpan memori. Ia lebih canggih, dilengkapi hingga ratusan ribu komponen transistor yang disebut pengamiran skala amat besar (very large scale intergartion, VLSI). Pemprosesan dapat dilakukan dengan lebih tepat,sampai jutaan bit per detik. Memori utama komputer menjadi lebih besar sehingga menyebabkan memori sekunder kurang penting. Teknologi chip yang maju ini telah mewujudkan satu lagi kelas komputer yang disebut Supercomputer.

F. Komputer Generasi Ke Lima (masa depan)
Generasi kelima dalam sejarah evolusi komputer merupakan komputer impian masa depan. Ia diperkirakan mempunyai lebih banyak unit pemprosesan yang berfungsi bersamaan untuk menyelesaikan lebih daripada satu tugas dalam satu masa.
Komputer ini juga mempunyai ingatan yang amat besar sehingga memungkinkan penyelesaian lebih dari satu tugas dalam waktu bersamaan. Unit pemprosesan pusat juga dapat berfungsi sebagai otak manusia. Komputer ini juga mempunyai kepandaian tersendiri, merespon keadaan sekeliling melalui penglihatan yang bijak dalam mengambil sesuatu keputusan bebas dari pemikiran manusia yang disebut sebagai artificial intelligence.
 
PERKEMBANGAN SOFTWARE
Software Komputer adalah kumpulan dari pada intruksi atau statement yang di susun secara logis dan berbentuk kode yang hanya dapat di mengerti oleh komputer. Software Komputer ini berangsur-angsur mengalami peningkatan atau perubahan dari tahun ke tahun dalam perkembangannya. Berdasarkan perkembangannya, Sejarah Perkembangan Software Komputer dibagi dalam beberapa era yaitu Era Pioneer, Stabil, Mikro, dan Modern. Berikut adalah Sejarah Perkembangan Software Komputer :

1. Era Pioneer. Pada Era Pioneer ini bentuk software komputer pada awalnya adalah sambungan-sambungan kabel ke antar bagian dalam komputer, Cara dalam mengakses komputer adalah menggunakan punched card yaitu kartu yang di lubangi. Penggunaan komputer saat itu masih dilakukan secara langsung, sebuah program digunakan untuk sebuah mesin tertentu dan untuk tujuan tertentu. Di era ini software komputer merupakan satu kesatuan dengan sebuah hardware komputer.

2. Era Stabil. Pada Era Stabil ini baris-baris perintah software komputer yang dijalankan oleh komputer bukan lagi satu-satu, tapi sudah banyak proses yang di lakukan secara bersamaan (multi tasking). Software Komputer pada era ini juga mampu menyelesaikan banyak pengguna (multi user) dan secara cepat/langsung (real time). Di era ini jugalah mulai di kenal sistem basis data, yang memisahkan antara program dan data .

3. Era Mikro. Pada Era Mikro ini software komputer dapat dibedakan menjadi beberapa bagian yaitu Software Sistem (Windows, Linux, Machintos, dll), Software Aplikasi (Ms.Office, OpenOffice, dll) dan Languange Software/Bahasa Pemograman (Assembler, Visual Basic, Delphi, dll)

4. Era Modern. Pada Era Modern ini software komputer tidak hanya untuk sebuah komputer tetapi sebuah handphone pun telah di lengkapi dengan sebuah software sistem seperti Android, Symbian, dll. Tingkat kecerdasan yang ditunjukkan oleh software komputer pun semakin meningkat, selain permasalahan teknis, software komputer sekarang juga mulai bisa mengenal suara dan gambar.
 

Sabtu, 09 Maret 2013

Jeda

Semua ada jeda.
Seperti sepenggal sajak Pak Sapardi Djoko Damono:

"Bahkan, kalimat hanya bisa dibaca dengan jeda yang bernama spasi.
Maka tak ada salahnya sesekali mengalamatkan rindu kepada sepi untuk mengeja hidup yang telah, sedang dan akan terlewati..."


Jika tak ada spasi dalam kalimat, ataupun bacaan. Semua yang membaca tulisan tersebut, akan ruwet dibuatnya.
Dan begitu pula hidup. Tak selamanya berkutat dengan persoalaan yang berjudul kesibukan.
Tentu, bukan jeda yang tak berbatas.

Aku pikir setiap orang punya jedanya masing-masing. Dan mereka mengisi jedanya dengan berbagai macam kegiatan sesuai dengan fantasynya masing-masing.