Kamis, 01 Desember 2011

SISTEM MEMORI

I. System Memori
Sistem Memori ( Memori ) adalah komponen-komponen elektronik yang menyimpan perintah- perintah yang menunggu untuk di eksekusi oleh prosesor,data yang diperlukan oleh insruksi (perintah) tersebut dan hasil-hasil dari data yang diproses ( informasi ). Memori biasanya terdiri atas satu chip atau beberapa papan sirkuit lainnya dalam prosesor. Memori komputer bisa diibaratkan sebagai papan tulis, dimana setiap orang yang masuk kedalam ruangan bisa membaca dan memanfaatkan data yang ada dengan tanpa merubah susunan yang tersaji. Data yang diproses oleh komputer, sebenarnya masih tersimpan didalam memori, dan dalam hal ini komputer hanya membaca data dan kemudian memprosesnya. Satu kali data tersimpan didalam memori komputer, maka data tersebut akan tetap tinggal disitu selamanya. Setiap kali memori penuh, maka data yang ada bisa dihapus sebagian ataupun seluruhnya untuk diganti dengan data yang baru.
• Klasifikasi Memory
- Memory Utama
Merupakan media penyimpanan dalam bentuk array yang disusun word atau byte, kapasitas daya simpannya bisa jutaan susunan. Setiap word atau byte mempunyai alamat tersendiri. Data yang disimpan pada memori utama ini bersifat volatile, artinya data yang disimpan bersifat sementara dan dipertahankan oleh sumber-sumber listrik, apabila sumber listrik dimatikan maka datanya akan hilang.
a. RAM (Random Access Memory
* Ram diakses melalui alamat,
*Semua lokasi yang dapat dialamati dapat diakses secara acak (random),
*Membutuhkan waktu akses yang sama.
b. CAM (Content Address Memory)
*Memori diakses berdasarkan isi bukan alamat,
*Pencarian data dilakukan secara simultan dan parallel,
*CAM disebut juga memori asosiatif.
c. Cache
*Buffer berkecepatan tinggi yang digunakan untuk menyimpan data yang diakses pada saat itu dan data yang berdekatan dalam memori utama.
*Waktu akses memori cache lebihcepat5 –10 kali dibandingkan memori utama.
Implementasi Memory utama :
a. Stack
Merupakan struktur data tidak tetap yang kembali dan digunakan untuk menyimpan parameter yang dilalui alamat dalam subroutine call dan return, memanipulasi alamat serta operasi aritmatika.
b. Modular
* Dalam sistem modular RAM dipisah menjadi modul-modul yang berbeda yaitu MAR dan MBR.
* Penggunaan memori modular biasanya pada sistem pipeline dan prosesor array.
c. Virtual
Prinsip dasr memori virtual adalah mengalamati ruang penyimpanan logikal yang secara fisik lebih besar dari daripada ruang penyimpanan riil.


- Memory Pembantu
* Bersifat mom-volatile yaitu jika tidak ada listrik, maka isi memori tidak hilang.
* Tidak mempengaruhi langsung fungsi CPU.

a. Pita Magnetik
- Merupakan suatu lajur plastik tipis, lebar ½ inchi, yang dilapisi dengan medium perekaman magnetik .
- Biasa terbagi menjadi 7/9 track panjang pita.
- Kerapatan rekaman (bpi) yaitu 800,1600 dan 6250 bpi.
- Terdapat satu bit paritas untuk pendeteksian kesalahan .
b. Disk
- Merupakan sebuah lembaran platter.
- Terdiri atas sebuah kendali disk (interface) dan satu atau lebih disk (platter).
- Proses penulisan ke disk yaitu disk drive akan menimbulkan kemagnetan pada titik di atas permukaan disk yang secara langsung di bawah head.
- Proses pembacaan dan disk head diatur agar dapat mendeteksi perubahan arah kemagnetan.
c. Floopy Disk
- Merupakan lembaran datar yang tipis dan fleksibel.
- Hampiran sama dengan harddisk tetapi kapasitas penyimpanannya lebih rendah.
Organisasi disk yaitu :
1. Track : sejumlah lingkaran yang konsentris.
2. Sektor : pembagian permukaan disk secara belahan yang mempunyai ukuran yang sama.
3. Silinder : dibentuk oleh track-track yang berhubungan pada setiap permukaan.
• Design Memory
A. Kecepatan Memori Lawan Kecepatan CPU
- Awal tahun 1960 –1980, kecepatan memori dan CPU meningkat, namun rasio keseluruhan antara keduanya relatif.
- Pada era ini kecepatan memori biasanya kurang lebih 10 kali lebih lambat dari kecepatan CPU.
- CDC 6600, 76000, CRAY 1 dan CRAY X-MP untuk super komputer waktu akses memorinya 10 sampai 14 kali waktu siklus CPU
- VAX 11/780, 8600 dan 8700 untuk mini komputer waktu akses memorinya 4 sampai 7 kali siklus CPU.
- Pertengahan tahun 1980, kecepatan CPU jauh meningkat hingga 50 kali kecepatan memori, contoh CRAY
Keuntungan dari perubahan ini adalah :
- Memori besar umumnya memerlukan hardware khusus untuk mendeteksi dan mengoreksi kesalahan, yang menambah waktu akses memori efektif.
- CPU yang paling cepat merupakan pipelined
B. Ruang Alamat Memori
Semakin besar ruang alamat memori yang disediakan maka akan semakin baik namun harus diperhatikan pula bahwa dalam perubahan tersebut tidak harus merubah secar keseluruhan dan mendasar daripada arsitektur yang telah dibangun.
C. Keseimbangan Antara Kecepatan Dan Biaya
Sifat dari teknologi memori
1. Harga unitnya turun dengan sangat cepat, sedangkan kecepatannya secara perlahan meningkat.
2. Adanya berbagai kecepatan dan biaya dalam peralatan memori.

II. System Input / Output
• Modul I/O
- Interface dengan CPU dan Memori
- Interface kesatu atau lebih peripheral
• Fungsi Modul I/O
- Control dan timing
- Komunikasi CPU
- Device untuk komunikasi
- Data buffering
- Deteksi error
• Langkah-langkah penanganan I/O
- CPU mengecek status modul I/O device.
- I/O module mengirimkan statusnya.
- Jika ready, CPU meminta transfer data.
- I/O modul mengambil data dari device.
- I/O modul transfer data ke CPU dalam variasi output yang diinginkan.
• Metode pengaksesan I/O
1. Memori Mapped I/O
Piranti I/O dihubungkan sebagai lokasi memori virtual
sehingga port I/O tergantung memori utama.
Karakteristik :
- Port I/O menempati bagian tertentu pada bus Alamat, diakses seolah-olah lokasi memori.
- Piranti input menjadi bagian dari memori yang memberi data ke bus data.
- Piranti output menjadi bagian dari memori yang memiliki data di dalamnya.
2. I/O Mapped I/O
- Piranti I/O dihubgungkan sebagai lokasi terpisah dari lokasi memori, sehingga port I/O tidak tergantung pada keadaan memori utama.
- Karakteristik :
•Port I/O tidak tergantung memori utama
•Transfer informasi dibawah kendali sinyal control dengan instruksi input dan output.
•Operasi I/O tergantung sinyal kendali dari CPU.
•Jenis instruksi :
- Instruksi I/O mengaktifkan baris kendalinread/write pada port I/O.
- Instruksi memory mengaktifkan baris kendali read/write pada memori.

• Metode operasi system I/O
1. I/O Terprogram
CPU mengendalikan operasi I/O secara keseluruhan dengan menjalankan serangkaian instruksi I/O dengan suatu program tertentu.
2. I/O Interupsi
CPU akan bereaksi ketika suatu piranti mengeluarkan permintaan untuk pelayanan.
3. Direct Memory Access (DMA)
Metode transfer data secara langsung antara memori dan piranti tanpa pengawasasn dan pengendalian CPU.
• Transfer Data
- Format Transfer Data
a. Parallel : semua bit pada karakter dikirim secara berssamaan dalam batas waktu transmisi tertentu.
b. Serial : data dikirim secara berurutan dalam satu baris komunikasi tunggal, sehingga antara pengirim dan penerima harus membagi batas waktu pengiriman karakter menjadi beberapa sub interval pengiriman/penerimaan.
- Mode Transfer
a. Synchronous : Baris kendali dipakai untuk emsinkronkan waktu pada semua kejadian yang terjadi selama periode tertentu. Setiap piranti harus bereaksi dengan kecepatan yang sama pada periode yang diberikan CPU. Namun karena kecepatan piranti I/O yang bervariasi sedang data dikirim secara serial dan bergantian dalam periode yang sudah ditetapkan, maka kecepatan transfer di set pada piranti I/O dengan kecepatan terendah.
b. Asynchronous : Proses back-and-forth (pulang-pergi) dalam meneruskan sinyal kendali dari pengirim ke penerima. Tekniknya bernama handshaking dengan melakukan terlebih dahulu pengecekan validitas data yang akan transfer. Kelemahan : perlu banyak kendali. Kelebihan : memungkinkan penggunaan piranti I/O yang memiliki berbagai variasi kecepatan dalam sistem yang sama.
• Interfacing Piranti I/O
Defenisi : Suatu alat yang digunakan untuk menghubungkan suatu piranti dengan CPU melalui BUS.
Fungsi Umum : Mensinkronkan data transfer antara CPU dan piranti I/O
Fungsi Detail :
•Penyedia status piranti I/O bagi CPU
•Memiliki kemampuan interupsi / DMA
•Mampu me-transfer instruksi CPU ke piranti
•Mampu berfungsi sebagai buufer storage data transfer.
•Mampu melakukan pengujian kesamaan data.
•Mampu men-decode dan mgng-encode data.
• Sistem prosesor I/O
General Purpose komputer yang berisi sejumlah saluran DMA, CPU tersendiri, kumpulan intruksi dan menjalankannya secara paralel pada CPU utama.
Fungsinya adalah sebagai piranti front end yang menangani setiap aspek I/O khusus yang disebut I/O channel.




Referensi :
http://khaeroni.blogspot.com/2011/02/sistem-memori-dan-cache.html
http://echaiil.blogspot.com/2008/12/klasifikasi-memori.html
http://kambing.ui.ac.id/bebas/v06/Kuliah/SistemOperasi/BUKU/SistemOperasi-4.X-2/ch05.html
http://www.scribd.com/doc/34681618/7-Sistem-Input-Output

Jumat, 28 Oktober 2011

ARSITEKTUR SET INSTRUKSI

ARSITEKTUR SET INSTRUKSI
Set instruksi didefinisikan sebagai suatu aspek dalam arsitektur computer yang dapat dilihat oleh para pemrogram.
Dua bagian utama arsitektur komputer:
1. Instruction set architecture (ISA) / arsitektur set instruksi
ISA meliputi spesifikasi yang menentukan bagaimana programmer bahasa mesin akan berinteraksi oleh computer. ISA menentukan sifat komputasional computer.
2. Hardware system architecture (HSA) / arsitektur system hardware
HAS berkaitan dengan subsistem hardware utama computer (CPU, system memori dan IO). HSA mencakup desain logis dan organisasi arus data dari subsistem.
JENIS INSTRUKSI
- Data processing/pengoahan data : instruksi aritmetika dan logika.
- Data storage/penyimpanan data : instruksi-instruksi memori.
- Data movement/perpindahan data : instruksi I/O.
- Control/control : instruksi pemeriksaan dan percabangan.
Instruksi aritmetika memiliki kemampuan untuk mengolah data numeric. Sedangkan instruksi logika beroperasi pada bit-bit word sebagai bit, bukan sebagai bilangan. Operasi-operasi tersebut dilakukan teutama untuk data di register CPU.
Instruksi-instruksi memori diperlukan untuk memindah data yang terdapat di memori dan register.
Instruksi-instruksi I/O diperlukan untuk memindahkan program dan data kedalam memori dan mengembalikan hasil komputasi kepada pengguna.
TEKNIK PENGALAMATAN
Ada 3 teknik dasar untuk pengalamatan, yaitu:
1. Pemetaan langsung (direct mapping), terdiri dari dua cara yakni Pengalamatan Mutlak (absolute addressing) dan Pengalamatan relatif (relative addressing).
- Pengalamatan Mutlak
Untuk teknik pengalamatan ‘alamat mutlak’ ini, tidak terlalu mempermasalahkan kunci atribut karena diminta langsung menuliskan di mana alamat record yang akan di masukkan. Jika kita menggunakan hard disk atau magnetic drum, ada dua cara dalam menentukan alamat memorinya, yaitu (1) cylinder addressing dan (2) sector addressing. Jika kita menggunakan cylinder addressing, maka kita harus menetapkan nomor-nomor dari silinder (cylinder), permukaan (surface), dan record, sedangkan bila kita menggunakan sector addressing, maka kita harus menetapkan nomor-nomor dari sektor (sector), lintasan (track), dan permukaan (surface). Teknik ini mudah dalam pemetaan (pemberian) alamat memorinya. Sulitnya pada pengambilan (retrieve) data kembali, jika data yang kita masukkan banyak, kita bisa lupa di mana alamat record tertentu.
-pengalamatan relatif
Teknik ini menjadikan atribut kunci sebagai alamat memorinya, jadi, data dari NIM dijadikan bertipe numeric(integer) dan dijadikan alamat dari record yang bersangkutan. Cara ini memang sangat efektif untuk menemukan kembali record yang sudah disimpan, tetapi sangat boros penggunaan memorinya. Tentu alamat memori mulai dari 1 hingga alamat ke sekian juta tidak digunakan karena nilai dari NIM tidak ada yang kecil. Pelajari keuntungan dan kerugian lainnya.Teknik ini termasuk dalam katagori address space dependent.
2. Pencarian Tabel (directory look-up)
Teknik ini dilakukan dengan cara mengambil seluruh kunci atribut dan alamat memori yang ada dan dimasukkan ke dalam tabel tersendiri. Jadi tabel itu (misal disebut dengan tabel INDEX) hanya berisi kunci atribut (misalkan NIM) yang telah disorting (diurut) dan alamat memorinya. Jadi, sewaktu dilakukan pencarian data, tabel yang pertama dibaca adalah tabel INDEX itu, setelah ditemukan atribut kuncinya, maka data alamat yang ada di sana digunakan untuk meraih alamat record dari data (berkas/ file/ tabel) yang sebenarnya. Pencarian yang dilakukan di tabel INDEX akan lebih cepat dilakukan dengan teknik pencarian melalui binary search (dibagi dua-dua, ada di mata kuliah Struktur dan Organisasi Data 2 kelak) ketimbang dilakukan secara sequential. Nilai key field (kunci atribut) bersifat address space independent (tidak terpengaruh terhadap perubahan organisasi file-nya), yang berubah hanyalah alamat yang ada di INDEX-nya.
3. Kalkulasi (calculating).
Kalau pada teknik pencarian tabel kita harus menyediakan ruang memori untuk menyimpan tabel INDEX-nya, maka pada teknik ini tidak diperlukan hal itu. Yang dilakukan di sini adalah membuat hitungan sedemikian rupa sehingga dengan memasukkan kunci atribut record-nya, alamatnya sudah dapat diketahui. Tinggal masalahnya, bagaimana membuat hitungan dari kunci atribut itu sehingga hasilnya bisa efisien (dalam penggunaan memori) dan tidak berbenturan nilainya (menggunakan alamat yang sama).
DESAIN SET INSTRUKSI
Desain set instruksi merupakan masalah yang sangat komplek yang melibatkan banyak aspek, diantaranya adalah :
1. kelengkapan set instruksi
2. ortogonalitas (sifat indepedensi instruksi)
3. kompatibilitas :
- source code compatibility
- object code compatibility
Selain ketiga aspek tersebut juga melibatkan hal-hal sebagai berikut :
a. Operation Repertoire: Berapa banyak dan operasi apa saja yang disediakan, dan berapa sulit
operasinya
b. Data Types : tipe/jenis data yang dapat diolah.
c. Instruction Format : panjangnya, banyaknya alamat, dsb.
d. Register : Banyaknya register yang dapat digunakan .
e.Addressing : Mode pengalamatan untuk operand.


CPU
Central processing unit (CPU) adalah bagian dari sebuah komputer sistem yang melaksanakan instruksi dari program komputer , untuk melakukan aritmatika, logis, dan dasar input / output dari sistem operasi.
PENGERTIAN BUS
Pada motherboard terdapat saluran-saluran penghubung yang menghubungkan satu komponen dengan komponen lainnya. Saluran penghubung ini berupa garis-garis yang tercetak pada PCB motherboard. Melalui saluran-saluran inilah data, informasi, dan instruksi-instruksi yang diberikan pada komputer ditransfer/melintas dari komponen satu ke komponen lainnya. Data dan instruksi tersebut diangkut dalam wujud sinyal-sinyal elektronis yang mempunyai makna tertentu. Sekelompok saluran yang mempunyai fungsi yang sama disebut jalur atau bus. Saluran-saluran penghubung tadi disebut pula dengan istikah konduktor.
ORGANISASI BUS
Organsiasi bus merupakan sekumpulan dari bagian-bagian bus dimana tersusun menjadi satu,yang memungkinkan suatu bus dapat bekerja dan dapat dilakukan. Adapun bagian tersebut yaitu seperti Pengertian jalur tidak sama dengan saluran. Dalam hal ini, jalur adalah kata jamak dari saluran. Pahamilah penjelasan berikut ini: Jalur data (data bus) yang terdiri dari beberapa (sejumlah) saluran data, jalur adres (address bus) terdiri dari beberapa (sejumlah) saluran adreess dan jalur kontrol (control bus) terdiri dari beberapa (sejumlah) saluran control.

STRUKTUR BUS
Sebuah bus biasanya terdiri atas beberapa saluran. Sebagai contoh bus data terdiri atas 8 saluran sehingga dalam satu waktu dapat mentransfer data 8 bit. Secara umum fungsi saluran bus dikatagorikan dalam tiga bagian, yaitu saluran data, saluran alamat dan saluran control. Saluran data(data bus) adalah lintasan bagi perpindahan data antar modul. Secara kolektif lintasan ini disebut bus data. Umumnya jumlah saluran terkait dengan panjang word, misalnya 8, 16, 32 saluran dengan tujuan agar mentransfer word dalam sekali waktu. Jumlah saluran dalam bus data dikatakan lebar bus, dengan satuan bit, misal lebar bus 16 bit.
KONEKSI BUS
Bus merupakan lintasan komunikasi yang menghubungkan dua atau lebih komponen komputer. Sifat penting dan merupakan syarat utama bus adalah media transmisi yang dapat digunakan bersama oleh sejumlah perangkat yang terhubung apadanya.
Karena digunakan bersama, diperlukan aturan main agar tidak terjadi tabrakan data atau kerusakan data yang ditransmisikan. Walaupun digunakan bersama namun dalam satu waktu hanya ada sebuah perangkat yang dapat menggunakan bus.
TIPE BUS
Berdasar jenis busnya, bus dibedakan menjadi bus yang khusus menyalurkan data tertentu, misalnya paket data saja, atau alamat saja, jenis ini disebut dedicated bus. Namun apabila bus dilalukan informasi yang berbeda baik data, alamat maupun sinyal kontrol dengan metode mulipleks data maka bus ini disebut multiplexed bus.
Keuntungan mulitiplexed bus adalah hanya memerlukan saluran sedikit sehingga dapat menghemat tempat, namun kerugiannya adalah kecepatan transfer data menurun dan diperlukan mekanisme yang komplek untuk mengurai data yang telah dimulitipleks.
Saat ini yang umum, bus didedikasikan untuk tiga macam, yaitu bus data, bus alamat dan bus
kontrol.


ALU (Aritmetik Logic Unit)
adalah sebuah sirkuit digital yang melakukan aritmatika dan logika operasi. ALU adalah sebuah blok bangunan fundamental dari central processing unit komputer, dan bahkan yang paling sederhana mikroprosesor mengandung satu untuk tujuan seperti timer mempertahankan. Prosesor ditemukan di dalam CPU modern dan unit pengolahan grafis ( GPU ) mengakomodasi ALUS sangat kuat dan sangat kompleks, sebuah komponen tunggal mungkin berisi sejumlah alus.

- Fixed Point
adalah tipe data yang nyata untuk nomor yang telah tetap jumlah digit setelah (dan kadang-kadang juga sebelum) titik radix (setelah titik desimal dalam notasi desimal bahasa Inggris '.'). Representasi fixed-point nomor dapat dibandingkan dengan (dan lebih menuntut komputasi) lebih rumit floating point representasi nomor.
Fixed-point nomor berguna untuk mewakili nilai-nilai pecahan, biasanya dalam basis 2 atau basis 10, ketika menjalankan prosesor tidak memiliki unit floating point (FPU) atau jika fixed-point menyediakan peningkatan kinerja atau akurasi untuk aplikasi di tangan. Paling rendah-biaya tertanam mikroprosesor dan mikrokontroler tidak memiliki FPU.

- Floating Point
floating point menjelaskan metode mewakili bilangan real dalam cara yang dapat mendukung berbagai nilai. Nomor, pada umumnya, mewakili sekitar untuk tetap jumlah digit yang signifikan dan ditingkatkan menggunakan eksponen . Dasar untuk scaling biasanya 2, 10 atau 16. Jumlah yang khas yang dapat diwakili tepat adalah dalam bentuk:
Signifikan digit × basis eksponen

Floating point merujuk pada fakta bahwa titik radix (titik desimal, atau, lebih umum di komputer, titik biner) dapat "mengambang", yaitu, dapat ditempatkan di mana saja relatif terhadap angka signifikan dari nomor tersebut. Posisi ini ditunjukkan secara terpisah dalam representasi internal, dan floating-point sehingga representasi dapat dianggap sebagai realisasi komputer notasi ilmiah.

CU (Control Unit)
adalah salah satu bagian dari CPU yang bertugas untuk memberikan arahan/kendali/ kontrol terhadap operasi yang dilakukan di bagian ALU (Arithmetic Logical Unit) di dalam CPU tersebut. Output dari CU ini akan mengatur aktivitas dari bagian lainnya dari perangkat CPU tersebut.
Pada awal-awal desain komputer, CU diimplementasikan sebagai ad-hoc logic yang susah untuk didesain. Sekarang, CU diimplementasikan sebagai sebuah microprogram yang disimpan di dalam tempat penyimpanan kontrol (control store). Beberapa word dari microprogram dipilih oleh microsequencer dan bit yang datang dari word-word tersebut akan secara langsung mengontrol bagian-bagian berbeda dari perangkat tersebut, termasuk di antaranya adalah register, ALU, register instruksi, bus dan peralatan input/output di luar chip. Pada komputer modern, setiap subsistem ini telah memiliki kontrolernya masing-masing, dengan CU sebagai pemantaunya (supervisor).

REGISTER
Adalah memori yang kecil pada computer 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.

- Set Register
Prosesor memiliki 16 register 16-bit, meskipun hanya 12 dari mereka adalah tujuan yang benar-benar umum. Empat pertama telah mendedikasikan menggunakan:
• r0 (alias PC) adalah program counter. Anda bisa melompat dengan menentukan r0, dan konstanta yang diambil langsung dari aliran instruksi menggunakan pasca-kenaikan mode pengalamatan r0. PC selalu bahkan.
• r1 (alias SP) adalah stack pointer. Ini digunakan oleh panggilan dan instruksi dorong, dan dengan penanganan interupsi. Hanya ada satu stack pointer; MSP430 tidak memiliki apa pun yang menyerupai mode supervisor. Pointer stack selalu bahkan; Tidak jelas apakah LSB bahkan diimplementasikan.
• r2 (alias SR) adalah register status.
• r3 ini didesain untuk 0. Jika ditetapkan sebagai sumber, nilainya adalah 0. Jika ditetapkan sebagai tujuan, nilai tersebut akan dibuang.

- Control Register
Adalah prosesor yang mengubah atau mengontrol CPU atau perangkat digital lainnya. Tugas dari control register adalah untuk mengontrol setiap alamat yang ada di CPU dan untuk switching mode pengalamatan.



Reference :

http://www.scribd.com/doc/34681874/2-Set-Instruksi
http://endahajah.wordpress.com/2009/03/31/hello-world/
http://id.wikipedia.org/wiki/Set_instruksi
http://gpinkom.wordpress.com/2008/06/03/pengertian-bus-bit-dan-byte/
http://www.scribd.com/doc/34680928/Bab-7-Sistem-Bus-Organisasi-Komputer

Selasa, 04 Oktober 2011

Organisasi dan Arsitektur Komputer

Pendahuluan
Desain komputer adalah seni menghasilkan komputer menurut spesifIkasi biaya dan kinerja yang berdaya saing. Arsitektur komputer adalah seni membuat spesifikasi teknologi yang berlaku sepanjang beberapa generasi. Arsitektur computer harus melihat perkembangan untuk masa kedepan dan memvisualisasikan dengan teknologi masa depan, agar dapat menciptakan mesin atau computer yang dapat mengikuti perubaahan teknologi dengan baik. Maka arsitektur computer akan berkembang dengan perlahan dan dengan tersusun yang rapi, yang kemudian akan terbentuk pada beberapa tahun kemudian.
Evolusi Arsitektur
Computer adalah alat bantu untuk penghitungan yang kompleks. Computer selalu berkembang dari tahun ke tahun atau mengalami perubahan (evolusi). Dari computer generasi pertama yang masih menggunakan tiub vakum. Yang ukurannya masih sangat besar dan ketidaktepatannya dalam memproses data,maka computer di kembangkan lagi pada tahun 1959 – 1964 (computer generasi kedua). Pada generasi kedua ini computer menggunakan transistor, karena transistor mempunyai beberapa kelebihan dibandingkan tiub vakum. Pada computer generasi kedua ini bahasa yang digunakan adalah bahasa perhimpunan atau singkatan huruf yang dipanggil mnemonics. Dan bahasa yang dipakai pada computer generasi kedua tidak begitu dimengerti oleh mesin, maka para arsitektur computer merancang computer dengan spesifik dan mudah dimengerti oleh mesin. Pada tahun 1965 – 1970 (computer generasi ketiga) muncullah IC (integrated circuit). IC adalah satu rangkaian litar elektronik yang lengkap dalam satu cip silikon yang kecil. IC mulai digunakan pada tahun 1965 dan IC ini dapat menggantikan satu papan litar yang penuh dengan transistor-transistor. Dan pada tahun 1970 – sekarang (computer generasi keempat) muncul suatu mikroprosesor. Mikroprosesor merupakan evolusi dari cip IC, dimana mikroprosesor merupakan rangkaian–rangkaian IC didalam cip silicon yang kecil. Oleh karena itu, komputer masa kini adalah 100 kali ganda lebih kecil daripada komputer generasi pertama, dan satu cip pemproses mikro adalah lebih berpotensi dan lebih hebat daripada sebuah computer ENIAC (komputer komersil pertama). Pemproses mikro adalah asas bagi pembinaan dan rekabentuk komputer masa kini.
Klasifikasi Arsitektur
Mesin Von neuman :
1. Mempunyai subsistem hardware dasar yaitu sebuah CPU, sebuah memori dan sebuah I/O system.
2. Merupakan stored-program computer.
3. Menjalankan instruksi secara berurutan.
4. Mempunyai jalur (path) bus antara memori dan CPU.
Mesin Non-Von Neumann :
Pada tahun 1966, Flyyn mengklasifikasikan arsitektur komputer berdasarkan sifatnya yaitu :
1. Jumlah prosesor.
2. Jumlah program yang dapat dijalankan.
3. Struktur memori.
Kualitas Arsitektur Komputer
Kualitas arsitektur computer tidak mudah diukur, karena suatu arsitektur yang baik untuk satu aplikasi mungkin saja belum baik untuk aplikasi yang lain dan juga sebaliknya. Maka Ada enam atribut mutu arsitektur.
1. Generalitas
Adalah ukuran besarnya jangkauan aplikasi yang bias cocok dengan arsitektur. Contoh : computer yang terutama digunakan untuk aplikasi ilmiah dan teknik menggunakan aritmetik dan computer yang digunakan untuk aplikasi bisnis dengan menggunakan aritmetik decimal. Didtem umum memnerikan dua jenis aritmetik.
2. Daya terap (applicability)
adalah pemanfaatan arsitektur untuk penggunaan yang telah direncanakannya. Computer yang dirancang untuk satu dari dua area aplikasi utama. Contohnya : aplikasi ilmiah dan teknis dan aplikasi komersil biasa.
3. Efisiensi
Adalah ukuran rata-rata jumlah hardware dalam computer yang selalu sibuk selama penggunaannya biasa. Arsitektur yang efisien memungkinkan namun tidak memungkinkan terjadinya implementasi yang efisien.
4. Kemudahan penggunaan arsitektur
Adalah ukuran kesederhanan bagi programmer untuk mengembangkan atau membuat software untuk arsitektur tersebut.
5. Daya terap arsitektur
adalah ukuran kemudahan bagi perancang untuk mengimplementasikan computer dalam jangkauan yang luas. Lebih spesifik arsitekturnya maka akan lebih sulit lagi untuk membuat mesin yang berbeda ukurannya dan kinerjanya.
6. Daya kembang (expandability)
adalah ukuran kemudahan bagi perancang untuk meningkatkan kemampuan arsitekturnya.
Factor Keberhasilan
Ada empat ukuran pokok yang menentukan keberhasilan arsitektur, yaitu manfaat arsitekturalnya (architectural merit) :
1. Daya terap, Sebaiknya arsitektur ditujukan untuk aplikasi yang telah ditentukan.
2. Daya tempa, Bila arsitektur lebih mudah membangun sistem yang kecil, maka ia akan lebih baile.
3. Daya kembang, Lebih besar daya kembang arsitektur dalam daya komputasi, ukuran memori, kapasitas I/O, dan jumlah prosesor, maka ia kan lebih baile.
4. Kompatibilitas (daya serasi-pasang).
Struktur Dasar Komputer dan Organisasi Komputer
1. Unit Masukan (Input Unit)
Berfungsi untuk menerima masukan (input) kemudian membacanya dan diteruskan ke memori/penyimpanan.
2. Unit Kontrol (Control Unit)
Berfungsi untuk melaksanakan tugas pengawasan dan pengendalian seluruh system computer.
3. Unit logika dan Aritmatika (arithmetic and Logic Unit)
Berfungsi untuk melaksanakan perhitungan atau aritmatika dan logika. Dapat juga berfungsi sebagai penyatuan data, pemindahan data, pemilihan data dan membandingkan data, sehingga ALU juga merupakan bagian inti dari suatu system computer.
4. Uniit Memori/Penyimpanan (Memory/Storage Unit)
Berfungsi untuk menampung data atau program yang diterima dari unit masukan sebelum diproses oleh CPU dan juga menerima data setelah diproses oleh CPU yang selanjutnya diteruskan ke unit keluaran.
5. Unit Keluaran (Output Unit)
Berfungsi untuk menrima hasil pengolahan data dari CPU melalui memori.



Referensi :
http://www.scribd.com/doc/53542990/ARSITEKTUR-EVOLUSI-KOMPUTER
http://liffanza.wordpress.com/2011/04/21/evolusi-dan-kinerja-komputer/
http://www.scribd.com/doc/53542990/ARSITEKTUR-EVOLUSI-KOMPUTER
http://rikyaldriasblogspotcom.blogspot.com/2010/11/faktor-yang-mempengaruhi-keberhasilan.html
http://radmarssy.wordpress.com/2007/02/07/struktur-dasar-komputer/
http://nextlevel.com.sg/article/191

Minggu, 15 Mei 2011

3 Konsep Dasar yang Mendukung PBO

Pemrograman Berorientasi objek (PBO) (Object Orientation Programming(OOP)) merupakan konsep pemrograman yang membagi program menjadi objek-objek yang nantinya dapat terhubung atau saling berinteraksi satu sama yang lainnya.
OOP memiliki 3 dasar dalam pemrogramannya, yaitu:

1. Inheritance (pewarisan) merupakan proses pewarisan data dan method dari kelas induk(Super Class) ke kelas anak(Sub Class). Dalam inheritance terdapat istilah overriding dan overload, apa itu? cari sendiri!! hehe. overriding itu kemampuan subClass untuk memodifikasi atau meredefinisi data atau method dari superClass. proses ini nantinya akan mengakibatkan kepada kedua kelas; subClass dan superClass. kalo overloding itu kemampuan dalam membuat dua atau lebih method dengan nama yang sama dalam satu kelas, namun memiliki jumlah parameter atau tipe argumentnya berbeda.
2. Encapsulation(Pembungkusan) merupakan cara "membungkus" data dan method yang menyusun suatu kelas sehingga kelas dapat dipandang sebagai suatu modul dan cara bagaiman menyembunyikannya dari luar (information hiding). Dalam OOP, enkapsulasi sangat penting untuk keamanan serta menghindari kesalaham permrograman,
3. Polymorphism, nah istilah satu ini dapat diartikan sebagai banyak bentuk. Penerapan polymorphism ini dilakukan dengan menggunakan nama yang sama, namun mempunyai tingkah laku (behavior) yang berbeda sehingga listing code implementasinyapun berbeda.

http://www.wilantara.com/pemrograman/22-pemrograman-berorientasi-objek.html

Pemrograman Berorientasi objek

1. Apa itu 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.

2. Konstruktur dan Destruktur
*. Konstruktur adalah fungsi khusus anggota kelas yang otomatis dijalankan pada saat penciptaan objek (mendeklarasikan instancea). Konstruktur ditandai dengan namanya, yaitu sama dengan nama kelas. Konstruktur tidak mempunyai tipe hasil (return value). Biasanya konstruktur dipakai untuk inisialisai anggota data dan melakukan alokasi memori secara dinamis. Meskipun konstruktot tidak harus ada dalam kelas, tetappi jika diperlukan konstruktor dapat lebih dari satu.
Konstruktor adalah fungsi anggota yang mempunyai nama yang sam dengan nama kelas. Kegunaannya :
1. Mengalokasikan ruang bagi sebuah objek
2. Memberkan nilai awal terhadap anggota data suatu objek
3. Membentuk tugas-tugas lainnya
contoh:


*. Destruktur adalah pasangan konstruktur. Pada saat program membuat objek maka secara otomatis konstruktor akan dijalankan, yang biasanya dimaksudkan nuntuk memberi nilai awal variabel private. Sejalan dengan itu, C++ menyediakan fungsi destruktor (penghancur atau pelenyap) yang secara otomatis akan dijalankan pada saat berakhirnya objek. Setiap kelas mempunyai tepat satu destruktor. Jika kita mendeklarasian sebuah destruktor dalam sebuah kelas, maka destruktor akan deciptakan sendiri oleh compiler C++. Fungsi destruktor itu sendiri adalah untuk mendealokasikan memori dinamis yang diciptakan konstruktor. Destruktor adalah fungsi anggota yang mempunyai nama yang sama dengan nama kelas ditambah symbol tilde (~) didepannya.
contoh :



reference : http://id.wikipedia.org/wiki/Pemrograman_berorientasi_objek

Pencarian

1. 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.

Biar kalian lebih paham secara konsep, penjelasannya adalah sebagai berikut :
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).

Terdapat L yang merupakan larik yang berisi n buah data ( L[0],L[1]…….L[n-1]) dan k adalah data yang akan dicari. Pencarian dilakukan untuk menemukan L[i] = k dengan i adalah bilangan indeks terkecil yang memenuhi kondisi 0<= k <=n-1. Tentu saja bahwa data yang di cari tidak ditemukan. Jika misalnya terdapat angka 4, maka ditulis ada, sedangkan jika dimunculkan angka 6, namun angka 6 tidak ada maka akan muncul tulisan tidak ada. Algoritma Pada dasarnya, algoritma pencarian ini adalah proses membandingkan setiap elemen larik satu per satu secara beruntun sampai seluruh elemen diperiksa. program pencarian; uses crt; procedure seq_search; var L: array[1..5] of integer; bil,i: integer; begin write('Angka yang dicari= '); readln(bil); L[1]:=1; L[2]:=3; L[3]:=5; L[4]:=7; L[5]:= 9; i:=1; while (i<5) and (L[i] <> bil) do begin
i:=i+1;
end;
if (L[i]=bil) then
writeln('Ditemukan pada elemen larik ke-',i)
else
writeln('Tidak ditemukan!');
end;
begin
clrscr;
seq_search;
readkey;
end.

2.Pencarian Biner
Salah satu syarat agar pencarian biner dapat dilakukan adalah data sudah dalam
keadaan urut. Dengan kata lain, apabila data belum dalam keadaan urut, pencarian biner
tidak dapat dilakukan. Dalam kehidupan sehari-hari, sebenarnya kita juga sering
menggunakan pencarian biner. Misalnya saat ingin mencari suatu kata dalam kamus
Prinsip dari pencarian biner dapat dijelaskan sebagai berikut : mula-mula diambil
posisi awal 0 dan posisi akhir = N - 1, kemudian dicari posisi data tengah dengan rumus
(posisi awal + posisi akhir) / 2. Kemudian data yang dicari dibandingkan dengan data
tengah. Jika lebih kecil, proses dilakukan kembali tetapi posisi akhir dianggap sama
dengan posisi tengah –1. Jika lebih besar, porses dilakukan kembali tetapi posisi awal
dianggap sama dengan posisi tengah + 1. Demikian seterusnya sampai data tengah
sama dengan yang dicari.
Untuk lebih jelasnya perhatikan contoh berikut. Misalnya ingin mencari data 17
pada sekumpulan data berikut :
3 9 11 12 15 17 20 23 31 35
awal tengah akhir
Mula-mula dicari data tengah, dengan rumus (0 + 9) / 2 = 4. Berarti data tengah
adalah data ke-4, yaitu 15. Data yang dicari, yaitu 17, dibandingkan dengan data tengah
ini. Karena 17 > 15, berarti proses dilanjutkan tetapi kali ini posisi awal dianggap sama
dengan posisi tengah + 1 atau 5.
3 9 11 12 15 17 20 23 31 35
Awal tengah akhir
Data tengah yang baru didapat dengan rumus (5 + 9) / 2 = 7. Berarti data tengah
yang baru adalah data ke-7, yaitu 23. Data yang dicari yaitu 17 dibandingkan dengan
data tenah ini. Karena 17 < 23, berarti proses dilanjukkan tetapi kali ini posisi akhir dianggap sama dengan posisi tengah – 1 atau 6. 3 9 11 12 15 17 20 23 31 35 Awal tengah akhir Data tengah yang baru didapat dengan rumus (5 + 6) / 2 = 5. Berarti data tengah yang baru adalah data ke-5, yaitu 17. data yang dicari dibandingkan dengan data tengah ini dan ternyata sama. Jadi data ditemukan pada indeks ke-5. Pencarian biner ini akan berakhir jika data ditemukan atau posisi awal lebih besar daripada posisi akhir. Jika posisi sudah lebih besar daripada posisi akhir berarti data tidak ditemukan. Untuk lebih jelasnya perhatikan contoh pencarian data 16 pada data diatas. Prosesnya hampir sama dengan pencarian data 17. Tetapi setelah posisi awal 5 dan posisi akhir 6, data tidak ditemukan dan 16 < 17, maka posisi akhir menjadi posisi tengah – 1 atau = 4 sedangkan posisi awal = 5. 3 9 11 12 15 17 20 23 31 35 akhir awal Disini dapat dilihat bahwa posisi awal lebih besar daripada posisi akhir, yang artinya data tidak ditemukan. Algoritma pencarian biner dapat dituliskan sebagai berikut : 1 L ← 0 2 R ← N - 1 3 ketemu ← false 4 Selama (L <= R) dan (tidak ketemu) kerjakan baris 5 sampai dengan 8 5 m ← (L + R) / 2 6 Jika (Data[m] = x) maka ketemu ← true 7 Jika (x < Data[m]) maka R ← m – 1 8 Jika (x > Data[m]) maka L ← m + 1
9 Jika (ketemu) maka m adalah indeks dari data yang dicari, jika tidak data tidak
ditemukan
Di bawah ini merupakan fungsi untuk mencari data menggunakan pencarian biner.
int BinarySearch(int x)
{
int L = 0, R = Max-1, m;
bool ketemu = false;
while((L <= R) && (!ketemu))
{
m = (L + R) / 2;
if(Data[m] == x)
ketemu = true;
else if (x < data[m])
R = m - 1;
else
L = m + 1;
}
if(ketemu)
return m;
else
return -1;
}
Program 8.2 Fungsi Pencarian Data dengan Metode Biner
Fungsi diatas akan mengembalikan indeks dari data yang dicari. Apabila data
tidak ditemukan maka fungsi diatas akan mengembalikan nilai –1.
Jumlah pembandingan minimum pada pencarian biner adalah 1 kali, yaitu apabila
data yang dicari tepat berada di tengah-tengah. Jumlah pembandingan maksimum yang
dilakukan dengan pencarian biner dapat dicari menggunakan rumus logaritma, yaitu :
C = 2log(N)


refernce : http://informatika-hery.blogspot.com/2010/10/binary-search-pencarian-biner.html

pengurutan

1. Metode penyisipan langsung (Straight Insertion Sort)
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.
Algoritma penyisipan langsung dapat dituliskan sebagai berikut :
1. i = 1
2. selama (i < N) kerjakan baris 3 sampai dengan 9 3. x = Data[i] 4. j = i – 1 5. selama (x < Data[j]) kerjakan baris 6 dan 7 6. Data[j + 1] = Data[j] 7. j = j – 1 8. Data[j+1] = x 9. i = i + 1 Di bawah ini merupakan prosedur yang menggunakan metode penyisipan langsung: void StraighInsertSort() { int i, j, x; for(i=1; i< Data[j]) { Data[j+1] = Data[j]; j--; } Data[j+1] = x; } } 2. Metode Penyisipan Biner (Binary Insertion Sort) Metode ini merupakan pengembangan dari metode penyisipan langsung. Dengan cara penyisipan langsung, perbandingan selalu dimulai dari elemen pertama (data ke-0), sehingga untuk menyisipkan elemen ke i kita harus melakukan perbandingan sebanyak i- 1 kali. Ide dari metode ini didasarkan pada kenyataan bahwa pada saat menggeser data ke-i, data ke 0 s/d i-1 sebenarnya sudah dalam keadaan terurut. Algoritma penyisipan biner dapat dituliskan sebagai berikut : 1. i = 1 2. selama (i < N) kerjakan baris 3 sampai dengan 14 3. x = Data[i] 4. l = 0 5. r = i – 1 6. selama (l<=r) kerjakan baris 7 dan 8 7. m = (l + r) / 2 8. jika (x < Data[m]) maka r = m – 1, jika tidak l = m + 1 9. j = i – 1 10. selama ( j >=l) kerjakan baris 11 dan 12
11. Data[j+1] = Data[j]
12. j = j – 1
13. Data[l] = x
14. I = i + 1

Di bawah ini merupakan prosedur yang menggunakan metode penyisipan biner:

void BinaryInsertSort()
{
int i, j, l, r, m, x;
for (i=1; i<= r){ m = (l + r) / 2; if(x < Data[m]) r = m - 1; else l = m + 1; } for(j=i-1; j>=l; j--)
Data[j+1] = Data[j];
Data[l]=x;
}
}

3. Metode Seleksi (Selection Sort)
Metode seleksi melakukan pengurutan dengan cara mencari data yang terkecil kemudian menukarkannya dengan data yang digunakan sebagai acuan atau sering dinamakan pivot. Proses pengurutan dengan metode seleksi dapat dijelaskan sebagai berikut :

Langkah pertama dicari data terkecil dari data pertama sampai data terakhir. Kemudian data terkecil ditukar dengan data pertama. Dengan demikian, data pertama sekarang mempunyai nilai paling kecil dibanding data yang lain. Langkah kedua, data terkecil kita cari mulai dari data kedua sampai terakhir. Data terkecil yang kita peroleh ditukar dengan data kedua dan demikian seterusnya sampai semua elemen dalam keadaan terurutkan.

Algoritma seleksi dapat dituliskan sebagai berikut :

1. i = 0
2. selama (i < N-1) kerjakan baris 3 sampai dengan 9 3. k = i 4. j = i + 1 5. Selama (j < N) kerjakan baris 6 dan 7 6. Jika (Data[k] > Data[j]) maka k = j
7. j = j + 1
8. Tukar Data[i] dengan Data[k]
9. i = i + 1

Di bawah ini merupakan prosedur yang menggunakan metode seleksi:

void SelectionSort()
{
int i, j, k;
for(i=0; i Data[j])
k = j;
Tukar(&Data[i], &Data[k]);
}
}

4. Metode Shell (Shell Sort)
Metode ini disebut juga dengan metode pertambahan menurun (diminishing increment). Metode ini dikembangkan oleh Donald L. Shell pada tahun 1959, sehingga sering disebut dengan Metode Shell Sort. Metode ini mengurutkan data dengan cara membandingkan suatu data dengan data lain yang memiliki jarak tertentu, kemudian dilakukan penukaran bila diperlukan. Proses pengurutan dengan metode Shell dapat dijelaskan sebagai berikut :
Pertama-tama adalah menentukan jarak mula-mula dari data yang akan dibandingkan, yaitu N / 2. Data pertama dibandingkan dengan data dengan jarak N / 2. Apabila data pertama lebih besar dari data ke N / 2 tersebut maka kedua data tersebut ditukar. Kemudian data kedua dibandingkan dengan jarak yang sama yaitu N / 2. Demikian seterusnya sampai seluruh data dibandingkan sehingga semua data ke-j selalu lebih kecil daripada data ke-(j + N / 2).

Pada proses berikutnya, digunakan jarak (N / 2) / 2 atau N / 4. Data pertama dibandingkan dengan data dengan jarak N / 4. Apabila data pertama lebih besar dari data ke N / 4 tersebut maka kedua data tersebut ditukar. Kemudian data kedua dibandingkan dengan jarak yang sama yaitu N / 4. Demikianlah seterusnya hingga seluruh data dibandingkan sehingga semua data ke-j lebih kecil daripada data ke-(j + N / 4).

Pada proses berikutnya, digunakan jarak (N / 4) / 2 atau N / 8. Demikian seterusnya sampai jarak yang digunakan adalah 1.

Algoritma metode Shell dapat dituliskan sebagai berikut :

1. Jarak = N
2. Selama (Jarak > 1) kerjakan baris 3 sampai dengan 9
3. Jarak = Jarak / 2. Sudah = false
4. Kerjakan baris 4 sampai dengan 8 selama Sudah = false
5. Sudah = true
6. j = 0
7. Selama (j < N – Jarak) kerjakan baris 8 dan 9 8. Jika (Data[j] > Data[j + Jarak] maka tukar Data[j],
Data[j + Jarak].
Sudah = true
9. j = j + 1

Di bawah ini merupakan prosedur yang menggunakan metode Shell:

void ShellSort(int N)
{
int Jarak, i, j;
bool Sudah;
Jarak = N;
while(Lompat > 1)
{
Jarak = Jarak / 2;
Sudah = false;
while(!Sudah)
{
Sudah = true;
for(j=0; j Data[i])
{
Tukar(&Data[j], &Data[i]);
Sudah = false;
} } } } }


reference : http://www.seputarprogrammer.co.cc/2011/03/struktur-data-sorting-method.html

Kamis, 28 April 2011

program palang parkir otomatis

#include
org 100h
mov p0,#0ffh
mov p1,#0ffh
mov p2,#0ffh
mov p3,#0ffh
;
pil :
jnb p0.2,buka2
jnb p0.3,tutup2
jnb p0.0,buka1
jnb p0.1,tutup1
sjmp pil
buka1 :
jnb p0.4,henti1
mov p1,#0fbh
sjmp pil
tutup1 :
jnb p0.5,henti1
mov p1,#0f7h
sjmp pil
buka2 :
jnb p0.6,henti2
mov p3,#0fdh
sjmp pil
tutup2 :
jnb p0.7,henti2
mov p3,#0feh
sjmp pil
henti1 :
mov p1,#0ffh
sjmp pil
henti2 :
mov p3,#0ffh
sjmp pil
;
end

Rekursi

Apa itu rekursi
Rekursi merupakan teknik pemrograman yang menyebabkan suatu fungsi/prosedur memanggil dirinya sendiri. Pemanggilan diri sendiri ini berlangsung terus menerus sampai batas terkecil yang nilai dari fungsi tersebut disebutkan secara eksplisit. Salah satu contoh dari penerapan rekursi adalah perhitungan faktorial.
Sesuai dengan definisinya kita dapat menuliskan fungsi faktorial seperti contoh berikut :
Function faktorial ( n: byte); longint;
begin
if (n = 0 ) or ( n=1) then
faktorial :=1
else
faktorial :=n * faktorial (n-1);
end;
pada baris pertama dari fungsi diatas, nilai n dicek dengan 0 atau 1, jika ya maka akan mengembalikan nilai 1 jika tidak fungsi mengembalikan nilai :
n * Faktorial (n-1)
Untuk memahami proses faktorial berlangsung tambahkan dua pernyataan berikut:
Function faktorial( n: byte); longint;
writeln(‘ atas:’,n );
begin
if (n = 0 ) or ( n=1) then
faktorial:=1
else
faktorial:=n * faktorial(n-1);
writeln(‘bawah; ‘ ,n);
end;


http://digg.com/news/technology/Rekursi_dalam_Pemrograman_Komputer

Subrutin

Prosedur dan Fungsi
Adadua macam subrutin pada pascal,yaitu prosedur dan fungsi.

Prosedur dan fungsi memiliki fungsi yang sama yaitu melakukan tugas tertentu,perbedaannya adalah apabilafungsi mengembalikan suatu nilai setelah dipanggil sedangkan untuk prosedur tidak.

Berikutini adalah sintak penulisan prosedur ecara umum :
Procedur
nama_prosedur(parameter1;parameter2;…)
Begin
(pernyataan-pernyataan)
End.

Berikut ini adalah sintak penulisan fungsisecara umum :
function
nama_fungsi(perameter1;parameter2;….).
tipe_kembalian
begin
(pernyataan-pernyataan)
end;

Nama procedure dan Nama fungsi merupakan nama yang anda berikan ke prosedur atau fungsi.
- Tipe kembalian adalah tipe data dari nilai yang dikembalikan oleh fungsi.
- Parameter1,parameter2…… adalah merupakan informasi yang diberikan ke prosedur
atau fungsi.
- Berikut adalah sebuah contoh prosedur dengan nama procedurku dan sebuah fungsi
dengan nama fungsiku:

Procedure prosedurku;
Begin
(pernyataan-pernyataan);
End;
Fungction fungsiku : integer;
Begin
(pernyataan-pernyataan);
End;


http://davidraja.multiply.com/reviews/item/37

struktur perulangan

A. pernyataan for
Pernyataan pengulangan yang paling sering digunakan adalah for. Pernyataan ini digunakan jika kita telah mengetahui berapa kali kita akan mengulang satu atau beberapa pernyataan. Bentuk umum pernyataan for adalah sebagai berikut:
for pencacah := nilai_awal to nilai_akhir do
Begin
(pernyataan-pernyataan yang akan diulang)
end;
Sekedar tambahan, blok berisi pernyataan-pernyataan
yang harus diulang sering disebut juga kalang
(loop).

1. Pernyataan For Positif
Contoh :
Perulangan positif untuk satu statement :
uses wincrt;
var
i : integer;
begin
for i := 1 to 5 do
writeln ('Belajar Pemrograman’);
readln;
end.
Maka bila program diatas dicompile
Hasilnya :
Penjelasan : Berati statemen Belajar pemrograman akan diulang sebanyak 5 kali yaitu dengan.
Belajar pemrograman
Belajar pemrograman
Belajar pemrograman
Belajar pemrograman
Belajar pemrograman
Modul Pemrograman Komputer Dasar, Universitas Muhammadiyah Yogyakarta, 2006 43 menghitung nilai i dari i ke 1 sampai nilai i terakhir yaitu i ke 5.

2. Pernyataan For Negatif
Perulangan negatif adalah perulangan dengan menghitung (counter) dari besar ke kecil.
Statement yang digunakan adalah For-DownTo-Do
contoh:
uses wincrt;
var
i : integer;
begin
for i := 10 downto 1 do
write (i:3);
end.


B. pernyataan for bersarang
Kita juga bisa menuliskan pernyataan for di dalam penyataan for. Kontruksi semacam ini sering disebut dengan penyataan for bersarang. Perhatikan contoh berikut:
for x := 1 to 3 do
for y :=1 to 2 do
writeln (x, ‘ ‘ y);
Kalang for yang luar (dengan pencacah variabel x) akan menjalankan kalang yang dalam (dengan pencacah 10 9 8 7 6 5 4 3 2 1 Modul Pemrograman Komputer Dasar, Universitas Gunadarma,2008 y) sebanyak 3 kali. Dan pada setiap pengulangan di layar akan dituliskan nilai x dan y. Berikut ini adalah keluaran dari program di atas:
1 1
1 2
2 1
2 2
3 1
3 2
Pada saat x bernilai 1, y diulang sebanyak 2 kali.
Jadi pada layar akan tertulis 1 1 dan 1 2. Demikian juga pada saat x bernilai 2, y diulang sebanyak 2 kali. Jadi pada layar akan tertulis 2 1 dan 2 2. Hal yang sama terjadi pada saat x bernilai 3, y diulang
sebanyak 2 kali. Sehingga pada layar tertulis 3 1 dan 3 2.

C. pernyataan while
perintah bisa juga berupa blok yang berisi kumpulan perintah-perintah di antara { dan }. perintah ini disebut juga dengan inti perulangan. Inti perulangan akan terus dieksekusi selama suatu_kondisi bernilai true. suatu_kondisi ini disebut juga penguji perulangan.

Ada beberapa hal yang mungkin jadi pertanyaan. Apa yang terjadi jika suatu_kondisi sudah bernilai false sejak pertama kali komputer sampai pada pernyataan ini? Dalam hal ini blok perulangan tidak akan dieksekusi sama sekali. Program akan melompat ke perintah berikutnya di luar blok perulangan.

Lalu apa yang terjadi jika suatu_kondisi bernilai false di tengah-tengah perulangan, apakah program keluar dari perulangan saat itu juga? Dalam hal ini, tentunya tidak. Program akan mengeksekusi semua perintah hingga akhir blok selesai. Setelah itu program akan kembali ke pernyataan while, dan setelah mengevaluasi kembali suatu_kondisi, dan jika hasilnya salah, baru program akan melompat ke perintah berikutnya di luar blok.

Mari kita ubah sedikit algoritma yang kita buat di bagian sebelumnya. Kali ini kita akan membuat program yang menghitung rata-rata dengan cara menanyakan suatu bilangan kepada user, kemudian program akan berhenti jika masih ada data yang akan diproses.

Inisialisasi jumlah dengan 0
Inisialisasi n (berapa data yang dimasukkan user) dengan 0
while (masih ada data yang akan diproses):
Minta input dari user
Tambah jumlah dengan input dari user
Tambah n dengan 1
Bagi jumlah dengan n untuk menghitung rata-rata
Cetak rata-rata ke layar

Pertanyaan berikutnya, bagaimana menentukan masih ada data yang akan diproses? Cara yang paling mudah adalah melihat apakah nilai yang dimasukkan user bernilai 0. Nol di sini bukan termasuk data yang akan dijumlahkan tetapi bertugas sebagai sinyal bahwa tidak ada lagi data yang harus dimasukkan.

Lalu bagaimana kita harus menguji bahwa data yang dimasukkan bernilai 0 atau bukan? (Ingat, kita baru menanyakan data di dalam blok perulangan. Pada saat komputer pertama kali menemui perulangan while, komputer tidak tahu apa-apa.) Dalam hal ini, kita akan sedikit ubah algoritma kita seperti berikut :

Inisialisasi jumlah dengan 0
Inisialisasi n (berapa data yang dimasukkan user) dengan 0
Minta input dari user
while (input tidak sama dengan 0):
Tambah jumlah dengan input dari user
Tambah n dengan 1
Minta input dari user
Bagi jumlah dengan n untuk menghitung rata-rata
Cetak rata-rata ke layar

Pada dasarnya, kita tanyakan user terlebih dahulu sebelum perulangan while. Dengan cara ini, kita bisa mendapat nilai input untuk dievaluasi pada pernyataan while. Di dalam perulangan while, kita tempatkan pertanyaan untuk mendapat input dari user di akhir perulangan. Artinya, setelah kita memproses input dari user, kita akan tanyakan lagi kepada user untuk mendapatkan kondisi untuk mengevaluasi kondisi while berikutnya.

Perhatikan juga bahwa ketika 0 dimasukkan, program tidak akan menghitung nilai 0 lagi. Di algoritma sebelumnya, nilai 0 akan ikut dijumlahkan dan n akan bertambah 1, padahal 0 bukan data. Nol hanya berfungsi sebagai sinyal bahwa perulangan harus selesai. Masalah ini sangat amat umum ditemui oleh programmer, karena menghitung satu demi satu ternyata tidak mudah. Untuk itu debugger diperlukan untuk melihat lebih detail apa yang dilakukan oleh komputer.

D. pernyataan repeat-until
Pernyataan pengulangan ini hampir sama dengan pernyataan pengulangan while, dan biasanya digunakan bila jumlah pengulangan belum dapat ditentukan pada saat program ditulis. Perbedaan pernyataan repeat..until dan while terletak pada letak pengecekan kondisi. Jika pada pernyataan while, kondisi dicek pada awal kalang, sedangkan pada pernyataan repeat..until, kondisi dicek pada akhir kalang. Perbedaan yang lain, bila pernyataan while mengulang pernyataan selama kondisi masih terpenuhi, pernyataan repeat..until mengulang pernyataan selam kondisi belum terpenuhi. Bentuk umum penyataan repeat..until adalah sebagai berikut:
repeat
(pernyataan-pernyataan yang akan diulang)
until kondisi
Contoh :
repeat
x := x – 1;
y := y – 1;
until (x <= 0);
Program ini akan mengulang dua pernyataan (x := x -
1) dan (y := y - 1) sampai nilai x lebih kecil atau
sama dengan 0.


http://arraydalamprogram.blogspot.com/2010/05/pernyataan-while.html
http://latifrudianto.blogspot.com/2010/10/e-pernyataan-repeatuntil.html

struktur percabangan

A. pernyataan if..else
Dalam struktur kondisi if.....else minimal terdapat dua pernyataan. Jika kondisi yang diperiksa bernilai benar atau terpenuhi maka pernyataan pertama yang dilaksanakan dan jika kondisi yang diperiksa bernilai salah maka pernyataan yang kedua yang dilaksanakan.
if
Hanya melaksanakan aksi bila kondisinya adalah benar / true
if…else
Melaksanakan suatu aksi untuk kedua kondisi, baik benar / true atau salah / false
Syntaxnya seperti berikut:

if(kondisi)
{ Pernyataan yang dijalankan jika kondisi bernilai benar / true }
Else
{ Pernyataan yang dijalankan jika kondisi bernilai salah / false }

B. pernyataan if...elseif
Bentuk ini adalah salah satu perkembangan dari bentuk IF sederhana. Dengan menambahkan percabangan If..Else.. didalam pilihan percabangan Sebelumnya memungkinkan kita memiliki 3 struktur kendali atau lebih dalam sebuah program.

Syntax umumnya:
If(kondisi 1)
{ Pernyataan yang dijalankan jika kondisi 1 bernilai benar / true }
Else if(kondisi 2)
{ Pernyataan yang dijalankan jika kondisi 2 bernilai benar / true Dan kondisi 1 bernilai salah / false (karena berada didalam else IF pertama) }
Else
{ Pernyataan yang dijalankan jika kondisi 1 dan 2 bernilai salah / false }

C. pernyataan case
Bentuk Umum : Case – Of

CASE ekspresi OF
Case label list 1 : statement_1;
Case label list 2 : statement_2;

Case label list n : statement_n;
END;

Bentuk Umum : Case - Of…Else

CASE ekspresi OF
Case label list 1 : statement_1;
Case label list 2 : statement_2;

Case label list n : statement_n;
ELSE statement;
END.

Perbedaan antara CASE dengan IF adalah jika statement if menyeleksi suatu kondisi dan terpenuhi, setelah memproses statement dalam lingkungan yang terpenuhi tersebut, proses penyeleksian masih dilakukan terhadap statement if berikutnya yang lain. Sedangkan pada struktur CASE-OF bila salah satu kondisi terpenuhi dan statement tersebut telah diproses, selanjutnya statement-statement yang lainnya dalam lingkungan CASE tidak akan diseleksi lagi. Daftar case label dapat berupa sebuah konstanta, atau range dari konstanta yang bukan bertipe real.


http://lalafauzanleunisla.blogspot.com/2010/06/pernyataan-case.html
http://ajenkkartika.blogspot.com/2009/12/struktur-percabangan-dalam-program-c.html

Selasa, 22 Maret 2011

flowchart dan prosesnya





1. baris pertama masukan nilai ke variabel n.
2. baris 2 dan 3 nilai i adalah 1 dan j adalah 0.
3. baris 4 program membaca selama i<=n maka program mengerjakan baris 4 sampai dengan 7, jika tidak maka program langsung ke baris 8 dan membaca rata adalah nilai dari j/n.
4. baris terakhir menuliskan nilai rata yang didapat dari baris 8.

macam-macam operator

Macam-macam operator:

Operator Aritmatika (Arithmetic Operator):
Operator Fungsi Jenjang
* Perkalian 3
/ Pembagian 3
% Modulo 3
+ Penjumlahan 4
- Pengurangan 4

Operator aritmatika melibatkan 2 buah operand, terkadang operand yang digunakan berbeda tipenya. Untuk menghindari hal-hal yang tidak diinginkan maka kompiler C mempunyai pedoman untuk operand yang berbeda tipe :
1. Tipe char akan dikonversikan ke tipe int
2. Tipe float akan dikonversikan ke tipe double
3. Jenjang tertinggi adalah mulai dari long double, double, long int, unsigned int, dan int. Berarti, tipe double dioperasikan dengan tipe int akan menghasilkan tipe double.

Operator Unary (Unary Operator)
Operator unary merupakan operator yang hanya menggunakan sebuah operand saja. Operator-operator unary mempunyai jenjang 2.
Operator Fungsi
- Unary minus
++ Increase dgn penambahan nilai 1
-- Decrease dengan pengurangan nilai 1
(tipe) Cast
sizeof Ukuran operand dalam byte
! unary NOT
~ Komplemen 1 (bitwise NOT)
& Menghasilkan alamat memori operand(operator pointer)
* Menghasilkan nilai pengenal dialamatnya(operator pointer)

Algoritma dan Pemrograman 3 – Operators
Operator Pengerjaan Aritmatika (Assigment Operator)
Operator pengejaan digunakan untuk memindahkan nilai dari suatu ungkapan ke suatu pengenal (Identifier). Operator pengerjaan mempunyai jenjang 14.
Operator Contoh Ekuivalen dengan
= A = B + C Mengerjakan B + C ke A
+= A += 1 A = A + 1
-= A -= B A = A – B
*= A *= B A = A * B
/= A /= B A = A / B
%= A %= B A = A % B


Operator Hubungan (Relational Operator)
Operator hubungan digunakan untuk menunjukkan hubungan antara 2 buah operand. Banyak digunakan untuk penyeleksian kondisi dengan statement:
 if,
 do-while, atau
 while.

Operator Fungsi Jenjang
< Lebih kecil dari 6 <= Lebih kecil atau sama dengan 6 > Lebih besar dari 6
>= Lebih besar atau sama dengan 6
== Sama dengan 7
!= Tidak sama dengan 7

Operator Logika (Logical Operator)

Operator logika digunakan untuk membandingkan logika hasil dari operator-operator hubungan.
Operator Fungsi Jenjang
&& Logika DAN (AND) 11
|| Logika ATAU (OR) 12

Operator Koma (Comma Operator)
Operator koma digunakan untuk menggabungkan beberapa ungkapan dengan proses yang berurutan dari ungkapan sebelah kiri koma ke ungkapan sebelah kanan koma. Operator koma mempunyai jenjang 16.



p_sarjono.staff.gunadarma.ac.id

macam-macam tipe data

Macam-macam tipe data
Di setiap bahasa pemrograman telah disediakan berbagai tipe data dan sebagai programer dipersilakan untuk memilihnya. Tentu saja kita akan memilih tipe data yang sesuai dengan karakteristik data yang akan kita olah.
Pada intinya simbol-simbol yang digunakan di komputer terdiri atas huruf, angka, dan tanda baca lainnya. Simbol-simbol tersebut merupakan elemen dari data dan memiliki tipe data. Umumnya tipe data terdiri atas karakter, teks atau string, dan numerik. Namun sesuai dengan kebutuhan pengguna yang terus bertambah, maka tipe data terus berkembang. Banyak bahasa pemrograman menambahkan tipe data dengan boolean (logical), binary, float, date, memo dan sebagainya.
a. Tipe Data Numerik
Besar angka yang bisa diterima komputer sangat tergantung dengan jumlah bit (N) prosesor komputernya. Umumnya batasan angka yang bisa diterima adalah –(2^(N-1)) sampai dengan 2^(N-1)-1. Untuk komputer 32 bit batasannya adalah -2.147.483.648 sampai dengan 2.147.483.647.
Untuk menampung nilai data ke variabel dalam suatu bahasa pemrograman tertentu, maka kita harus memahami fasilitas apa saja (statements dan jenis variabelnya) yang disediakan oleh bahasa pemrograman yang kita gunakan. Juga kita perhatikan fasilitas operasi untuk tipe data numeriknya, misalnya apakah ada MOD, DIV, AVERAGE, MAX, MIN dan sebagainya.
Adapun jenis numerik (bilangan) yang biasa digunakan terdiri atas :
- bilangan kompleks
- bilangan real
- bilangan rasional
- bilangan irasional
- bilangan bulat
- dan sebagainya
Bilangan real adalah bilangan yang menggunakan nilai pecahan. Bilangan bulat adalah bilangan tanpa pecahan (integer), baik positif maupun negatif. Di luar bilangan-bilangan itu ada juga yang merupakan bagian dari bilangan-bilangan di atas seperti bilangan prima, bilangan cacah, bilangan ganjil, bilangan genap, dan lain-lain.
Untuk keperluan penempatan berapa banyak jumlah digit yang bisa digunakan oleh bilangan-bilangan di dalam variabel dapat menggunakan variabel berpresisi tunggal maupun berpresisi ganda. Misalnya di suatu bahasa pemrograman, untuk bilangan integer single precision (presisi tunggal) disediakan panjang 8 digit, dan untuk double precision (presisi ganda) disediakan panjang 16 digit. Untuk bilangan real sigle precision disediakan 16 digit, dan untuk real double disediakan 32 digit.
Operasi terhadap tipe data numerik sama halnya melakukan perhitungan matematis. Ada penjumlahan, pengurangan, perkalian, perpangkatan, dan sebagainya. Berikut macam-macam operasi (operator) yang ada sesuai urutan pengerjaannya :
^ : perpangkatan
* : perkalian
/ : pembagian
+ : penjumlahan
- : pengurangan
Urutan pengerjaan akan berubah jika terdapat tanda kurung. Tanda kurung menjadi prioritas utama yang dikerjakan.
Contoh :
2 ^ 3 * 4 – 6 / 2 + 5 = ((2 ^ 3 )* 4) – (6 / 2) + 5
= (8 * 4) – (3) + 5
= 32 – 3 + 5
= 34
2 ^ 3 * (4 – 6) / 2 + 5 = (2 ^ 3 )* ((4 – 6) / 2) + 5
= 8 * (-2) / 2 + 5
= -16 / 2 + 5
= -8 + 5
= -3
Ada pula operasi tambahan yang biasanya disediakan bahasa pemrograman, seperti :
Operator Kegunaan
MOD Sisa hasil pembagian, misalnya MOD(10/3) = 1
DIV Pembagian yang menghasilkan bilangan integer (bulat), misalnya DIV(10/3) = 3
ABS Mempositifkan bilangan negatif,
misalnya ABS(-45)=45
INT Membulatkan bilangan real,
misalnya INT(34.67) = 34
VAL Menumerikkan bilangan yang disimpan dalam string, misalnya VAL(‘27’) = 27
SQR Menghitung nilai akar dari, misalnya SQR(25) = 5
TRUNC Membulatkan ke atas bilangan real, misalnya TRUNC(34,67) = 35
Kondisi (disebut juga dengan operator relasional) yang biasa mengikutinya adalah :
= sama dengan
> lebih besar dari
< lebih kecil dari <> tidak sama dengan
>= lebih besar atau sama dengan
<= lebih kecil atau sama dengan
b. Tipe Data Logika
Operator logikal (boolean) biasa digunakan untuk melakukan pengecekan suatu kondisi suatu program. Kondisi yang dicek bisa berhubungan dengan variabel numerik maupun variabel string. Nilai data dari variabel boolean adalah kondisi benar atau salah (true or false). Operator logika dasar terdiri atas AND, OR dan NOT.
1. AND
AND adalah operasi yang melakukan pengecekan atas 2 kondisi atau variabel yang ada. Jika kedua kondisi bernilai true, maka hasil operasi AND adalah true, selain itu false. Berikut tabelnya :
Kondisi (Variabel 1) Kondisi (Variabel 2) AND
True (terpenuhi) True (terpenuhi) True
True (terpenuhi) False (tidak terpenuhi) False
False (tidak terpenuhi) True (terpenuhi) False
False (tidak terpenuhi) False (tidak terpenuhi) False
1. OR
OR adalah operasi yang melakukan pengecekan atas 2 kondisi atau variabel yang ada. Jika salah satu kondisi bernilai true, maka hasil operasi OR adalah true, selain itu false. Berikut tabelnya :
Kondisi (Variabel 1) Kondisi (Variabel 2) OR
True (terpenuhi) True (terpenuhi) True
True (terpenuhi) False (tidak terpenuhi) True
False (tidak terpenuhi) True (terpenuhi) True
False (tidak terpenuhi) False (tidak terpenuhi) False
1. NOT
NOT adalah operasi yang melakukan pengecekan atas 1 kondisi atau variabel yang ada. Jika kondisi bernilai true, maka hasil operasi NOT adalah false, dan sebaliknya. Berikut tabelnya :
Kondisi (variabel) NOT
True (terpenuhi) False
False (tidak terpenuhi) True
Tipe data logikal adalah variabel atau record yang bernilai logikal (true atau false).
Operasi AND, OR dan NOT dapat digabung-gabungkan untuk mendapatkan suatu kondisi yang diinginkan. Berikut contoh dalam salah satu bahasa pemrograman :
c. Tipe Data String
String merupakan salah satu tipe data di komputer, dan merupakan kumpulan dari karakter. Nilai data string tentunya harus ditampung di variabel atau field yang berjenis string pula.
String umumnya digunakan untuk menyimpan data yang tidak perlu diproses secara matematis, namun banyak pula orang yang lebih suka menyimpan data numerik ke dalam tipe data string. Umumnya bahasa pemrograman menyediakan fasilitas untuk mengubah nilai data numerik yang disimpan dalam tipe data string menjadi tipe data numerik. Sehingga nilai data tersebut dapat diproses secara matematis kembali.
Nomor Pokok Mahasiswa (NRP) adalah sebuah contoh yang nilai datanya merupakan kode-kode yang dapat dijabarkan. Misalnya NRP = ‘5198100084’. Nilai tersebut dapat dijabarkan menjadi : karakter pertama menunjukkan fakultas, karakter kedua menunjukkan jurusan, karakter ketiga dan keempat menunjukkan tahun masuk dan sebagainya. Penjabaran kode seperti di atas lebih sulit dilakukan jika menggunakan tipe data numerik.
Bagian dari string disebut dengan substring, seperti pada contoh NRP di atas, tahun masuk (karakter ketiga dan keempat) merupakan substring dari NRP. Macam-macam operasi string adalah: pemenggalan, penggabungan, pencarian posisi, perhitungan banyak karakter, dan kombinasi dari semua operasi.
http://riyanwae.wordpress.com/2008/10/24/tipe-data-dan-struktur-data/

Struktur dasar algoritma


STRUKTUR SEKUENSIAL (Runtunan)
·   Pada struktur sekuensial instruksi dikerjakan secara berurutan baris perbaris mulai dari baris pertama hingga baris terakhir, tanpa ada loncatan atau perulangan.
·   Tiap instruksi dikerjakan satu per satu.
·   Tiap instruksi dilaksanakan tepat sekali, tidak ada instruksi yang diulang.
·   Urutan instruksi yang dilaksanakan pemroses sama dengan urutan instruksi sebagai tertulis di dalam teks algoritma.
·   Akhir dari instruksi terakhir merupakan akhir algoritma.

STRUKTUR SELEKSI (PEMILIHAN)
Struktur seleksi adalah instruksi yang dipakai untuk memilih satu aksi dari beberapa kemungkinan aksi berdasarkan suatu syarat.
Bentuk ke-1 dari pemilihan : Suatu aksi hanya dilakukan bila persyaratan atau kondisi tertentu dipenuhi. jika kondisi bernilai benar kerjakan aksi jika salah, tidak ada aksi apapun yang dikerjakan.

Notasi algoritmik :
if Syarat then
Aksi {True}
endif {False

Bentuk ke-2 dari pemilihan :Apabila syarat dipenuhi maka aksi-1 dilaksanakan bila syarat tidak dipenuhi maka aksi- 2 yang dilaksanakan

Notasi Algoritmik :
IF syarat THEN
aksi-1 {true}
ELSE
aksi-2 {false}
ENDIF

STRUKTUR REPETITION (PERULANGAN)
Perulangan adalah instruksi yang dapat mengulang sederetan Instruksi secara berulang-ulang sesuai persyaratan yang ditetapkan.

Struktur instruksi perulangan pada dasarnya terdiri atas :
• Kondisi perulangan; suatu kondisi yang harus dipenuhi agar
perulangan dapat terjadi.
• Badan (body) perulangan; deretan instruksi yang akan
diulang-ulang pelaksanaannya.
• Pencacah (counter) perulangan; suatu variabel yang
nilainya harus berubah agar perulangan dapat terjadi dan
pada akhirnya membatasi jumlah perulangan yang dapat
dilaksanakan


http://hariyanto.staff.jak-stik.ac.id

Hal-hal yang diperhatikan dalam pembuatan algoritma dan syarat menjadi algoritma yang baik


Beberapa hal yang perlu diperhatikan dalam membuat algoritma:
1. Teks algoritma berisi deskripsi langkah-langkah penyelesaian masalah. Deskripsi tersebut dapat ditulis dalam notasi apapun asalkan mudah dimengerti dan dipahami.
2. Tidak ada notasi yang baku dalam penulisan teks algoritma seperti notasi bahasa pemrograman. Notasi yang digunakan dalam menulis algoritma disebut notasi algoritmik.
3. 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.
4. 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.

5. Algoritma sebenarnya digunakan untuk membantu kita dalam mengkonversikan suatu permasalahan ke dalam bahasa pemrograman.
6. 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 pengoperasiancompiler atau interpreter.
   Bahasa pemrograman yang digunakan termasuk dalam kelompok Compiler atau interpreter.
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.

http://www.scribd.com/doc/17252937/Algoritma-Dan-Pemrograman

http://blog.ub.ac.id/supardipunya/2010/09/pengantar-algoritma-dan-pemrograman-bag-4/

Senin, 28 Februari 2011

Sinyal FM


Sinyal FM :

1.      Sinyal input masuk melalui phase detector.
2.      Setelah melalui phase detector sinyal disaring dengan low pass filter.
3.      Selanjutnya lalu diperkuat dengan amplifier.
4.      Apabila sinyal dikontrol maka sinyal akan masuk ke voltage control dan akan balik lagi masuk lewat phase detector.
5.      Jika tidak maka akan keluar sinyal output.

Selasa, 08 Februari 2011

ciri-ciri penting dari suatu algoritma


Menurut Knuth dalam bukunya The art of Computer programming, Algoritma memiliki 5 ciri penting, yaitu:
1. Algoritma harus berhenti setelah mengerjakan sejumlah langkah terbatas.
Aksi-aksi dalam algoritma harus terjadi hanya dalam waktu terbatas. Barikut ini adalah algoritma yang salah karena aksi yang dilakukan dapat menghasilkan pengamatan yang tidak pernah berhenti (looping) :  
2. Tiap langkah harus didefinisikan dengan jelas
3. Algoritma memiliki nol atau lebih input (masukan). Input adalah besaran yang diberikan kepada algoritma sebelum algoritma mulai bekerja
4. Algoritma memiliki satu atau lebih keluaran (output). Output adalah besaran yang memiliki hubungan dengan input.
     5. Algoritma harus efektif, tiap langkah harus sederhana, dapat dikerjakan dalam sejumlah waktu yang     logis.

- Keuntungan Pembuatan Algoritma
  Pembuatan algoritma mempunyai banyak keuntungan diantaranya:
1. Pembuatan atau penulisan algoritma tidak bergantung pada bahasa pemrograman manapun.
2. Notasi salgoritma dapat diterjemahkan ke dalam berbagai bahasa pemrograman.
3. Apapun bahasa pemrogramannya,output yang akan dikeluarkan sama karena algoritmanya sama.
Beberapa hal yang diperhatikan dalam pembuatan algoritma :
1. Teks algoritma berisikan deskripsi langkah – langkah penyelesaian masalah.
2. Tidak ada notasi yang baku dalam penulisan teks algoritma seperti notasi bahasa pemrograman.
3. Setiap orang dapat membuat aturan penulisan dan notasi algoritmik sendiri.
4. Notasi algoritmik bukan bahasa pemrograman , karena itu pseudocode dalam notasi algoritmik tidak dapat dijalankan oleh computer.
5. Algoritma sebenarnya digunakan untuk membantu kita dalam mengkonversikan suatu permasalahan ke dalam bahasa pemrograman.
6. Algoritma merupakan pemikiran konseptual, supaya dapat dilaksanakan oleh computer, algoritma harus ditranslasikan ke dalam notasi bahasa pemrograman.
Ada beberapa hal yang harus diperhatikan pada translasi tersebut, yaitu :
a) Pendeklarasian variable
Untuk mengetahui dibutuhkannya pendeklarasian variable dengan penggunaan bahasa pemrograman apabila tidak semua bahasa pemrograman membutuhkannya.
b) Pemilihan tipe data
Apabila bahasa pemrograman yang akan digunakan membutuhkan pendeklarasian variable, maka perlu hal ini dipertimbangkan pada saat pemilihan tipe data.
c) Pemakaian instruksi – instruksi
Beberapa instruksi mempunyai keguanaan 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

reference :
http://nafifm.wordpress.com/2010/02/26/algoritma-dan-pemrograman-kasus-teknik-elektro/
http://if29noltiga.9.forumer.com/index.php?s=6f2fcf4e9d277af1550996f0bc6fa8bd&act=Attach&type=post&id=51