Rabu, 22 April 2015

Pemrograman Dasar tentang Alggoritma

Materi dasar Algoritma dan Pemograman

Sebelum belajar algoritma pemrograman, akan lebih baik kita pahami terlebih dahulu langkah-langkah pembuatan suatu program. Terdapat beberapa langkah umum dalam pembuatan suatu program yaitu:
·        Mendefinisikan masalah
·        Mencari solusinya
·        Menentukan algoritma
·        Menulis program
·        Menguji program
·        Mendokumentasikan program
·        Merawat program
·        Mendefinisikan masalah
1.    Langkah yang pertama dilakukan adalah mendefinisikan permasalahan. langkah ini harus dilakukan untuk menentukan masalah yang ada serta ditentukan pula input dan output program.
2.   Mencari solusi
Kemudian ditentukan solusi dari permasalahan yang dihadapi. Bila untuk mendapatkan solusi harus melalui langkah yang terlalu rumit dapat dilakukan pembagian masalah dalam beberapa modul-modul kecil agar mudah untuk dikerjakan. Lalu modul-modul kecil tersebut digabungkan menjadi satu untuk dapat menentukan solusi.
Menentukan algoritma
Dalam pemilihan algoritma, pemrogram atau analis harus menggunakan algoritma yang sesuai dan efisien untuk masalah yang dihadapi.
3.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

Definisi dari algoritma antara lain :

–  Algoritma adalah urutan langkah-langkah logis penyelesaian masalah yang disusun secara sistematis.

– Algoritma adalah urutan logis pengambilan keputusan untuk pemecahan masalah.

– Algoritma adalah urutan langkah-langkah berhingga untuk memecahkan masalah logika atau matematika.

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

Menurut Donald E. Knuth dalam bukunya yang berjudul The Art of Computer Programming, algoritma harus mempunyai lima ciri penting :

1. Algoritma harus berhenti setelah mengerjakan sejumlah langkah terbatas (berhingga)

2. Setiap langkah harus didefinisikan dengan tepat dan tidak berarti-dua (ambiguous)

3. Algoritma memiliki nol atau lebih masukan (input)

4. Algoritma mempunya nol atau lebih keluaran (output)

5. Algoritma harus efektif dan efisien.
 PROGRAM
Komputer hanyalah salah satu pemroses. Agar dapat dilaksanakan oleh komputer, algoritma harus ditulis dalam notasi bahasa pemrograman sehingga dinamakan program. Jadi program adalah perwujudan atau implementasi teknis algoritma yang ditulis dalam bahasa pemrograman tertentu sehingga dapat dilaksanakan oleh komputer. Kata  algoritma dan kata program seringkali dipertukarkan dalam penggunaannya.  Algoritma adalah urutan langkah-langkah penyelesaian masalah sedangkan Program adalah realisasi algoritma dalam bahasa pemrograman. Program ditulis dalam salah satu bahasa pemrograman dan kegiatan membuat program disebut pemrograman (programming). Orang yang menulis program disebut programmer. Tiap-tiap  langkah di dalam program disebut pernyataan atau instruksi. Jadi, program tersusun atas sederetan instruksi. Bila suatu instruksi dilaksanakan, maka operasi-operasi yang bersesuaian dengan instruksi tersebut dikerjakan oleh komputer. Secara garis besar komputer tersusun atas empat komponen utama, yakni:
1. piranti masukan berfungsi untuk memasukkan data atau program ke dalam memori komputer
2. piranti keluaran berfungsi untuk menampilkan hasil dari eksekusi program komputer
3. unit pemroses utama berfungsi mengerjakan operasi-operasi dasar
4. memori berfungsi untuk menyimpan program dan data atau informasi.
Proses Eksekusi Program
Mekanisme eksekusi sebuah program adalah sebagai berikut:
1. Program disimpan di dalam memori melalui piranti masukan.
2. Ketika sebuah program dieksekusi maka setiap instruksi  program akan dikirim dari memori ke unit pemroses utama. Unit pemroses utama kemudian akan menjalankan operasi sesuai instruksi-instruksi yang dibaca.
3. Apabila sebuah instruksi membutuhkan data masukan, maka piranti masukan akan membaca data masukan, mengirimkan ke memori kemudian mengirimkan ke unit pemroses utama untuk diproses.
4. Apabila eksekusi program menghasilkan data keluaran, maka data keluaran akan disimpan di dalam memori, kemudian dikirim ke piranti keluaran.
Perbedaan interpreter dan compiler
Interpreter
1. Menerjemahkan instruksi per instruksi.
2. Source program tidak harus ditulis lengkap.
3. Bila terjadi kesalahan instruksi, dapat langsung diperbaiki secara interaktif.
4. Tidak menghasilkan objek program
5. Pemrosesan program lebih lambat, karena setiap instruksi yang dikerjakan harus diinterpretasi ulang.
6. Source code program terus dipergunakan.
Compiler
1. Menerjemahkan secara keseluruhan.
2. Source program harus ditulis lengkap.
3. Bila terjadi kesalahan dalam kompilasi, source program harus dibenarkan dan proses kompilasi diulang kembali.
4. Menghasilkan objek program.
5. Pemrosesan program lebih cepat, karena program sudah dalam bahasa mesin.
6. Source code program dipergunakan satu kali pada saat kompilasi program.
PENULISAN ALGORITMA
Pada umumnya terdapat tiga jenis cara penulisan algoritma, yakni :
1.  Cara deskriptif
Dengan notasi ini, deskripsi setiap langkah dijelaskan dengan bahasa yang jelas. Contohnya : Algoritma
Bilangan_Maksimum
Diberikan tiga buah bilangan bulat. Carilah bilangan bulat maksimum di antara ketiga bilangan tersebut.
Deskripsi :
(1) baca bilangan 1.
(2) baca bilangan 2.
(3) bandingkan bilangan 1 dan bilangan 2, kita ambil yang lebih besar, jika kedua bilangan tersebut sama besar, dapat kita ambil bilangan 1, dan sebut bilangan tersebut MAX.
(4) baca bilangan 3.
(5) bandingkan MAX dengan bilangan 3, dan pilih yang lebih besar, jika keduanya sama besar, pilih MAX dan sebut bilangan tersebut MAX.
(6) keluarkan sebagai output MAX.
2. Pseudocode
Pseudocode  adalah notasi yang menyerupai bahasa pemrograman tingkat tinggi. Keuntungan menggunakan notasi  pseudocode  adalah  memberikan kemudahan bagi  programmer  untuk menerjemahkan  ke  notasi bahasa pemrograman, karena terdapat korespondensi antara  setiap pseudocode dengan notasi bahasa pemrograman.
Contoh : Algoritma Bilangan_Maksimum
{ Dibaca tiga buah bilangan dari piranti masukan. Carilah bilangan bulat maksimum di antara ketiga bilangan tersebut }
Deklarasi :
Bil1,Bil2,Bil3 : integer {bilangan yang dicari maksimumnya}
MAX : integer {variabel bantu}
Deskripsi :
read(Bil1,Bil2)
if (Bil1>=Bil2) then
Bil1MAX
else
Bil2MAX
read(Bil3)
if (Bil3>=MAX) then
Bil3MAX
write(MAX)
3. Flowchart
Flowchart adalah penggambaran secara grafik dari langkah-langkah dan urut-rutan prosedur dari suatu program.  Flowchart menolong analis dan programmer  untuk memecahkan masalah ke  dalam segmen-segmen yang lebih kecil dan menolong dalam menganalisis alternatif-alternatif lain dalam pengoperasian. Bila seorang analis dan  programmer  akan membuat  flowchart, ada  beberapa petunjuk yang harus diperhatikan, seperti:
1.  Flowchart digambarkan dari halaman atas ke bawah dan dari kiri ke kanan.
2.  Aktivitas yang digambarkan harus didefinisikan secara hati-hati dan definisi ini harus dapat dimengerti oleh pembacanya.
3. Kapan aktivitas dimulai dan berakhir harus ditentukan secara jelas.
4. Setiap langkah dari aktivitas harus diuraikan dengan menggunakan  deskripsi kata kerja, misalkan MENGHITUNG PAJAK PENJUALAN.
5. Setiap langkah dari aktivitas harus berada pada urutan yang benar
6. Gunakan simbol-simbol flowchart yang standar.
Simbol-simbol yang sering digunakan dalam flowchart antara lain:
Contoh flowchart untuk menghitung jumlah dua buah bilangan yakni sebagai berikut :
Berdasarkan white paper resmi dari SUN, Java memiliki karakteristik berikut :
1.  Sederhana (Simple) Bahasa pemrograman Java menggunakan sintaks mirip dengan C++ namun sintaks pada Java telah banyak diperbaiki terutama menghilangkan penggunaan  pointer  yang rumit dan multiple  inheritance. Java juga menggunakan automatic memory allocation dan memory garbage collection.
2. Berorientasi objek (Object Oriented) Java mengunakan pemrograman berorientasi objek yang membuat program dapat dibuat secara modular dan dapat dipergunakan  kembali. Pemrograman berorientasi objek memodelkan dunia nyata ke  dalam objek dan melakukan interaksi antar objek-objek tersebut
3. Terdistribusi (Distributed) Java dibuat untuk membuat aplikasi terdistribusi secara mudah dengan adanya networking libraries yang terintegrasi pada Java
4. Interpreted Program Java dijalankan menggunakan interpreter yaitu Java Virtual Machine (JVM). Hal ini menyebabkan source  code  Java yang telah dikompilasi menjadi Java  bytecodes  dapat dijalankan pada  platform yang berbeda-beda
5. Robust Java mempuyai reliabilitas yang tinggi.  Compiler  pada Java mempunyai kemampuan mendeteksi  error secara lebih teliti dibandingkan bahasa pemrograman lain. Java mempunyai  runtime-exception handling untuk membantu mengatasi error pada program.
6. Secure Sebagai bahasa pemrograman untuk aplikasi internet dan terdistribusi, Java memiliki beberapa mekanisme keamanan untuk menjaga aplikasi tidak digunakan untuk merusak sistem komputer yang menjalankan aplikasi tersebut
7. Architecture Neutral Program Java  bersifat  independent  platform. Program cukup mempunyai satu buah versi yang dapat dijalankan pada platform berbeda dengan menggunakan Java Virtual Machine
8. Portable Source code maupun program Java dapat dengan mudah dibawa ke platform yang berbeda-beda tanpa harus dikompilasi ulang
9. Multithreaded Java mempunyai kemampuan untuk membuat suatu program yang dapat melakukan beberapa pekerjaan secara sekaligus dan simultan
10. Dynamic Java didesain untuk dapat dijalankan pada lingkungan yang dinamis. Perubahan pada suatu class dengan menambahkan  properties ataupun  method  dapat dilakukan tanpa menggangu program yang menggunakan class tersebut.
Mekanisme eksekusi program di Java
Lingkungan pemrograman pada Java menggunakan  compiler  sekaligus interpreter  agar dapat berjalan pada platform  yang berbeda. Java  compiler melakukan kompilasi pada  source  code  (.java) menjadi Java  bytecodes (.class) seperti ditunjukkan oleh Gambar Berikut :
Program Java hasil kompilasi akan dapat dijalankan pada berbagai platform sistem komputer dengan menggunakan Java Virtual machine (JVM). JVM disebut juga bytecodes interpreter atau Java runtime interpreter. Tidak seperti bahasa pemrograman lainnya, platform Java mempunyai dua komponen, yaitu:
1. Java  Virtual  machine  (JVM)  yang merupakan fondasi untuk platform Java yang dapat digunakan di berbagai platform perangkat keras.
2. Java  Application  Programming  Interface  (Java API)yang merupakan kumpulan komponen-komponen perangkat lunak siap pakai untuk berbagai keperluan penulisan program.
                                Semoga Bermanfaat yah :)

Minggu, 15 Februari 2015

Perkembangan Sistem Komputer

         Sejarah perkembangan sistem komputer adalah sejarah yang terkait dengan perkembangan sistem operasi, dimana dapat dikelompokan menjadi lima kurun waktu (generasi).

Generasi Pertama(1945-1955)

       Generasi ini merupakan awal pengembangan sistem komputasi elektronik, mengganti gagasan-gagasan mesin komputasi mekanis. Manusia memerlukan perangkat komputasi untuk mengatasi keterbatasannya dalam melakukan komputasi. Manusia mempunyai keterbatasan dalam komputasi, yaitu:
  • Kecepatan penghitung manusia terbatas.
  • Manusia sangat mudah membuat kesalahan.
      Upaya manusia untuk meningkatkan kemampuan komputasinya telah dimulai sejak awal peradaban manusia. Mulai dari merekam dengan tumpukan batu, potongan batang, sempoa, serta cara-cara mekanis seperti mesin hitung buatan Blaise Pascal.Sebelum penciptaan komputer elektronik, manusia telah berusaha membuat komputer mekanis yaitu komputer yang memanfaatkan gerak dari benda-benda masif, tidak sampai level elektron serta tidak memanfaatkan listrik sebagai pembangkitnya.Komputer mekanis ini mempunyai banyak keterbatasan yang menyebabkan kegagalan. Komputer mekanis mempunyai dua penyebab kelemahan, yaitu:
  • Kecepatan komputasi dibatasi inersia bagian-bagian yang bergerak.
  • Transmisi informasi alat-alat mekanis tidak praktis, susah dipakai serta tidak andal.
Pada generasi pertama ini belum ada sistem operasi. Sistem komputer diberi instruksi yang harus dikerjakan secara langsung.

Generasi Kedua(1955-1965)

Komputer generasi kedua ini merupakan batch processing system.
  • Batch Processing System
       Tugas-tugas dikumpulkan di dalam satu rangkaian kemudian dieksekusi secara berurutan Pada generasi ini, tugas-tugas adalah program-program yang harus dikerjakan oleh komputer. program-program itu dituliskan di tape.
Pada awal generasi ini, sistem komputer belum dilengkapi sistem operasi, namun beberapa fungsi dasar sistem operasi telah ada misalnya FMS (Fortran Monitoring System) dan IBSYS yang memberikan layanan perangkat keras merupakan bagian fungsi dari sistem operasi modern. Pada tahun 1964, IBM mengeluarkan komputer keluarga System/360. Komputer S/360 dirancang agar kompatibel secara perangkat keras yang merupakan bagian dari sistem operasi OS/360.System 360 berevolusi menjadi System 370.

Generasi Ketiga(1965-1980)

       Perkembangan berlanjut, sistem operasi dikembangkan untuk melayani banyak pemakai interaktif sekaligus. Pemakai-pemakai interaktif berkomunikasi dengan komputer lewat terminal secara online (yang dihubungkan secara langsung) kesatu komputer.Sistem komputer menjadi :
  1. Multiuser, yaitu sekaligus digunakan banyak orang. 
  2. Multiprogramming, yaitu sekaligus melayani bayak program.
  • Multiuser
       Dengan adanya kemampuan multiuser, membuat para pemakai yang berinteraksi langsung dengan komputer dapat sekaligus banyak dalam menggunakan komputer. Tetapi disatu sisi komputer harus menanggapi permintaan-permintaan pemakai secara cepat atau akan menyebabkan produktifitas pemakai menurun .Untuk kebutuhan itu dikembangkan timesharing. 
  • Multiprogramming
Multiprogramming berarti komputer melayani banyak tugas atau proses (program yang dijalankan) sekaligus pada satu waktu.Teknik Multiprogramming meningkatkan utilisasi pemroses dengan mengorganisasikan semua tugas, dalam hal ini pemroses selalu mempunyai satu tugas yang harus dieksekusi. Teknik ini meningkatkan efisiensi pemroses. Teknik multiprogramming dilakukan dengan mempartisi memori menjadi beberapa bagian. Satu bagian memori berisi satu tugas berbeda .Sistem operasi menyimpan beberapa tugas di memori secara simultan.Saat satu tugas menunggu operasi masukkan atau keluaran diselesaikan, tugas lain menggunakan pemroses. Teknik ini memerlukan perangkat keras khusus untuk mencegah satu tugas menggangu tugas lain.
  • Timesharing
       Timesharing merupakan varian dari multiprogramming, yakni tiap pemakai satu terminal [[[online]]. Pemroses hanya memberi layanan pada pemakai-pemakai aktif dengan bergantian secara cepat.Pemakai-pemakai itu akan merasa dilayani secara terus-menerus, padahal sebenarnya digilir satu per satuan waktu yang singkat. Efek ini biasa disebut pseudoparallelism, yaitu efek seolah-olah terdapat banyak komputer paralel yang melayani banyak pemakai.  Karena sumber daya lambat yang digunakan bersama sering menimbulkan bottleneck, maka dikembangkan teknik Spooling.
  • Spooling
     Teknik Spooling adalah membuat peripheral seolah-olah dapat digunakan bersama-sama sekaligus pada saat yang sama, dapat diakses secara simultan. Teknik ini dilakukan dengan cara menyediakan beberapa partisi memori. Saat terdapat permintaan layanan peripheral, permintaan langsung diterima dan data untuk layanan itu lebih dulu disimpan di memori yang disediakan. Kemudian layanan-layanan untuk permintaan-permintaan yang diantrikan dijadwalkan agar secara nyata dilayani oleh peripheral.

Generasi Keempat(1980-2000AN)

        Pada generasi keempat ini, sistem operasi tidak lagi hanya diperutukan untuk satu mode pengolahan, tetapi telah ditujukan untuk banyak mode pengolahan, misalnya mendukung batch processing, timesharing, networking dan (soft) realtime applications sekaligus. Hanya hard real-time applications sulit disatukan dengan mode-mode pengolahan yang lainnya karena beresiko tinggi.Pada generasi ini, kenyamanan mengoperasikan sistem komputer juga dinilai penting.Komputer yang makin ampuh telah sanggup memberi antar muka grafis yang nyaman. Komputer desktop dinyamankan dengan GUI (Graphical User Interface) . GUI ini dimulai X Windows System hasil penelitian di MIT, kemudian Macintosh, Sun View, disusul Microsoft Windows.
Generasi keempat ini ditandai berkembang dan meningkatnya kemampuan komputer desktop (komputer pribadi) dan teknologi jaringan. Jaringan TCP atau IP telah mulai digunakan secara luas oleh kalangan militer, peneliti, peguruan tinggi dan masyarakat secara umum.

Generasi Kelima (2000AN - Seterusnya)

       Perkembangan yang terjadi pada komputer yang bukan hanya menunjukan pada perubahan prosesornya tetapi muncul dalam bentuk yang lebih mini, dalam bentuk chip mikro, terintegrasi dengan peralatan hidup sehari-hari dan dengan fungsi-fungsi yang khusus.Komputer berukuran kecil ini (nanocomputer) dapat ditemukan pada telepon seluler, alat permaianan (Playstation), TV, mobil, peralatan hiburan dan alat sensor. Terima Kasih