Selasa, 29 November 2011

Dunia Mikroprosesor dan Mikrokontroler

Peranan elektronika disegala bidang menjadi semakin besar diabad ke dua satu ini. Bermula dari penerapan rangkaian elektronika analog, kemudian digital dan kini hampir semua peralatan menggunakan sistem mikroprosesor , misalnya; perangkat yang dekat dengan kita, seperti handphone, televisi, radiocassete, mesin cuci sampai ke instrumen ruang angkasa.

Banyak jenis mikroprosesor telah dibuat dengan kemampuan dan fungsi yang berbeda, te­tapi secara prinsip cara kerjanya sama. Perangkat keras dibuat menjadi semakin canggih, jutaan transistor dijejalkan didalamnya, miniaturisasi dimensi semakin ditingkat­kan dengan kemampuan mengolah program yang lebih komplek sehingga memungkinkan untuk aplikasi di segala bidang. Perkembangan perangkat lunak juga berkembang tak terbatas, seakan hanya dibatasi oleh kemampuan imajinasi manusia saja.

Pada mulanya mikroprosesor terdiri dari beberapa komponen chip digital yang satu sama lainnya digabungkan dalam suatu PCB dan dikoneksikan satu dengan yang lain sesuai dengan fungsi rangkaian­nya. Ide pertama membangun suatu mikroprosesor dalam suatu IC dikemukakan oleh Intel Corporation pada tahun 1969. Tahun 1971 adalah tahun pertama kali mi­kroprosesor dalam satu IC dipasarkan yaitu Intel 4004, mikroprosesor yang menggunakan teknologi PMOS 4 bit, tahun 1976 Intel meluncurkan mikrokontroler pertama yang disebut seri MCS-48 yang berisi lebih dari 17.000 transistor, hingga saat ini seri ini masih digunakan untuk aplikasi khusus. Saat ini, tahun 2005, prosesor canggih dari Intel adalah Pentium IV yang berisi jutaan transitor didalamnya dan dengan kecepatan orde gigahertz, disamping itu banyak yang membuat kompatibelnya, seperti prosesor AMD. Dunia mikrokontroler juga berkembang pesat dengan hadirnya ratusan jenis mikrokontroler dan kompatibelnya, seperti turunan dari MCS-51, 68HC11, PIC microcontroller, Fujitsu dan sebagainya.

Dalam perkembangannya, mikroprosesor dibuat menurut kebutuhan aplika­sinya yang lebih spesifik, dalam hal ini menjadi beberapa jenis, yaitu;

  • Mikoprosesor RISC (Reduced Instruction Set of Computing) dan CISC (Complex Instruction Set of Computing). Jenis ini yang digunakan untuk pengolahan informasi dengan software yang rumit dan digunakan untuk kebanyakan PC saat ini.
  • Pengolah Sinyal Digital – DSP (Digital Signal Processor). Memiliki software dan hardware yang ditujukan untuk mempermudah memproses sinyal-sinyal digital. Digunakan pada perangkat audio – video modern seperti VCD, DVD, home teatre dan juga pada card-card multimedia di komputer.
  • Mikrokontroler, adalah mikroprosesor yang dikhususkan untuk instrumentasi dan kendali. Contoh aplikasi pada kendali motor, berperan seperti PLC (Programmable Logic Controller), pengaturan pengapian dan injeksi bahan bakar pada kendaraan bermotor atau alat mengukur suatu besaran, seprti suhu, tekanan, kelembaban dan lain-lain.

1.2. Isi dari sebuah IC

1.2. Isi dari sebuah IC

Dalam perkembangannya yang begitu cepat, batasan-batasan tersebut menjadi kabur, seperti definisi mini, mikro dan mainframe komputer beberapa saat lalu. Beberapa mikrokontroler disebut embedded processor, atau embedded processor adalah mikrokontroler, artinya prosesor yang diberikan program khusus yang selanjutnya diaplikasikan untuk akusisi data dan kendali khusus, dan bisa diprogram ulang. Sementara itu prosesor ‘kuno’ Intel 486 juga telah digunakan untuk kendali instrumentasi dalam bentuk kemasan motherboard yang tahan terhadap lingkungan industri dan diprogram khusus untuk aplikasi kendali industri. Aplikasi DCS (Distributed Control System) yang digunakan di industri besar, juga menggunakan prosesor canggih untuk instrumentasinya., bahkan monitor dan kendali bisa dilakukan lewat internet. Beberapa mikrokontroller modern juga sudah dilengkapi dengan DSP atau mikrokontroller yang tergolong RISC.

Mempelajari mikroprosesor semacam pentium atau seri 80XXX sangat sulit, terutama bagi yang baru mempelajari mikroprosesor, karena begitu banyak fungsi dan bagian-bagian yang cukup rumit, belum lagi perkembangannya yang begitu cepat, sehingga sebelum selesai belajar produk lama, produk baru sudah muncul dengan konfigurasi yang berbeda, meskipun demikian pengetahuan dasar mikroprosesor dapat dimengerti dengan mudah dan dapat diterapkan untuk aplikasi sederhana.

Mikroprosesor adalah piranti keras yang tidak akan bisa bekerja kalau tidak ada perangkat lunak. Inilah yang membedakan mikroprosesor dengan rangkaian digital diskrit. Kemampuannya untuk diprogram, dan diprogram ulang adalah suatu kelebihan didalam sistem mikroprosesor. Contohnya dalam suatu sistem pengendali lampu lalu lintas dengan rangkaian diskrit perlu menambahkan atau merubah rangkaian bila diperlukan perubahan sistem, tetapi dengan sistem mikroprosesor, bisa dilakukan dengan hanya merubah program. Perhatikan juga bahwa PC saat ini bisa multi fungsi dengan hanya mengganti programnya saja.

Hampir semua fungsi rangkaian digital dapat diambil alih oleh suatu sistem mikroprosesor atau mikrokontroler, tetapi tidak perlu semua rangkaian digital harus dengan sistem mikroprosesor. Rangkaian yang sederhana cukup direalisasikan dengan komponen diskrit akan lebih menghemat dana, waktu dan justru bisa lebih handal. Disamping itu untuk rangkaian digital yang memerlukan kecepatan sangat tinggi, masih diperlukan rangkaian digital diskrit, sebagai contoh sederhana suatu fungsi AND gate dapat diemulasikan dengan suatu mikroprosesor dengan program tertentu, fungsi AND dengan AND gate dieksekusi dalam orde nanodetik, sedangkan dengan mikroprosesor memerlukan waktu dalam orde mikro atau milli detik. Meskipun demikian dengan makin majunya teknologi, kendala kecepatan tersebut menjadi hilang, sebagai contoh rangkaian dekoder MPEG, tadinya memerlukan card khusus dalam suatu PC (hardware), kini dapat dilakukan dengan hanya mengisntall program saja asalkan komputernya memiliki kecepatan tinggi.

Secara umum suatu sistem mikroprosesor akan memiliki kelebihan dibanding sistem diskrit atau dengan digital IC sebagai berikut;

  • Reprogrammable, artinya dapat diprogram ulang untuk mendapatkan fungsi yang berbeda
  • Rangkaian lebih terintegrasi, lebih kompak, sederhana dan tidak rumit, memudah­kan membuat PCB.
  • Fleksibel dalam pengembangannya

Selain itu perlu diperhatikan kekurangannya sebagai berikut;

  • Banyak jenis mikroprosesor dengan bahasa yang berbeda, yang mana satu sama lain kadang tidak kompatibel, sehingga menyulitkan pemakai dalam pengem­bangannya.
  • Kerusakan software berakibat sistem macet dan tidak dapat diperbaiki jika tidak diketahui kode-kodenya.
  • Ketergantungan pada pembuat software
  • Sistem mikroprosesor lebih sensitif terhadap ganguan derau dari luar.
  • Kecepatan relatif rendah.
  • Cepat usang (obsolete)

1.3. Mikrokontroler

1.3. Mikrokontroler

Sebagaimana dijelaskan diatas, mikrokontroler adalah pengembangan dari mikropro­sesor untuk keperluan instrumentasi ‘sederhana’, misalnya untuk pengaturan motor, pengaturan permukaan cairan, pengukuran suhu, pH, konduktifitas, aplikasi PLC sederhana dan semacamnya. Mikrokontroler adalah suatu chip yang dibuat dengan ciri-ciri kekhasannya, biasanya adalah ;

  • Memiliki memory internal relatif sedikit.
  • Memiliki unit I/O langsung
  • Pemroses bit, selain byte
  • Memiliki perintah / program yang langsung berhubungan dengan I/O
  • Program relatif sederhana.
  • Beberapa varian memiliki memori yang tidak hilang bila catu padam didalamnya untuk me­nyimpan program

Sedangkan dalam hal aplikasi, sistem mikokontroler memiliki karakteristik sebagai berikut;

  • Memiliki program khusus yang disimpan dalam memori untuk aplikasi tertentu, tidak seperti PC yang multifungsi karena mudahnya memasukan program. Program mikrokontroler relatif lebih kecil daripada program-program pada PC.
  • Konsumsi daya kecil.
  • Rangkaian sederhana dan kompak
  • Murah, karena komponen sedikit
  • Unit I/O yang sederhana, misalnya keypad, LCD, LED, Latch.
  • Lebih tahan terhadap kondisi lingkungan ekstrem misalnya temperatur, tekanan, kelembaban dan sebagainya.

Untuk mempelajari mikrokontroler perlu praktek, atau minimal dengan suatu simulatornya, tanpa praktek tidak akan didapat apa-apa. Untuk mempelajari suatu mikrokontroler atau ingin mengaplikasikan mikrokontroler untuk kendali atau kontrol harus diperhatikan hal-hal sebagai berikut;

  • Layaklah digunakan suatu sistem mikrokontroler ?. Jika rangkaian terlalu sederhana cobalah dengan rangkaian diskrit saja. Sebagai contoh, jika ingin membuatflasher (lampu kedap-kedip), tidaklah perlu dengan rangkaian mikrokontroler, tetapi jika durasi kedap-kedip diinginkan sangat presisi dan mudah diubah, maka dengan mikrokontroler adalah solusi yang baik.
  • Apakah mikrokontroler mudah didapat dipasaran ?. Faktor keberadaan barang sangat mendukung untuk berekperimen.
  • Apakah harganya terjangkau ?. Berekperimen dengan mikrokontroler kemung­kinan membuat chip menjadi gampang rusak, jadi sebaiknya gunakan yang harganya relatif murah. Kecuali bagi kalangan industri, dimana harga tidak menjadi masalah.
  • Adakah tersedia perangkat pengembangannya ?. Belajar mikrokontroler tidak hanya belajar hardware, tetapi juga software. Data Hardware bisa didapat dari internet, sebab setiap pabrik pembuat chip mikrokontroler, pasti memberikan data sheet di website nya, ini tidak menjadi masalah. Daftar perintah software biasanya juga disediakan di website , tetapi ini belum menjamin bisa membuat program, karena diperlukan latihan dan pengalaman untuk menyusun perintah-perintah menjadi suatu program yang berhasil guna.
  • Adakah, atau seberapa banyak kah forum-forum atau situs di internet yang membahas atau mendiskusikan tentang mikrokontroler tersebut ?. Tukar menukar pengalaman, berdiskusi, bertanya melalui forum di internet adalah sarana efektif saat ini untuk mempercepat mempelajari mikrokontroler.

Perangkat pengembangan suatu sistem mikrokontroler adalah sangat penting untuk melatih dan berekperimen dengan mikrokontroler yang dipilih, adapun yang disebut perangkat pengembangan atau dalam bahasa Inggris disebut development tools, bisa terdiri dari;

  • Compiler atau penterjemah (Software). Mikrokontroler bekerja dalam bahasa mesin, sedangkan manusia sulit untuk mengerti bahasa mesin, untuk mudahnya dibuat program dengan bahasa yang lebih tinggi tingkatnya, yaitu C, BASIC, atau ASSEMBLER, selanjutnya dengan bantuan Compiler, program akan diterjemahkan dalam bahasa mesin, tentu saja butuh PC (Personal Computer)
  • Simulator (Software), adalah program komputer yang mensimulasikan kerja dari mikrokon­troler. Dengan memasukan program dan dijalankan, maka register, memori dan input-output (I/O) yang nampak dilayar PC akan menunjukan isi, sesuai dengan program yang dijalankan.
  • Emulator (Software dan Hardware), suatu alat yang berhubungan dengan PC yang dapat mengemulasikan kerja mikrokontroler, artinya program-program dibuat dan di compile di PC setelah itu di download ke emulator (istilahnya target), dan emulator akan bekerja secara sendiri (stand alone), hubungan dengan PC bisa dilepas. Jika ada kesalahkan program, maka cukup melakukan koreksi di PC, dan didownload ulang. Dengan demikian menghemat waktu reprogramming.
  • In Circuit Emulator (ICE), adalah pengembangan dari emulator, hubungan dengan PC tetap ada, karena PC dianggap sebagai chip mikrokontroler bayangan, artinya bila kita membuat suatu rangkaian yang menggunakan suatu chip mikrokontroler sebagai komponen utamanya, chip tersebut dapat kita cabut dari soketnya, dan digantikan oleh konektor berbentuk chip yang terhubung kabel-kabel ke PC (emulator card), sekarang PC menggantikan chip tersebut. Selama program dijalankan, isi register-register dalam mikrokontroler ditampilkan dilayar, program juga dapat diperlambat, sehingga mempermudah penyelusuran kesalahan (bug).
  • Programmer, adalah alat yang digunakan untuk mengisi program dalam suatu mikrokontroler, biasanya alat ini menggunakan PC sebagai terminal pintarnya, selanjutnya melalui serial port, paralel port, USB atau card khusus antarmuka ke programmer, kode-kode mesin dimasukkan dalam memory ROM, EPROM yang berada diluar MCU atau Flash memory yang jadi satu kemasan dengan MCU.

atmega16

1.4. perangkat pengembang

Dari perangkat-perangkat tersebut, compiler merupakan software yang mutlak diperlukan, apabila tidak ingin dipusingkan dengan bahasa mesin. Sedangkan programmer (downloader) adalah hardware dan software/firmware yang mutlak diperlukan untuk dapat men’download’ kode-kode perintah ke mikrokontroler. Compiler, simulator mudah didapat disitus internet sesuai dengan jenis produknya. Cara membuat programmer juga banyak tersedia di situs internet, tetapi ini diperlukan pengetahuan elektronika praktis. Emulator harus membuat hardware dan juga diisi software yang bisa didapatkan dari internet. ICE agak susah membuatnya, beberapa perusahaan membuat dan menjual dengan harga yang cukup mahal.

Jadi dapat disimpulkan bahwa suatu mikrokontrontroler adalah suatu chip (rangkaian terintegrasi – IC) VLSI (Very Large Scale IC) mikroprosesor yang dikhususkan untuk instrumentasi dan kendali dan bersifat reprogrammable. Mikrokontroler memiliki unit memory sendiri (meskipun sangat terbatas), unit I/O (Input/Output) yang bisa dikoneksikan langsung dengan sensor atau aktuator. Program disimpan dalam memori yang tidak hilang bila catu daya padam, biasanya dalam bentuk ROM, PROM atau EPROM diluar mikrokontroler, atau beberapa seri atau varian memiliki ROM didalam mikrokontroler itu sendiri. Cara mengisi program dengan suatu alat pemrogram, yang biasanya berhubungan dengan PC. Untuk mempelajari dan mengaplikasikan mikrokontroler diperlukan perangkat pengembang, literatur dan forum-forum diskusi.

Komputasi Modern (Kecepatan prosesor)

Untuk ulasan kali ini, saya akan mencoba untuk menganalisis dan menuliskan bagaimana cara untuk menambah kecepatan prosesor. Sebelum kita sampai pada bagaimana menambah kecepatan prosesor, saya akan mencoba menerangkan tentang definisi apa itu prosesor. Prosesor merupakan bagian utama dari computer yang berfungsi untuk mengatur semua aktivitas yang ada pada computer. Satuan kecepatan pada processor adalah MHz dan umumnya computer saat ini rata rata menggunakan kecepatan GHz ( 1000 MegaHertz ). Semakin besar nilai kecepatannya semakin cepat proses eksekusi pada computer. Jika pada tubuh manusia, processor dapat dianalogikan sebagai otaknya. Maka dari itu prosesor menentukan kecepatan pada performa computer. Namun semakin besar kecepat suatu prosesor, maka semakin besar pula daya yang dibutuhkan, dan panas yang dihasilkan juga semakin tinggi. Karena hal inilah produsen-produsen prosesor yang ada saat ini mempunyai teknik khusus untuk menangani masalah ini, yaitu membuat inti prosesor kedua yang dijalankan secara parallel, yang dikenal dengan teknologi dualcore.

Faktor-faktor yang mempengaruhi kecepatan prosesor adalah sebagai berikut:

1. Penambahan kecepatan clock mikroprosesor

Kecepatan prosesor biasanya ditentukan oleh kecepatan clock dari control unitnya., yang diukur dengan jumalh putaran yang terjadi perdetik. Untuk PC kelas tinggi, workstation dan mainframe diukur dengan MIPS (million instruction per second). Dan FLOPS (floating point operations per second) dan GFLOPS (Giga floating point per second) digunakan untuk mengukur kecepatan supercomputer. Pada saat kecepatan prosesor dan kapasitas memori meningkat dengan cepat, interface antara prosesor dan memori utama merupakan lintasan yang penting didalam proses kerja suatu computer. Interface mempunyai tugas untuk membawa aliran konstan perintah-perintah program dan data antar keping memori dan prosesor. Jika memori gagal untuk mengimbangi permintaan prosesor, maka prosesor akan berada dalam masa tunggu yang akan menghilangkan waktu pengolahan.

2. Cache Memori

Cache memori merupakan memori yang berkecepatan tinggi namun berukuran kecil. Cache memori ini digunakan untuk menyimpan salinan data atau instruksi yang sering diproses oleh CPU. Selain itu chace memori berfungsi untuk menjembatani perbedaa kecepatan anatara CPU dan memori utama. Dalam implementasinya biasanya cache memori yang digunakan adalah jenis Statik RAM (SRAM). Pada cache memori operasi yang yang berjalan adalah sebagai berikut:

  1. CPU akan meminta isi suatu lokasi memori.
  2. Memori akan memeriksa apakah data terdapat di cache.
  3. Jika data tersebut ada di cache, maka data akan langsung diambil dari cache (lebih cepat).
  4. Jika data tersebut tidak berada di cache, maka memori akan menyalinnya ke cache. Lalu memori akan mengirimkan data yang diminta CPU(lebih lambat).

Berdasarkan kecepatannya, Jika suatu cache berukuran semakin besar, maka semakin cepat pula kerjanya. Namun waktu pengecekean cache akan lebih lama. Semakin besar cache juga akan semakin besar juga nilai jualnya.

3. Pengoptimalan sistem pendukung ALU (sistem pipeline)

Penggunaan teknologi pipeline yang digunakan pada computer saat ini adalah untuk meningkatkan kinerja dari sebuah computer. Pipeline merupakan cara yang digunakan untuk melakukan sejumlah pemrosesan/ pekerjaan secara bersamaan tetapi dalam tahap yang berbeda yang dialirkan secara continue pada unit pemrosesan. Pipeline ini diterapkan pada berbagai tingkatan dalam system computer, bisa pada level tinggi (pemrosesan aplikasi) dan pada level rendah (instruksi pada microprocesor).

Pada microprocessor yang tidak menggunakan pipeline, satu perintah dilakukan hingga selesai, baru instruksi selanjutnya dapat dilaksanakan. Hal ini jelas akan lebih memakan waktu. Namun pada microprocessor yang menggunakan teknologi pipeline ini bisa langsung melaksanakan 2 instruksi / perintah secara bersamaan, namun instruksi yang dilaksanakan bersamaan ini berada pada tahap yang berbeda. Walaupun dengan menggunakan pipeline dapat mempersingkat waktu pengerjaan, namun terdapat juga kesulitan pada saat penguunaan pipeline ini yaitu:

  1. Terjadinya penggunaan resource yang bersamaan, karena instruksi yang proses secara bersamaan, kemungkinan instruksi ini sama-sama membutuhkan resource yang sama. Maka diperlukan adanya pengaturan yang tepat agar proses tetap lancar.
  2. Ketergantungan terhadap data, masalah ini dapat muncul apabila instruksi yang berurutan memerlukan data dari instruksi sebelumnya. Misalnya jika instruksi 1 sedang diproses di tahap ke 3, sedangkan instruksi 2 yang sedang diproses di tahap ke 1 membutuhkan data dari instruksi 1 yang masih diproses.
  3. Pengaturan jump ke suatu lokasi memori, untuk masalah jump yang perlu diperhatikan adalah ketika sebuah instruksi meminta untuk melompat ke suatu lokasi tertentu, akan terjadi perubahan counter. Sedangkan instruksi yang sedang berjalan dalam satu tahap proses yang berikutnya mungkin tidak mengharapkan terjadinya perubahan program counter.

Dengan menerapkan teknik pipeline ini, akan ditemukan sejumlah perhatian yang khusus terhadap beberapa hal di atas, tetapi tetap akan menghasilkan peningkatan yang berarti dalam kinerja microprocessor.

4. Pendelegasian tugas (Direct Memory Access – DMA)

Jika ukuran data yang ditransfer cukup besar, prosesor akan berulan kali menlakukan context switch (proses lain) hal ini akan mengakibatkan overhead. Untuk menangani hal ini, digunakan suatu control unit yang disediakan untuk mentransfer data langsung ke perangkat external dan memori utama tanpa intervensi terus menerus dari prosesor. Control unit yang digunakan adalah DMA. Setiap pengendali peralatan dapat saja memiliki DMA tersendiri. Alternatif lain adalah dengan memiliki sebuah pengendali DMA pada motherboard yang mengatur transfer ke berbagai peralatan.Untuk memulai transfer data, driver peralatan akan menulis blok perintah DMA memori yang menunjuk sumber data, tujuan, dan jumlah byte yang akan ditransfer. CPU kemudian akan mengirimkan alamat blok perintah ini pada pengendali DMA. pengendali DMA akan memproses informasi ini untuk kemudian mengoperasikan bus memori. Ada tiga langkah yang dilakukan dalam transfer DMA:

  1. Prosesor mempersiapkan DMA transfer dengan menyediakan data-data dari sebuah perangkat, operasi yang akan ditampilkan, alamat memori yang menjadi sumber dan tujuan data serta banyaknya byte yang akan ditransfer.
  2. Pengendali DMA akan memulai operasi yaitu: menyiapkan bus, menyiapkan alamat, menulis dan membaca data. Hingga seluruh blok sudah ditransfer.
  3. Pengendali DMA akan menginterupsi prosessor, untuk melakukakan tindakan selanjutnya.

5. Paralelisme (Multi Core)

Saat ini kita sering mendengar istilah multicore pada satu prosesor, ide dasar dari multicore ini adalah memperbanyak inti pemroses yang akan meningkatkan waktu pemrosesannya, hal ini kareana pemrosesan terjadi secara parallel. Awalnya multicore diawali oleh system multi prosesor. System ini membutuhkan banyak sumber daya untuk masing-masing prosesornya, untuk interkoneksinya dibutukan sebuah BUS berkecepatan tinggi dan setiap element prosessor memiliki RAN dn FSB. Sistem multi prosesor ini bekerja dengan maksimal untuk setiap elemen pemrosesannya. Karena setiap prosessor mempunyai RAM yang didedikasikan khusus untuk satu prosessor. Peningkatan kinerja berbanding dengan kecepatan dan kapasitas RAM yangdigunakan pada masing-masing elemen pemroses.

http://missmeiga.ngeblogs.com/tag/prosesor/


Kamis, 23 Juni 2011

variabel memori, array dan argumentasi

Variabel Memori
Variabel merupakan komponen penting pada pemrograman, Variabel digunakan dalam program untuk menyimpan suatu nilai, dan nilai yang ada padanya dapat dirubah selama eksekusi program berlangsung.
Jika suatu variable diisi dengan nilai di luar jangkauannya maka nilai yang akan disimpan akan diubah sesuai dengan jangkauannya. Misalnya, bila suatu variable bertipe integer diberi nilai 75000, yang tersimpan pada variable tersebut berupa 9494. Sebab nilai positif terbesar pada tipe integer yaitu 32767. Hal ini bekerja sebagaimana speedometer pada kendaraan bermotor. Pada spedometer, apabila nilai maksimumnya terlampaui akan dimulai dari nilai terendahnya, yakni nol
Komponen sebenarnya juga ditampung dalam variable seperti yang anda
maksud, jadi dalam contoh ada 2 set variable, variable adsMain & dsMain
Dan variable VDataset & VDataSource. Yang membedakan kedua set variable
ini adalah untuk variable adsMain dan dsMain, dia akan menempati memori
lebih banyak karena berisi instance dari kelas tersebut. Sedangkan pada
variable VDataset & VDatasource, hanya berisi Alamat yang menunjuk ke
Alamat dari instance kelas diatas tadi. Jadi akan menempati memori lebih
sedikit. Tapi memang kedua variable ini pastinya menempati Alamat memori
yang berbeda.


Array
Adalah pengaturan sistematis dari obyek, biasanya dalam baris dan kolom. Serta serangkaian unsur-unsur dari jenis yang sama ditempatkan di lokasi memori yang berdekatan yang dapat secara individual direferensikan dengan menambahkan indeks unik pengenal.
Itu berarti bahwa, misalnya, kita dapat menyimpan 5 nilai bertipe int dalam array tanpa harus mendeklarasikan 5 variabel yang berbeda, masing-masing dengan identifier yang berbeda. Daripada itu, menggunakan array, kita dapat menyimpan 5 nilai yang berbeda dari jenis yang sama, int misalnya, dengan identifikasi unik.
Umumnya, koleksi item data yang dapat dipilih oleh indeks dihitung pada saat run-time, termasuk:
Array struktur data
Pengaturan barang di spasi alamat yang sama di memori komputer
Array tipe data
Di gunakan dalam bahasa pemrograman untuk menentukan variabel yang dapat diindeks
Array asosiatif
Struktur model abstrak data yang generalizes indeks array untuk sewenang-wenang atau berbagai jenis di atas, seperti
Bit array atau vektor bit
Array dinamis , dialokasikan pada waktu berjalan
Paralel array catatan, dengan setiap bidang disimpan sebagai array terpisah
Jarang array , dengan unsur-unsur yang paling dihilangkan, untuk menyimpan matriks tipis
Variable-length array
Bergerigi array , dimana memiliki panjang baris yang berbeda secara individual atau terkait berbagai konsep:
Array prosesor , komputer untuk mengolah data array (jangan dikelirukan dengan array processor)
Array pemrograman , menggunakan notasi aljabar matriks dalam program (tidak sama dengan pengolahan array)
Array mengiris , ekstraksi sub-array dari array atau juga:
Global Array , perpustakaan untuk pemrosesan paralel
Intel Array Visualizer , sepotong perangkat lunak grafis ilmiah
Inisialisasi array.
Ketika mendeklarasikan array regular dari lingkup lokal (dalam satu fungsi, misalnya), jika kita tidak menentukan lain, unsur-unsur yang tidak akan diinisialisasi ke nilai default, sehingga konten mereka akan belum ditentukan sampai kita menyimpan beberapa nilai di dalamnya. Elemen-elemen array global dan statis, di sisi lain, secara otomatis diinisialisasi dengan nilai standar, yang untuk semua jenis fundamental ini berarti mereka penuh dengan nol.


sumber : http://rynaldobisnis.blogspot.com/2011/06/pengertian-tentang-variabel-memori.html

Senin, 23 Mei 2011

ALGORITMA PENCARIAN BINER (BINARY SEARCH)

Pencarian Biner (Binary Search) pada array yang sudah terurut

Pencarian Biner (Binary Search) dilakukan untuk :

memperkecil jumlah operasi pembandingan yang harus dilakukan antara data yang dicari dengan data yang ada di dalam tabel, khususnya untuk jumlah data yang sangat besar ukurannya.

Prinsip dasarnya adalah melakukan proses pembagian ruang pencarian secara berulang-ulang sampai data ditemukan atau sampai ruang pencarian tidak dapat dibagi lagi (berarti ada kemungkinan data tidak ditemukan).

Syarat utama untuk pencarian biner adalah data di dalam tabel harus sudah terurut, misalkan terurut menaik.

ALGORITMA

Kamus

Const N : integer = 8 { misalkan jumlah elemen array maksimum = 8 }

Type A = array [ 1 ..... N ] of integer

Cari, BatasAtas, BatasBawah, Tengah : Integer

Ketemu : boolean

ALGORITMA

Input (cari) { meminta nilai data yang akan dicari}

BatasAtas ¬ 1 { indeks array dimulai dari 1 }

BatasBawah ¬ N

Ketemu ¬ False

While (BatasAtas < BatasBawah) and (not ketemu) do

Tengah ¬ (BatasAtas + BatasBawah) div 2

If A [Tengah] = cari then

Ketemu ¬ true

Else

If ( A [Tengah] < cari ) then { cari di bagian kanan }

BatasAtas ¬ Tengah + 1

Else

BatasBawah ¬ Tengah – 1 { cari di bagian kiri }

Endif

Endif

EndWhile

If (ketemu) then

Output ( ‘Data berada di index nomor’, Tengah )

Else Output ( ‘Data tidak ditemukan’ )

Endif


Contoh Nilai-Nilai data yang sudah terurut :

A

2

5

8

12

15

25

37

57

1

2

3

3

5

6

7

8

Kasus 1 : cari = 12

Loop pertama : Tengah = (BatasAtas + BatasBawah) div 2 = (1 + 8) div 2 = 4

A [Tengah] = A [4] = 12, berarti loop pertama data langsung ditemukan

Kasus 2 : cari = 15

Loop pertama : Tengah = (BatasAtas + BatasBawah) div 2 = (1 + 8) div 2 = 4

A [Tengah] = A [4] = 12 < cari = 15, berarti BatasAtas = Tengah + 1 = 4 + 1 = 5

Loop kedua : Tengah = (BatasAtas + BatasBawah) div 2 = (5 + 8) div 2 = 6

A [Tengah] = A [6] = 25 > cari = 15, berarti BatasBawah = Tengah - 1 = 6 - 1 = 5

Loop ketiga : Tengah = (BatasAtas + BatasBawah) div 2 = (5 + 5) div 2 = 5

A [Tengah] = A [5] = 15, berarti setelah loop ketiga, data ditemukan

Kasus 3 : cari = 10

Loop pertama : Tengah = (BatasAtas + BatasBawah) div 2 = (1 + 8) div 2 = 4

A [Tengah] = A [4] = 12 > cari = 10, berarti BatasBawah = Tengah - 1 = 4 - 1 = 3

Loop kedua : Tengah = (BatasAtas + BatasBawah) div 2 = (1 + 3) div 2 = 2

A [Tengah] = A [2] = 5 < cari = 10, berarti BatasAtas = Tengah + 1 = 2 + 1 = 3

Loop ketiga : Tengah = (BatasAtas + BatasBawah) div 2 = (3 + 3) div 2 = 3

A [Tengah] = A [3] = 8, berarti setelah loop ketiga, data tidak ditemukan

Untuk jumlah data sebanyak n, maka proses pembandingan maksimal sebanyak ( log n ) kali. Untuk contoh di atas, jumlah data 8, maka proses pembandingan maksimal sebanyak 3 kali.

sumber : mita.staff.gunadarma.ac.id