Selasa, 31 Januari 2017

Algoritma Divide and Conquer

1.  Pengertian
Algoritma Divide and Conquer merupakan algoritma yang sangat populer di dunia Ilmu Komputer. Divide and Conquer merupakan algoritma yang berprinsip memecah-mecah permasalahan yang terlalu besar menjadi beberapa bagian kecil sehingga lebih mudah untuk diselesaikan. Langkah-langkah umum algoritma Divide and Conquer :
  • Divide : Membagi masalah menjadi beberapa upa-masalah yang memiliki kemiripan dengan masalah semula namun berukuran lebih kecil ( idealnya berukuran hampir sama ).
  • Conquer : Memecahkan ( menyelesaikan ) masing-masing upa-masalah ( secara rekursif ).
  • Combine : Menggabungkan solusi masing-masing upa-masalah sehingga  membentuk solusi masalah semula.
Objek masalah yang di bagi adalah masukan (input) atau instances yang berukuran n: tabel (larik), matriks, dan sebagainya, bergantung pada masalahnya. Tiap-tiap upa-masalah mempunyai karakteristik yang sama (the same type) dengan karakteristik masalah asal, sehingga metode Divide and Conquer lebih natural diungkapkan dalam skema rekursif. Sesuai dengan karakteristik pembagian dan pemecahan masalah tersebut, maka algoritma ini dapat berjalan baik pada persoalan yang bertipe rekursif (perulangan dengan memanggil dirinya sendiri). Dengan demikian, algoritma ini dapat diimplementasikan dengan cara iteratif ( perulangan biasa ), karena pada prinsipnya iteratif hampir sama dengan rekursif. Salah satu penggunaan algoritma ini yang paling populer adalah dalam hal pengolahan data yang bertipe array ( elemen larik ). Mengapa ? Karena pengolahan array pada umumnya selalu menggunakan prinsip rekursif atau iteratif. Penggunaan secara spesifik adalah untuk mencari nilai minimal dan maksimal serta untuk mengurutkan elemen array. Dalam hal pengurutan ini ada empat macam algoritma pengurutan yang berdasar pada algoritma Divide and Conquer, yaitu merge sort, insert sort, quick sort, dan selection sort. Merge sort dan Quick sort mempunyai kompleksitas algoritma O(n ²log n). Hal ini lebih baik jika dibandingkan dengan pengurutan biasa dengan menggunakan algoritma brute force.

Skema Umum Algoritma Divide and Conquer :


2. Penerapan Algoritma
2.1. Pemecahan Masalah Convex Hull dengan Algoritma Divide and Conquer
Pada penyelasaian masalah pencarian Convex Hull dengan menggunakan algoritma Divide and Conquer, hal ini dapat dipandang
sebagai generalisasi dari algoritma pengurutan merge sort. Berikut ini merupakan garis besar gambaran dari algoritmanya:
  • Pertama-tama lakukan pengurutan terhadap titik-titik dari himpunan S yang diberika berdasarkan koordinat absis-X, dengan kompleksitas waktu O(n log n).
  • Jika |S| ≤ 3, maka lakukan pencarian convex hull secara brute-force dengan kompleksitas waktu O(1). (Basis).
  • Jika tidak, partisi himpunan titik-titik pada S menjadi 2 buah himpunan A dan B, dimana A terdiri dari setengah jumlah dari |S| dan titik dengan koordinat absix-X yang terendah dan B terdiri dari setengah dari jumlah |S| dan titik dengan koordinat absis-X terbesar.
  • Secara rekursif lakukan penghitungan terhadap HA = conv(A) dan HB = conv(B).
  • Lakukan penggabungan (merge) terhadap kedua hull tersebut menjadi convex hull, H, dengan menghitung da mencari upper dan lower tangents untuk HA dan HB dengan mengabaikan semua titik yang berada diantara dua buah tangen ini.

Permasalahan convex hull adalah sebuah permasalahan yang memiliki aplikasi terapan yang cukup banyak, seperti pada permasalahan grafika komputer, otomasi desain, pengenalan pola (pattern recognition), dan penelitian operasi. Divide and Conquer adalah metode pemecahan masalah yang bekerja dengan membagi masalah menjadi beberapa upa-masalah yang lebih kecil, kemudian menyelesaikan masing-masing upa-masalah tersebut secara independent, dan akhirnya menggabungkan solusi masing-masing upa-masalah sehingga menjadi solusi dari masalah semula.
Algoritma Divide and Conquer merupakan salah satu solusi dalam penyelesaian masalah convex hull. Algoritma ini ternyata memiliki kompleksitas waktu yang cukup kecil dan efektif dalam menyelesaikan permasalahan ini (jika dibandingkan algoritma lain). Selain itu juga, algoritma ini dapat digeneralisasi untuk permasalahan convex hull yang berdimensi lebih dari 3.
2.2. Persoalan Minimum dan Maksimum (MinMaks)
Persoalan : Misalnya diketahui table A yang berukuran n eleman sudah berisi nilai integer. Kita ingin menentukan nilai minimum dan nilai maksimum sekaligus di dalam table tersebut. Misalkan tabel A berisi elemen-elemen sebagai berikut :
Ide dasar algoritma secara Divide and Conquer :

Ukuran table hasil pembagian dapat dibuat cukup kecil sehingga mencari minimum dan maksimum dapat diselesaikan (SOLVE) secara lebih mudah. Dalam hal ini, ukuran kecil yang dipilih adalah 1 elemen atau 2 elemen.
Algoritma MinMaks :
1. Untuk kasus n = 1 atau n = 2,
SOLVE : Jika n = 1, maka min = maks = An. Jika n = 2, maka bandingkan kedua elemen untuk menentukan min dan maks.
2. Untuk kasus n > 2,
  • DIVIDE : Bagi dua table A secara rekursif menjadi dua bagian yang berukuran sama, yaitu bagian kiri dan bagian kanan.
  • CONQUER : Terapkan algoritma Divide and Conquer untuk masing-masing bagian, dalam hal ini min dan maks dari table bagian kiri dinyatakan dalam peubah min1 dan maks1, dan min dan maks dari table bagian kanan dinyatakan dalam peubah min2 dan maks2.
  • COMBINE : Bandingkan min1 dan min2 untuk menentukan min table A, serta bandingkan maks1 dan maks2 untuk menentukan maks table A.
2.3. Optimasi Konversi Bilangan Desimal Ke Biner
Salah satu cara optimasi yang bias kita lakukan adalah membagi bilangan decimal yang hendak diubah dengan angka 8 ( bukan 2 ). Di sinilah prinsip algoritma Divide and Conquer kita gunakan untuk melakukan optimasi. Kita pecah-pecah angka decimal yang akan kita gunakan dengan cara membaginya dengan angka 8 secara berulang. Angka-angka sisa pembagian yang kita peroleh kemudian kita ubah ke dalam bilangan biner sebelum kita gabungkan menjadi hasil jawaban.
Karena angka pembagi yang kita pakai adalah 8 (23), maka kita dapat mengurangijumlah pembagian yang kita lakukan menjadi ± 1/3 dari jumlah semula. Hal ini tentu saja akan sangat berpengaruh pada kinerja dan waktu yang diperlukan oleh computer mengingat proses pembagian merupakan salah satu proses yang cukup rumit.
Tentu saja optimasi ini harus kita bayar dengan menangani konversi bilangan octal ke biner. Akan tetapi jika kita gunakan teknik perbandingan ( tanpa harus melakukan konversi secara manual ), maka proses ini akan menjadi sangat cepat dan mudah. Penerapan algoritma ini adalah dengan menggunakan sintaks case of. Begitu juga dengan permasalahan pemakaian memori ( kompleksitas ruang ) yang lebih besar yang muncul akibat penggunaan algoritma rekursif. Karena pada proses rekursif-nya kita tidak banyak menggunakan variable yang memerlukan tempat yang begitu besar, maka hal ini bias kita abaikan. Dengan penggunaan optimasi ini, maka seharusnya proses konversi akan lebih cepat karena pemangkasan jumlah pembagian yang dilakukan.
Skema procedur utama Konversi dengan optimasi

Skema procedur rekursif dengan menerapkan Algoritma Divide and Conquer

Kompleksitas waktu algoritma :
T(n) = O(n/3)
dengan n menyatakan eksponen terkecil dari 2 yang mempunyai nilai 2n lebuh besar dari angka decimal
Algoritma konversi system bilangan dengan menggunakan algoritma dengan optimasi yang menerapkan algoritma Divide and Conquer lebih mangkus daripada algoritma konversi dengan metode pembagian sisa biasa jika dilihat dari segi kompleksitas waktunya. Hanya saja optimasi ini diimbangi dengan kenaikan pada kompleksitas ruangnya, meskipun pengaruhnya tidak sebesar optimasi yang kita lakukan.
2.4. Mencari Pasangan Titik yang Jaraknya Terdekat ( Closest Pair )
Persoalan : Diberikan himpunan titik, P, yang terdiri dari n buah titik, (xi,yi), pada bilangan 2-D. Tentukan jarak terdekat antara dua buah titik di dalam himpunan P. Jarak dua buah titik p1 = (x1, y1) dan p2 = (x2, y2) :

Penyelesaian dengan Algoritma Divide and Conquer :
a. Asumsi : n = 2k dan titik-titik diurut berdasarkan absis (x).
b. Algoritma Closest Pair :
– SOLVE : jika n = 2, maka jarak kedua titik dihitung langsung dengan rumus Euclidean.
– DIVIDE : Bagi titik-titik itu ke dalam dua bagian, PLeft dan PRight, setiap bagian mempunyai jumlah titik yang sama
– CONQUER :Secara rekursif, terapkan algoritma D-and-C pada masingmasing bagian.
– Pasangan titik yang jaraknya terdekat ada tiga kemungkinan letaknya :
  • Pasangan titik terdekat terdapat di bagian PLeft.
  • Pasangan titik terdekat terdapat di bagian PRight.
  • Pasangan titik terdekat dipisahkan oleh garis batas L, yaitu satu titik di PLeft dan satu titik di PRight.
Jika kasusnya adalah (c), maka lakukan tahap COMBINE untuk mendapatkan jarak dua titik terdekat sebagai solusi persoalan semula.

Memori



Memori adalah istilah generik bagi tempat penyimpanan data dalam komputer. Beberapa jenis memori yang banyak digunakan adalah sebagai berikut:
  • Register prosesor
  • RAM atau Random Access Memory
  • Cache Memory (SRAM) (Static RAM)
  • Memori fisik (DRAM) (Dynamic RAM)
  • Perangkat penyimpanan berbasis disk magnetis
  • Perangkat penyimpanan berbasis disk optik
  • Memori yang hanya dapat dibaca atau ROM (Read Only Memory)
  • Flash Memory
  • Punched Card (kuno)
  • CD atau Compact Disk
  • DVD
Dalam pembicaraan mengenai arsitektur komputer seperti arsitektur von Neumann, misalnya, kapasitas dan kecepatan memori dibedakan dengan menggunakan hierarki memori. Hierarki ini disusun dari jenis memori yang paling cepat hingga yang paling lambat; disusun dari yang paling kecil kapasitasnya hingga paling besar kapasitasnya; dan diurutkan dari harga tiap bit memori-nya mulai dari yang paling tinggi (mahal) hingga yang paling rendah (murah).

  • REGISTER PROSESOR
Register prosesor, dalam arsitektur komputer, adalah sejumlah kecil memori komputer yang bekerja dengan kecepatan sangat tinggi yang digunakan untuk melakukan eksekusi terhadap program-program komputer dengan menyediakan akses yang cepat terhadap nilai-nilai yang umum digunakan. Umumnya nilai-nilai yang umum digunakan adalah nilai yang sedang dieksekusi dalam waktu tertentu.
Register prosesor berdiri pada tingkat tertinggi dalam hierarki memori: ini berarti bahwa kecepatannya adalah yang paling cepat; kapasitasnya adalah paling kecil; dan harga tiap bitnya adalah paling tinggi. Register juga digunakan sebagai cara yang paling cepat dalam sistem komputer untuk melakukan manipulasi data. Register umumnya diukur dengan satuan bit yang dapat ditampung olehnya, seperti “register 8-bit”, “register 16-bit”, “register 32-bit”, atau “register 64-bit” dan lain-lain.
Istilah register saat ini dapat merujuk kepada kumpulan register yang dapat diindeks secara langsung untuk melakukan input/output terhadap sebuah instruksi yang didefinisikan oleh set instruksi. untuk istilah ini, digunakanlah kata “Register Arsitektur”. Sebagai contoh set instruksi Intel x86 mendefinisikan sekumpulan delapan buah register dengan ukuran 32-bit, tapi CPU yang mengimplementasikan set instruksi x86 dapat mengandung lebih dari delapan register 32-bit.
Register terbagi menjadi beberapa kelas:
  • Register data, yang digunakan untuk menyimpan angka-angka dalam bilangan bulat (integer).
  • Register alamat, yang digunakan untuk menyimpan alamat-alamat memori dan juga untuk mengakses memori.
  • Register general purpose, yang dapat digunakan untuk menyimpan angka dan alamat secara sekaligus.
  • Register floating-point, yang digunakan untuk menyimpan angka-angka bilangan titik mengambang (floating-point).
  • Register konstanta (constant register), yang digunakan untuk menyimpan angka-angka tetap yang hanya dapat dibaca (bersifat read-only), semacam phinulltruefalse dan lainnya.
  • Register vektor, yang digunakan untuk menyimpan hasil pemrosesan vektor yang dilakukan oleh prosesor SIMD.
  • Register special purpose yang dapat digunakan untuk menyimpan data internal prosesor, seperti halnya instruction pointer, stack pointer, dan status register.
  • Register yang spesifik terhadap model mesin (machine-specific register), dalam beberapa arsitektur tertentu, digunakan untuk menyimpan data atau pengaturan yang berkaitan dengan prosesor itu sendiri. Karena arti dari setiap register langsung dimasukkan ke dalam desain prosesor tertentu saja, mungkin register jenis ini tidak menjadi standar antara generasi prosesor.

  • RAM (RANDOM ACCESS MEMORY)
Memori akses acak adalah sebuah tipe penyimpanan komputer yang isinya dapat diakses dalam waktu yang tetap tidak memperdulikan letak data tersebut dalam memori. Ini berlawanan dengan alat memori urut, seperti tape magnetik, disk dan drum, di mana gerakan mekanikal dari media penyimpanan memaksa komputer untuk mengakses data secara berurutan.
Pertama kali dikenal pada tahun 60’an. Hanya saja saat itu memori semikonduktor belumlah populer karena harganya yang sangat mahal. Saat itu lebih lazim untuk menggunakan memori utama magnetic.
Perusahaan semikonduktor seperti Intel memulai debutnya dengan memproduksi RAM , lebih tepatnya jenis DRAM.
Biasanya RAM dapat ditulis dan dibaca, berlawanan dengan memori-baca-saja (read-only-memory, ROM), RAM biasanya digunakan untuk penyimpanan primer (memori utama) dalam komputer untuk digunakan dan mengubah informasi secara aktif, meskipun beberapa alat menggunakan beberapa jenis RAM untuk menyediakan penyimpanan sekunder jangka-panjang.
Tetapi ada juga yang berpendapat bahwa ROM merupakan jenis lain dari RAM, karena sifatnya yang sebenarnya juga Random Access seperti halnya SRAM ataupun DRAM. Hanya saja memang proses penulisan pada ROM membutuhkan proses khusus yang tidak semudah dan fleksibel seperti halnya pada SRAM atau DRAM. Selain itu beberapa bagian dari space addres RAM ( memori utama ) dari sebuah sistem yang dipetakan kedalam satu atau dua chip ROM.

  • MEMORI CACHE
Pengertian Memori Cache
Cache beasal dari kata cash. Dari istilah tersebut cache adalah tempat menyembunyikan atau tempat menyimpan sementara. Sesuai definisi tersebut cache memori adalah tempat menympan data sementara. Cara ini dimaksudkan untuk meningkatkan transfer data dengan menyimpan data yang pernah diakses pada cache tersebut, sehingga apabila ada data yang ingin diakses adalah data yang sama maka maka akses akan dapat dilakukan lebih cepat.Cache memori ini adalah memori tipe SDRAM yang memiliki kapasitas terbatas namun memiliki kecepatan yang sangat tinggi dan harga yang lebih mahal dari memori utama. Cache memori ini terletak antara register dan RAM (memori utama) sehingga pemrosesan data tidak langsung mengacu pada memori utama.
Level Memori Cache
Cache memori ada tiga level yaitu L1,L2 dan L3. Cache memori level 1 (L1) adalah cache memori yang terletak dalam prosesor (cache internal). Cache ini memiliki kecepatan akses paling tinggi dan harganya paling mahal. Ukuran memori berkembang mulai dari 8Kb, 64Kb dan 128Kb.Cache level 2 (L2) memiliki kapasitas yang lebih besar yaitu berkisar antara 256Kb sampai dengan 2Mb. Namun cache L2 ini memiliki kecepatan yang lebih rendah dari cache L1. Cache L2 terletak terpisah dengan prosesor atau disebut dengan cache eksternal. Sedangkan cache level 3 hanya dimiliki oleh prosesor yang memiliki unit lebih dari satu misalnya dualcore dan quadcore. Fungsinya adalah untuk mengontrol data yang masuk dari cache L2 dari masing-masing inti prosesor.
Cara Kerja Memori Cache
Jika prosesor membutuhkan suatu data, pertama-tama ia akan mencarinya pada cache. Jika data ditemukan, prosesor akan langsung membacanya dengan delay yang sangat kecil. Tetapi jika data yang dicari tidak ditemukan,prosesor akan mencarinya pada RAM yang kecepatannya lebih rendah. Pada umumnya, cache dapat menyediakan data yang dibutuhkan oleh prosesor sehingga pengaruh kerja RAM yang lambat dapat dikurangi. Dengan cara ini maka memory bandwidth akan naik dan kerja prosesor menjadi lebih efisien. Selain itu kapasitas memori cache yang semakin besar juga akan meningkatkan kecepatan kerja komputer secara keseluruhan.
Dua jenis cache yang sering digunakan dalam dunia komputer adalah memory caching dan disk caching. Implementasinya dapat berupa sebuah bagian khusus dari memori utama komputer atau sebuah media penyimpanan data khusus yang berkecepatan tinggi.
Implementasi memory caching sering disebut sebagai memory cache dan tersusun dari memori komputer jenis SDRAM yang berkecepatan tinggi. Sedangkan implementasi disk cachingmenggunakan sebagian dari memori komputer.
Struktur Sistem Cache
Memori utama terdiri dari sampai dengan 2n word beralamat, dengan masing-masing word mempunyai n-bit alamat yang unik. Untuk keperluan pemetaan, memori ini dinggap terdiri dari sejumlah blok yang mempunyai panjang K word masing-masing bloknya. Dengan demikian, ada M = 2n/K blok. Cache terdiri dari C buah baris yang masing-masing mengandung K word, dan banyaknya baris jauh lebih sedikit dibandingkan dengan banyaknya blok memori utama (C << M). Di setiap saat, beberapa subset blok memori berada pada baris dalam cache. jika sebuah word di dalam blok memori dibaca, blok itu ditransfer ke salah satu baris cache. karena terdapat lebih banyak blok bila dibanding dengan baris, maka setiap baris tidak dapat menjadi unik dan permanen untuk dipersempahkan ke blok tertentu mana yang disimpan. Tag biasanya merupakan bagian dari alamat memori utama.

  • MEMORI FISIK
Memori fisik merupakan istilah generik yang merujuk pada media penyimpanan data sementara pada komputer. Setiap program dan data yang sedang diproses oleh prosesor akan disimpan di dalam memori fisik. Data yang disimpan dalam memori fisik bersifat sementara, karena data yang disimpan di dalamnya akan tersimpan selama komputer tersebut masih dialiri daya (dengan kata lain, komputer itu masih hidup). Ketika komputer itu direset atau dimatikan, data yang disimpan dalam memori fisik akan hilang. Oleh karena itulah, sebelum mematikan komputer, semua data yang belum disimpan ke dalam media penyimpanan permanen (umumnya bersifat media penyimpanan permanen berbasis disk, semacam hard disk atau floppy disk), sehingga data tersebut dapat dibuka kembali pada lain waktu.
Memori fisik umumnya diimplementasikan dalam bentuk Random Access Memory (RAM), yang bersifat dinamis (DRAM). Mengapa disebut Random Access, adalah karena akses terhadap lokasi-lokasi di dalamnya dapat dilakukan secara acak (random), bukan secara berurutan (sekuensial). Meskipun demikian, kata random access dalam RAM ini sering menjadi salah kaprah. Sebagai contoh, memori yang hanya dapat dibaca (ROM), juga dapat diakses secara random, tetapi ia dibedakan dengan RAM karena ROM dapat menyimpan data tanpa kebutuhan daya dan tidak dapat ditulisi sewaktu-waktu. Selain itu, hard disk yang juga merupakan salah satu media penyimpanan juga dapat diakses secara random, tapi ia tidak digolongkan ke dalam Random Access Memory.
Penggunaan Memori
Komponen utama dalam sistem komputer adalah Arithmetic Logic Unit (ALU), Control Circuitry, Storage Space dan piranti Input/Output. Jika tanpa memory, maka komputer hanya berfungsi sebagai digital signal processing devices, contohnya kalkulator atau media player. Kemampuan memory untuk menyimpan data, instruksi dan informasi-lah yang membuat komputer dapat disebut sebagai general-purpose komputer. Komputer merupakan piranti digital, maka informasi disajikan dengan sistem bilangan binary. Teks, angka, gambar, sudio dan video dikonversikan menjadi sekumpulan bilangan binary (binary digit atau disingkat bit). Sekumpulan bilangan binary dikenal dengan istilah BYTE, dimana 1 byte = 8 bits. Semakin besar ukuran memory-nya maka semakin banyak pula informasi yang dapat disimpan di dalam komputer (storage devices). Berikut ini beberapa gambar yang bisa mewakili bagaimana cara informasi disimpan dalam memory dan bagaimana data ditransfer dari satu bagian ke bagian lainnya.

  • PERANGKAT PENYIMPANAN BERBASIS DISK MAGNETIS
Cakram liuk atau disket (bahasa Inggris: floppy disk) adalah sebuah perangkat penyimpanan data yang terdiri dari sebuah medium penyimpanan magnetis bulat yang tipis dan lentur dan dilapisi lapisan plastik berbentuk persegi atau persegi panjang. Cakram liuk “dibaca” dan “ditulis” menggunakan kandar cakram liuk (floppy disk drive, FDD). Kapasitas cakram liuk yang paling umum adalah 1,44 MB (seperti yang tertera pada cakram liuk), meski kapasitas sebenarnya adalah sekitar 1,38 MB.
Cakram keras (Inggris: harddisk atau harddisk drive disingkat HDD atau hard drive disingkat HD) adalah sebuah komponen perangkat keras yang menyimpan data sekunder dan berisi piringan magnetis. Cakram keras diciptakan pertama kali oleh insinyur IBM, Reynold Johnson di tahun 1956. Cakram keras pertama tersebut terdiri dari 50 piringan berukuran 2 kaki (0,6 meter) dengan kecepatan rotasinya mencapai 1.200 rpm (rotation per minute) dengan kapasitas penyimpanan 4,4 MB. Cakram keras zaman sekarang sudah ada yang hanya selebar 0,6 cm dengan kapasitas 750 GB. Data yang disimpan dalam cakram keras tidak akan hilang ketika tidak diberi tegangan listrik. Dalam sebuah cakram keras, biasanya terdapat lebih dari satu piringan untuk memperbesar kapasitas data yang dapat ditampung. Dalam perkembangannya kini cakram keras secara fisik menjadi semakin tipis dan kecil namun memiliki daya tampung data yang sangat besar. Cakram keras kini juga tidak hanya dapat terpasang di dalam perangkat (internal) tetapi juga dapat dipasang di luar perangkat (eksternal) dengan menggunakan kabel USBataupun FireWire.
Universal Serial Bus (USB) adalah standar bus serial untuk perangkat penghubung, biasanya kepada komputer namun juga digunakan di peralatan lainnya seperti konsol permainan, ponsel dan PDA. Sistem USB mempunyai desain yang asimetris, yang terdiri dari pengontrol host dan beberapa peralatan terhubung yang berbentuk pohon dengan menggunakan peralatan hub yang khusus. Desain USB ditujukan untuk menghilangkan perlunya penambahan expansion card ke ISA komputer atau bus PCI, dan memperbaiki kemampuan plug-and-play (pasang-dan-mainkan) dengan memperbolehkan peralatan-peralatan ditukar atau ditambah ke sistem tanpa perlu mereboot komputer. Ketika USB dipasang, ia langsung dikenal sistem komputer dan memroses device driver yang diperlukan untuk menjalankannya. USB dapat menghubungkan peralatan tambahan komputer seperti mouse, keyboard, pemindai gambar, kamera digital, printer, hard disk, dan komponen networking. USB kini telah menjadi standar bagi peralatan multimedia seperti pemindai gambar dan kamera digital. Versi terbaru (hingga Januari 2005) USB adalah versi 2.0. Perbedaan paling mencolok antara versi baru dan lama adalah kecepatan transfer yang jauh meningkat. Kecepatan transfer data USB dibagi menjadi tiga, antara lain:
  • High speed data dengan frekuensi clock 480.00Mb/s dan tolerasi pensinyalan data pada ± 500ppm.
  • Full speed data dengan frekuensi clock 12.000Mb/s dan tolerasi pensinyalan data pada ±0.25% atau 2,500ppm.
  • Low speed data dengan frekuensi clock 1.50Mb/s dan tolerasi pensinyalan data pada ±1.5% atau 15,000ppm.
Cakram Digital (bahasa Inggris: Compact Disc, disingkat CD), cakram padat, atau piringan cakram adalah sebuah piringan optikal yang digunakan untuk menyimpan data secara digital. Sejak diperkenalkan secara resmi pada tahun 1982, CD memperoleh puncak penjualan pada tahun2000 yaitu mencapai 2.445 juta keping Keuntungan yang diperoleh dari CD adalah kualitas suara yang dihasilkan tidak mungkin sebagus yang ada dikaset, selain itu CD sangat ringan dan mudah dibawa serta merupakan barang yang sangat tahan lama. CD menawarkan kapasitas penyimpanan data yang besar serta kapabilitas produksi.

  • PERANGKAT PENYIMPANAN OPTIK BERBASIS DISK
CD-ROM (dieja /ˌsiːˌdiːˈrɒm/, merupakan akronim dari “compact disc read-only memory”)) adalah sebuah piringan kompak dari jenis piringan optik(optical disc) yang dapat menyimpan data. Ukuran data yang dapat disimpan saat ini bisa mencapai 700MB atau 700 juta bita. CD-ROM bersifat read only (hanya dapat dibaca, dan tidak dapat ditulisi). Untuk dapat membaca isi CD-ROM, alat utama yang diperlukan adalah CD Drive. Perkembangan CD-ROM terkini memungkinkan CD dapat ditulisi berulang kali (Re Write / RW) yang lebih dikenal dengan nama CD-RW.
Kapasitas tipe Piringan kompak
Tipe Sektor Data maksimum Audio maksimum Durasi akses
(MB) (MiB) (MB) (MiB) (menit)
8 cm 94.500 193,536 ≈ 184,6 222,264 ≈ 212,0 21

283.500 580,608 ≈ 553,7 666,792 ≈ 635,9 63
650 MB 333.000 681,984 ≈ 650,3 783,216 ≈ 746,9 74
700 MB 360.000 737,280 ≈ 703,1 846,720 ≈ 807,4 80

405.000 829,440 ≈ 791,0 952,560 ≈ 908,4 90

445.500 912,384 ≈ 870,1 1.047,816 ≈ 999,3 99
Catatan: Nilai megabita (MB) dan menit adalah tepat.
Nila MiB adalah Mega binary Byte atau Mebi Byte (1 MiB = 2 20 = 1.048.576)
Kecepatan transfer data
Kecepatan Transfer Megabyte/detik Megabit/d Mebibit/d
1x 0.15 1.2 1.2288
2x 0.3 2.4 2.4576
4x 0.6 4.8 4.9152
8x 1.2 9.6 9.8304
10x 1.5 12.0 12.2880
12x 1.8 14.4 14.7456
20x 3.0 24.0 24.5760
32x 4.8 38.4 39.3216
36x 5.4 43.2 44.2368
40x 6.0 48.0 49.1520
48x 7.2 57.6 58.9824
50x 7.5 60.0 61.4400
52x 7.8 62.4 63.8976


  • ROM (Read Only Memory)
Read-only Memory (ROM) adalah istilah bahasa Inggris untuk medium penyimpanan data pada komputer. ROM adalah singkatan dari Read-Only Memory, ROM ini adalah salah satu memori yang ada dalam computer. ROM ini sifatnya permanen, artinya program / data yang disimpan didalam ROM ini tidak mudah hilang atau berubah walau aliran listrik di matikan. Menyimpan data pada ROM tidak dapat dilakukan dengan mudah, namun membaca data dari ROM dapat dilakukan dengan mudah. Biasanya program / data yang ada dalam ROM ini diisi oleh pabrik yang membuatnya. Oleh karena sifat ini, ROM biasa digunakan untuk menyimpan firmware (piranti lunak yang berhubungan erat dengan piranti keras). Salah satu contoh ROM adalah ROM BIOS yang berisi program dasar system komputer yang mengatur / menyiapkan semua peralatan / komponen yang ada dalam komputer saat komputer dihidupkan. ROM modern didapati dalam bentuk IC, persis seperti medium penyimpanan/memori lainnya seperti RAM. Untuk membedakannya perlu membaca teks yang tertera pada IC-nya. Biasanya dimulai dengan nomer 27xxx, angka 27 menunjukkan jenis ROM , xxx menunjukkan kapasitas dalam kilo bit ( bukan kilo byte ).
Mask ROM
Data pada ROM dimasukkan langsung melalui mask pada saat perakitan chip. Hal ini membuatnya sangat ekonomis terutama jika kita memproduksi dalam jumlah banyak. Namun hal ini juga menjadi sangat mahal karena tidak fleksibel. Sebuah perubahan walaupun hanya satu bit membutuhkan mask baru yang tentu saja tidak murah. Karena tidak fleksibel maka jarang ada yang menggunakannya lagi. Aplikasi lain yang mirip dengan ROM adalah CD-ROM prerecorded yang familiar dengan kita, salah satunya CD musik. Berbeda dengan pendapat banyak orang bahwa CD-ROM ditulis dengan laser, kenyataannya data pada CD-ROM lebih tepatnya dicetak pada piringan plastik.
Jenis-Jenis ROM
  • Mask ROM
  • PROM
  • EPROM
  • EAROM
  • EEPROM
  • Flash Memory

  • FLASH MEMORY
Memori kilat (flash memory) adalah sejenis EEPROM yang mengizinkan banyak lokasi memori untuk dihapus atau ditulis dalam satu operasi pemrograman. Istilah awamnya, dia adalah suatu bentuk dari chip memori yang dapat ditulis, tidak seperti chip memori akses acak/RAM, memori ini dapat menyimpan datanya tanpa membutuhkan penyediaan listrik. Memori ini biasanya digunakan dalam kartu memori, kandar kilat USB (USB flash drive),pemutar MP3, kamera digital, dan telepon genggam.

  • DVD
DVD adalah sejenis cakram optik yang dapat digunakan untuk menyimpan data, termasuk film dengan kualitas video dan audio yang lebih baik dari kualitas VCD. “DVD” pada awalnya adalah singkatan dari digital video disc, namun beberapa pihak ingin agar kepanjangannya diganti menjadi digital versatile disc (cakram serba guna digital) agar jelas bahwa format ini bukan hanya untuk video saja. Karena konsensus antara kedua pihak ini tidak dapat dicapai, sekarang nama resminya adalah “DVD” saja, dan huruf-huruf tersebut secara “resmi” bukan singkatan dari apapun. Terdapat pula perangkat lunak yang membolehkan pengguna untuk mencadangkan (back-up) DVD sendiri seperti DVD Decrypter dan DVD Shrink.
Referensi :
id.wikipedia.org/wiki/Memori_(komputer)

Kelebihan, Kelemahan dan Aplikasi 10 Bahasa Pemrograman

A. Bahasa C
1. Sejarah
Bahasa C merupakan perkembangan dari bahasa BCPL yang dikembangkan oleh Martin Richards pada tahun 1967. Selanjutnya bahasa ini memberikan ide kepada Ken Thompson yang kemudian mengembangkan bahasa yang disebut bahasa B pada tahun 1970. Perkembangan selanjutnya dari bahasa B adalah bahasa C yang diciptakan oleh Dennis Ricthie & W. Kerninghan tahun 1972 di Bell Telephone Laboratories Inc. (Sekarang adalah AT & T Bell Laboratories).
2. Aplikasi bahasa C
  • Bahasa C pertama kali digunakan di Computer Digital Equipment Corporation PDP-11 yang menggunakan system operasi UNIX.
  • Bahasa C juga digunakan untuk menyusun operasi Linux.
  • Banyak bahasa pemrogaman popular seperti PHP dan Java menggunakan sintaks dasar mirip bahasa C.
3. Kelebihan dan Kekurangan Bahasa C

Kelebihan Bahasa C :
  • Bahasa C tersedia hampir di semua jenis computer
  • Kode bahasa C sifatnya adalah portable dan fleksible untuk semua jenis computer.
  • Bahasa C hanya menyediakan sedikit kata-kata kunci, hanya terdapat 32 kata kunci.
  • Proses executable program bahasa C lebih cepat.
  • Dukungan pustaka yang banyak.
  • C adalah bahasa yang terstruktur.
  • Bahasa C termasuk bahasa tingkat menengah.
Kekurangan Bahasa C :
  • Banyaknya operator serta fleksibilitas penulisan program kadang-kadang membingungkan pemakai.
  • Bagi pemula pada umumnya akan kesulitan menggunakan pointer.
B. Bahasa Java
1. Sejarah
Java mulai dirilis pada tahun 1990 sebagai bahasa program yang disebut Oak, kemudian Sun MycroSystem mendirikan kelompok kerja yang terdiri atas para programmer handal untuk membuat produk dan memperluas pasar Sun. Oak didesain pertama kali untuk personal digital assistance yang disebut *7 yang akan dipasarkan Sun dengan fasilitas Graphical User Interface.
Ternyata *7 tidak pernah dipasarkan dan secara kebetulan Sun membentuk suatu perusahaan yang disebut Firstperson untuk mengembangkan *7 dalam bentuk TV set-top boxes untuk televisi interaktif. Karena persaingan begitu ketat akhirnya prospek TV interaktif menurun dan akhirnya Oak tidak laku di pasaran. Akan tetapi FirstPerson dan Oak mengalami kegagalan. bermunculan para perintis internet khususnya World Wide Web seperti Netscape membuat software yang memungkinkan terjadinya koneksi antara internet dengan www. Sun akhirnya menyadari bahwa Oak memiliki kemungkinan besar untuk membuat jalur akses ke dunia web. Tidak lamam kemudian Oak diluncurkan di Internet dengan nama baru yaitu, Java.
Sekarang, java masih dalam taraf pengembangan dan sudah mempengaruhi arah pemrogaman computer dan internet. Bahasa pemrogaman Java dirilis secara gratis di Internet dan Sun memberikan lisensi penuh terhadap implementasi Java dan segala komponennya untuk digunakan di berbagai vendor software Internet dengan harapan supaya dapat menciptakan standard pemrogaman web.
2. Aplikasi Bahasa Java
  • Pemrograman jaringan
  • Pembuatan aplikasi berbasis windows
  • Program untuk membuat web
3. Kelebihan dan Kekurangan
Kelebihan Bahasa Java :
  • Sederhana dan ampuh, java menyediakan sarana untuk membuat program (applet) yang berjalan pada web browser. Programmer dapat menggunakan applet kecil yang aman, dinamik, lintas platform, aktif dan siap dijalankan di jaringan.
  • Aman, java dirancang dengan konsep keamanan internet.
  • Berorientasi objek, java tidak diturunkan bahasa pemrogaman manapun. Java memiliki keseimbangan yang menyediakan mekanisme peng-class-an sederhana dengan model antarmuka dinamik yang intuitif hanya jika diperlukan.
  • Kokoh, java membatasi programmer dengan memberi kunci supaya progamer dapat menemukan kesalahan lebih cepat saat mengembangkan program.
  • Interaktif, java dirancang untuk menciptakan program jaringan yang interaktif.
  • Netral terhadap berbagai arsitektur, java mampu berjalan dalam platform apapun seperti PC, UNIX, Macintosh, dll.
  • Terinterpretasi dan berkinerja tinggi, java melengkapi keajaiban lintas platform yang luar biasa dengan kompilasi ke dalam representasi langsung yang disebut java code byte yang dapat diterjemahkan oleh system apapun yang memiliki java interpreter dan java virtual machine.
  • Mudah dipelajari karena bersifat sederhana.
  • Mendukung koneksi ke database.
Kekurangan bahasa Java :
  • Java memiliki kecepatan yang kurang dari bahasa C ++.
  • Implementasi J2ME tidak global. Misalnya, J2ME untuk Motorola dengan J2ME untuk Sony Ericson tidak sama. Berbeda lagi J2ME untuk Nokia. Setiap produk selalu mempunyai modul tersendiri yang dinilai aneh penerapannya dan harus di-compile dengan modul yang berbeda-beda.
  • Java memakan banyak memori computer.
  • Java merupakan bahasa yang kompleks dan susah dipelajari.
  • Program yang dibuat oleh bahasa ini lebih lambat disbanding program yang dibuat dengan bahasa lain seperti C atau C++.
C. Bahasa Pascal
1. Sejarah
Pascal dibuat pertama kali oleh Prof. Niklaus Wirth, seorang anggota International Federation of Information Processing (IFIP) pada tahun 1971. pascal berasal dari nama matematikawan yaitu Blaise Pascal. Pascal digunakan untuk mengenalkan pemrograman terstruktur.
2. Aplikasi Bahasa Pascal
  • Pascal dipakai sebagai landasan pembuatan kode perangkat lunak Delphi (berbasis windows).
  • Pascal dipakai sebagai landasan pembuatan kode perangkat lunak Kylix (berbasis Linux).
3. Kelebihan dan kekurangan
Kelebihan bahasa Pascal :
  • Tipe data standar, tipe-tipe data standar yang telah tersedia bahasa pemrogaman. Pascal memiliki tipe data standar Boolean, integer, char, real, string.
  • User defined data types, programmer dapat membuat tipe data lain yang diturunkan dari tipe data standar.
  • Strongly-typed, programmer harus menentukan tipe data dari suatu variable dan variable tersebut tidak dapat dipergunakan untuk menyimpan tipe data selain format yang ditentukan.
  • Terstruktur, memiliki sintaks yang memungkinkan penulisan program dipecah menjadi fungsi-fungsi kecil (procedur dan function) yang dapat dipergunakan berulang-ulang.
  • Sederhana dan ekspresif, memiliki struktur yang sederhana dan sangat mendekati bahasa manusia (bahasa inggris) sehingga mudah dipelajari dan dipahami.
Kekurangan bahasa Pascal :
  • Versi awal Pascal kurang cocok untuk aplikasi bisnis karena dukungan basisdata yang terbatas.
  • Sintaks Pascal terlalu bertele-tele.
  • Tidak mendukung pemrograman berorientasi objek.
  • Pascal tidak fleksibel dan banyak kekurangan yang dibutuhkan untuk membuat aplikasi yang besar.
D. Bahasa PHP
1. Sejarah
PHP adalah bahasa pemrogaman web atau scripting language yang didesain untuk web. PHP dibuat pertama kali oleh Rasmus Lerdford untuk menghitung jumlah pengunjung pada homepagenya pada akhir tahun 1994. PHP terus berkembang dari PHP 1 yang ditulis ulang Rasmus dalam bahasa C pada tahun 1995 sampai PHP 4 yang diluncurkan tanggal 22 Mei 2000.
2. Aplikasi Bahasa PHP
  • PHP digunakan sebagai landasan operasi pada pemrogaman jaringan berbasis web.
  • PHP digunakan juga untuk pemrogaman database.
  • PHP digunakan untuk membuat aplikasi web.
3. Kelebihan dan Kekurangan
Kelebihan :
  • PHP menjadi popular karena kesederhanaannya dan kemampuannya dalam menghasilkan berbagai aplikasi web seperti counter, system artikel/ CMS, e-commerce, bulletin board, dll.
  • PHP adalah salah satu bahasa server-side yang didesain khusus untuk aplikasi web.
  • PHP termasuk dalam Open Source Product dan telah mencapai versi 4.
  • Aplikasi PHP cukup cepat dibandingkan dengan aplikasi CGI dengan Perl atau Phyton bahkan lebih cepat disbanding dengan ASP maupun Java dalam berbagai aplikasi web.
  • Tersedia baik di Windows maupun Linux, walau saat ini paling efektif di web server Apache dan OS Linux.
  • Sintaks mirip C dan mudah dipelajari.
  • Komunitas yang ramai dan saling membantu, seperti di diskusiweb.com, phpbuilder.com, phpindo.com, dll.
  • Berbagai script atau aplikasi yang gratis telah tersedia.
Kekurangan :
  • Tidak detail untuk pengembangan skala besar.
  • Tidak memiliki system pemrogaman berorientasi objek yang sesungguhnya.
  • Tidak bisa memisahkan antara tampilan dengan logic dengan baik.
  • PHP memiliki kelemahan security tertentu apabila programmer tidak jeli dalam melakukan pemrogaman dan kurang memperhatikan isu konfigurasi PHP.
  • Kode PHP dapat dibaca semua orang, dan kompilasi hanya dapat dilakukan dengan tool yang mahal dari Zend.
E. Bahasa Ruby
1. Sejarah
Ruby adalah bahasa pemrogaman scripting yang berorientasi objek. Tujuan dari ruby adalah menggabungkan kelebihan dari semua bahasa pemrogaman scripting yang ada di dunia. Ruby ditulis dengan bahasa C dengan kemampuan dasar seperti Perl dan Phyton.
Ruby pertama kali dibuat oleh seorang programmer Jepang bernama Yukihiro Matsumoto. Penulisan Ruby dimulai pada February 1993 dan pada Desember 1994 dirilis versi alpha dari ruby. Pada awal perkembangan Ruby, Yukihiro meulis Ruby sendiri sampai pada tahun 1996 terbentuk komunitas Ruby yang banyak mengkotribusikan Ruby.
2. Aplikasi bahasa Ruby
  • Implementasi besar Ruby pada JRuby dan Rubinius.
  • Ruby dapat diterapkan pada teknologi Asynchronous JavaScript dan XML (AJAX).
  • Ruby on Rails untuk membuat framework web.
3. Kelebihan dan Kekurangan
Kelebihan :
  • Sintaks sederhana.
  • Memiliki Exception Handling yang baik.
  • OOP.
  • Single inheritance.
  • Didukung oleh OS Linux, Windows, MacOS X, OS/2, BeOs, dan Unix.
  • Merupakan bahasa pemrograman scripting yang berorientasi objek.
  • Memiliki garbage collector yang secara otomatis akan menghapus informasi tak terpakai dari memori.
Kelemahan :
  • Multithreading. Implementasi thread di ruby masih berupa green thread, bukan native thread. Hal ini membuat aplikasi GUI (desktop) dengan background thread tidak mungkin diimplementasikan di ruby.
  • Virtual Memory, ruby masih fully interpreted sehingga program ruby cenderung lebih lambat.
  • Spek. saat ini spesifikasi ruby (syntax, behaviour, dll) adalah implementasi ruby yang asli dari matz.
  • IDE. Saat ini kualitas IDE untuk ruby masih jauh daripada .net dan java. Tapi dengan bermunculnya IDE ruby yang dibuat dengan java.net, kondisinya agak berubah. Tapi karena ruby bahasa yang sangat dinamis, sulit untuk bisa mendapatkan informasi secara lengkap mengenai struktur sebuah program ruby secara statis.
F. Bahasa PROLOG

1. Sejarah
Prolog (Programmation en logique) adalah bahasa pemrograman logika atau bahasa non-prosedural. Bahasa ini diciptakan oleh Alain Colmerauer dan Robert Kowalski sekitar tahun 1972 dalam upaya untuk menciptakan suatu bahasa pemrograman untuk aplikasi kecerdasan buatan. Bahasa ini menjadi popular semenjak Jepang mengumumkan pada tahun 1981 bahwa jepang akan menggunakannya sebagai basis computer “generasi kelima”.
2. Aplikasi bahasa Prolog
  • Bahasa pemrograman Artificial Intellegence dan robot.
  • Bahasa pemrograman computer generasi kelima.
  • PROLOG banyak digunakan dalam aplikasi pembuatan bahasa alami, penulisan compiler, penambahan ilmu pada sistem pakar dan purwarupa (prototype) perangkat lunak.
  • Bagus untuk menulis sistem pakar dan knowledge based system.
3. Kelebihan dan Kekurangan
Kelebihan :
  • Berbeda dengan bahasa pemrograman yang lain, yang menggunakan algoritma konvensionl sebagai teknik pencariannya seperti pada Delphi, Pascal, Basic, COBOL dan bahasa pemrograman yang sejenisnya, maka prolog menggunakan teknik pencarian yang di sebut heuristik (heutistic) dengan menggunakan pohon logika.
  • Melakukan komputasi rumit pada data yang kompleks.
  • Mengekpresikan algoritma dengan baik.
  • Mengalokasikan memori secara dinamis sehingga programmer tidak harus mendeklarasikan ukuran sebuah struktur data sebelum membuatnya.
  • Mengembangkan dan memodifikasi dirinya sendiri sehingga sebuah program dapat “belajar” melalui informasi yang didapat selama program dijalankan
  • PROLOG mempunyai Automated Reasoning Procedure (Prosedur Sebab-Akibat Otomatis) yang disebut Inference Engine (Inference = proses pengambilan kesimpulan) yang sudah built-in didalamnya. Akibatnya, program yang menggunakan logika sebab-akibat jadi lebih mudah ditulis dalam PROLOG.
Kekurangan :
  • Pemborosan dalam pengalokasian memory sehingga program berjalan menjadi lambat
G. Bahasa Phyton
1. Sejarah
Bahasa pemrograman ini dibuat oleh Guido van Rossum dari Amsterdam, Belanda. Pada awalnya, motivasi pembuatan bahasa pemrograman ini adalah untuk bahasa skrip tingkat tinggi pada sistem operasi terdistribusi Amoeba. Bahasa pemrograman ini menjadi umum digunakan untuk kalangan engineer seluruh dunia dalam pembuatan perangkat lunaknya, bahkan beberapa perusahaan menggunakan python sebagai pembuat perangkat lunak komersial.
Python merupakan bahasa pemrograman yang freeware atau perangkat bebas dalam arti sebenarnya, tidak ada batasan dalam penyalinannya atau mendistribusikannya. Lengkap dengan source codenya, debugger dan profiler, antarmuka yang terkandung di dalamnya untuk pelayanan antarmuka, fungsi sistem, GUI (antarmuka pengguna grafis), dan basis datanya. Python dapat digunakan dalam beberapa sistem operasi, seperti kebanyakan sistem UNIX, PCs (DOS, Windows, OS/2), Macintosh, dan lainnya. Pada kebanyakan sistem operasi linux, bahasa pemrograman ini menjadi standarisasi untuk disertakan dalam paket distribusinya.
2. Aplikasi bahasa Phyton
  • Perangkat bantu shell. Tugas-tugas sistem administrator, program baris perintah.
  • Kerja bahasa ekstensi. Antarmuka untuk pustaka C/C++, kustomisasi.
  • Pembuatan prototipe secara cepat/pembuatan sistem aplikasi. Prototipe yang dapat dibuang atau sesuai dengan permintaan.
  • Modul berdasarkan bahasa pemrograman. Pengganti dari penulisan parser khusus.
  • Antarmuka pengguna grafis. Penggunaan GUI API sederhana dan canggih.
  • Pengaksesan basisdata. Penyimpanan objek tetap, antarmuka sistem SQL.
  • Pemrograman terdistribusi. Penggunaan API mekanisme client/server terintegrasi.
  • Skrip internet. Skrip CGI, antarmuka HTTP, Aplet WWW, dan lainnya.
3. Kelebihan dan Kekurangan
Kelebihan :
  • Tidak ada tahapan kompilasi dan penyambungan (link) sehingga kecepatan perubahan pada masa pembuatan system aplikasi meningkat.
  • Tidak ada deklarasi tipe sehingga program menjadi lebih sederhana, singkat, dan fleksible.
  • Manajemen memori otomatis yaitu kumpulan sampah memori sehingga dapat menghindari pencatatan kode.
  • Tipe data dan operasi tingkat tinggi yaitu kecepatan pembuatan system aplikasi menggunakan tipe objek yang telah ada.
  • Pemrograman berorientasi objek.
  • Pelekatan dan perluasan dalam C.
  • Terdapat kelas, modul, eksepsi sehingga terdapat dukungan pemrograman skala besar secara modular.
  • Pemuatan dinamis modul C sehingga ekstensi menjadi sederhana dan berkas biner yang kecil
  • Pemuatan kembali secara dinamis modul phyton seperti memodifikasi aplikasi tanpa menghentikannya.
  • Model objek universal kelas Satu.
  • Konstruksi pada saat aplikasi berjalan.
  • Interaktif, dinamis dan alamiah.
  • Akses hingga informasi interpreter.
  • Portabilitas secara luas seperti pemrograman antar platform tanpa ports.
  • Kompilasi untuk portable kode byte sehingga kecepatan eksekusi bertambah dan melindungi kode sumber.
  • Antarmuka terpasang untuk pelayanan keluar seperti perangkat Bantu system, GUI, persistence, database, dll.
Kekurangan :
  • Beberapa penugasan terdapat diluar dari jangkauan python, seperti bahasa pemrograman dinamis lainnya, python tidak secepat atau efisien sebagai statis, tidak seperti bahasa pemrograman kompilasi seperti bahasa C.
  • Disebabkan python merupakan interpreter, python bukan merupakan perangkat bantu terbaik untuk pengantar komponen performa kritis.
  • Python tidak dapat digunakan sebagai dasar bahasa pemrograman implementasi untuk beberapa komponen, tetapi dapat bekerja dengan baik sebagai bagian depan skrip antarmuka untuk mereka.
  • Python memberikan efisiensi dan fleksibilitas tradeoff by dengan tidak memberikannya secara menyeluruh. Python menyediakan bahasa pemrograman optimasi untuk kegunaan, bersama dengan perangkat bantu yang dibutuhkan untuk diintegrasikan dengan bahasa pemrograman lainnya.
H. Bahasa Cobol
1. Sejarah
COBOL diciptakan pada tahun 1959. Bahasa COBOL pertama kali diperkenalkan secara resmi atau formal pada bulan Januari 1960. Versi dari bahasa COBOL ini disebut dengan COBOL-60. Dan diperbaharui pada tahun 1965. Bila suatu bahasa komputer tidak standar, dalam arti banyak versinya, maka menyulitkan pemakai untuk menerapkannya, pemakai harus menyesuaikan versi dari COBOL yang dipakai oleh komputer tertentu. Untuk mengatasi masalah hal ini, pada tahun 1968 dan 1974 bahasa COBOL dikembangkan dan disempurnakan lebih lanjut dan distandardisasikan dengan nama ANSI COBOL (American National Standards Institute ). ANSI COBOL ini yang sekarang banyak diterapkan oleh sejumlah pabrik-pabrik komputer. Dengan adanya standardisasi, pemakai tidak terlalu sulit menggunakan bahasa COBOL versi yang berbeda, karena inti dari bahsa ini sama.
2. Aplikasi bahasa COBOL
  • Untuk membuat aplikasi bisnis
  • Untuk pengolahan data dan database
3. Kelebihan dan Kekurangan
Kelebihan :
  • Program COBOL dibuat dalam instruksi bahasa inggris, sehingga lebih mudah dipelajari dan dibuat.
  • Program COBOL sesuai untuk pengolahan data yang banyak diterapkan pada permaslahan .
  • Program COBOL sifatnya standard, sehingga dapat dipergunakan pada komputer-komputer yang berbeda, tanpa banyak perbedaan.
  • Struktur program COBOL jelas, sehingga dapat dimengerti oleh orang seperti akuntan, auditor, atau manajer-manajer yang hanya mempunayai pengetahuan pengolahan data yang sedikit.
  • COBOL menyediakan fasilitas Listing Program, bilamana perlu dapat diperiksa oleh orang lain selain programer.
  • Mudah didokumentasikan dan dikembangkan bilamana perlu.
  • Problem Orientad Language.
Kekurangan :
  • Operasi masukan dan keluaran yang masih kaku.
  • Struktur penulisan program yang sangat kaku dan bertele-tele.
I. Bahasa Basic
1. Sejarah
BASIC adalah beginner all-purpose symbolic instruction code dikembangkan tahun 1965 di Darmouth College oleh John Kemeny dan Thomas Kurtz. Awalnya ditujukan untuk pengajaran dasar pemrogaman computer.
2. Aplikasi bahasa Basic
  • Landasan pemrograman Visual Basic dan visual basic for application.
  • Bahasa pemrograman pada banyak produk Microsoft seperti untuk administrasi dan otomatisasi batch skrip, windowskrip house.
  • Untuk pembuatan program kid Basic, FreeBasic, dan Gambas.
3. Kelebihan dan Kekurangan
Kelebihan :
  • Bahasa Basic tergolong bahasa serbaguna dan dapat digunakan di aplikasi apa saja.
Kekurangan :
  • Bahasanya kurang terstruktur.
  • Tidak cocok untuk membuat aplikasi besar.
  • Sintaksnya penuh dengan GOTO yang menyesatkan.
  • Bahasa ini merupakan bahasa yang primitif di era DOS.
A. Bahasa C++
1. Sejarah
Bahasa C++ diciptakan oleh Bjarne Stroustrup tahun 1983 di Lab Bell. C++ merupakan bahasa pemrograman berorientasi objek menggunakan kaidah bahasa C
2. Aplikasi bahasa C++
  • Sebagai bahasa pemrograman di Windows, UNIX, Linux.
  • Visual C++ dapat dibuat aplikasi apa saja seperti database.
  • Bahasa untuk pembuatan system operasi, game, system kendali,pembuatan aplikasi
  • Untuk membuat bahasa baru atau membuat compiler bahasa baru
  • Untuk menulis komponen dan file-file pustaka bahasa lain
3. Kelebihan dan Kekurangan
Kelebihan :
  • Merupakan induk dari bahasa pemrograman perl, php, phyton, visual basic, gambas, java, C#.
  • Compiler bahasa C++ terdapat di semua platform.
  • Untuk pengembangan visual dijejali dengan platform yang sangat banyak seperti OWL, MFC, Cocoa, QT, GTK, dll.
  • Merupakan pemrograman berorientasi objek.
Kekurangan :
  • Bahasa ini cukup sulit untuk dipel;ajari dan dipahami.
  • Banyaknya operator serta fleksibilitas penulisan program kadang-kadang membingungkan pemakai.
  • Bagi pemula pada umumnya akan kesulitan menggunakan pointer.

Struktur Data

Dalam istilah ilmu komputer, sebuah struktur data adalah cara penyimpanan, penyusunan dan pengaturan data di dalam media penyimpanan komputer sehingga data tersebut dapat digunakan secara efisien.
Dalam teknik pemrograman, struktur data berarti tata letak data yang berisi kolom-kolom data, baik itu kolom yang tampak oleh pengguna (user) atau pun kolom yang hanya digunakan untuk keperluan pemrograman yang tidak tampak oleh pengguna. Setiap baris dari kumpulan kolom-kolom tersebut dinamakan catatan (record). Lebar kolom untuk data dapat berubah dan bervariasi. Ada kolom yang lebarnya berubah secara dinamis sesuai masukan dari pengguna, dan juga ada kolom yang lebarnya tetap. Dengan sifatnya ini, sebuah struktur data dapat diterapkan untuk pengolahan database (misalnya untuk keperluan data keuangan) atau untuk pengolah kata (word processor) yang kolomnya berubah secara dinamis. Contoh struktur data dapat dilihat pada berkas-berkas lembar-sebar (spreadsheet), pangkal-data (database), pengolahan kata, citra yang dipampat (dikompres), juga pemampatan berkas dengan teknik tertentu yang memanfaatkan struktur data.
1. Larik (Array)

Larik (Bahasa Inggris: array), dalam ilmu komputer, adalah suatu tipe data terstruktur yang dapat menyimpan banyak data dengan suatu nama yang sama dan menempati tempat di memori yang berurutan (kontinu) serta bertipe data sama pula.
Larik dapat diakses berdasarkan indeksnya. Indeks larik umumnya dimulai dari 0 dan ada pula yang dimulai dari angka bukan 0. Pengaksesan larik biasanya dibuat dengan menggunakan perulangan (looping).
  • Larik Satu Dimensi
Larik satu dimensi merupakan jenis larik dasar dan jenis larik yang paling sering digunakan, pemakaian larik satu dimensi terutama dipakai dalam tipe data string (terutama dalam bahasa Bahasa pemrograman C).
  • Larik Dua Dimensi
Larik dua dimensi merupakan tipe larik yang lain. Larik dua dimensi sering dipakai untuk merepresentasikan tabel dan matriks dalam pemrograman.
Larik dalam beberapa bahasa pemrograman
  • Bahasa Pascal
Larik dalam bahasa Pascal dapat didefinisikan dengan indeks awal dan indeks akhirnya.
Contoh:
program larik;
var arr: array[1..10] of integer;  //larik dengan indeks awal 1 dan indeks akhir 10
begin
arr[1] := 5; //memasukkan nilai ke indeks 1
writeln(arr[i]); //mencetak angka 5
end.

  • Bahasa C
Larik dalam bahasa C selalu dimulai dari indeks 0. Larik dapat didefinisikan secara statik atau dinamik. Jika didefinisikan statik, ukuran larik akan tetap dari awal program hingga akhir program. Jika didefinisikan dinamik, ukuran larik dapat berubah selama program berjalan karena memesan tempat pada memori heap. Proses pemesanan tempat pada memori disebut dengan alokasi. Sedangkan proses pembebasan memori yang sudah dipesan disebut dengan dealokasi.
Contoh larik statik:
#include <stdio.h>
int main(){
int arr[10]; //indeks awal 0 dan indeks akhir 9
arr[0] = 5;
printf(“%d\n”, arr[0]);
}

Contoh larik dinamik:

#include <malloc.h>
int main(){
int * arr;
arr = (int *) malloc(10 * sizeof(int)); //memesan 10 tempat pada memori
arr[0] = 5;
free(arr);                              //menghancurkan larik. Memori pada heap dibebaskan
arr = (int *) malloc(5 * sizeof(int));  //memesan 5 tempat baru pada memori
free(arr);                              //di akhir program jangan lupa untuk menghancurkan larik dinamik
}

  • Bahasa Java
Dalam bahasa Java tipe data larik direpresentasikan sebagai sebuah objek khusus. Karena itu pada bahasa Java larik yang dibuat selalu bersifat dinamik. Namun walaupun bersifat dinamik, larik pada bahasa Java tidak perlu dihancurkan karena proes penghancuran dilakukan secara otomatis melalui suatu prosedur yang disebut dengan Pengumpulan sampah (Inggris: Garbage Collecting). Sama seperti bahasa C, indeks larik selalu dimulai dari 0.
Contoh:
public class larik {
public static void main(String args[]) {
int[] arr = new arr[10];
arr[0] = 5;
System.out.println(arr[0]);
}
}

  • PHP
Sama seperti di JAVA larik di PHP juga merupakan sebuah object lebih tepatnya lagi map terorder. Ada dua tipe larik di PHP, indexed array (simple array) dan associated array (value array). Di PHP, element larik bisa berupa string, Bilangan, boolean, dan semua tipe data primitif lainnya, termasuk larik juga bisa menjadi element larik lainnya.

Cara medefinisikan larik:

#mendefinisikan array kosong
$larik = array();

Contoh indexed array (simple array):
$jam = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12);
$hari = array(‘senin’, ‘selasa’, ‘selasa’, ‘rabu’, ‘kamis’, ‘jumat’, ‘sabtu’);

Contoh associated array:
$bulan = array(‘1’=>’January’, ‘2’=>’February’, ‘3’=>’Maret’, ‘4’=>’April’);
$komponenKalender = array(
‘bulan’=> array(1, 2, 3, 4, 5, 6, 7, 8, 9 ,10 , 11, 12),
‘hari’ => array(‘senin’, ‘selasa’, ‘selasa’, ‘rabu’, ‘kamis’, ‘jumat’, ‘sabtu’)
);

2. Stack (Tumpukan)
Dalam ilmu komputer, stack atau tumpukan merupakan sebuah koleksi objek yang menggunakan prinsip LIFO (Last In First Out), yaitu data yang terakhr kali dimasukkan akan pertama kali keluar dari stack tersebut. Stack dapat diimplementasikan sebagai representasi berkait atau kontigu (dengan tabel fix). Ciri Stack :
* Elemen TOP (puncak) diketahui
* penisipan dan penghapusan elemen selalu dilakukan di TOP
* LIFO

Pemanfaatan Stack :

* Perhitungan ekspresi aritmatika (posfix)
* algoritma backtraking (runut balik)
* algoritma rekursif

Operasi Stack yang biasanya :

a. Push (input E : typeelmt, input/output data : stack): menambahkan sebuah elemen ke stack
b. Pop (input/output data : stack, output E : typeelmt ) : menghapus sebuah elemen stack
c. IsEmpty ()
d. IsFull ()
e. dan beberapas selektor yang lain
3. Pohon (Tree)

Dalam ilmu komputer, sebuahPohon adalah suatu struktur data yang digunakan secara luas yang menyerupai struktur pohon dengan sejumlah simpul yang terhubung.

  • Simpul (node)
Sebuah Simpul dapat mengandung sebuah nilai atau suatu kondisi atau menggambarkan sebuah struktur data terpisah atau sebuah bagian pohon itu sendiri. Setiap simpul dalam sebuah pohon memiliki nol atau lebih simpul anak (child nodes), yang berada dibawahnya dalam pohon (menurut perjanjian, pohon berkembang ke bawah, tidak seperti yang dilakukannya di alam). Sebuah simpul yang memiliki anak dinamakan simpul ayah (parent node) atau simpul leluhur (ancestor node) atau superior. Sebuah simpul paling banyak memiliki satu ayah. Tinggi dari pohon adalah panjang maksimal jalan ke sebuah daun dari simpul tersebut. Tinggi dari akar adalah tinggi dari pohon. Kedalaman dari sebuah simpul adalah panjang jalan ke akarnya dari simpul tersebut.
  • Akar (Root nodes)
Simpul yang paling atas dalam pohon adalah akar (root node). Menjadi simpul teratas, simpul akar tidak akan memiliki orang tua. Ini merupakan simpul di mana biasanya merupakan tempat untuk memulai operasi dalam pohon (walaupun beberapa algoritma dimulai dengan daun dan berakhir pada akar). Semua simpul yang lain dapat dicapai dari akar dengan menelusuri pinggiran atau pranala. (Dalam definisi resmi, setiap jalan adalah khas). Dalam diagram, ini secara khusus di gambar paling atas. Di beberapa pohon, seperti heap, akar memiliki sifat khusus. Setiap simpul dalam sebuah pohon dapat dilihat sebagai akar dari sub pohon yang berakar pada simpul tersebut.
  • Daun (Leaf nodes)
Semua simpul yang berada pada tingkat terendah dari pohon dinamakan daun (leaf node). Sejak mereka terletak pada tingkat paling bawah, mereka tidak memiliki anak satupun. Seringkali, daun merupakan simpul terjauh dari akar. Dalam teori grafik, sebuah daun adalah sebuah sudut dengan tingkat 1 selain akar (kecuali jika pohonnya hanya memiliki satu sudut; maka akarnya adalah daunnya juga). Setiap pohon memiliki setidaknya satu daun. Dalam pohon berdasarkan genetic programming sebuah daun (juga dibilang terminal) adalah bagian terluar dari sebuah program pohon. Jika dibandingkan dengan fungsinya atau simpul dalam, daun tidak memiliki argumen. Di banyak kasus dalam daun-GP input ke programnya.

  • Simpul dalam (Internal nodes)
Sebuah simpul dalam adalah semua simpul dari pohon yang memiliki anak dan bukan merupakan daun. Beberapa pohon hanya menyimpan data didalam simpul dalam, meskipun ini mempengaruhi dinamika penyimpanan data dalam pohon. Sebegai contoh, dengan daun yang kosong, seseorang dapat menyimpan sebuah pohon kosong dengan satu daun. Bagaimanapun juga dengan daun yang dapat menyimpan data, tidak dimungkinkan untuk menyimpan pohon kosong kecuali jika seseorang memberikan beberapa jenis penanda data di daun yang menandakan bahwa daun tersebut seharusnya kosong (dengan demikian pohon itu seharusnya kosong juga). Sebaliknya, beberapa pohon hanya menyimpan data dalam daun, dan menggunakan simpul dalam untuk menampung metadata yang lain, seperti jarak nilai dalam sub pohon yang berakar pada simpul tersebut. Jenis pohon ini berguna untuk jarak yang meragukan.
  • Sub pohon (Subtrees)
Sebuah sub pohon adalah suatu bagian dari pohon struktur data yang dapat dilihat sebagai sebuah pohon lain yang berdiri sendiri. Simpul apapun dalam pohon P, bersama dengan seluruh simpul dibawahnya, membentuk sebuah sub pohon dari P. Sub pohon yang terhubung dengan akar merupakan keseluruhan pohon tersebut. Sub pohon yang terhubung dengan simpul lain manapun dinamakan sub pohon asli (proper subtree).
  • Penyusunan pohon
Terdapat dua jenis pohon. Sebuah pohon tidak terurut (unordered tree) adalah sebuah pohon dalam arti struktural semata-mata, yang dapat dikatakan memberikan sebuah simpul yang tidak memiliki susunan untuk anak dari simpul tersebut. Sebuah pohon dengan suatu susunan ditentukan, sebagai contoh dengan mengisi bilangan asli berbeda ke setiap anak dari simpul tersebut, dinamakan sebuah pohon terurut (ordered tree), dan struktur data yang dibangun didalamnya dinamakan pohon terurut struktur data (ordered tree data structures). Sejauh ini pohon terurut merupakan bentuk umum dari pohon struktur data. Pohon biner terurut merupakan suatu jenis dari pohon terurut.
  • Hutan
Sebuah hutan adalah sebuah himpunan yang terdiri dari pohon terurut. Lintasan inorder, preorder, dan postorder didefinisikan secara rekursif untuk hutan.
– inorder
1. lewati inorder hutan yang dibentuk oleh sub pohon yang pertama dalam hutan, jika ada
2. kunjungi akar dari pohon pertama.
3. lewati inorder hutan yang dibentuk oleh sisa pohon dalam hutan, jika ada.
– preorder
1. kunjungi akar dari pohon pertama.
2. lewati preorder hutan yang dibentuk oleh sub pohon yang pertama dalam hutan, jika ada
3. lewati preorder hutan yang dibentuk oleh sisa pohon dalam hutan, jika ada.
– postorder
1. lewati postorder hutan yang dibentuk oleh sub pohon yang pertama dalam hutan, jika ada
2. lewati postorder hutan yang dibentuk oleh sisa pohon dalam hutan, jika ada.
3. kunjungi akar dari pohon pertama.
  • Penggambaran pohon
Ada banyak cara untuk menggambarkan pohon; pada umumnya penggambaran mewakili simpul sebagai rekor yang dialokasikan pada heap (bedakan dengan heap struktur data) yang mengacu pada anaknya, ayahnya, atau keduanya, atau seperti data materi dalam array, dengan hubungan diantaranya ditentukan oleh posisi mereka dalam array (contoh binary heap).
  • Pohon sebagai grafik
Dalam teori grafik, sebuah pohon adalah sebuah grafik asiklis yang terhubung. Pohon yang berakar merupakan sebuah grafik dengan sudut tunggal diluar sebagai akar. Dalam kasus ini, dua sudut apapun yang terhubung dengan sebuah sisi mewarisi hubungan orang tua dan anak. Sebuah grafik asiklis dengan bermacam-macam komponen yang terhubung atau himpunan dari pohon-pohon yang berakar kadang-kadang dipanggil hutan.
  • Metode traversal
Melangkah melalui materi dari pohon, dengan arti dari hubungan antara orang tua dan anak, dinamakan menelusuri pohon, dan tindakannya adalah sebuah jalan dari pohon. Seringkali, sebuah operasi mungkin dapat dilakukan sebagai penunjuk ysng mengacu pada simpul khusus. Sebuah penelusuran dimana setiap simpul ayah dikunjungi sebelum anaknya dinamakan pre-order walk, yaitu sebuah penelusuran dimana anaknya dikunjungi sebelum ayahnya masing-masing dinamakan post-order walk.
  • Operasi umum
* Menghitung seluruh materi (item)
* Pencarian untuk sebuah materi
* Menambahkan sebuah materi pada sebuah posisi tertentu dalam pohon
* Menghapus sebuah materi
* Mengeluarkan seluruh bagian dari sebuah pohon pruning
* Menambahkan seluruh bagian ke sebuah pohon grafting
* Menemukan akar untuk simpul apapun
  • Penggunaan umum
* Memanipulasi data secara hierarki
* Membuat informasi mudah untuk dicari
* Memanipulasi data sorted lists

Algoritma Pencarian Biner (Binary Search)



Pencarian Biner (Binary Search) Pada Array Yang Sudah Terurut
Pencarian Biner (Binary Search) dilakukan untuk :
  • memperkecil jumlah operasi pembandingan yang harus dilakukan antara data yang dicari dengan data yang ada di dalam tabel, khususnya untuk jumlah data yang sangat besar ukurannya.
  • Prinsip dasarnya adalah melakukan proses pembagian ruang pencarian secara berulang-ulang sampai data ditemukan atau sampai ruang pencarian tidak dapat dibagi lagi (berarti ada kemungkinan data tidak ditemukan).
  • Syarat utama untuk pencarian biner adalah data di dalam tabel harus sudah terurut, misalkan terurut menaik.
Algoritmanya :

Contoh Nilai-Nilai data yang sudah terurut :

Kasus 1  : cari = 12
Loop pertama : Tengah=(BatasAtas + BatasBawah) div 2=( 1 + 8 ) div 2=4
A [Tengah] = A [4] = 12, berarti loop pertama data langsung ditemukan
Kasus 2  : cari = 15
Loop pertama : Tengah=(BatasAtas + BatasBawah) div 2=( 1 +  8 ) div 2=4
A [Tengah] = A [4] = 12 < cari = 15, berarti BatasAtas = Tengah + 1 = 4 + 1 = 5
Loop kedua : Tengah=(BatasAtas + BatasBawah) div 2=( 5 +  8 ) div 2=6
A [Tengah] = A [6] = 25 > cari = 15, berarti BatasBawah = Tengah – 1 = 6 – 1 = 5
Loop ketiga : Tengah=(BatasAtas + BatasBawah) div 2=( 5 +  5 ) div 2=5
A [Tengah] = A [5] = 15, berarti  setelah loop ketiga, data ditemukan
Kasus 3  : cari = 10
Loop pertama : Tengah=(BatasAtas + BatasBawah) div 2=( 1 +  8 ) div 2=4
A [Tengah] = A [4] = 12 > cari = 10, berarti BatasBawah = Tengah – 1 = 4 – 1 = 3
Loop kedua : Tengah=(BatasAtas + BatasBawah) div 2=( 1 +  3 ) div 2=2
A [Tengah] = A [2] = 5 < cari = 10, berarti BatasAtas = Tengah + 1 = 2 + 1 = 3
Loop ketiga : Tengah=(BatasAtas + BatasBawah) div 2=( 3 +  3 ) div 2=3
A [Tengah] = A [3] = 8, berarti  setelah loop ketiga, data tidak ditemukan
Untuk jumlah data sebanyak n, maka proses pembandingan maksimal sebanyak ( log n ) kali. Untuk contoh di atas, jumlah data 8, maka proses pembandingan maksimal sebanyak 3 kali.

Sistem Input Output Komputer

Sistem komputer (computer system), terdiri dari perangkat keras (hardware) dan perangkat lunak (software). Perangkat keras dan perangkat lunak harus bekerja bersama-sama membentuk suatu sistem, yaitu sistem komputer. Perangkat keras (H/W), sebagai sub sistem komputer juga mempunyai komponen, yaitu :
  1. Komponen alat masukan (input device)
  2. Komponen alat pemroses (processing device)
  3. komponen alat keluaran (output device)
  4. Komponen alat simpanan luar (storage)

  • ALAT MASUKAN (INPUT DEVICE)
Alat masukan (input device), adalah alat yang digunakan untuk menerima masukan yangg dapat berupa masukan data ataupun masukan program. Beberapa alat masukan mempunyai fungsi ganda, yaitu, sebagai alat masukan dan sekaligus sebagai alat keluaran (ouput) untuk menampilkan hasil. Alat I/O demikian disebut terminal
Alat masukan dapat digolongkan ke dalam beberapa golongan, yaitu :
  • Keyboard
Merupakan alat input yang paling umum dan banyak digunakan. Beberapa alat input yang menggunakan keyboard untuk memasukkan input adalah :
  1. Visual display terminal (VDT) disebut juga dengan nama Visual display unit terdiri dari keyboard dan visual display (tampilan display).
  2. Financial transaction terminal, digunakan untuk transaksi yang berhubungan dengan keuangan. Salah satu aplikasinya yaitu untuk Electronic Fund Transfer (EFT) dengan menggunakan ATM.
  3. Point of sale terminal (POS), biasanya digunakan di swalayan.
  4. POS terminal merupakan perkembangan dari cash register yang dapat dihubungkan dengan komputer untuk tujuan pengendalian persediaan (inventory control) dan penjadwalan pemesanan kembali barang yang akan dipesan. Alat tambahan pada POS Terminal meliputi OCR Tag Reader atau Bar code reader.
  • Pointing Device
Yang termasuk dalam peralatan pointing device adalah:
  1. Mouse.
  2. Touch screen, layar monitor yang akan mengaktifkan program bila layarnya disentuh dengan tangan.
  3. Light Pen, merupakan menyentuh layar monitor dengan pena. Posisi sentuhan di layar akan lebih tepat dan teliti.
  4. Digitizer Graphic Tablet, digunakan untuk membuat grafik atau gambar dengan cara menghubungkan dua buah titik di graphic tablet dengan alat yang menyerupai pen.
  • Scanner

Alat masukan scanner dapat berupa :
  1. Magnetic Ink Character Recognition (MICR), alat pembaca pengenal karakter tinta magnetik, banyak digunakan di bank-bank amerika untuk transaksi cek. Dibutuhkan tinta magnetik yg khusus supaya bisa dibaca oleh alatnya
  2. Reader.
  3. Optical Data Reader, dapat berupa Optical Character Recognition (OCR) Reader, OCR Tag Reader (banyak dipergunakan di toko-toko serba ada untuk membaca label data barang yang dijual yang dicetak dengan bentuk (font) karakter OCR), Bar Code Reader, Optical Mark Recognition (OMR) Reader (banyak digunakan untuk penilaian test (test scoring). Jawaban dari tes yang diberikan dijawab di kertas mark sense form (dengan pensil 2B). OMR juga banyak digunakan untuk membaca hasil dari daftar pertanyaan (Questionarries), registrasi mahasiswa dsb).
  • Sensor
Merupakan alat yang mampu secara langsung menangkap data kejadian fisik. Data analog dikumpulkan oleh alat sensor dan dimasukan ke pengubah AD/DC yang selanjutnya diproses oleh komputer. Kamera Digital merupakan salah satu sensor yang dipakai untuk menangkap objek yg selanjutnya diproses dengan komputer. Camera Recorder (Camcorder) merupakan sensor untuk menangkap objek yang bergerak.
  • Voice recognizer
Biasa disebut Speech Recognizer yaitu alat untuk membuat komputer mengerti omongan manusia.

  • ALAT KELUARAN (OUTPUT DEVICE)

Ouput yang dihasilkan dari pengolahan data dapat digolongkan ke dalam 3 bentuk tulisan (huruf, kata, angka, karakter dan simbol- simbol khusus), image (grafik atau gambar) maupun suara (musik atau omongan). Alat keluaran juga dapat berbentuk :
  • Hard Copy Device
Merupakan alat keluaran yg digunakan untuk mencetak tulisan, grafik atau gambar pada media pencetak. Alat hard copy device yang umum dipergunakan adalah printer. Jenis-jenis printer meliputi dot matrix, inkjet printer dan laser. Selain itu juga dikenal Plotter, alat cetak yang mempunyai kemampuan mencetak grafik atau gambar dengan baik, biasanya menggunakan pen plotter
  • Soft Copy Device
Merupakan alat yg digunakan untuk menampilkan tulisan, image dan suara pada media soft (lunak) yg berupa sinyal elektronik. Contoh soft copy device adalah video display (monitor), flat panel display (Liquid Crystal Dispaly), dan speaker.
  • Alat Simpanan Luar
Main memory di dalam alat pemroses merupakan simpanan yg kapasitasnya tidak begitu besar dan umumnya bersifat Volatile (Volatile : informasi yg dikandungnya akan hilang bila aliran listrik terputus).
Selain itu terdapat juga Direct Access Storage Device (DASD) (Merupakan alat penyimpan pengaksesan langsung), contohnya floppy disk, harddisk, dan removable disk.

  • JENIS_JENIS PERANGKAT I/O

Secara umum, terdapat beberapa jenis perangkat I/O, seperti perangkat penyimpanan (disk, tape), perangkat transmisi (network card, modem), dan perangkat antarmuka dengan pengguna (screen, keyboard, mouse). Perangkat tersebut dikendalikan oleh instruksi I/O. Alamat-alamat yang dimiliki oleh perangkat akan digunakan oleh direct I/O instruction dan memory-mapped I/O. Beberapa konsep yang umum digunakan ialah port, bus (daisy chain/shared direct access), dan pengendali (host adapter). Port ialah koneksi yang digunakan oleh perangkat untuk berkomunikasi dengan mesin. Bus ialah koneksi yang menghubungkan beberapa perangkat menggunakan kabel-kabel. Pengendali ialah alat-alat elektronik yang berfungsi untuk mengoperasikan port, bus, dan perangkat.
Langkah yang ditentukan untuk perangkat ialah command-ready, busy, dan error. Host mengeset command-ready ketika perintah telah siap untuk dieksekusi oleh pengendali. Pengendali mengeset busy ketika sedang mengerjakan sesuatu, dan men-clear busy ketika telah siap untuk menerima perintah selanjutnya. Error diset ketika terjadi kesalahan.
  • KLASIFIKASI UMUM PERANGKAT I/O
Pendapat orang-orang mengenai I/O berbeda-beda. Seorang insinyur mungkin akan memandang perangkat keras I/O sebagai kumpulan chip-chip, kabel-kabel, catu daya, dan komponen fisik lainnya yang membangun perangkat keras ini. Seorang programmer akan memandangnya sebagai antarmuka yang disediakan oleh perangkat lunak atau perintah yang diterima perangkat keras, fungsi yang dikerjakannya, dan error yang ditimbulkan.
Perangkat I/O dapat dibagi secara umum menjadi dua kategori, yaitu: perangkat blok (block devices), dan perangkat karakter (character devices). Perangkat blok menyimpan informasi dalam sebuah blok yang ukurannya tertentu, dan memiliki alamat masing-masing. Umumnya blok berukuran antara 512 bytes sampai 32.768 bytes. Keuntungan dari perangkat blok ini ialah mampu membaca atau menulis setiap blok secara independen. Disk merupakan contoh perangkat blok yang paling banyak digunakan.
Tipe lain perangkat I/O ialah perangkat karakter. Perangkat karakter mengirim atau menerima sebarisan karakter, tanpa menghiraukan struktur blok. Tipe ini tidak memiliki alamat, dan tidak memiliki kemampuan mencari (seek). Printer dan antarmuka jaringan merupakan contoh perangkat jenis ini. Pembagian ini tidaklah sempurna. Beberapa perangkat tidak memenuhi kriteria tersebut. Contohnya: clock yang tidak memiliki alamat dan juga tidak mengirim dan menerima barisan karakter. Yang ia lakukan hanya menimbulkan interupsi dalam jangka waktu tertentu.

Algoritma dan Pemrograman

1.  Apakah Itu Algoritma
Ditinjau dari asal-usul katanya, kata Algoritma sendiri mempunyai sejarah yang aneh. Orang hanya menemukan kata algorism yang berarti proses menghitung dengan angka arab. Anda dikatakan algorist jika Anda menghitung menggunakan angka arab. Para ahli bahasa berusaha menemukan asal kata ini namun hasilnya kurang memuaskan. Akhirnya para ahli sejarah matematika menemukan asal kata tersebut yang berasal dari nama penulis buku arab yang terkenal yaitu Abu Ja’far Muhammad Ibnu Musa Al-Khuwarizmi. Al-Khuwarizmi dibaca orang barat menjadi Algorism. Al-Khuwarizmi menulis buku yang berjudul Kitab Al Jabar Wal-Muqabala yang artinya “Buku pemugaran dan pengurangan” (The book of restoration and reduction). Dari judul buku itu kita juga memperoleh akar kata “Aljabar” (Algebra). Perubahan kata dari algorism menjadi algorithm muncul karena kata algorism sering dikelirukan dengan arithmetic, sehingga akhiran –sm berubah menjadi –thm. Karena perhitungan dengan angka Arab sudah menjadi hal yang biasa, maka lambat laun kata algorithm berangsur-angsur dipakai sebagai metode perhitungan (komputasi) secara umum, sehingga kehilangan makna kata aslinya. Dalam bahasa Indonesia, kata algorithm diserap menjadi algoritma.
2.  Definisi Algoritma

“Algoritma adalah urutan langkah-langkah logis penyelesaian masalah yang disusun secara sistematis dan logis”. Kata logis merupakan kata kunci dalam algoritma. Langkah-langkah dalam algoritma harus logis dan harus dapat ditentukan bernilai salah atau benar. Dalam beberapa konteks, algoritma adalah spesifikasi urutan langkah untuk melakukan pekerjaan tertentu. Pertimbangan dalam pemilihan algoritma adalah, pertama, algoritma haruslah benar. Artinya algoritma akan memberikan keluaran yang dikehendaki dari sejumlah masukan yang diberikan. Tidak peduli sebagus apapun algoritma, kalau memberikan keluaran yang salah, pastilah algoritma tersebut bukanlah algoritma yang baik.
Pertimbangan kedua yang harus diperhatikan adalah kita harus mengetahui seberapa baik hasil yang dicapai oleh algoritma tersebut. Hal ini penting terutama pada algoritma untuk menyelesaikan masalah yang memerlukan aproksimasi hasil (hasil yang hanya berupa pendekatan). Algoritma yang baik harus mampu memberikan hasil yang sedekat mungkin dengan nilai yang sebenarnya.
Ketiga adalah efisiensi algoritma. Efisiensi algoritma dapat ditinjau dari 2 hal yaitu efisiensi waktu dan memori. Meskipun algoritma memberikan keluaran yang benar (paling mendekati), tetapi jika kita harus menunggu berjam-jam untuk mendapatkan keluarannya, algoritma tersebut biasanya tidak akan dipakai, setiap orang menginginkan keluaran yang cepat. Begitu juga dengan memori, semakin besar memori yang terpakai maka semakin buruklah algoritma tersebut. Dalam kenyataannya, setiap orang bisa membuat algoritma yang berbeda untuk menyelesaikan suatu permasalahan, walaupun terjadi perbedaan dalam menyusun algoritma, tentunya kita mengharapkan keluaran yang sama. Jika terjadi demikian, carilah algoritma yang paling efisien dan cepat.
3.  Beda Algoritma dan Program

Program adalah kumpulan pernyataan komputer, sedangkan metode dan tahapan sistematis dalam program adalah algoritma. Program ditulis dengan menggunakan bahasa pemrograman. Jadi bisa disebut bahwa program adalah suatu implementasi dari bahasa pemrograman. Beberapa pakar memberi formula bahwa :

Program = Algoritma + Bahasa (Struktur Data)
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.
Pembuatan algoritma mempunyai banyak keuntungan di antaranya :
  • Pembuatan atau penulisan algoritma tidak tergantung pada bahasa pemrograman manapun, artinya penulisan  algoritma independen dari bahasa pemrograman dan komputer yang melaksanakannya.
  • Notasi algoritma dapat diterjemahkan ke dalam berbagai bahasa pemrograman.
  • Apapun bahasa pemrogramannya, output yang akan dikeluarkan sama karena algoritmanya sama.
Beberapa hal yang perlu diperhatikan dalam membuat algoritma :
  • Teks algoritma berisi deskripsi langkah-langkah penyelesaian masalah. Deskripsi tersebut dapat ditulis dalam notasi apapun asalkan mudah dimengerti dan dipahami.
  • Tidak ada notasi yang baku dalam penulisan teks algoritma seperti notasi bahasa pemrograman. Notasi yang digunakan dalam menulis algoritma disebut notasi algoritmik.
  • Setiap orang dapat membuat aturan penulisan dan notasi algoritmik sendiri. Hal ini dikarenakan teks algoritma tidak sama dengan teks program. Namun, supaya notasi algoritmik mudah ditranslasikan ke dalam notasi bahasa pemrograman tertentu, maka sebaiknya notasi algoritmik tersebut berkorespondensi dengan notasi bahasa pemrograman secara umum.
  • Notasi algoritmik bukan notasi bahasa pemrograman, karena itu pseudocode dalam notasi algoritmik tidak dapat dijalankan oleh komputer. Agar dapat dijalankan oleh komputer, pseudocode dalam notasi algoritmik harus ditranslasikan atau diterjemahkan ke dalam notasi bahasa pemrograman yang dipilih. Perlu diingat bahwa orang yang menulis program sangat terikat dalam aturan tata bahasanya dan spesifikasi mesin yang menjalannya.
  • Algoritma sebenarnya digunakan untuk membantu kita dalam mengkonversikan suatu permasalahan ke dalam bahasa pemrograman.
  • Algoritma merupakan hasil pemikiran konseptual, supaya dapat dilaksanakan oleh komputer, algoritma harus ditranslasikan ke dalam notasi bahasa pemrograman. Ada beberapa hal yang harus diperhatikan pada translasi tersebut, yaitu :
a.  Pendeklarasian variabel
Untuk mengetahui dibutuhkannya pendeklarasian variabel dalam penggunaan bahasa pemrograman apabila    tidak semua bahasa pemrograman membutuhkannya.
b.  Pemilihan tipe data
Apabila bahasa pemrograman yang akan digunakan membutuhkan pendeklarasian variabel maka perlu hal ini dipertimbangkan pada saat pemilihan tipe data.
c.  Pemakaian instruksi-instruksi
Beberapa instruksi mempunyai kegunaan yang sama tetapi masing-masing memiliki kelebihan dan kekurangan yang berbeda.
d.  Aturan sintaksis
Pada saat menuliskan program kita terikat dengan aturan sintaksis dalam bahasa pemrograman yang akan digunakan.
e.  Tampilan hasil
Pada saat membuat algoritma kita tidak memikirkan tampilan hasil yang akan disajikan. Hal-hal teknis ini diperhatikan ketika mengkonversikannya menjadi program.
f.  Cara pengoperasian compiler atau interpreter.
Bahasa pemrograman yang digunakan termasuk dalam kelompok compiler atau interpreter.
4.  Algoritma Merupakan Jantung Ilmu Informatika

Algoritma adalah jantung ilmu komputer atau informatika. Banyak cabang ilmu komputer yang mengarah ke dalam terminologi algoritma. Namun, jangan beranggapan algoritma selalu identik dengan ilmu komputer saja. Dalam kehidupan sehari-hari pun banyak terdapat proses yang dinyatakan dalam suatu algoritma. Cara-cara membuat kue atau masakan yang dinyatakan dalam suatu resep juga dapat disebut sebagai algoritma. Pada setiap resep selalu ada urutan langkah-langkah membuat masakan. Bila langkah-langkahnya tidak logis, tidak dapat dihasilkan masakan yang diinginkan. Ibu-ibu yang mencoba suatu resep masakan akan membaca satu per satu langkah-langkah pembuatannya lalu ia mengerjakan proses sesuai yang ia baca. Secara umum, pihak (benda) yang mengerjakan proses disebut pemroses (processor). Pemroses tersebut dapat berupa manusia, komputer, robot atau alat-alat elektronik lainnya. Pemroses melakukan suatu proses dengan melaksanakan atau “mengeksekusi” algoritma yang menjabarkan proses tersebut.
Algoritma adalah deskripsi dari suatu pola tingkah laku yang dinyatakan secara primitif yaitu aksi-aksi yang didefenisikan sebelumnya dan diberi nama, dan diasumsikan sebelumnya bahwa aksi-aksi tersebut dapat kerjakan sehingga dapat menyebabkan kejadian.
Melaksanakan algoritma berarti mengerjakan langkah-langkah di dalam algoritma tersebut. Pemroses mengerjakan proses sesuai dengan algoritma yang diberikan kepadanya. Juru masak membuat kue berdasarkan resep yang diberikan kepadanya, pianis memainkan lagu berdasarkan papan not balok. Karena itu suatu algoritma harus dinyatakan dalam bentuk yang dapat dimengerti oleh pemroses. Jadi suatu pemroses harus:
  • Mengerti setiap langkah dalam algoritma.
  • Mengerjakan operasi yang bersesuaian dengan langkah tersebut.
5.  Mekanisme Pelaksanaan Algoritma oleh Pemroses
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 “program” seringkali dipertukarkan dalam penggunaannya. Misalnya ada orang yang berkata seperti ini: “program pengurutan data menggunakan algoritma selection sort”. Atau pertanyaan seperti ini: “bagaimana algoritma dan program menggambarkan grafik tersebut?”. Jika Anda sudah memahami pengertian algoritma yang sudah disebutkan sebelum ini, Anda dapat membedakan arti kata algoritma dan program. Algoritma adalah langkah-langkah penyelesaikan 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 pemrogram (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 komputer.
Secara garis besar komputer tersusun atas empat komponen utama yaitu, piranti masukan, piranti keluaran, unit pemroses utama, dan memori. Unit pemroses utama (Central Processing Unit – CPU) adalah “otak” komputer, yang berfungsi mengerjakan operasi-operasi dasar seperti operasi perbandingan, operasi perhitungan, operasi membaca, dan operasi menulis. Memori adalah komponen yang berfungsi menyimpan atau mengingatingat.
Yang disimpan di dalam memori adalah program (berisi operasi-operasi yang akan dikerjakan oleh CPU) dan data atau informasi (sesuatu yang diolah oleh operasi-operasi). Piranti masukan dan keluaran (I/O devices) adalah alat yang memasukkan data atau program ke dalam memori, dan alat yang digunakan komputer untuk mengkomunikasikan hasil-hasil aktivitasnya. Contoh piranti masukan antara lain, papan kunci (keyboard), pemindai (scanner), dan cakram (disk). Contoh piranti keluaran adalah, layar peraga (monitor), pencetak (printer), dan cakram.
Mekanisme kerja keempat komponen di atas dapat dijelaskan sebagai berikut. Mula-mula program dimasukkan ke dalam memori komputer. Ketika program dilaksanakan (execute), setiap instruksi yang telah tersimpan di dalam memori dikirim ke CPU. CPU mengerjakan operasioperasi yang bersesuaian dengan instruksi tersebut. Bila suatu operasi memerlukan data, data dibaca dari piranti masukan, disimpan di dalam memori lalu dikirim ke CPU untuk operasi yang memerlukannya tadi. Bila proses menghasilkan keluaran atau informasi, keluaran disimpan ke dalam memori, lalu memori menuliskan keluaran tadi ke piranti keluaran (misalnya dengan menampilkannya di layar monitor).
6.  Belajar Memprogram dan Belajar Bahasa Pemrograman
Belajar memprogram tidak sama dengan belajar bahasa pemrograman. Belajar memprogram adalah belajar tentang metodologi pemecahan masalah, kemudian menuangkannya dalam suatu notasi tertentu yang mudah dibaca dan dipahami. Sedangkan belajar bahasa pemrograman berarti belajar memakai suatu bahasa aturan-aturan tata bahasanya, pernyataan-pernyataannya, tata cara pengoperasian compiler-nya, dan memanfaatkan pernyataan-pernyataan tersebut untuk membuat program yang ditulis hanya dalam bahasa itu saja. Sampai saat ini terdapat puluhan bahasa pemrogram, antara lain bahasa rakitan (assembly), Fortran, Cobol, Ada, PL/I, Algol, Pascal, C, C++, Basic, Prolog, LISP, PRG, bahasabahasa simulasi seperti CSMP, Simscript, GPSS, Dinamo. Berdasarkan terapannya, bahasa pemrograman dapat digolongkan atas dua kelompok besar :
  • Bahasa pemrograman bertujuan khusus. Yang termasuk kelompok ini adalah Cobol (untuk terapan bisnis dan administrasi). Fortran (terapan komputasi ilmiah), bahasa rakitan (terapan pemrograman mesin), Prolog (terapan kecerdasan buatan), bahasa-bahasa simulasi, dan sebagainya.
  • Bahasa perograman bertujuan umum, yang dapat digunakan untuk berbagai aplikasi. Yang termasuk kelompok ini adalah bahasa Pascal, Basic dan C. Tentu saja pembagian ini tidak kaku. Bahasabahasabertujuan khusus tidak berarti tidak bisa digunakan untuk aplikasi lain. Cobol misalnya, dapat juga digunakan untuk terapan ilmiah, hanya saja kemampuannya terbatas. Yang jelas, bahasabahasa pemrograman yang berbeda dikembangkan untuk bermacam-macam terapan yang berbeda pula.
Berdasarkan pada apakah notasi bahasa pemrograman lebih “dekat” ke mesin atau ke bahasa manusia, maka bahasa pemrograman dikelompokkan atas dua macam :
  • Bahasa tingkat rendah. Bahasa jenis ini dirancang agar setiap instruksinya langsung dikerjakan oleh komputer, tanpa harus melalui penerjemah (translator). Contohnya adalah bahasa mesin. CPU mengambil instruksi dari memori, langsung mengerti dan langsung mengerjakan operasinya. Bahasa tingkat rendah bersifat primitif, sangat sederhana, orientasinya lebih dekat ke mesin, dan sulit dipahami manusia. Sedangkan bahasa rakitan dimasukkan ke dalam kelompok ini karena alasan notasi yang dipakai dalam bahasa ini lebih dekat ke mesin, meskipun untuk melaksanakan instruksinya masih perlu penerjemahan ke dalam bahasa mesin.
  • Bahasa tingkat tinggi, yang membuat pemrograman lebih mudah dipahami, lebih “manusiawi”, dan berorientasi ke bahasa manusia (bahasa Inggris). Hanya saja, 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. Contoh bahasa tingkat tinggi adalah Pascal, PL/I, Ada, Cobol, Basic, Fortran, C, C++, dan sebagainya.
Bahasa pemrograman bisa juga dikelompokkan berdasarkan pada tujuan dan fungsinya. Di antaranya adalah :
7.  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 di antara teknikteknik itu. Hal ini sama juga dengan algoritma, yang memungkinkan suatu permasalahan dipecahkan dengan metode dan logika yang berlainan. Yang menjadi pertanyaan adalah 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.
  • Precise (tepat, betul, teliti). Setiap instruksi harus ditulis dengan seksama dan tidak ada keragu-raguan, dengan demikian setiap instruksi harus dinyatakan secara eksplisit dan tidak ada bagian yang dihilangkan karena pemroses dianggap sudah mengerti. Setiap langkah harus jelas dan pasti.
Contoh :   Tambahkan 1 atau 2 pada x.
Instruksi di atas terdapat keraguan.
  • Jumlah langkah atau instruksi berhingga dan tertentu. Artinya, untuk kasus yang sama banyaknya, langkah harus tetap dan tertentu meskipun datanya berbeda.
  • Efektif. Tidak boleh ada instruksi yang tidak mungkin dikerjakan oleh pemroses yang akan menjalankannya.
Contoh :   Hitung akar 2 dengan presisi sempurna.
Instruksi di atas tidak efektif, agar efektif instruksi tersebut diubah.
Misal : Hitung akar 2 sampai lima digit di belakang koma.
  • Harus terminate. Jalannya algoritma harus ada kriteria berhenti. Pertanyaannya adalah apakah bila jumlah instruksinya berhingga maka pasti terminate?
  • Output yang dihasilkan tepat. Jika langkah-langkah algoritmanya logis dan diikuti dengan seksama maka dihasilkan output yang diinginkan.
Sedangkan kriteria Algoritma menurut Donald E. Knuth adalah :
  1. Input: algoritma dapat memiliki nol atau lebih inputan dari luar.
  2. Output: algoritma harus memiliki minimal satu buah output keluaran.
  3. Definiteness (pasti): algoritma memiliki instruksi-instruksi yang jelas dan tidak ambigu.
  4. Finiteness (ada batas): algoritma harus memiliki titik berhenti (stopping role).
  5. Effectiveness (tepat dan efisien): algoritma sebisa mungkin harus dapat dilaksanakan dan efektif. Contoh instruksi yang tidak efektif adalah: A = A + 0 atau A = A * 1
Namun ada beberapa program yang memang dirancang untuk unterminatable : contoh Sistem Operasi.
8.  Penyajian Algoritma
Penyajian algoritma secara garis besar bisa dalam 2 bentuk penyajian yaitu tulisan dan gambar. Algoritma yang disajikan dengan tulisan yaitu dengan struktur bahasa tertentu (misalnya bahasa Indonesia atau bahasa Inggris) dan pseudocode. Pseudocode adalah kode yang mirip dengan kode pemrograman yang sebenarnya seperti Pascal, atau C, sehingga lebih tepat digunakan untuk menggambarkan algoritma yang akan dikomunikasikan kepada pemrogram. Sedangkan algoritma disajikan dengan gambar, misalnya dengan flowchart. Secara umum, pseudocode mengekspresikan ide-ide secara informal dalam proses penyusunan algoritma. Salah satu cara untuk menghasilkan kode pseudo adalah dengan meregangkan aturan-aturan bahasa formal yang dengannya versi akhir dari algoritma akan diekspresikan. Pendekatan ini umumnya digunakan ketika bahasa pemrograman yang akan digunakan telah diketahui sejak awal.

Flowchart merupakan gambar atau bagan yang memperlihatkan urutan dan hubungan antar proses beserta pernyataannya. Gambaran ini dinyatakan dengan simbol. Dengan demikian setiap simbol menggambarkan proses tertentu. Sedangkan antara proses digambarkan dengan garis penghubung. Dengan menggunakan flowchart akan memudahkan kita untuk melakukan pengecekan bagian-bagian yang terlupakan dalam analisis masalah. Di
samping itu flowchart juga berguna sebagai fasilitas untuk berkomunikasi antara pemrogram yang bekerja dalam tim suatu proyek.
Ada dua macam flowchart yang menggambarkan proses dengan komputer, yaitu :
  • Flowchart sistem yaitu bagan dengan simbol-simbol tertentu yang menggambarkan urutan prosedur dan proses suatu file dalam suatu media menjadi file di dalam media lain, dalam suatu sistem pengolahan data. Beberapa contoh Flowchart sistem:
  • Flowchart program yaitu bagan dengan simbol-simbol tertentu yang menggambarkan urutan proses dan hubungan antar proses secara mendetail di dalam suatu program.

Kaidah-Kaidah Umum Pembuatan Flowchart Program
Dalam pembuatan flowchart Program tidak ada rumus atau patokan yang bersifat mutlak. Karena flowchart merupakan gambaran hasil pemikiran dalam menganalisis suatu masalah dengan komputer. Sehingga flowchart yang dihasilkan dapat bervariasi antara satu pemrogram dengan yang lainnya. Namun secara garis besar setiap pengolahan selalu terdiri atas 3 bagian utama, yaitu :
  1. Input,
  2. Proses pengolahan dan
  3. Output
Untuk pengolahan data dengan komputer, urutan dasar pemecahan suatu masalah:
  1. START, berisi pernyataan untuk persiapan peralatan yang diperlukan sebelum menangani pemecahan persoalan.
  2. READ, berisi pernyataan kegiatan untuk membaca data dari suatu peralatan input.
  3. PROSES, berisi kegiatan yang berkaitan dengan pemecahan persoalan sesuai dengan data yang dibaca.
  4. WRITE, berisi pernyataan untuk merekam hasil kegiatan ke peralatan output.
  5. END, mengakhiri kegiatan pengolahan.
Walaupun tidak ada kaidah-kaidah yang baku dalam penyusunan flowchart, namun ada beberapa anjuran :
  1. Hindari pengulangan proses yang tidak perlu dan logika yang berbelit sehingga jalannya proses menjadi singkat.
  2. Jalannya proses digambarkan dari atas ke bawah dan diberikan tanda panah untuk memperjelas.
  3. Sebuah flowchart diawali dari satu titik START dan diakhiri dengan END.
Berikut merupakan beberapa contoh simbol flowchart yang disepakati oleh dunia pemrograman :
Untuk memahami lebih dalam mengenai flowchart ini, akan diambil sebuah kasus sederhana.

Kasus : Buatlah sebuah rancangan program dengan menggunakan flowchart, mencari luas persegi panjang.


Solusi : Perumusan untuk mencari luas persegi panjang adalah :
L = p . l
di mana, L adalah Luas persegi panjang, p adalah panjang persegi, dan l adalah lebar persegi.
Keterangan :
  1. Simbol pertama menunjukkan dimulainya sebuah program.
  2. Simbol kedua menunjukkan bahwa input data dari p dan l.
  3. Data dari p dan l akan diproses pada simbol ketiga dengan menggunakan perumusan L = p. l.
  4. Simbol keempat menunjukkan hasil output dari proses dari simbol ketiga.
  5. Simbol kelima atau terakhir menunjukkan berakhirnya program dengan tanda End.
9.  Struktur Dasar Algoritma
Algoritma berisi langkah-langkah penyelesaian suatu masalah. Langkah-langkah tersebut dapat berupa runtunan aksi (sequence), pemilihan aksi (selection), pengulangan aksi (iteration) atau kombinasi dari ketiganya. Jadi struktur dasar pembangunan algoritma ada tiga, yaitu:
  1. Struktur Runtunan
  2. Digunakan untuk program yang pernyataannya sequential atau urutan.
  3. Struktur Pemilihan
  4. Digunakan untuk program yang menggunakan pemilihan atau penyeleksian kondisi.
  5. Struktur Perulangan
  6. Digunakan untuk program yang pernyataannya akan dieksekusi berulang-ulang.

Dalam Algoritma, tidak dipakai simbol-simbol / sintaks dari suatu bahasa pemrograman tertentu, melainkan bersifat umum dan tidak tergantung pada suatu bahasa pemrograman apapun juga. Notasi-notasi algoritma dapat digunakan untuk seluruh bahasa pemrograman manapun.
Definisi Pseudo-code
Kode atau tanda yang menyerupai (pseudo) atau merupakan penjelasan cara menyelesaikan suatu masalah. Pseudo-code sering digunakan oleh manusia untuk menuliskan algoritma.
Contoh kasus : mencari bilangan terbesar dari dua bilangan yang diinputkan
Solusi Pseudo-code :
  1. Masukkan bilangan pertama
  2. Masukkan bilangan kedua
  3. Jika bilangan pertama > bilangan kedua maka kerjakan langkah 4, jika tidak, kerjakan langkah 5.
  4. Tampilkan bilangan pertama
  5. Tampilkan bilangan kedua
Solusi Algoritma :
  1. Masukkan bilangan pertama (a)
  2. Masukkan bilangan kedua (b)
  3. if a > b then kerjakan langkah 4
  4. print a
  5. print b
Contoh Lain Algortima dan Pseudo-code :
10.  Tahapan dalam Pemrograman
Langkah-langkah yang dilakukan dalam menyelesaikan masalah dalam pemrograman dengan komputer adalah :
  • Definisikan Masalah
  • Buat Algoritma dan Struktur Cara Penyelesaian
  • Menulis Program
  • Mencari Kesalahan
  • Uji dan Verifikasi Program
  • Dokumentasi Program
  • Pemeliharaan Program

Pages