Sabtu, 01 Oktober 2011

Arsitektur Komputer

Pendahuluan

Dalam dunia teknologi saat ini kita mengenal istilah yang disebut komputer. Komputer merupakan alat bantu yang digunakan manusia untuk mengerjakan beberapa yang dpat memudahkan manusia dalam mengerjakannya seperti perhitungan ataupun hal-hal yang lainnya. Komputer zaman dahulu mungkin hanya bisa mengerjakan hal-hal yang sederhana saja namun berjalannya waktu teknologi pun semakin maju dan pesat sehingga komputer sekarang dapat membantu manusia dalam mengerjakan hal-hal yang rumit sekalipun. Seiiring dengan berjalannya waktu komputer pun mengalami revolusi atau perubahan sesuai generasinya. Generasi-generasi komputer pun menjadi beberapa generasi. Mulai dari komputer yang hanya bisa mengerjakan hal yang sederhana hingga yang rumit. Bentuk maupun spesifikasinya pun berbeda. Oleh karena itu komputer sangatlah membantu dalam pekerjaan manusia

Pembahasan

1. Evolusi Arsitektur

Di antara demikian banyak pemahaman tentang arsitektur, arsitektur dikenal juga sebagai suatu tradisi yang berkembang. Dari waktu ke waktu wajah arsitektur selalu mengalami perubahan. Hal-hal yang mempengaruhi perkembangan dan pengembangan arsitektur tidak hanya berupa keadaan eksternal, tetapi juga keadaan internal. Dsini kita membahas mengenai evolusi arsitektur pada komputer. Arsitektur dari komputer sendiri merupakan suatu susuan tau rancangan dari komputer tersebut sehingga membentuk suatukesatuan yang dinamakan komputer. Komputer sendiri berevolusi dengan cepat mulai dari generasi pertama hingga sekarang. Evolusi sendiri didasarkan pada fungsi atau kegunaanya dalam kehidupan. Evolusi pada komputer sendiri ada karena keinginan atau hal yang dibutuhkan manusia itu sendiri. Sekarang ini komputer sudah dapat melakaukan perintah yang sulit sekalipun tidak seperti dulu yang hanya bisa melakukan yang sederhana saja. Itulah yang dinamakan evolusi arsitektur yaitu perubahan bentuk juga fungsi dan kemampuannya.

2. Klasifikasi Arsitektur

Pada komputer terdapat berbagai klasifikasinya dalam hal appaun. Setiap komputer tentunya memilik klasifikasi masing-masing. Disini membahas mengenai klasifikasi arsitekturnya menurut Von Neumann dan Non Von Neumann.

Kriteria mesin Von Neumann :

1. Mempunyai subsistem hardware dasar yaitu sebuah CPU, sebuah memori dan sebuah I/O sistem

2. Merupakan stored-program computer

3. Menjalankan instruksi secara berurutan

4. Mempunyai jalur (path) bus antara memori dan CPU

Pada tahun 1966, Flyyn mengklasifikasikan arsitektur komputer berdasarkan sifatnya yaitu :

1. Jumlah prosesor

2. Jumlah program yang dapat dijalankan

3. Struktur memori

Menurut Flyyn ada 4 klasifikasi komputer :

1. SISD (Single Instruction Stream, Single Data Stream)

Satu CPU yang mengeksekusi instruksi satu persatu dan menjemput atau menyimpan data satu persatu.

2. SIMD (Single Instruction Stream, Multiple Data Stream)

Satu unit kontrol yang mengeksekusi aliran tunggal instruksi, tetapi lebih dari satu Elemen Pemroses

3. MISD (Multiple Instruction Stream, Single Data Stream)

Mengeksekusi beberapa program yang berbeda terhadap data yang sama.

Ada dua kategori:
- Mesin dengan Unit pemroses berbeda dengan instruksi yang berbeda dengan data yang sama (sampai sekarang tidak ada mesin yang seperti ini)
- Mesin, dimana data akan mengalir ke elemen pemroses serial

4. MIMD (Multiple Instruction Stream, Multiple Data Stream

Juga disebut multiprocessors, dimana lebih dari satu proses dapat dieksekusi berikut terhadap dengan datanya masing-masing,

3. Kualitas Arsitektur Komputer

Kualitas arsitektur komputer merupakan suatu yang menentukan komputer itu baik atau tidak. Komputer dikatakan baik jika memiliki kualitas yang baik dalam hal apapun. Begitu juga komputer dikatakan tidak baik jika komputer tersebut tidak dapat memenuhi apa yg diperintahkan atau diinginkan pengguna. Hal yang dipenuhi inilah yang disebut dengan kualitas. Adapun kualitas arsitektur komputer yaitu :

1. Generalitas adalah ukuran besamya jangkauan aplikasi yang bisa cocok dengan arsitektur.

2. Daya terap (applicability) adalah pemanfaatan arsitektur untuk penggunaan yang telah direncanakannya.

3. Efisiensi adalah ukuran rata-rata jurnlah hardware dalam komputer yang selalu sibuk selama penggunaannya biasa.

4. Kemudahan penggunaan arsitektur adalah ukuran kesederhanan bagi programmer sistem untuk mengembangkan atau membuat software untuk arsitektur tersebut, misalnya sistem pengoperasiannya atau compilernya. Oleh karena itu, kemudahan penggunaan ini merupakan fungsi ISA dan berkaitan erat dengan generalitas.

5. Daya terap arsitektur adalah ukuran kemudahan bagi perancang untuk mengimplementasikan komputer (yang mempunyai arsitektur itu) dalam jangkauan yang luas. Lebih spesifik arsitekturnya, maka akan lebih sulit untuk membuat mesin yang berbeda ukuran dan kinerjanya dari yang lain.

6. Daya kembang (expandability) adalah ukuran kemudahan bagi perancang untuk meningkatkan kemampuan arsitektur, misalnya kemampuan ukuran memori maksimumnya atau kemampuan aritmetiknya. Umumnya, spesifikasi rumpun komputer memungkinkan perancang untuk menggunakan ukuran memori yang berjangkauan luas dalarn anggota rumpun.

4. Faktor Keberhasilan

Faktor keberhasilan merupakan sesuatu yang membuat dapat terlaksananya suatu hal yang dilakukan. Dalam komputer faktor keberhasilan merupakan sesuatu yang ada pada komputer dimana hal itu membuat komputer dapat melaksanakan tugasnya atau yang diperintahkan pengguna dengan baik.

Ada empat ukuran pokok yang menentukan keberhasilan arsitektur, yaitu manfaat arsitekturalnya yaitu :

1. Aplicability

Arsitektur ditujukan untuk aplikasi yang telah ditentukan.

2. Maleability

Bila arsitekturlebih mudah membangunsistem yang kecil, maka akan lebih baik.

3. Expandibility

Lebih besar daya kembang arsitektur dalam daya komputasi, ukuran memori, kapasitasI/O, dan jumlah prosesor,maka akan lebih baik.

4. Comptible

5. Struktur Dasar Komputer dan Organisasi Komputer

Suatu sistem komputer terdiri dari lima unit struktur dasar, yaitu:

  • Unit masukan (Input Unit) yaitu dimana terdapat perintah atau instruksi yang dilakukan kepada komputer oleh pengguna
  • Unit kontrol (Control Unit) merupakan suatu unit yang berfungsi untuk mengontrol atau mengendalikan semua yang terdapat dalam komputer
  • Unit logika dan aritmatika (Arithmetic & Logical Unit / ALU) adalah suatu unit dimana berisi fungsi-fungsi logika dan matematika atau perhitungan
  • Unit memori/penyimpanan (Memory / Storage Unit) yaitu unit penyimpanan dana yang dilakukan komputer
  • Unit keluaran (Output Unit) merupakan suatu hasil yang diharapkan dari suatu inputan yang telah dimasukkan

Organisasi komputer

Organisasi Komputer adalah bagian yang terkait erat dengan unit-unit operasional. contohnya teknologi hardware, perangkat antarmuka, teknologi memori, sistem memori, dan sinyal–sinyal kontrol. Organisasi komputer bisa kita artikan sebagai cara bagi komputer (yang didesign oleh manusia) dalam menkonsolidasikan diri mereka hingga membentuk suatu performa yang diinginkan, seperti halnya organisasi yang sering kita temukan, organisasi komputer ini juga memiliki tujuan, tujannya adalah menghasilkan kerja komputer seperti yang diinginkan manusia sebagai pembuatnya.

Referensi

http://journal.mercubuana.ac.id

http://panksgrunge.blogspot.com/2010/06/mengukur-kualitas-arsitektur-komputer.html

http://radmarssy.wordpress.com/2007/02/07/struktur-dasar-komputer/

http://lecturer.eepis-its.edu/~setia/ORKOMDwnld.html

Selasa, 24 Mei 2011

3 Konsep Dasar Yang Mendukung PBO

Encapsulation

Dalam enkapsulasi bahasa pemrograman yang digunakan untuk merujuk ke salah satu dari dua namun berbeda pengertian yang terkait, dan kadang-kadang untuk kombinasi bagiannya:

  • Mekanisme bahasa untuk membatasi akses ke beberapa komponen-komponen objek
  • Bahasa Sebuah membangun yang memfasilitasi bundling data dengan metode (atau fungsi lainnya) yang beroperasi pada data.

Beberapa peneliti dan akademisi bahasa pemrograman menggunakan arti pertama sendiri atau dalam kombinasi dengan kedua sebagai ciri pembeda dari pemrograman berorientasi objek , sedangkan bahasa pemrograman lain yang memberikan penutupan leksikal view enkapsulasi sebagai fitur dari bahasa ortogonal ke objek orientasi. Definisi kedua adalah termotivasi oleh fakta bahwa dalam banyak bahasa OOP bersembunyi komponen tidak otomatis atau dapat diganti; sehingga menyembunyikan informasi didefinisikan sebagai gagasan yang terpisah oleh mereka yang lebih memilih definisi kedua.

Inheritance

Dalam pemrograman berorientasi obyek (OOP), inheritance adalah cara mengkotak-kotakkan dan penggunaan kembali kode dengan menciptakan koleksi atribut dan perilaku yang disebut objek yang dapat didasarkan pada obyek dibuat sebelumnya. Dalam klasik inheritance di mana objek yang didefinisikan oleh kelas , kelas dapat mewarisi kelas lain. Kelas baru, yang dikenal sebagai subclass (atau kelas turunan), mewarisi atribut dan perilaku-ada kelas-kelas awal, yang disebut sebagai superclasses (atau nenek moyang kelas). Dalam pemrograman berbasis prototipe , objek dapat didefinisikan langsung dari objek lain tanpa perlu mendefinisikan kelas, dalam hal fitur ini disebut deferensial inheritance . Konsep inheritance ditemukan pada tahun 1967

Polimorfisme

Polimorfisme adalah kemampuan untuk memperoleh bentuk. Dua objek atau lebih dikatakan polimorfis, bila objek-objek itu mempunyai antar muka-antarmuka identik namun mempunyai perilaku-perilaku berbeda. Bentuk ini memungkinkan kita menganggap sekelompok objek dengan tipe-tipe berbeda seperti dimiliki oleh suatu tipe yang sama. Polimorfisme merupakan fitur yang terjadi karena interaksi setiap konsep pewarisan dan dynamic binding. Contohnya pintu dan jendela memiliki perilaku yang sama yaitu dapat dibuka dan ditutup, namun untuk menutup jendela dilakukan misalnya dari atas ke bawah (vetikal), sedangkan pintu dari depan ke belakang (horizontal). Polimorfisme juga biasa diartikan seperti kemampuan suatu variable untuk mengubah perangai sesuai dengan objek hasil instansiasi yang digunakan. Polimorfisme membiarkan lebih dari 1 objek dari sub class – sub class dan diperlakukan sebagai objek dari super class tunggal

Referensi :

http://translate.google.co.id/translate?hl=id&sl=en&u=http://en.wikipedia.org/wiki/Encapsulation

http://translate.google.co.id/translate?hl=id&sl=en&u=http://en.wikipedia.org/wiki/Inheritance

http://bernazlionk.wordpress.com

Pemrograman Berorientasi Objek ( PBO )

PBO

Pemrograman berorientasi objek (Inggris: object-oriented programming disingkat OOP) merupakan paradigma pemrograman yang berorientasikan kepada objek. Semua data dan fungsi di dalam paradigma ini dibungkus dalam kelas-kelas atau objek-objek. Bandingkan dengan logika pemrograman terstruktur. Setiap objek dapat menerima pesan, memproses data, dan mengirim pesan ke objek lainnya, Model data berorientasi objek dikatakan dapat memberi fleksibilitas yang lebih, kemudahan mengubah program, dan digunakan luas dalam teknik piranti lunak skala besar. Lebih jauh lagi, pendukung OOP mengklaim bahwa OOP lebih mudah dipelajari bagi pemula dibanding dengan pendekatan sebelumnya, dan pendekatan OOP lebih mudah dikembangkan dan dirawat.

Pemrograman orientasi-objek menekankan konsep berikut:

  • kelas — kumpulan atas definisi data dan fungsi-fungsi dalam suatu unit untuk suatu tujuan tertentu. Sebagai contoh 'class of dog' adalah suatu unit yang terdiri atas definisi-definisi data dan fungsi-fungsi yang menunjuk pada berbagai macam perilaku/turunan dari anjing. Sebuah class adalah dasar dari modularitas dan struktur dalam pemrograman berorientasi object. Sebuah class secara tipikal sebaiknya dapat dikenali oleh seorang non-programmer sekalipun terkait dengan domain permasalahan yang ada, dan kode yang terdapat dalam sebuah class sebaiknya (relatif) bersifat mandiri dan independen (sebagaimana kode tersebut digunakan jika tidak menggunakan OOP). Dengan modularitas, struktur dari sebuah program akan terkait dengan aspek-aspek dalam masalah yang akan diselesaikan melalui program tersebut. Cara seperti ini akan menyederhanakan pemetaan dari masalah ke sebuah program ataupun sebaliknya.
  • Abstraksi - Kemampuan sebuah program untuk melewati aspek informasi yang diproses olehnya, yaitu kemampuan untuk memfokus pada inti. Setiap objek dalam sistem melayani sebagai model dari "pelaku" abstrak yang dapat melakukan kerja, laporan dan perubahan keadaannya, dan berkomunikasi dengan objek lainnya dalam sistem, tanpa mengungkapkan bagaimana kelebihan ini diterapkan. Proses, fungsi atau metode dapat juga dibuat abstrak, dan beberapa teknik digunakan untuk mengembangkan sebuah pengabstrakan.
  • Enkapsulasi - Memastikan pengguna sebuah objek tidak dapat mengganti keadaan dalam dari sebuah objek dengan cara yang tidak layak; hanya metode dalam objek tersebut yang diberi ijin untuk mengakses keadaannya. Setiap objek mengakses interface yang menyebutkan bagaimana objek lainnya dapat berinteraksi dengannya. Objek lainnya tidak akan mengetahui dan tergantung kepada representasi dalam objek tersebut.
  • Polimorfisme melalui pengiriman pesan. Tidak bergantung kepada pemanggilan subrutin, bahasa orientasi objek dapat mengirim pesan; metode tertentu yang berhubungan dengan sebuah pengiriman pesan tergantung kepada objek tertentu di mana pesa tersebut dikirim. Contohnya, bila sebuah burung menerima pesan "gerak cepat", dia akan menggerakan sayapnya dan terbang. Bila seekor singa menerima pesan yang sama, dia akan menggerakkan kakinya dan berlari. Keduanya menjawab sebuah pesan yang sama, namun yang sesuai dengan kemampuan hewan tersebut. Ini disebut polimorfisme karena sebuah variabel tungal dalam program dapat memegang berbagai jenis objek yang berbeda selagi program berjalan, dan teks program yang sama dapat memanggil beberapa metode yang berbeda di saat yang berbeda dalam pemanggilan yang sama. Hal ini berlawanan dengan bahasa fungsional yang mencapai polimorfisme melalui penggunaan fungsi kelas-pertama.
  • Inheritas- Mengatur polimorfisme dan enkapsulasi dengan mengijinkan objek didefinisikan dan diciptakan dengan jenis khusus dari objek yang sudah ada - objek-objek ini dapat membagi (dan memperluas) perilaku mereka tanpa haru mengimplementasi ulang perilaku tersebut (bahasa berbasis-objek tidak selalu memiliki inheritas.)
  • Dengan menggunakan OOP maka dalam melakukan pemecahan suatu masalah kita tidak melihat bagaimana cara menyelesaikan suatu masalah tersebut (terstruktur) tetapi objek-objek apa yang dapat melakukan pemecahan masalah tersebut. Sebagai contoh anggap kita memiliki sebuah departemen yang memiliki manager, sekretaris, petugas administrasi data dan lainnya. Misal manager tersebut ingin memperoleh data dari bag administrasi maka manager tersebut tidak harus mengambilnya langsung tetapi dapat menyuruh petugas bag administrasi untuk mengambilnya. Pada kasus tersebut seorang manager tidak harus mengetahui bagaimana cara mengambil data tersebut tetapi manager bisa mendapatkan data tersebut melalui objek petugas adminiistrasi. Jadi untuk menyelesaikan suatu masalah dengan kolaborasi antar objek-objek yang ada karena setiap objek memiliki deskripsi tugasnya sendiri.

Konstruktor dan Destruktor

Konstruktor adalah fungsi khusus anggota kelas yang otomatis dijalankan pada saat penciptaan objek (mendeklarasikan instance). Konstruktor tidak mempunyai tipe hasil, bahkan juga bukan bertipe void. Biasanya konstruktor dipakai untuk inisialisasi anggota data dan melakukan operasi lain seperti membuka file dan melakukan alokasi memori secara dinamis. Biasanya konstruktor tidak memiliki return value.

Konstruktor merupakan sebuah method yang digunakan untuk :

- - membuat objek dari suatu kelas

- - menginisialisasi nilai atribut yang dimiliki kelas

Destruktor adalah pasangan Konstruktor. Pada saat program menciptakan objek secara otomatis Konstruktor akan dijalankan. Biasanya dimaksudkan untuk memberi nilai awal variabel private. Fungsi Destruktor : untuk mendealokasikan memori dinamis yang diciptakan Konstruktor.


Referensi :

http://id.wikipedia.org

erizal.files.wordpress.com

Pencarian

Pencarian Sekuensial

“Sequential search atau Pencarian sekuensial” bisa disebut dengan pencarian linear yang merupakan model pencarian yang paling simpel dan sederhana banget deh yang dapat dilakukan terhadap suatu kumpulan data. Suatu tekhnik pencarian dalam array (1 dimensi) yang akan menelusuri semua elemen-elemen array dari awal sampai akhir, dimana data-data tidak perlu diurutkan terlebih dahulu. Keunggulan dari pencarian sekuensial ini adalah jika data yang dicari terletak di indeks array terdepan maka waktu dalam pencarian nya sangat cepat, dalam artian waktu yang minim sekali. Keburukannya adalah kalau jika data indeks array nya yang dicari paling belakang, maka waktu yang dicari tuh lama banget (maksimal). Algoritmanya juga sederhana.Selain itu, sumber data tidak perlu diurut terlebih dahulu sebelum dilakukan pencarian. Namun ada juga kekurangannya, yaitu jika data yang dicari berada pada baris paling akhir, maka waktu pencariannya akan cukup lama. Selain itu beban komputasi akan meningkat jika dilakukan pencarian pada sumber data yang cukup banyak.

Pencarian Biner

Sebuah algoritma pencarian biner (atau pemilahan biner) adalah sebuah teknik untuk menemukan nilai tertentu dalam sebuah larik (array) linear, dengan menghilangkan setengah data pada setiap langkah, dipakai secara luas tetapi tidak secara ekslusif dalam ilmu komputer. Sebuah pencarian biner mencari nilai tengah (median), melakukan sebuah pembandingan untuk menentukan apakah nilai yang dicari ada sebelum atau sesudahnya, kemudian mencari setengah sisanya dengan cara yang sama. Sebuah pencarian biner adalah salah satu contoh dari algoritma divide and conquer (atau lebih khusus algoritma decrease and conquer) dan sebuah pencarian dikotomi (lebih rinci di Algoritma pencarian).

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.

Referensi :

http://askopan1003.blogspot.com

http://id.wikipedia.org/wiki/Pencarian_biner

Pengurutan

Metode Penyisipan Langsung
Proses pengurutan dengan metode penyisipan langsung dapat dijelaskan sebagai berikut :
Data dicek satu per satu mulai dari yang kedua sampai dengan yang terakhir. Apabila ditemukan data yang lebih kecil daripada data sebelumnya, maka data tersebut disisipkan pada posisi yang sesuai. Akan lebih mudah apabila membayangkan pengurutan kartu. Pertama-tama anda meletakkan kartu-kartu tersebut di atas meja, kemudian melihatnya dari kiri ke kanan. Apabila kartu di sebelah kanan lebih kecil daripada kartu di sebelah kiri, maka ambil kartu tersebut dan sisipkan di tempat yang sesuai.

Metode penyisipan langsung dapat dibagi menjadi 2 bagian
– Bagian sebelah kiri data sudah terurut (tujuan)
– Bagian sebelah kanan data belum terurut (sumber)

Langkah-langkah :
1 : Baca array elemen yang akan diurutkan (n)
2 : Kerjakan langkah 3 sampai langkah 6 untuk i : 1 s/d n-1
3 : Tentukan elemen yang akan disisipkan (Temp = A [i] ; j = i-1;)
4 : Kerjakan langkah 5 selama temp (A [j] dan j >= 0;
5 : A [j+1]= A[j] ; j =j-1;
6 : Tempatkan elemen A [j+1] = Temp;
7 : Selesai

Metode Penyisipan Biner
Metode pengurutan dengan algoritma penyisipan biner (binary insertion sort) memperbaiki metode pengurutan dengan algoritma penyisipan langsung dengan melakukan proses perbandingan yang lebih sedikit sehingga proses pengurutan lebih cepat. Metode penyisipan biner melakukan proses perbandingan dengan membagi dua bagian data dari posisi 0 sampai dengani-1 yang disebut dengan bagian kiri dan kanan. Apabila data pada posisi kei berada pada jangkauan kiri maka proses perbandingan dilakukan hanya pada bagian kiri dan menggeser posisi sampai.

Metode Seleksi
Masukkan dinyatakan sebagai vektor misal vektor A (belum terurut), dan N (missal banyak elemen yang akan diurutkan). Keluaran adalah vektor A yang telah terurut.
Algoritma metode seleksi :
- langkah 0 : Baca vektor yang akan diurutkan (dalam program utama)
- langkah 1 : Kerjakan langkah 2 sampai 4 untuk i = 1 sampai N -1
- langkah 2 : Tentukan awal = i , kerjakan langkah 3 untuk j = i +1 sampai N
- langkah 3 : (Mencari data terkecil)
Tes : apakah A[awal] > A[j], jika ya maka ubah awal = j
- langkah 4 : Tukarkan nilai A[awal] dengan A[i]
- langkah 5 : selesai

Metode Shell
Metode ini dikembangkan oleh Donald L. Shell pada tahun 1959. Dalam metode ini jarak antara dua elemen yang dibandingkan dan ditukarkan tertentu. Secara singkat metode ini dijelaskan sebagai berikut. Pada langkah pertama, kita ambil elemen pertama dan kita bandingkan dengan elemen pada jarak tertentu dari elemen pertama tersebut. Kemudian elemen kedua kita bandingkan dengan elemen lain dengan jarak yang sama seperti diatas. Demikian seterusnya sampai seluruh elemen dibandingkan. Pada langkah kedua proses diulang dengan langkah yang lebih kecil, pada langkah ketiga jarak tersebut diperkecil lagi seluruh proses dihentikan jika jarak sudah sama dengan satu.

Referensi :
http://andika-thedarknight.blogspot.com/2008/10/metode-penyisipan-langsung-straight.html
http://www.scribd.com/doc/17512096/Praktikum-Struktur-Data-7
http://www.kurakuralincah.co.cc