Minggu, 21 Maret 2010

Di Balik Cerita Duka Korban Tsunami di Aceh

Di Balik Cerita Duka Korban Tsunami di Aceh




Di balik cerita duka korban tsunami di Aceh, ada juga sukacita yang dirasakan warga yang selamat. Salah
satunya, menempati rumah baru yang dibangun sejumlah LSM dan negara-negara donor. Pascatsunami, warga
tidak lagi harus bertahan hidup di rumah-rumah kayu yang kumuh. Mereka bisa menjalani hidup lebih nyaman
di rumah-rumah permanen.

SOFYAN Arsyad, salah seorang pegawai koperasi nelayan yang sejak awal tahun lalu tinggal di kampung Alun Naga, Kecamatan Syah Kuala, Banda Aceh, bersyukur bisa menempati rumah permanen tersebut. Rumahnya relatif
Dapat Penghasilan dari Sewa Rumah Bantuan bagus. Seukuran tipe 46 dengan luas tanh sekitar 200 meter persegi.
"Ya, kalau dihitung-hitung, lebih baik sekarang. Rumah sudah permanen. Kalau dulu, mikir berapabiaya untuk bikin rumah permanen," ujarnya kepada INDOPOS.

Sebelum musibah tsunami, dia tinggal di rumah kayu sekitar 100 meter mepet kawasan Pantai Alun Naga. Lingkungannya bisa dikatakan kumuh dan kotor. Tetangganya membikin kandang bebek tak jauh dari rumah Sofyan. "Jadi, bisa dibayangkan kotornya rumah." ucapnya.

Ketika tsunami menerjang. Sofyan mati-matian menyelamatkan diri. Namun, dia harus merelakan istri dan anak semata wayangnya tewas. Pascatsunami. pria berusia 35 tahun itu mulai membangun kehidupan baru. Dia menikah dengan perempuan yang juga tetangga di desanya. Saat ini mereka dikaruniai seorang anak.

Dengan menggunakan sedikit tabungan hasil kerja di koperasi, ditambah penghasilan tambahan sebagai relawan Badan Rekonstruksi dan Rehabilitasi Aceh-Nias (BRR), Sofyan dapat mempercantik rumah bantuan yang dihibahkan kepadanya. Dia adalah salah seorang di antara warga relokasi dari tepi pantai. "Sekarang sudah tambah kamar dan dapur agak luas." ujarnya.

Dia menyatakan tidak akan menjual rumahnya itu. "Kalau dijual, saya mau tinggal di mana," katanya.
Namun, pemberian rumah bantuan menjadi ladang bisnis bagi sejumlah warga di kampung itu. Sofyan menuturkan, warga yang dulu kaya dan punya beberapa rumah akan menyewakan rumah bantuan itu. Lumayan, setahun harga sewa rumah di kawasan itu berkisar Rp 3 juta. Kalau tidak mujur, harga sewa bisa hanya berkisar Rp 22 juta-Rp 2,5 juta.

Ada pula cara lain untuk mendapatkan uang. Biasanya pemilik rumah yang akan disewakan itu adalah anak-anak. Mereka menjadi yatim piatu karena kedua orang tuanya tewas akibat tsunami. Saat pemberian bantuan, bocah-bocah itu terdaftar sebagai penerima.

"Apalagi, kedua orang tuanya juga punya tanah. Jadi, dia (bocah bersangkutan) berhak (menerima)," ucap Sofyan. Hanya, karena masih kecil, bocah adi memilih untuk menyewakan rumah bantuan kepada orang lain. Sedangkan dia tinggal bersama paman atau saudaranya di kawasan yang sama.

Di kawasan Kampung Persahabatan Indonesia-Tiongkok, di kawasan Neheun, Aceh Besar, harga sewa rumah sebetulnya sama tinggi dengan di Alun Naga. Namun, tidak banyak warga setempat yang berani memindahtangankan rumah tersebut. "Kami belum memiliki sertifikat. Jadi, atas dasar apa, kami menjual rumah itu." kata Mochtrar, pensiunan PNS Pemkot Banda Aceh, yang kini menjadi tukang ojek. "Kami khawatir urusannya menjadi panjang," lanjutnya, lamas tertawa.

INDOPOS juga sempat menyusun dan melihat dari dekat rumah-rumah bantuan di kampung Meunasah Masjid di kawasan pesisir Pantai Lhok Nga, Aceh Besar. Di sana sejumlah rumah tak ditempati, (git/dwi)

operas-operasi/fungsi stack

Operasi-operasi/fungsi Stack
- Push : digunakan untuk menambah item
pada stack pada tumpukan paling atas
- Pop : digunakan untuk mengambil item
pada stack pada tumpukan paling atas
- Clear : digunakan untuk mengosongkan
stack
- IsEmpty : fungsi yang digunakan untuk
mengecek apakah stack sudah kosong
- IsFull : fungsi yang digunakan untuk
mengecek apakah stack sudah penuh

contoh stack

Contohnya kita menumpuk Compo di posisi
terakhir, maka Compo akan menjadi elemen
teratas dalam tumpukan. Sebaliknya,
karena kita menumpuk Televisi pada saat
pertama kali, maka elemen Televisi menjadi
elemen terbawah dari tumpukan. Dan jika
kita mengambil elemen dari tumpukan,
maka secara otomatis akan terambil elemen
teratas, yaitu Compo juga.

Kamis, 18 Maret 2010

kelebihan dan kekurangan topologi ring

kelebihan dan kekurangan topologi ring

Topologi jaringan komputer adalah bentuk perancangan baik secara fisik maupun secara logik yang digunakan untuk membangun
sebuah jaringan komputer. Ada 3 topologi dasar jaringan komputer, yaitu sbb.
1. Linear Bus
PC1 PC2 PC3 PC4
I I I I
Server=================== backbone==
I I I I
PC5 PC6 PC7 PC8
Pada topologi linear bus semua PC (terminal) dihubungkan pada jalur data (bus) yang berbentuk garis lurus (linear). Sehingga, data yang dikirim akan melalui semua terminal pada jalur tersebut. Jika alamat data tersebut sesuai dengan alamat yang dilalui, maka data tersebut akan diterima dan diproses. Namun, jika alamat tidak sesuai, maka data akan diabaikan oleh terminal yang dilalui dan pencarian alamat akan diteruskan hingga ditemukan alamat yang sesuai.
Kelebihan:
- hemat kabel
- mudah dikembangkan
- tidak membutuhkan kendali pusat
- layout kabel sederhana
- penambahan dan pengurangan terminal dapat dilakukan tanpa mengganggu operasi yang berjalan.
Kelemahan:
- deteksi dan isolasi kesalahan sangat kecil
- kepadatan lalu lintas tinggi
- keamanan data kurang terjamin
- kecepatan akan menurun bila jumlah user (pemakai) bertambah
- diperlukan repeater untuk jarak jauh
2. ring
PC1 server
_|_ /
PC2 -- ( _ _ ) – PC3
|
PC4
Pada topologi ring semua PC (terminal) dihubungkan pada jalur data (bus) yang membentuk lingkaran. Sehingga, setiap terminal dalam jaringan saling tergantung. Akibatnya, apabila terjadi kerusakan pada satu terminal, maka seluruh jaringan akan terganggu.
Kelebihan:
- hemat kabel
- tidak perlu penanganan bundel kabel khusus’
- dapat melayani lalu lintas data yang padat
Kelemahan:
- peka kesalahan
- pengembangan jaringan lebih kaku
- lambat
- kerusakan pada media pengirim/ terminal dapat melumpuhkan kerja seluruh jaringan
3. Star
PC1 Server
| /
PC2 – HUB – PC3
|
PC4
Pada topologi star semua PC (terminal) dihubungkan pada terminal pusat (server) yang menyediakan jalur komunikasi khusus untuk terminal yang akan berkomunikasi. Sehingga, setiap pengiriman data yang terjadi akan melalui terminal pusat.
Kelebihan:
- paling fleksibel karena pemasangan kabel mudah
- penambahan atau pengurangan terminal sangat mudah dan tidak mengganggu bagian jaringan yang lain
- kontrol terpusat sehingga memudahkan dalam deteksi dan isolasi kesalahan serta memudahkan pengelolaan jaringan
Kelemahan:
- boros kabel
- kontrol terpusat (HUB) jadi elemen kritis
- perlu penanganan khusus bundel kabel
Selain ketiga topologi dasar di atas juga terdapat topologi lainnya yang merupakan hasil pengembangan dari ketiga topologi tersebut. Topologi yang lainnya tersebut, antara lain:
1. tree/ hierarkis –merupakan hasil dari gabungan topologi bus dan star yang bentuknya seperti pohon bercabang;
2. mesh –merupakan hasil dari gabungan topologi bus, star, dan ring;
3. web –setiap terminal dalam topologi ini dapat saling berhubungan dengan terminal lainnya melalui beberapa link;dll.

Rabu, 17 Maret 2010

Bisnis Sampah yang Menjanjikan

Bisnis Sampah yang Menjanjikan

SELAMA ini sampah menjadi masalah yang krusial dalam penanganannya. Menurut catatan Dinas Kebersihan Provinsi DKI Jakarta, setiap orang di Jakarta menghasilkan sampah rata-rata 2,9 liter per hari. Dengan penduduk sekitar 12 juta jiwa, termasuk para komuter, tiap hari mereka menimbun 26.945 meter kubik atau sekitar 6.000 tong sampah.
Siapa sangka, sampah yang begitu banyak bisa menjadi bisnis yang menguntungkan dan memiliki prospek bagus. Hidayat mengelola sampah dan menghasilkan kredit karbon sesuai dengan konsep clean development mechanism (CDM).

Dia memasok biomassa ke beberapa perusahaan. Semula Hidayat adalah pemasok bunga krisan di supermarket. Selain itu, sejak 1993, dia juga memproduksi mesin pencacah plastik atau pengepres sampah. Namun, sebagian besar mesin yang dijualnya ternyata hanya menjadi pajangan semata. Pembeli yang kebanyakan dari pemerintah daerah tidak mampu mengoptimalkan pengoperasiannya.


Dari sanalah akhirnya tercetus ide untuk menawarkan jasa pengelolaan sampah. Sebagai langkah awal, Hidayat menawarkan konsep waste management di lingkungan sekitar tempat tinggalnya di kawasan Jatimurni, Bekasi. Dia memasang tong sampah kosong di setiap jalan utama kampung.
Awalnya dia tidak memungut biaya sepeser pun. Namun, setelah sebulan berlalu, HIdayat memungut biaya retribusi. Untuk satu tong sampah, dia memungut biaya retribusi Rp 30.000. Satu tong sampah ini bisa dipakai bersama atau individual.

Dengan mobil pikap, pekerja Hidayat akan mengambil sampah yang ada di tong. Kalau ada yang tercecer mereka akan meninggalkan di tempat semula. "Saya ingin masyarakat menghitung banyak sampah yang mereka hasilkan setiap harinya," tutur Hidayat.

Selain menangani sampah di wilayah Jatimurni, Hidayat juga melayani waste management di perumahan kawasan Cinere, BSD City Serpong, Cibubur, Citeureup, dan Pasar Ciroyom, Bandung. Kini Hidayat malah kewalahan melayani permintaan dari pengembang perumahan yang terpincut dengan gayanya mengelola sampah.

Meskipun begitu, Hidayat enggan mengambil semua peluang. Pasalnya, volume sampah yang masuk tempat pengolahan harus seimbang dengan kapasitas mesin pengolah agar tak terjadi penimbunan. Setiap hari Hidayat mampu mengolah 7,5 ton sampah.

Dari Sampah Keluar Emas

Setelah sampah terkumpul, mobil pikap pengumpul sampah segera meluncur ke tempat pengolahan sampah. Di sana sampah dimasukkan dalam mesin sortasi. Sampah organik dijadikan kompos, sementara anorganik mengalami proses lebih panjang, yakni melewati mesin pencacah dan pencuci.

Hasilnya, sampah plastik yang kondisinya masih bagus dijual untuk didaur ulang oleh pihak lain, sedangkan sampah yang tidak bisa diapa-apakan lagi akan dipadatkan untuk dijadikan biomassa.

Pelanggan Hidayat adalah beberapa pabrik semen, seperti PT Indocement Tunggal Prakasa, PT Holcim Indonesia, dan beberapa pabrik gula. "Banyak perusahaan yang membutuhkan biomassa karena harga BBM semakin melangit," kata Hidayat.

Saat ini Hidayat tengah menjajaki kerja sama dengan Jepang untuk teknologi pengubah plastik menjadi solar dan pengekstraksi gas metan yang ada dalam tanah. Selain itu, Hidayat juga menggelar program penciptaan 1.000 enterpreneur sampah.

Dia mendidik calon pengusaha yang tertarik dalam bisnis ini. Dari bisnis sampahnya, Hidayat mendapatkan setidaknya Rp 225 juta per bulan. Ke depan, Hidayat berangan-angan ingin mendaftarkan perusahaannya ke lantai bursa. "Masih lama sih, mungkin sepuluh tahun lagi," kata Hidayat.

Dasar-dasar Mempelajari Struktur Data

Dasar-dasar Mempelajari Struktur Data


Berbicara tentang struktur data, maka kita tidak bias terlepas dari yang namanya bahasa pemrograman. Bahasa pemrograman yang banyak dipelajari untuk pemrograman dasar adalah bahasa Pascal. Dalam tulisan saya ini saya akan membahas tentang konstanta, variable, dan tipe data yang biasa digunakan pada bahasa Pascal.

BAHASAN
Dalam istilah ilmu komputer, sebuah struktur data adalah cara penyimpanan, penyusunan dan pengaturan data di dalam media penyimpanan komputer sehingga data tersebut dapat digunakan secara efisien.

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

Dalam mempelajari struktur data hal-hal awal yang perlu kita ketahui adalah tentang konstanta, variable, dan tipe data. Nah dalam bahasan ini saya akan membahas tentang ketiga hal di atas.

Konstanta
Dalam membuat suatu program, kita perlu menggunakan konstanta agar program kita bisa lebih mudah diperbaiki jika ada suatu kesalahan yang kita buat. Dengan menggunakan konstanta kita bisa memberikan nama yang mudah dimengerti dan dipahami untuk bilangan numerik yang sangat kompleks. Konstanta dideklarasikan pada awal program dan dideklarasikan dengan kata baku const. Pada pemrograman dengan Pascal dideklarasikan sebelum blok begin-end program utama. Bentuk umum dari konstanta adalah:

Cnst
namakonstanta1 = nilaikonstanta1;
namakonstanta1 = nilaikonstanta1;
namakonstantaN = nilaikonstantaN;

contoh konstantanya adalah:
const
maximum =100;
luas lingkarn = pi*radius;
pi = 3,14;

sesuai dengan namanya “konstanta”, maka nilai dalam konstanta selalu konstan atau tetap dan kita tidak dapat merubah nilai dari konstanta pada saat program sedang dijalankan.

Variabel
Variabel adalah lokasi di memori yang kita siapkan dan kita beri nama khas untuk menampung suatu nilai dan atau mengambil nilai kembali tersebut. Bentuk umum dari variable adalah:

Var
NamaVariabel1,
NamaVariabel2,
……………….
NamaVariabel1N : TipeData1;
NamaVariabel1,
NamaVariabel2,
NamaVariabelNN : TipeDataN;

Contoh dari variable adalah:

Var
Nilai1,
Nilai2,
Nilai3 : byte;
Nama : string(20);
Totaldata : integer;

Tipe Data
Dalam tulisan ini yang akan dibahas adalah tipe data sederhana.

Tipe Data Sederhana
Pascal sudah memiliki dan memnyediakan beberapa tipe data sederhana yang sudah siap kita pakai. Tipe-tipe data yang sudah disediakan Pascal adalah:
* Integer
* Boolean
* Real
* Karakter
* String

Baiklah mari kita bahas satu per satu tipe data ini.

Integer
Integer adalah tipe data nilainya merupakan bilangan bulat dan teerbagi atas beberapa macam. Berikut ini adalaha tabelnya:
Type Range Ukuran Format
ShortIn

Integer

LongInt

Byte

Word
-128…127

-32768..32767

-2147483648..2147483647

0..255

0..65535
1

2

4

1

2
Signed 8-bit

Signed 16-bit

Signed 32-bit

Unsigned 8-bit

Unsigned 16-bit

Boolean

Boolean digunakan untuk merepresentasikan logika. Bolean hanya dapat bernilai True(1) dan False(0). Di bawah ini adalah beberapa tipe data Boolean:
Type Range Ukuran
Boolean

ByteBool

WordBool

LongBool
Byte-sized

Byte-sized

Word-sized

Long-sized
1 (8bit)

1 (8bit)

2 (16bit)

4 (32bit)

Real

Real biasanya digunakan untuk merepresentasikan nilai pecahan. Jenis-jenis tipe data real seperti pada tabel berikut ini:
Type Range Ukuran Digit
Real

Single

Double

Extended

Comp
±2.9×10-39..1.7×1038

±1.5×10-45..3.4×1038

±5×10-324..1.7×10308

±3.4×10-4932..1.1×104932

±9.2×1018..9.2×1018
6

4

8

10

8
11-12

7-8

15-16

19-20

19-20

Karakter
Tipe data karakter hanya dapat menampung satu karakter saja dan mengalokasikan satu byte memori. Bentuk umum dari tipe data karakter adalah:

Var
: char;

Berikut ini contoh dari penggunaan tipe data karakter:

Var
Kalimat : string;
Nama : string(20);
String : string(30);

String
String adalah tipe data gabungan(array) dari karakter sebanyal 256 karakter. Bentuk umum dari string adalah:

Var: string;

Berikut ini adalah contohnya:

Var
Nama : string(20);
Alamat : string(30);

Itulah beberapa tipe data sederhana yang sudah disediakan oleh Pascal dalam bahasa pemrograman Pascal. Namun ada juga tipe data lain yang elemennya kita sebutkan satu persatu. Tipe data ini adalah tipe data Enumerasi. Bentuk umum dari tipe data enumerasi adalah:

type : (elemen1, elemen2, elemen3….elemenN);

contohnya:

type
binatang = (anjing, kucing, ayam, babai);

Rabu, 10 Maret 2010

karakteristik Queue(antrian)

Karakteristik yang membedakan queue (antrian) dari stack adalah cara
menyimpan dan mengambil data dengan struktur first in first out (FIFO). Hal ini berarti
elemen pertama yang ditempatkan pada queue adalah yang pertama dipindahkan.
Contoh yang paling populer untuk membayangkan sebuah queue adalah antrian
pada kasir sebuah bank. Ketika seorang pelanggan datang, akan menuju ke belakang
dari antrian. Setelah pelanggan dilayani, antrian yang berada di depan akan maju. Pada
saat menempatkan elemen pada ujung (tail) dari queue disebut dengan enqueue, pada
saat memindahkan elemen dari kepala (head) sebuah queue disebut dengan dequeue.

Karakteristik Queue
Karakteristik penting dari antrian adalah :
1. Elemen antrian yaitu item-item data yang terdapat di elemen antrian
2. Front (elemen terdepan dari antrian)
3. Rear (elemen terakhir dari antrian)
4. Jumlah elemen pada antrian (Count)
5. Status antrian
Kondisi antrian yang menjadi perhatian adalah ;
1. Penuh
Bila elemen pada antrian mencapai kapasitas maksimum antrian. Pada kondisi ini,
tidak mungkin dilakukan penambahan ke antrian. Penambahan elemen
menyebabkan kondisi kesalahan Overflow.
2. Kosong
Bila tidak ada elemen pada antrian. Pada kondisi ini, tidak mngkin dilakukan
pengambilan elemen dari antrian. Pengambilan elemen menyebabkan kondisi
kesalahan Overflow.

Pendeklarasian stack

Pendeklarasian stack

Proses pendeklarasian stack adalah proses pembuatan struktur stack dalam memori. Karena stack dapat direpresentasikan dalam 2 cara, maka pendeklarasian stack pun ada 2 yaitu :
a. Pendeklarasian stack yang menggunakan array.
Suatu stack memiliki beberapa bagian yaitu
- top yang menunjuk posisi data terakhir (top)
- elemen yang berisi data yang ada dalam stack. Bagian ini lah yang berbentuk array.
- maks_elemen yaitu variable yang menunjuk maksimal banyaknya elemen dalam stack.
Dalam bahasa C, pendeklarasiannya adalah :
#define maks 100
//pendeklarasian struktur stack
struct tstack{
int top;
int maks_elemen;
int elemen[maks];
};
//pendeklarasian stack
tstack stack;
b. Pendeklarasian stack yang menggunakan single linked list
Adapun stack yang menggunakan single linked list, hanya memerlukan suatu pointer yang menunjuk ke data terakhir (perhatikan proses di halaman sebelumnya). Setiap elemen linked list mempunyai 2 field yaitu elemen datanya dan pointer bawah yang menunjuk posisi terakhir sebelum proses push.
Pendeklarasian dalam bahasa C adalah :
typedef struct TStack *PStack;
typedef struct TStack

int elemen;
PStack bawah;

contoh pendeklarasian variable stack
PStack stack;//variable stack akan selalu menunjuk top.
Struktur Elemen
Linked List
int Elemen
PStack Bawah
contoh pendeklarasian variable stack
PStack stack;//variable stack akan selalu menunjuk top.

Senin, 08 Maret 2010

struktur komputer

Struktur Komputer

Struktur sebuah sistem komputer dapat dibagi menjadi:

*

Sistem Operasi Komputer.
*

Struktur I/O.
*

Struktur Penyimpanan.
*

Storage Hierarchy.
*

Proteksi Perangkat Keras.

Sistem Operasi Komputer

Dewasa ini sistem komputer multiguna terdiri dari CPU (Central Processing Unit); serta sejumlah device controller yang dihubungkan melalui bus yang menyediakan akses ke memori. Setiap device controller bertugas mengatur perangkat yang tertentu (contohnya disk drive, audio device, dan video display). CPU dan device controller dapat dijalankan secara bersamaan, namun demikian diperlukan mekanisme sinkronisasi untuk mengatur akses ke memori.

Pada saat pertama kali dijalankan atau pada saat boot, terdapat sebuah program awal yang mesti dijalankan. Program awal ini disebut program bootstrap. Program ini berisi semua aspek dari sistem komputer, mulai dari register CPU, device controller, sampai isi memori.

Interupsi merupakan bagian penting dari sistem arsitektur komputer. Setiap sistem komputer memiliki mekanisme yang berbeda. Interupsi bisa terjadi apabila perangkat keras (hardware) atau perangkat lunak (software) minta "dilayani" oleh prosesor. Apabila terjadi interupsi maka prosesor menghentikan proses yang sedang dikerjakannya, kemudian beralih mengerjakan service routine untuk melayani interupsi tersebut. Setelah selesai mengerjakan service routine maka prosesor kembali melanjutkan proses yang tertunda.
Struktur I/O

Bagian ini akan membahas struktur I/O, interupsi I/O, dan DMA, serta perbedaan dalam penanganan interupsi.
Interupsi I/O

Untuk memulai operasi I/O, CPU me-load register yang bersesuaian ke device controller. Sebaliknya device controller memeriksa isi register untuk kemudian menentukan operasi apa yang harus dilakukan. Pada saat operasi I/O dijalankan ada dua kemungkinan, yaitu synchronous I/O dan asynchronous I/O. Pada synchronous I/O, kendali dikembalikan ke proses pengguna setelah proses I/O selesai dikerjakan. Sedangkan pada asynchronous I/O, kendali dikembalikan ke proses pengguna tanpa menunggu proses I/O selesai. Sehingga proses I/O dan proses pengguna dapat dijalankan secara bersamaan.
Struktur DMA

Direct Memory Access (DMA) suatu metoda penanganan I/O dimana device controller langsung berhubungan dengan memori tanpa campur tangan CPU. Setelah men-set buffers, pointers, dan counters untuk perangkat I/O, device controller mentransfer blok data langsung ke penyimpanan tanpa campur tangan CPU. DMA digunakan untuk perangkat I/O dengan kecepatan tinggi. Hanya terdapat satu interupsi setiap blok, berbeda dengan perangkat yang mempunyai kecepatan rendah dimana interupsi terjadi untuk setiap byte (word).
Struktur Penyimpanan

Program komputer harus berada di memori utama (biasanya RAM) untuk dapat dijalankan. Memori utama adalah satu-satunya tempat penyimpanan yang dapat diakses secara langsung oleh prosesor. Idealnya program dan data secara keseluruhan dapat disimpan dalam memori utama secara permanen. Namun demikian hal ini tidak mungkin karena:

*

Ukuran memori utama relatif kecil untuk dapat menyimpan data dan program secara keseluruhan.
*

Memori utama bersifat volatile, tidak bisa menyimpan secara permanen, apabila komputer dimatikan maka data yang tersimpan di memori utama akan hilang.

Memori Utama

Hanya memori utama dan register merupakan tempat penyimpanan yang dapat diakses secara langsung oleh prosesor. Oleh karena itu instruksi dan data yang akan dieksekusi harus disimpan di memori utama atau register.

Untuk mempermudah akses perangkat I/O ke memori, pada arsitektur komputer menyediakan fasilitas pemetaan memori ke I/O. Dalam hal ini sejumlah alamat di memori dipetakan dengan device register. Membaca dan menulis pada alamat memori ini menyebabkan data ditransfer dari dan ke device register. Metode ini cocok untuk perangkat dengan waktu respon yang cepat seperti video controller.

Register yang terdapat dalam prosesor dapat diakses dalam waktu 1 clock cycle. Hal ini menyebabkan register merupakan media penyimpanan dengan akses paling cepat bandingkan dengan memori utama yang membutuhkan waktu relatif lama. Untuk mengatasi perbedaan kecepatan, dibuatlah suatu penyangga (buffer) penyimpanan yang disebut cache.
Magnetic Disk

Magnetic Disk berperan sebagai secondary storage pada sistem komputer modern. Magnetic Disk disusun dari piringan-piringan seperti CD. Kedua permukaan piringan diselimuti oleh bahan-bahan magnetik. Permukaan dari piringan dibagi-bagi menjadi track yang memutar, yang kemudian dibagi lagi menjadi beberapa sektor.
Storage Hierarchy

Dalam storage hierarchy structure, data yang sama bisa tampil dalam level berbeda dari sistem penyimpanan. Sebagai contoh integer A berlokasi pada bekas B yang ditambahkan 1, dengan asumsi bekas B terletak pada magnetic disk. Operasi penambahan diproses dengan pertama kali mengeluarkan operasi I/O untuk menduplikat disk block pada A yang terletak pada memori utama Operasi ini diikuti dengan kemungkinan penduplikatan A ke dalam cache dan penduplikatan A ke dalam internal register. Sehingga penduplikatan A terjadi di beberapa tempat. Pertama terjadi di internal register dimana nilai A berbeda dengan yang di sistem penyimpanan. Dan nilai di A akan kembali sama ketika nilai baru ditulis ulang ke magnetic disk.

Pada kondisi multi prosesor, situasi akan menjadi lebih rumit. Hal ini disebabkan masing-masing prosesor mempunyai local cache. Dalam kondisi seperti ini hasil duplikat dari A mungkin hanya ada di beberapa cache. Karena CPU (register-register) dapat dijalankan secara bersamaan maka kita harus memastikan perubahan nilai A pada satu cache akan mengubah nilai A pada semua cache yang ada. Hal ini disebut sebagai Cache Coherency.
Proteksi Perangkat Keras

Sistem komputer terdahulu berjenis programmer-operated systems. Ketika komputer dioperasikan dalam konsul mereka (pengguna) harus melengkapi sistem terlebih dahulu. Akan tetapi setelah sistem operasi lahir maka hal tersebut diambil alih oleh sistem operasi. Sebagai contoh pada monitor yang proses I/O sudah diambil alih oleh sistem operasi, padahal dahulu hal ini dilakukan oleh pengguna.

Untuk meningkatkan utilisasi sistem, sistem operasi akan membagi sistem sumber daya sepanjang program secara simultan. Pengertian spooling adalah suatu program dapat dikerjakan walau pun I/O masih mengerjakan proses lainnya dan disk secara bersamaan menggunakan data untuk banyak proses. Pengertian multi programming adalah kegiatan menjalankan beberapa program pada memori pada satu waktu.

Pembagian ini memang menguntungkan sebab banyak proses dapat berjalan pada satu waktu akan tetapi mengakibatkan masalah-masalah baru. Ketika tidak di sharing maka jika terjadi kesalahan hanyalah akan membuat kesalahan program. Tapi jika di-sharing jika terjadi kesalahan pada satu proses/ program akan berpengaruh pada proses lainnya.

Sehingga diperlukan pelindung (proteksi). Tanpa proteksi jika terjadi kesalahan maka hanya satu saja program yang dapat dijalankan atau seluruh output pasti diragukan.

Banyak kesalahan pemprograman dideteksi oleh perangkat keras. Kesalahan ini biasanya ditangani oleh sistem operasi. Jika terjadi kesalahan program, perangkat keras akan meneruskan kepada sistem operasi dan sistem operasi akan menginterupsi dan mengakhirinya. Pesan kesalahan disampaikan, dan memori dari program akan dibuang. Tapi memori yang terbuang biasanya tersimpan pada disk agar programmer bisa membetulkan kesalahan dan menjalankan program ulang.
Operasi Dual Mode

Untuk memastikan operasi berjalan baik kita harus melindungi sistem operasi, program, dan data dari program-program yang salah. Proteksi ini memerlukan share resources. Hal ini bisa dilakukan sistem operasi dengan cara menyediakan pendukung perangkat keras yang mengizinkan kita membedakan mode pengeksekusian program.

Mode yang kita butuhkan ada dua mode operasi yaitu:

*

Mode Monitor.
*

Mode Pengguna.

Pada perangkat keras akan ada bit atau Bit Mode yang berguna untuk membedakan mode apa yang sedang digunakan dan apa yang sedang dikerjakan. Jika Mode Monitor maka akan benilai 0, dan jika Mode Pengguna maka akan bernilai 1.

Pada saat boot time, perangkat keras bekerja pada mode monitor dan setelah sistem operasi di-load maka akan mulai masuk ke mode pengguna. Ketika terjadi trap atau interupsi, perangkat keras akan men-switch lagi keadaan dari mode pengguna menjadi mode monitor (terjadi perubahan state menjadi bit 0). Dan akan kembali menjadi mode pengguna jikalau sistem operasi mengambil alih proses dan kontrol komputer (state akan berubah menjadi bit 1).
Proteksi I/O

Pengguna bisa mengacaukan sistem operasi dengan melakukan instruksi I/O ilegal dengan mengakses lokasi memori untuk sistem operasi atau dengan cara hendak melepaskan diri dari prosesor. Untuk mencegahnya kita menganggap semua instruksi I/O sebagai privilidge instruction sehingga mereka tidak bisa mengerjakan instruksi I/O secara langsung ke memori tapi harus lewat sistem operasi terlebih dahulu. Proteksi I/O dikatakan selesai jika pengguna dapat dipastikan tidak akan menyentuh mode monitor. Jika hal ini terjadi proteksi I/O dapat dikompromikan.
Proteksi Memori

Salah satu proteksi perangkat keras ialah dengan proteksi memori yaitu dengan pembatasan penggunaan memori. Disini diperlukan beberapa istilah yaitu:

*

Base Register yaitu alamat memori fisik awal yang dialokasikan/ boleh digunakan oleh pengguna.
*

Limit Register yaitu nilai batas dari alamat memori fisik awal yang dialokasikan/boleh digunakan oleh pengguna.
*

Proteksi Perangkat Keras.

Sebagai contoh sebuah pengguna dibatasi mempunyai base register 300040 dan mempunyai limit register 120900 maka pengguna hanya diperbolehkan menggunakan alamat memori fisik antara 300040 hingga 420940 saja.

struktur data dan basis data

Telah diketahui bahwa secara fisik data dalam bentuk kumpulan bit dan direkam dengan basis track didalam media penyimpan eksternal. Dalam prakteknya, untuk kemudahan dalam mengakses data, data disusun dalam suatu struktur logis yang menjelaskan bahwa:

* 1. Kumpulan tabel menyusun basis data,
* 2. Tabel tersusun atas sejumlah record,
* 3. Sebuah record mengandung sejumlah field, dan
* 4. Sebuah field disimpan dalam bentuk kumpulan bit.

Pengertian masing-masing istilah diatas adalah seperti berikut:

a. Field (medan) menyatakan data terkecil yang memiliki makna. Istilah lain untuk field yaitu elemen data, kolom item, dan atribut. Contoh field yaitu nama seseorang, jumlah barang yang dibeli, dan tanggal lahir seseorang.

b. Record (rekaman) menyatakan kumpulan dari sejumlah elemen data yang saling terkait. Sebagai contoh, nama, alamat, tanggal lahir, dan jenis kelamin dari seseorang menyusun sebuah record. Istilah lain yang juga menyatakan record yaitu tupel dan baris.

c. Tabel menghimpun sejumlah record. Sebagai contoh, data pribadi dari semua pegawai disimpan dalam sebuah tabel.

d. Basis data (database) adalah suatu pengorganisasian sekumpulan data yang saling terkait sehingga memudahkan aktivitas untuk memperoleh informasi. Sebagai contoh, basis data akademis mengandung tabel-tabel yang berhubungan dengan data mahasiswa, data jurusan, data mata kuliah, data pengambilan mata kuliah pada suatu semester, dan nilai yang diperoleh mahasiswa.

array

ARRAY

Array adalah sekelompok data sejenis yang disimpan ke dalam variabel dengan nama yang sama, dengan memberi indeks pada variabel untuk membedakan antara yang satu dengan yang lain.

VARIABEL ARRAY
nama_variabel[indeks]

ketentuan nama variabel arrray sama dengan nama variabel biasa.
indeks menunjukkan nomor dari variabel .

DEKLARASI VARIABEL ARRAY

BU : tipe nama_variabel[indeks];

Contoh : float bil[10];
deklarasi variabel array dengan nama bil yang akan menampung 10 data yang bertipe float. Indeks 10 menunjukkan variabel bil terdiri dari 10 elemen, dimana setiap elemen akan menampung sebuah data.

Indeks array dimulai dari nol(0) , sedang nomor elemen biasanya dimulai dari satu(1). Nomor elemen dapat dibuat sama dengan nomor indeks untuk mempermudah pembuatan program yaitu dengan memberi indeks satu lebih banyak dari jumlah data yang dibutuhkan, sehingga menjadi :
float bil[11]

INISIALISASI ARRAY 1 DIMENSI
Inisialisasi dapat dilakukan bersama dengan deklarasi atau tersendiri. Inisialisasi suatu array adalah dengan meletakkan elemen array di antara tanda kurung kurawal {}, antara elemen yang satu dengan lainnya dipisahkan koma.
int bil[2] = {4,1,8}

bil[0] = 4
bil[1] = 1
bil[2] = 8

AUTOMATIC ARRAY adalah Inisialisasi array dilakukan di dalam fungsi tertentu. Hanya compiler C yang berstandar ANSI C yang dapat menginisialisasikan automatic array.
Cara menginisialisasikan array dari compiler yg tidak mengikuti standar ANSI C:
1. Diinisialisasikan di luar fungsi sebagai variabel GLOBAL/EXTERNAL ARRAY.
int bil[2]={0,0,0};
main()

2. Diinisialisasikan didlm fungsi sebagai variabel LOKAL/STATIC ARRAY.
main()
{
static int bil[2]={0,0,0};
.........

Pada automatic array yang tidak diinisialisasikan , elemen array akan memiliki nilai yang tidak beraturan. Bila global & static array tidak diinisialisasi maka semua elemen array secara otomatis akan diberi nilai nol(0).

Contoh :
main()
{
int y;
int hitung=0;
int x[0];
for(y=0;y<5;y++) { hitung+=y; x[y]=hitung; printf("%3d - %3d\n",y,x[y]); } } OUTPUT: 0- 0 1- 1 2- 3 3- 6 4- 10 MENDEFINISIKAN JUMLAH ELEMEN ARRAY DALAM VARIABEL Besarnya variabel indeks dapat ditentukan dengan menggunakan preprocessor directives #define #define N 40 main() { int no[N],gaji[N],gol[N],status[N],juman[N]; Bila besari indeks akan diubah menjadi 50, cukup diganti dengan #define N 50 ARRAY 2 DIMENSI nama_variabel [indeks1][indeks2] indeks1 : jumlah/nomor baris indeks2 : jumlah/nomor kolom Jumlah elemen yang dimiliki array 2 dimensi dapat ditentukan dari hasil perkalian indeks1 * indeks2 misal : array A[2][3] akan memiliki 2*3 = 6 elemen. main() { float bil [5] [5] ....... dapat dituliskan dengan #define #define N 5 main() { float bil [N] [N] ....... INISIALISASI ARRAY 2 DIMENSI main() { float bil[2] [3] = { { 1,2,3}, /*baris 0*/ { 4,5,6}, /*baris 1*/ } elemen bil [0] [0] = 1 elemen bil [0] [1] = 2 elemen bil [0] [2] = 3 elemen bil [1] [0] = 4 elemen bil [1] [1] = 5 elemen bil [1] [2] = 6 Contoh : main() { int x[3][5]; int y,z; int hitung=0; for(y=0;y<3;y++) { printf("y = %d\n",y); for(z=0;z<5;z++) { hitung+=z; x[y][z] = hitung; printf("%/t%3d - %3d\n",z,x[y][z]); } } } OUTPUT: y = 0 0- 0 1- 1 2- 2 3- 6 4- 10 y = 1 0- 10 1- 11 2- 13 3- 16 4- 20 y = 2 0- 20 1- 21 2- 23 3- 26 4- 30 STRING dan ARRAY 1. Pada string terdapat karakter null(\0) di akhir string 2. String sudah pasti array, array belum tentu string CONTOH - CONTOH : 1. array dengan pengisian input melalui keyboard baca_input() { float nilai[10]; for(i=0;i<10;i++) scanf("%d",&nilai[i]); } 2. Fungsi yang mencetak isi array dari akhir ke awal cetak_array() { float nilai[10]; for(i=9;i>=0;i--)
scanf("%3f",nilai[i]);
}
3. Menghitung rata - rata isi array nilai
rata_rata()
{
float nilai[10],jum*rata;
for(i=0,jum=0;i<=9;i++) jum+=nilai[i]; rata=jum/i; } 4. Mencari nilai terbesar besar() float temp,nilai[10]; { for(temp=nilai[0],i=1;i<=9;i++) if(nilai[i] > temp)
temp=nilai[i];
}
return(temp)

Tipe - Tipe Data yang didukung oleh MySQL

Tipe - Tipe Data yang didukung oleh MySQL

Pada artikel ini kita akan membahas tipe - tipe data yang didukung oleh MySQL. Pemilihan tipe data merupakan suatu hal yang cukup penting dalam mengelola server. Salah satu sebabnya adalah berkaitan dengan ruang di harddisk dan memori yang akan “digunakan” oleh data-data tersebut.

Berikut ini akan diberikan tipe-tipe data yang didukung oleh MySQL yang terambil dari dokumentasi MySQL. Tipe - tipe data ini diberikan dalam bentuk yang siap dituliskan pada sintaks-sintaks MySQL, misalnya Create Table. Pada tipe-tipe data tersebut terdapat beberapa atribut yang memiliki arti sebagai berikut:

* M, menunjukkan lebar karakter maksimum. Nilai M maksimum adalah 255.
* D, menunjukkan jumlah angka di belakang koma. Nilai maksimum D adalah 30 tetapi dibatasi oleh nilai M, yaitu tidak boleh lebih besar daripada M-2.
* Atribut yang diberi tanda [ dan ] berarti pemakaiannya adalah optional.
* Jika atribut ZEROFILL disertakan, MySQL akan otomatis menambahkan atribut UNSIGNED.
* UNSIGNED adalah bilangan tanpa tanda di depannya (misalnya tanda negatif).

Inilah tipe-tipe data tersebut:

* TINYINT[(M)] [UNSIGNED] [ZEROFILL]

Integer yang sangat kecil jangkauan nilainya, yaitu -128 hingga 127. Jangkauan unsigned adalah 0 hingga 255.

* SMALLINT[(M)] [UNSIGNED] [ZEROFILL]

Integer yang kecil jangkauan nilainya, yaitu -32768 hingga 32767. Jangkauan unsigned adalah 0 hinga 65535.

* MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]

Integer tingkat menengah. Jangkauan nilainya adalah -8388608 hingga 8388607. Jangkauan unsigned adalah 0 hingga 16777215.

* INT[(M)] [UNSIGNED] [ZEROFILL]

Integer yang berukuran normal. Jangkauan nilainya adalah -2147483648 hingga 2147483647. Jangkauan unsigned adalah 0 hingga 4294967295.

* INTEGER[(M)] [UNSIGNED] [ZEROFILL]

Sama dengan INT.

* BIGINT[(M)] [UNSIGNED] [ZEROFILL]

Integer berukuran besar. Jangkauan nilainya adalah -9223372036854775808 hingga 9223372036854775807. Jangkauan unsigned adalah 0 hingga 18446744073709551615.

* FLOAT(precision) [ZEROFILL]

Bilangan floating-point. Tidak dapat bersifat unsigned. Nilai atribut precision adalah <=24 untuk bilangan floating-point presisi tunggal dan di antara 25 dan 53 untuk bilangan floating-point presisi ganda. * FLOAT[(M,D)] [ZEROFILL] Bilangan floating-point presisi tunggal. Tidak dapat bersifat unsigned. Nilai yang diijinkan adalah -3.402823466E+38 hingga -1.175494351E-38 untuk nilai negatif, 0, and 1.175494351E-38 hingga 3.402823466E+38 untuk nilai positif. * DOUBLE[(M,D)] [ZEROFILL] Bilangan floating-point presisi ganda. Tidak dapat bersifat unsigned. Nilai yang diijinkan adalah -1.7976931348623157E+308 hingga -2.2250738585072014E-308 untuk nilai negatif, 0, dan 2.2250738585072014E-308 hingga 1.7976931348623157E+308 untuk nilai positif. * DOUBLE PRECISION[(M,D)] [ZEROFILL] dan REAL[(M,D)] [ZEROFILL] Keduanya sama dengan DOUBLE. * DECIMAL[(M[,D])] [ZEROFILL] Bilangan floating-point yang “unpacked”. Tidak dapat bersifat unsigned. Memiliki sifat mirit dengan CHAR. Kata “unpacked'' berarti bilangan disimpan sebagai string, menggunakan satu karakter untuk setiap digitnya. Jangkauan nilai dari DECIMAL sama dengan DOUBLE, tetapi juga tergantung dai nilai atribut M dan D yang disertakan. Jika D tidak diisi akan dianggap 0. Jika M tidak diisi maka akan dianggap 10. Sejak MySQL 3.22 nilai M harus termasuk ruang yang ditempati oleh angka di belakang koma dan tanda + atau -. * NUMERIC(M,D) [ZEROFILL] Sama dengan DECIMAL. * DATE Sebuah tanggal. MySQL menampilkan tanggal dalam format 'YYYY-MM-DD'. Jangkauan nilainya adalah '1000-01-01' hingga '9999-12-31'. * DATETIME Sebuah kombinasi dari waktu (jam) dan tanggal. MySQL menampilkan waktu dan tanggal dalam format 'YYYY-MM-DD HH:MM:SS'. Jangkauan nilainya adalah '1000-01-01 00:00:00' hingga '9999-12-31 23:59:59'. * TIMESTAMP[(M)] Sebuah timestamp. Jangkauannya adalah dari '1970-01-01 00:00:00' hingga suatu waktu di tahun 2037. MySQL menampilkan tipe data TIMESTAMP dalam format YYYYMMDDHHMMSS, YYMMDDHHMMSS, YYYYMMDD, atau YYMMDD, tergantung dari nilai M, apakah 14 (atau tidak ditulis), 12, 8, atau 6. * TIME Tipe data waktu. Jangkauannya adalah '-838:59:59' hingga '838:59:59'. MySQL menampilkan TIME dalam format 'HH:MM:SS'. * YEAR[(2|4)] Angka tahun, dalam format 2- atau 4-digit (default adalah 4-digit). Nilai yang mungkin adalah 1901 hingga 2155, 0000 pada format 4-digit, dan 1970-2069 pada format 2-digit (70-69). * CHAR(M) [BINARY] String yang memiliki lebar tetap. Nilai M adalah dari 1 hingga 255 karakter. Jika ada sisa, maka sisa tersebut diisi dengan spasi (misalnya nilai M adalah 10, tapi data yang disimpan hanya memiliki 7 karakter, maka 3 karakter sisanya diisi dengan spasi). Spasi ini akan dihilangkan apabila data dipanggil. Nilai dari CHAR akan disortir dan diperbandingkan secara case-insensitive menurut default character set yang tersedia, kecuali bila atribut BINARY disertakan. * VARCHAR(M) [BINARY] String dengan lebar bervariasi. Nilai M adalah dari 1 hingga 255 karakter. Jika nilai M adalah 10 sedangkan data yang disimpan hanya terdiri dari 5 karakter, maka lebar data tersebut hanya 5 karakter saja, tidak ada tambahan spasi. * TINYBLOB dan TINYTEXT Sebuah BLOB (semacam catatan) atau TEXT dengan lebar maksimum 255 (2^8 - 1) karakter. * BLOB dan TEXT Sebuah BLOB atau TEXT dengan lebar maksimum 65535 (2^16 - 1) karakter. * MEDIUMBLOB dan MEDIUMTEXT Sebuah BLOB atau TEXT dengan lebar maksimum 16777215 (2^24 - 1) karakter. * LONGBLOB dan LONGTEXT Sebuah BLOB atau TEXT dengan lebar maksimum 4294967295 (2^32 - 1) karakter. * ENUM('value1','value2',...) Sebuah enumerasi, yaitu objek string yang hanya dapat memiliki sebuah nilai, dipilih dari daftar nilai 'value1', 'value2', ..., NULL atau nilai special "" error. Sebuah ENUM maksimum dapat memiliki 65535 jenis nilai. * SET('value1','value2',...) Sebuah set, yaitu objek string yang dapat memiliki 0 nilai atau lebih, yang harus dipilih dari daftar nilai 'value1', 'value2', .... Sebuah SET maksimum dapat memiliki 64 anggota. Nah, dengan mengenal tipe-tipe data yang didukung oleh MySQL, Anda dapat dengan tepat memilih tipe data yang Anda butuhkan dalam menyusun sebuah database. Misalnya Anda hendak menyimpan data jumlah suatu stok barang yang tidak melebihi angka 200 misalnya, maka sebaiknya Anda memilih tipe data TINYINT yang diberi atribut UNSIGNED. Alasannya adalah jumlah stok tidak melebihi 200 dan tidak mungkin lebih kecil dari 0, dan tipe data TINYINT memiliki jangkauan 0 hingga 255, jadi memenuhi syarat untuk digunakan. Contoh yang lain, misalnya Anda hendak membuat database nomor telpon dari teman-teman Anda. Memang nomor telpon seluruhnya terdiri dari angka, namun nampaknya tidak tepat bila disimpan dalam tipe data INT (atau bahkan BIGINT bila hendak menyimpan nomor handphone). Lebih baik dimasukkan ke dalam CHAR atau VARCHAR dengan M adalah 12. Mengapa 12? Karena nomor handphone terpanjang terdiri dari 12 digit. Sedangkan nomor telpon rumah terpanjang adalah 8 digit ditambah kode area terpanjang 4 digit, jadi angka 12 sangat pas. Lalu bagaimana penerapannya dalam operasi MySQL? Misalnya Anda hendak membuat tabel stok barang dengan masing-masing field adalah kode barang, nama barang, harga barang, supplier, dan tanggal beli, maka kemungkinan perintah yang harus ditulis adalah sebagai berikut: mysql> create table stok(
-> kode char(5),
-> nama varchar(20),
-> harga mediumint unsigned,
-> supplier char(5),
-> tanggal date);