BIOS, singkatan dari Basic Input Output System, dalam sistem komputer IBM PC atau
kompatibelnya (komputer yang berbasis keluarga prosesor Intel x86) merujuk kepada kumpulan
rutin perangkat lunak yang mampu melakukan hal-hal berikut:
1. Inisialisasi (penyalaan) serta pengujian terhadap perangkat keras (dalam proses yang
disebut dengan Power On Self Test, POST)
2. Memuat dan menjalankan sistem operasi
3. Mengatur beberapa konfigurasi dasar dalam komputer (tanggal, waktu, konfigurasi media
penyimpanan, konfigurasi proses BOOTING, kinerja, serta kestabilan komputer)
4. Membantu sistem operasi dan aplikasi dalam proses pengaturan perangkat keras dengan
menggunakan BIOS Runtime Services.
BIOS menyediakan antarmuka komunikasi tingkat rendah, dan dapat mengendalikan banyak
jenis perangkat keras (seperti keyboard). Karena kedekatannya dengan perangkat keras, BIOS
umumnya dibuat dengan menggunakan bahasa rakitan (assembly) yang digunakan oleh mesin
yang bersangkutan.
Istilah BIOS pertama kali muncul dalam sistem operasi CP/M, yang merupakan bagian dari
CP/M yang dimuat pada saat proses booting dimulai yang berhadapan secara langsung dengan
perangkat keras (beberapa mesin yang menjalankan CP/M memiliki boot loader sederhana dalam
ROM). Kebanyakan versi DOS memiliki sebuah berkas yang disebut "IBMBIO.COM" (IBM
PC-DOS) atau "IO.SYS" (MS-DOS) yang berfungsi sama seperti halnya CP/M disk BIOS.
Kata BIOS juga dapat diartikan sebagai "kehidupan" dalam tulisan Yunani ().
Daftar isi]
1 Komponen BIOS
2 ROM dan NVRAM
3 ROM dan NVRAM
4 Update BIOS
5 Masa depan BIOS
6 Pranala luar
Komponen BIOS
BIOS juga sering disebut sebagai ROM BIOS karena pada awalnya BIOS disimpan dalam chip
memori hanya baca (ROM) dalam motherboard. Mengapa disimpan di dalam ROM, adalah agar
BIOS dapat dieksekusi pada waktu komputer dinyalakan, tanpa harus menunggu untuk
menyalakan perangkat media penyipanan terlebih dahulu (yang memakan waktu lama). BIOS
dalam komputer PC modern disimpan dalam chip ROM yang dapat ditulisi ulang secara elektrik
atau Flash ROM. Karena itulah, sekarang sebutan Flash BIOS lebih populer dibandingkan
dengan ROM BIOS. Berikut ini adalah beberapa chip ROM yang digunakan sebagai tempat
penyimpanan BIOS.
Jenis
Tipe ROM Cara penulisan Dapat dihapus
BIOS
ROM
Mask ROM Photolithography Tidak
BIOS
Programmable ROM
PROM Writer Tidak
ROM (PROM) BIOS
Ya, dengan menggunakan EPROM
Rewriter atau menyinarinya dengan ROM
Erasable PROM EPROM/PROM Writer
sinar ultraviolet tepat pada lubang BIOS
kuarsa bening.
Electricly EEPROM/EPROM/PROM Ya, dengan menggunakan EEPROM ROM
EPROM Writer Rewriter, atau secara langsung secara BIOS
elektrik dari papan sirkuit dengan
menggunakan perangkat lunak
EEPROM Programmer.
Ya, dengan menggunakan EEPROM
Writer, atau langsung secara elektrik
EEPROM Writer atau software Flash
Flash ROM dari papan sirkuit dengan
yang dapat menulisi Flash ROM BIOS
menggunakan perangkat lunak Flash
BIOS Programmer.
Tampilan yang dikeluarkan oleh BIOS saat NVRAM mengalami kerusakan atau saat baterai
litium CR-2032 habis dayanya atau dicabut dari slotnya
Meskipun BIOS disimpan dalam memori hanya baca, konfigurasi BIOS tidak disimpan dalam
ROM, (hal ini disebabkan oleh sifat ROM yang statis) melainkan sebuah chip terpisah yang
disebut sebagai Real-time clock (RTC), yang berupa sebuah Non-Volatile Random Access
Memory (NVRAM). NVRAM juga sering disebut sebagai Complimentary Metal-Oxide Random
Access Memory (CMOS RAM), karena menggunakan metode pembuatan CMOS. Karena
menggunakan metode pembuatan CMOS, NVRAM membutuhkan daya yang sangat kecil agar
dapat bekerja. Meskipun disebut non-volatile, NVRAM sebenarnya merupakan sebuah chip yang
volatile, sehingga data yang tersimpan di dalamnya dapat terhapus dengan mudah jika daya
listrik yang menghidupinya terputus. Oleh karena itu, NVRAM "dihidupi" oleh sebuah baterai
(mirip baterai kalkulator atau jam) dengan bahan Litium dengan seri CR-2032. Sebuah baterai
Litium CR-2032 dapat menghidupi NVRAM selama tiga hingga lima tahun. Jika daya dalam
baterai habis, atau daya yang disuplainya terputus (akibat dicabut dari slotnya), maka semua
konfigurasi akan dikembalikan ke kondisi standar, sesuai ketika BIOS tersebut diprogram oleh
pabrikan. BIOS umumnya memberikan laporan CMOS Checksum Error atau NVRAM
Checksum Error.
=BIOS, singkatan dari Basic Input Output System, dalam sistem komputer IBM PC atau
kompatibelnya (komputer yang berbasis keluarga prosesor Intel x86) merujuk kepada kumpulan
rutin perangkat lunak yang mampu melakukan hal-hal berikut:
1. Inisialisasi (penyalaan) serta pengujian terhadap perangkat keras (dalam proses yang disebut
dengan Power On Self Test, POST)
2. Memuat dan menjalankan sistem operasi
3. Mengatur beberapa konfigurasi dasar dalam komputer (tanggal, waktu, konfigurasi media
penyimpanan, konfigurasi proses
booting, kinerja, serta kestabilan komputer)
4. Membantu sistem operasi dan aplikasi dalam proses pengaturan perangkat keras dengan
menggunakan BIOS Runtime Services.
BIOS menyediakan antarmuka komunikasi tingkat rendah, dan dapat mengendalikan banyak
jenis perangkat keras (seperti keyboard). Karena kedekatannya dengan perangkat keras, BIOS
umumnya dibuat dengan menggunakan bahasa rakitan (assembly) yang digunakan oleh mesin
yang bersangkutan.
Istilah BIOS pertama kali muncul dalam sistem operasi CP/M, yang merupakan bagian dari
CP/M yang dimuat pada saat proses booting dimulai yang berhadapan secara langsung dengan
perangkat keras (beberapa mesin yang menjalankan CP/M memiliki boot loader sederhana dalam
ROM). Kebanyakan versi DOS memiliki sebuah berkas yang disebut "IBMBIO.COM" (IBM
PC-DOS) atau "IO.SYS" (MS-DOS) yang berfungsi sama seperti halnya CP/M disk BIOS.
Kata BIOS juga dapat diartikan sebagai "kehidupan" dalam tulisan Yunani ().
Komponen BIOS
Dalam BIOS, terdapat beberapa komponen dasar, yakni sebagai berikut: Contoh dari CMOS
Setup (Phoenix BIOS)
* Program BIOS Setup yang memungkinkan pengguna untuk mengubah konfigurasi komputer
(tipe harddisk, disk drive, manajemen daya
listrik, kinerja komputer, dll) sesuai keinginan. BIOS menyembunyikan detail-detail cara
pengaksesan perangkat keras yang
cukup rumit apabila dilakukan secara langsung.
* Driver untuk perangkat-perangkat keras dasar, seperti video adapter, perangkat input, prosesor,
dan beberapa perangkat
lainnya untuk sistem operasi dasar 16-bit (dalam hal ini adalah keluarga DOS).
* Program bootstraper utama yang memungkinkan komputer dapat melakukan proses booting ke
dalam sistem operasi yang terpasang.
BIOS juga sering disebut sebagai ROM BIOS karena pada awalnya BIOS disimpan dalam chip
memori hanya baca (ROM) dalam motherboard. Mengapa disimpan di dalam ROM, adalah agar
BIOS dapat dieksekusi pada waktu komputer dinyalakan, tanpa harus menunggu untuk
menyalakan perangkat media penyipanan terlebih dahulu (yang memakan waktu lama). BIOS
dalam komputer PC modern disimpan dalam chip ROM yang dapat ditulisi ulang secara elektrik
atau Flash ROM. Karena itulah, sekarang sebutan Flash BIOS lebih populer dibandingkan
dengan ROM BIOS. Berikut ini adalah beberapa chip ROM yang digunakan sebagai tempat
penyimpanan BIOS. Tipe ROM Cara penulisan Dapat dihapus Jenis BIOS Mask ROM
Photolithography Tidak ROM BIOS Programmable ROM (PROM) PROM Writer Tidak ROM
BIOS Erasable PROM EPROM/PROM Writer Ya, dengan menggunakan EPROM Rewriter atau
menyinarinya dengan sinar ultraviolet tepat pada lubang kuarsa bening. ROM BIOS Electricly
EPROM EEPROM/EPROM/PROM Writer Ya, dengan menggunakan EEPROM Rewriter, atau
secara langsung secara elektrik dari papan sirkuit dengan menggunakan perangkat lunak
EEPROM Programmer. ROM BIOS Flash ROM EEPROM Writer atau software yang dapat
menulisi Flash ROM Ya, dengan menggunakan EEPROM Writer, atau langsung secara elektrik
dari papan sirkuit dengan menggunakan perangkat lunak Flash BIOS Programmer. Flash BIOS
Tampilan yang dikeluarkan oleh BIOS saat NVRAM mengalami kerusakan atau saat baterai
litium CR-2032 habis dayanya atau dicabut dari slotnya
Meskipun BIOS disimpan dalam memori hanya baca, konfigurasi BIOS tidak disimpan dalam
ROM, (hal ini disebabkan oleh sifat ROM yang statis) melainkan sebuah chip terpisah yang
disebut sebagai Real-time clock (RTC), yang berupa sebuah Non-Volatile Random Access
Memory (NVRAM). NVRAM juga sering disebut sebagai Complimentary Metal-Oxide Random
Access Memory (CMOS RAM), karena menggunakan metode pembuatan CMOS. Karena
menggunakan metode pembuatan CMOS, NVRAM membutuhkan daya yang sangat kecil agar
dapat bekerja. Meskipun disebut non-volatile, NVRAM sebenarnya merupakan sebuah chip yang
volatile, sehingga data yang tersimpan di dalamnya dapat terhapus dengan mudah jika daya
listrik yang menghidupinya terputus. Oleh karena itu, NVRAM "dihidupi" oleh sebuah baterai
(mirip baterai kalkulator atau jam) dengan bahan Litium dengan seri CR-2032. Sebuah baterai
Litium CR-2032 dapat menghidupi NVRAM selama tiga hingga lima tahun. Jika daya dalam
baterai habis, atau daya yang disuplainya terputus (akibat dicabut dari slotnya), maka semua
konfigurasi akan dikembalikan ke kondisi standar, sesuai ketika BIOS tersebut diprogram oleh
pabrikan. BIOS umumnya memberikan laporan CMOS Checksum Error atau NVRAM
Checksum Error.
Update BIOS
BIOS kadang-kadang juga disebut sebagai firmware karena merupakan sebuah perangkat lunak
yang disimpan dalam media penyimpanan yang bersifat hanya-baca. Hal ini benar adanya,
karena memang sebelum tahun 1995, BIOS selalu disimpan dalam media penyimpanan yang
tidak dapat diubah. Seiring dengan semakin kompleksnya sebuah sistem komputer , maka BIOS
pun kemudian disimpan dalam EEPROM atau Flash memory yang dapat diubah oleh pengguna,
sehingga dapat di-upgrade (untuk mendukung prosesor yang baru muncul, adanya bug yang
mengganggu kinerja atau alasan lainnya). Meskipun demikian, proses update BIOS yang tidak
benar (akibat dieksekusi secara tidak benar atau ada hal yang mengganggu saat proses upgrade
dilaksanakan) dapat mengakibatkan motherboard mati mendadak, sehingga komputer pun tidak
dapat digunakan karena perangkat yang mampu melakukan proses booting (BIOS) sudah tidak
ada atau mengalami kerusakan.
Oleh karena itu, untuk menghindari kerusakan (korupsi) terhadap BIOS, beberapa motherboard
memiliki BIOS cadangan . Selain itu, kebanyakan BIOS juga memiliki sebuah region dalam
EEPROM/Flash memory yang tidak dapat di-upgrade, yang disebut sebagai "Boot Block". Boot
block selalu dieksekusi pertama kali pada saat komputer dinyalakan. Kode ini dapat melakukan
verifikasi terhadap BIOS, bahwa kode BIOS keseluruhan masih berada dalam keadaan baik-baik
saja (dengan menggunakan metode pengecekan kesalahan seperti checksum, CRC, hash dan
lainnya) sebelum mengeksekusi BIOS. Jika boot block mendeteksi bahwa BIOS ternyata rusak,
maka boot block akan meminta pengguna untuk melakukan pemrograman BIOS kembali dengan
menggunakan floppy disk yang berisi program flash memory programmer dan image BIOS yang
sama atau lebih baik. Pembuat motherboard sering merilis update BIOS untuk menambah
kemampuan produk mereka atau menghilangkan beberapa bug yang mengganggu.
Halaman ini belum atau baru diterjemahkan sebagian dari bahasa Inggris.
Bantulah Wikipedia untuk melanjutkannya. Lihat panduan penerjemahan Wikipedia.
Tag ini diberikan pada 2009
BIOS telah lama digunakan dalam industri PC, yakni semenjak IBM PC dirilis pada tanggal 21
Agustus 1981. Karena BIOS masih berjalan pada modus real (real-mode) yang lambat, maka
para desainer PC bersepakat untuk mengganti BIOS dengan yang lebih baik dari BIOS yaitu EFI
(Extensible Firmware Interface) yang diturunkan dari arsitektur IA-64 (Itanium).
PASCAL
Daftar ISI
Pengenalan
Tutor 1 (cara mencetak ke layar dan penggunaan variabel)
Tutor 2 (penggunaan kondisi)
Tutor 3 (looping)
Tutor 4 (prosedur dan fungsi)
Tutor 5 (array dan record)
Tutor 6 (Database)
Contoh Program
Pada bagian ini gua cuman ngejelasin secara garis besar tentang pascal dan tips penulisan
program. Kita mulai, ok?
Rasanya gak lengkap kalo gak tahu sejarah pascal. Pascal adalah bahasa tingkat tinggi yang
orientasinya pada segala tujuan, dirancang oleh Prof. Niklaus Wirth dari Technical University di
Zurich, Switzerland. Nama pascal diambil sebagai penghargaan terhadap Blaise Pascal, ahli
matematik dan philosiphi terkenal abad 17 dari Prancis.
Profesor Niklaus Wirth memperkenalkan kompiler bahasa Pascal pertama kali untuk komputer
CDC 6000 (Control Data Corporation) yang dipublikasikan pada tahun 1971 dengan tujuan
untuk membantu mengajar program komputer secara sistematis, khususnya pemrograman
terstruktur. Pada perkembangannya banyak versi-versi pascal yang beredar, MS-Pascal, Apple
Pascal, Turbo Pascal, dll. Gua pernah baca kalo pascal itu di buat karena bahasa C terlalu sulit
untuk di pelajari untuk pemula.
Sekarang kita ngeliat bagaimana struktur program pascal. Pascal terdiri dari 2 bagian utama,
yaitu pendeklarasian variabel dan programnya. Perhatikan contoh:
1: Program KaryaPertamaku;
2: uses crt;
4: Begin
6: clrscr;
8: End.
Gak usah dipikirin apa isi program itu. Tapi perhatikan strukturnya. Pada baris ke 3, itu yang
disebut bagian pendeklarasian variabel. Sedangkan dari baris ke-4 s/d 8, disebut bagian
pernyataan (tempat nulis program). Baris pertama itu hanya merupakan judul programnya doank,
gak ditulis juga boleh. Judulnya adalah "KaryaPertamaku", jangan pake spasi loh nulisnya
(gunakan garis bawah aja).
O iya, dalam pascal ada yang disebut unit-unit lain semacam librari lah... Misalnya pada baris
kedua digunakan uses crt; (berfungsi untuk memanipulasi layar teks). Perhatikan baris 6, itu
adalah salah satu fungsi dari unit crt yaitu untuk membersihkan layar (sama dengan perintah cls
di dos).
Perhatikan cara penulisan programnya! Setiap baris selalu diakhiri dengan titik koma ";" (kecuali
pada baris ke-4 dan 8, karena itu adalah tanda dari awal dan akhir program). Selain itu program
pascal selalu dimulai dengan "begin" dan "end." (jangan lupa titiknya loh).
Bagaimana, mudah bukan? Gua kasih satu tips yang berguna. Kalo nulis program usahakan yang
rapi. Ingat bila ada "Begin" pasti ada "end", nah penulisan program diantara begin dan end itu
usahakan di kasih 2 spasi atau satu tab. Perhatikan baris ke-5 s/d 7. Itu akan memudahkan
penelusuran program bila terjadi kesalahan
Ok, sekarang kita bakal belajar cara menampilkan teks di layar dan penggunaan variabel.
Perhatikan contoh dibawah ini:
1: Program KaryaPertamaku;
2: uses crt;
4: Begin
6: clrscr;
8: End.
Pada baris ke-3 dideklarasikan variabel nama dengan tipe string. Karena berupa string, variabel
nama bisa menampung input dari user berupa kata dan angka. Untuk lebih jelas tentang jenis tipe
data lihat tabel di bawah. Jangan sampai salah mendeklarasikan jenis variabelnya loohh...
Sekarang perhatikan baris ke-5. Fungsi write adalah mencetak kalimat atau isi variabel yang ada
ke layar. Jadi yang tercetak adalah "Masukkan nama anda: ". Selanjutnya ada perintah readln.
Apa fungsinya? readln itu berfungsi untuk menampung (menyimpan hasil input user) dan
disimpan pada variabel nama. Jadi sekarang variabel nama bernilai sama yang kamu ketikan.
Pada baris ke-7 di layar akan tercetak " Hi dijas apa kabar?" (itu kalo nama yang dimasukan
dijas). Untuk menampilkan isi variabel cukup ditulis: "write(nama);". Sedangkan bila berupa
teks yang fixed, contohnya sama seperti baris ke-5 (mengunakan ' (kutip) ).
Apa sih beda write dan writeln? write fungsinya mencetak di layar dan posisi kursor masih
dibaris itu juga. Sedangkan writeln akan pindah kebaris yang baru. Perhatikan Contoh
1: Begin
3: writeln;
5: End.
Hi...
Apa kabar ?
Jelas bukan? Jadi fungsi "ln" pada writeln adalah untuk pindah kebaris yang baru. Fungsinya
akan sama bila ditaruh di read. Yup tutorial pertama kelar juga...
read -> 2,9 x 10-39 s/d 1,7 x 1038 (untuk menampung bilangan desimal)
PENGGUNAAN KONDISI
Tutorial yang kedua ini akan dibahas mengenai pernyataan kondisi, if dan case.
1: Program Tutorial2_if;
2: var pilih: Integer;
3: Begin
8: End.
Perhatikan baris 5, 6 dan 7. Di situ ada 3 pernyataan kondisi if. Apabila pilihan yang kita ketik
ada di satu kondisi, maka yang lain akan diabaikan. Bingung? gini maksudnya... Misal pada
program di atas kita pilih 2. Pada saat program dijalankan, baris ke-5 akan di eksekusi.
Berhubung pilihan kita 2 bukan 1, maka akan langsung pindah kebaris selanjutnya. Ternyata
pada baris ke-6 kondisi itu terpenuhi, maka yang tercetak dilayar adalah "Pilihan anda 2". Baris
ke-7 tidak diperiksa lagi karena baris ke 6 sudah memenuhi syarat.
Bila kita memilih 3, maka baris ke-5 dan ke-6 tidak memenuhi konsisi tersebut, maka yang
tercetak adalah "Anda memilih yang lain".
Selain dengan if, pernyataan kondisi di atas bisa juga menggunakan case. Perhatikan contoh:
1: Program Tutorial2_case;
3: Begin
5: case pilih of
9: end;
10: End.
Keterangannya gak jauh beda dengan kondisi if kok. Coba amati pada baris ke 9, di sana ada
pernyataan "end;". Pernyataan itu berfungsi untuk menutup pernyataan case yang dimulai pada
baris ke-5. Perlu diingat "end" disertai dengan titik hanya untuk diakhir program.
LOOPING
Looping? apa hayoo...? masih ingatkan pelajaran fisika SMU, adakan pelajaran tentang looping
dirangkaian elektronik. Looping adalah proses pengulangan hingga kondisi syarat yang
ditentukan tercapai. Sekarang kita ngebahas 3 jenis looping, for, while dan repeat. Perhatikan
contoh di bawah ini:
1: Program Tutorial3_for;
2: var i: Integer;
3: Begin
4: For i:=1 to 5 do
6: End.
Perhatikan baris 4 dan 5. Di sana ada satu persyaratan, yaitu baris ke-5 akan dieksekusi bila nilai
i antara 1 sampai 5. Apa output yang tercetak dilayar?
ini yang ke 1
ini yang ke 2
ini yang ke 3
ini yang ke 4
ini yang ke 5
1: Program Tutorial3_while;
2: var i: Integer;
3: Begin
4: i:=1;
5: while i < 5 do
6: begin
8: i:=i+1;
9: end;
10: End.
Apa perbedaan mendasar while dengan for? yup, di while dibutuhkan counter (diprogram ini
adalah i). Jadi, baris ke-7 dan 8 akan dieksekusi (dijalankan) apabila nilai i < 5. Coba liat baris ke
6, di sana ada "begin" dan "end;" sebagai pasangannya (dibaris ke 9). Bila ada lebih dari satu
pernyataan harus di mulai dengan begin untuk kondisi if, case, looping. Jika tidak hanya baris
pertama saja yang dieksekusi. Apa outputnya?
ini yang ke 1
ini yang ke 2
ini yang ke 3
ini yang ke 4
Coba baris ke 8 kamu ganti dengan "i:=i-1;" apa yang terjadi? Coba jalankan. Akan terjadi
looping terus menerus karena kondisinya memenuhi syarat terus (i selalu kurang dari lima).
Tekan control break untuk menghentikannya. Hal inilah yang disebut invinitive loop. Sekarang
kita coba dengan repeat.
1: Program Tutorial3_while;
3: Begin
4: i:=1;
5: repeat
7: i:=i+1;
8: until i<0;
9: End.
Apa outputnya? cuman 1, "ini yang ke 1". Loh kok bisa, kan pada baris ke 8 tidak memenuhi
persyaratan i<0 ? Memang nggak memenuhi persyaratan itu, tapi ini adalah keistemewaan
repeat. Ia akan mengeksekusi sekali dulu baru dicek persyaratan yang ada dibawah.
Kelar juga ngebahas looping. Gunakan jenis looping yang ada seseuai kebutuhan. O iya, apa
yang dilakukan bila tertulis seperti ini? "For i:=10 downto 1 do". Pernyataan itu akan
menghitung mundur dari 10 sampai 1.
Misalnya kita punya rumus menghitung luas segita, apa yang kamu lakukan bila rumus itu ingin
kamu tulis ditiga tempat yang berbeda? apa kamu akan ccp (copy, cut dan paste)? emang bisa sih
diperbanyak dengan yang gituan, tapi boros memori dan berabe kalo rumus yang kita tulis
ternyata salah, berarti kita harus betulin di tiga tempat juga. Untuk mempermudahnya gunakan
Prosedur atau Fungsi.
1: Program Tutorial4_Prosedur;
2:
3: Procedure Tampil;
4: begin
5: writeln('Hi...');
6: writeln('Apakabar');
7: end;
8: Begin
9: Tampil;
11: End.
Apa yang dilakukan program di atas? Coba lihat baris ke-3 sampai 7. Itulah yang disebut
prosedur. Program utamanya mulai dari baris ke 8 sampai 11. Pada baris ke 9 prosedur yang kita
buat sebelumnya dipanggil dan dieksekusi. Ini outputnya
Hi...
Apakabar
yang di atas menggunakan prosedur loohh...
Selain itu prosedur dan fungsi bisa di taruh variabel lohh... Perhatikan contoh penggunaan fungsi
di bawah ini:
1: Program Tutorial4_Fungsi;
4: begin
5: itung:=a+b;
7: end;
8: Begin
9: hasil:=itung(7, 9);
11: End.
Baris 3 sampai 7 adalah fungsi. Tapi perhatikan bentuk fungsinya, ada pendeklarasian variabel a
dan b. Coba liat baris ke 9 ketika fungsi itung dipanggil. Di sana tertulis "itung(7, 9)", secara
otomatis a akan mendapat nilai 7 dan b mendapat 9. Bagaimana jika ditulis "itung(3,5,6)"? Jelas
gak bisa karena dialokasikan hanya 2 variabel. Hasil penjumlahan a + b ditampung di fungsi
itung (lihat baris ke-5) dan hasil itu diberikan ke variabel hasil (baris 9).
Lalu apa perbedaan prosedur dan fungsi? Prosedur hanya bisa menjalankan perintah dan tidak
mengembalikan nilai (lihat kembali contoh program prosedur sebelumnya). Sedangkan fungsi
bisa mengembalikan nilai untuk di tampilkan dilayar atau diolah lagi. Bila kita punya fungsi
yang bernama CekSaldo, maka CekSaldo bisa berfungsi seperti variabel sama seperti pada fungsi
Itung di atas.
Bagaimana? mudah bukan? gunakan prosedur dan fungsi sesuai kebutuhan. Terkadang fungsi
lebih berguna dan efisien dibandingkan dengan prosedur.
Pernahkah kamu membayangkan bila kita mau membuat program toko buah-buahan. Jika ada 3
jenis buah-buahan (melon, duku dan mangga) berarti kita harus mempunyai tiga variabel untuk
masing-masing jenis buah. Tetapi betapa sulitnya jika toko itu punya 10 atau 20 jenis yang
berbeda. Solusinya adalah gunakan array. Array itu adalah tipe data terstuktur yang berguna
untuk menyimpan sejumlah data yang bertipe sama. Bagaimana cara kerjanya? yaitu dengan
menggunakan index (semacam penanda). Perhatikan contoh:
1: Program Tutorial5_Array;
3: i: integer;
4: Begin
5: For i:=1 to 3 do
6: begin
8: end;
12: End.
Lihat pada baris ke 7. Dengan hanya menggunakan satu nama variabel yaitu buah, kita bisa
menyimpan 3 nilai yang berbeda. Misalkan yang kita masukkan adalah melon, duku dan
mangga. maka buah[1] bernilai melon, buah[2] bernilai duku dan buah[3] bernilai mangga.
Untuk mencetak isi variabel yang sudah disimpan di array tadi caranya bisa dilihat di baris ke 11.
Bagaimana, gampangkan? setelah mengetahui cara menggunakan array, sekarang kita belajar
menggunakan record. Tidak seperti array, record adalah jenis tipe data terstruktur yang berisi
beberapa data, yang masing-masing dapat berlainan tipe. Perhatikan contoh:
1: Program Tutorial5_Record;
3: nama: string;
4: harga: longint;
5: end;
6: var data:buah;
7: Begin
10: write('ditampilkan');
11: write('nama');readln(data.nama);
12: writeln('harga');readln(data.harga);
13: End.
Apa yang bisa kamu ambil kesimpulan dari program di atas? Bingung? Jadi gini, dengan
menggunakan record (di sini bernama buah) kita bisa membuat tipe data yang berisi beberapa
data yang berlainan tipe (nama dengan jenis string, dan harga dengan jenis long integer) yang ini
disebut field.
Perhatikan baris ke 6, di situ dideklarasikan bahwa variabel data bertipe buah. Otomatis yang
dimiliki buah (nama dan harga) dimiliki juga oleh data. Setelah itu lihat baris ke 8 dan 9. Nama
buah disimpan dalam field nama dan harga buah disimpan di dalam field harga. Untuk bisa
menyimpan data di field, urutannya harus variabel.field (contohnya di sini data.nama atau
data.harga). Begitu juga bila kita ingin menampilkan isi field tersebut.
Tipe data seperti ini sangat berguna kedepannya loohh... Apalagi jika digabungkan dengan array.
DATABASE
Rasanya gak lengkap kalo buat program tapi gak bisa nyimpen data. Yang bakal dijelasin di sini
adalah file bertipe, artinya harus disebutkan dulu tipe file tersebut, apakah integer, long integer,
string, char atau bahkan record. Berikut ini adalah daftar prosedur dan fungsi yang berhubungan
dengan program database file bertipe (no 12 sampai 16 hanya untuk file teks).
Pengacuan suatu file melalui variabel file. Setiap ingin melakukan manipulasi atau yang lainya,
harus melakukan ini dulu
Apabila file tidak ada, maka file itu akan terbentuk. Tetapi bila ada, maka isi file itu akan hilang.
Mengisi file dengan data. (apabila filenya bertipe text, maka writeln bisa digunakan)
Membaca isi file. (apabila filenya bertipe text, maka readln bisa digunakan untuk membaca
perbaris)
Memeriksa akhir file. Hasilnya akan True bila posisinya diakhir dan False apabila tidak diakhir.
Biasa digunakan untuk membaca/mengubah data.
Menghasilkan status akhir baris file teks. Nilainya akan true kalau diakhir baris atau Eof
memberikan nilai True.
Sama seperti Eoln, tetapi spasi dan tab diabaikan.
Sama seperti Eof, tetapi mengabaikan spasi, tab ataupun tanda akhir baris
Mengosongkan penyangga (buffer) file teks yang dibuka untuk keluaran (perekaman). Prosedur
ini menjamin bahwa data yang direkam benar-benar telah disimpan ke file (normalnya, data akan
disimpan ke file kalau penyangga file sudah penuh)
Menentukan ukuran penyangga yang digunakan file. Dipanggil setelah assign. Semakin besar
semakin cepat pemrosesannya, defaultnya 128 byte.
Bila ada tulisan var f, itu artinya variabel file. NamaFile artinya nama databasenya (bila perlu
pathnya). var1 artinya variabel yang bersesuaian dengan tipe filenya. N artinya data ke-N. Bila
dalam bentuk fungsi, maka ia akan mengembalikan nilai tergantung jenisnya (apabila boolean
maka akan mengembalikan True atau False, bila longint akan mengembalikan angka).
Waahhh... banyak yach? emang gitulah... Bahkan ada lagi yang lain loh untuk file tak bertipe.
Prosedur dan fungsi di atas gua ambil dari bukunya pak Ir. Abdul Kadir, Pemrograman Pascal.
Bukunya bagus juga, ada 2 jilid tebel-tebel tapinya :D. O iya, di sini gua gak ngasih contohnya
loh... abis kepanjangan kalo ditulis di sini.Untuk contoh-contoh penggunaan prosedur dan fungsi
di atas bisa di lihat di Program 9.
CONTOH PROGRAM
Yup... sekarang kita buat program yang pertama, menghitung luas dan keliling bangunan.
Bangunan yang dijadikan contoh adalah segitiga. Perhatikan contoh di bawah ini:
1: Program Menghitung_Luas_dan_Keliling;
5: writeln('-------------------------------------');
8: luas:= 0.5*alas*tinggi;
9: sisimiring:=sqrt(sqr(alas)+sqr(tinggi));
11: writeln;
14: readln;
15: end.
Pada baris 6 dan 7 adalah tempat memasukkan alas dan tinggi segitiga yang akan diproses di
baris 8 sampai 10. Ingat kan rumus menghitung sisi miring segitiga? yaitu akar dari jumlah
kuadrat sisi-sisinya. Fungsi "sqrt" adalah untuk mengakarkan dan sqr untuk mengkuadratkan.
Sekarang kebaris 12 dan 13. Apa yang beda hayoo...? betul.. setelah variabel luas dan keliling
dicetak ke layer ada tambahan ":0:2". Itu artinya :banyaknya alokasi angka:jumlah desimal.
Pernah kan pas di SD kita disuruh nentuin bilangan ini ganjil apa genap, prima apa bukan.
Sekarang kita jadiin program.
1: Program JenisBilangan;
5: writeln('-------------------------');
8: write('bilangan prima')
14: else
16: readln;
17: end.
Pada baris ke-7 sampai 12 adalah tempat menentukan bilangan prima atau bukan. Masih ingat
kan karateristik bilangan prima? bilangan yang hanya bisa dibagi 1 dan dirinya sendiri dan juga
hampir semuanya ganjil. Berhubung bilangan prima dibawah 10 adalah persyaratan untuk
bilangan diatas 10 (perhatikan baris ke 7 dan 9), jadi bilangan prima dibawah 10 ditulis manual.
Fungsi "mod" pada baris 9 dan 13 adalah sebagai sisa dari pembagian. Jika ditulis "7 mod 3"
maka hasilnya adalah 1, artinya sisa dari 7/3 (tujuh dibagi tiga) adalah 1.
Ini adalah program terakhir untuk mematangkan penggunaan kondisi if. Pernah kah kalian
membuat program dengan susah payah tetapi setelah ditunjukkan dengan orang lain, mereka
bilang "Hanya gitu doank kerjanya?". He he he... sakit hati emang :-(, kalo bisa rasanya pengen
nimpuk tu orang dengan hardisk SEAGATE BARACUDA 80 giga lima biji :)). Ini salah satu
program yang panjang, tapi fungsinya... yaa... gitulah :D
1: Program BilanganTerbesar;
3: Begin
besar ',bil1:0:0)
10: Begin
12: Begin
16: Else
18: End
20: Begin
24: Else
26: End
28: Begin
32: Else
34: End
35: End
37: Begin
40: Else
42: End
44: Begin
47: Else
48: Writeln('Bilangan terbesar adalah ',bil3:0:0);
49: End;
50: readln;
51: End.
Hue he he... keren kan? dengan bermodalkan if kita bisa menentukan bilangan mana yang
terbesar dari 3 bilangan yang dimasukkan. Selain itu program ini bisa mendekteksi jika ada
bilangan yang sama. Yup, hanya itu intinya. Prinsip utama program ini hanya membandingkan
bilangan satu dengan yang lain. Mudah bukan? lebih baik kalian ngerjain yang ini tanpa ngeliat
tu program, biar logikanya jalan...
Pernahkah kalian dikasih nilai ulangan siswa lalu disuruh ngurutin dari yang kecil ke gede? Kalo
jumlahnya dibawah 10 sih gak masalah, lah kalo ada 100 biji kan berabe... Ini solusinya:
1: Program Pengurutan;
2: var i, j: integer;
3: k : longint;
4: a: array[1..5] of longint;
5: begin
7: writeln('--------------------------');
8: for i:=1 to 4 do
9: begin
11: end;
13: begin
14: k:=a[j];
15: i:=j-1;
16: while (i>0) and (a[i]>k) do
17: begin
18: a[i+1]:=a[i];
19: i:=i-1;
20: end;
21: a[i+1]:=k
22: end;
24: writeln(a[i]);
25: readln;
26: end.
Hhmmm... sebenarnya gak perlu dijelasin lagi yach tu program, gua harap kalian bisa nge-trace
(menelusuri) algoritma programnya. Program ini dibatasi untuk 4 angka saja, bisa diubah sesuai
keinginan. Pada prinsipnya program ini memasukkan input ke dalam array, kemudian
membandingkannya, bila ternyata angka sebelumnya lebih besar, maka dipindah posisinya (coba
dech di trace, pasti ngerti).
Program ini berguna banget buat kalian yang hobi ngitung, apa lagi buat anak smu. Untuk
pengembanganya kalian bisa menghitung mean, modus dan median
Setelah sebelumnya kita bermain dengan if, sekarang ke for. Program di bawah ini akan
memunculkan output berupa sekumpulan bintang yang membentuk tangga
1: Program BintangTangga;
2: const akhir=18;
4: begin
8: write('*');
9: writeln;
10: end;
11: readln;
12: end.
Coba dech dijalankan, gimana hasilnya? menarik bukan?. Sekarang kita coba menampilkan
sekumpulan bintang yang membentuk kubus.
1: Program BintangKubus;
2: uses crt;
3: Var i, j, x, y:integer;
4: Begin
5: clrscr;
7: y:=0;
8: For i:=1 to x do
9: Begin
11: Begin
12: y:=y+1;
13: write(y:4);
15: Writeln;
16: End;
17: End;
18: readkey;
19: End.
Gimana? baguskan? Sekarang tugas kamu membuat sekumpulan bintang berbentuk piramida dan
berbentuk tangga terbalik (seperti program pertama di atas tetapi terbalik)
Setelah dari tadi belajar logika, sekarang kita menggabungkan beberapa program sebelumnya
dan dibuat menu. Untuk contoh ini kita memanfaatkan repeat.
1: Program Gabung;
2: uses crt;
4: Procedure luas;
6: end;
7: Procedure JenisBilangan;
9: end;
12: End;
14: repeat
15: clrscr;
17: writeln('-------------------------------------------');
18: writeln(' 1. Menghitung Luas');
22: writeln('-------------------------------------------');
23: writeln;
24: writeln;
26: readln(pilih);
28: 1 : luas;
29: 2 : JenisBilangan;
30: 3 : Pengurutan;
31: 4 : exit;
32: end;
34: end.
Ngertikan prisip kerjanya? Jadi program ini hanya akan berakhir jika user memilih no 4.
Pada tutorial 5 telah dijelaskan cara penggunaan array dan record. Sekarang kita akan
menggabungkan array dan record tersebut. Perhatikan program di bawah ini:
1: Program Array_dan_Record;
2: type dmhs=record
3: nrp:string[10];
4: nama:string[25];
5: alamat:string[50];
6: end;
8: i:integer;
9: begin
11: begin
15: end;
16: writeln;
19: begin
23: end;
24: readln;
25: end.
Di dalam program tersebut dideklarasikan bahwa dmhs (data mahasiswa) itu adalah record yang
mempunyai field nrp, nama dan alamat (lihat baris 2 sampai 6). Selanjutnya variabel data
dideklarasikan bertipe dmhs yang berbentuk array (baris ke 7). Kemudian seperti biasa untuk
memasukkan data ke field digunakan "readln(data[i].nrp)", dst (baris 10 sampai 15). Untuk
menampilkannya bisa dilihat dibaris ke 18 sampai 23.
Yang ini sebenarnya program tambahan, habis program-program sebelumnya kan kebanyakan
bermain logika matematik (tentang angka melulu). Ehh... dipikir-pikir, operasi tentang string kok
gak ada? Tenaaannggg.... sekarang udah ada kok :p
3: begin
4: nama:='Dijas Keren';
6: for urutan:=1 to 11 do
7: begin
8: posisi:= 13 - urutan;
10: writeln(nama);
11: end;
12: writeln;
13: nama:='DijasKeren';
18: readln;
19: end.
Dijas Keren
Dijas Kere
Dijas Ker
Dijas Ke
Dijas K
Dijas
Dijas
Dija
Dij
Di
Jadi isi penggunaan delete itu => delete(string, posisinya, jumlah yang di hapus). Sedangkan
insert => insert(yang mau disisipkan, string, posisinya). Gampang kan? Dengan ini bisa dibuat
kayak Program 5 loh (tentang bintang).
Bagaimana jika suatu saat kamu pengen ngerubah string jadi numerik atau numerik jadi string?
Yang ini untuk menggabungkan string, ini fungsi loohh.. jadi hasil penggabungannya ditampung
di Concat
1: program pembalik_kata;
3: begin
4: write('Kata : ');readln(kata);
5: hasil:='';
7: begin
8: tmp:=copy(kata,i,1);
9: hasil:=hasil+tmp;
10: end;
12: readln;
13: end.
Di program ini ada dua fungsi operasi string baru yang digunakan.
length(string) : integer
Fungsi ini untuk mengetahui posisi dari string/huruf dari kata/kalimat yang dimaksud. Bila
bernilai nol berarti nilai string yang dicari tidak ada
Program database ini adalah contoh-contoh penggunaan fungsi dan prosedur dari Tutorial 6.
Perhatikan contoh berikut:
1: Program BuatFile;
3: begin
4: writeln('MENGISI DATA');
5: writeln('------------');
6: assign(fText, 'nama.txt');
8: writeln(fText, 'dijas');
9: writeln(fText, 'dian');
11: close(fText);
12: readln;
13: end.
Prosedur yang digunakan di atas adalah prosedur no. 1 sampai 5 yang ada di Tutorial 6. Untuk
membaca databasenya gunakan reset (jangan rewrite) dan gunakan prosedur no 6. Perhatikan
contoh di bawah ini:
assign(fText, 'bil.dat');
reset(fText);
read(fText, data);
writeln(data);
Sekarang kita gunain fungsi nomor 7 yachh... Fungsi ini biasa digunakan untuk membaca data
yang ada dari awal/posisi tertentu sampai akhir. eof kepanjangan end of file
begin
readln(fText, data);
writeln(data);
end;
Bagaimana caranya jika ingin mengedit data yang sudah ada? Gunakan prosedur seek,
perintahnya: Seek(fText, filesize(fText));. Setelah menempatkan kursor ditempat yang
diinginkan, gunakan perintah write untuk mengedit atau prosedur Truncate untuk menghapus
(perintahnya Truncate(fText)). Tapi hati-hati mengunakan Truncate, soalnya mulai dari posisi
yang dimaksud sampai akhir file akan dihapus. Fungsi dan prosedur lainnya bisa dicoba-coba
sendiri yaaa....
Huuff... akhirnya kelar juga ngebahas dasar-dasar pascal. Kalo kalian udah paham seluruh
tutorial dan program yang ada di sini, berarti kalian sudah melewati level basic. Untuk
pengembangannya coba cari program-program open source, terutama mengenai database.
Selamat mencoba.
Selalu ku nanti
Aku memang tak seindah mentari
Yang bisa memberi kehangatan saat pagi tiba
Dan menerangi langkahmu menggapai asa
Meski aku tak seindah mentari
Namun aku memiliki cinta
Cinta yang akan selalu setia menemanimu
Dengan Ketulusan rasa dalam asa
Kamu slalu menempati tempat terindah di hatiku
Slalu kutemukan cahaya bintang di mata mu
Setiap ku tersudut pada gelap & dinginnya malam
Cahayamu terus menerangi relung hatiku dengan warna2 indah
Kamu bidadari di hati ku
Pertemuan kita adalah asa dalam angan...
Yang bersembunyi dibalik dinding semu kita
Dan slalu kunanti dalam kerinduan
Bersama cahaya bintang hingga malam berganti pagi...
Malam slalu menjadi beranda kita
Tuk saling berbagi cerita & kerinduan
Nyanyian hatimu slalu menyejukkan jiwaku...
Kini kamu telah mengisi separuh ruang jiwaku
Slalu kurindukan gelora rindumu
Yang berburu dengan desahmu diujung malam
Hingga terkulai di ujung puncak semu
Dan pulas dalam khayalan dan mimpi indah kita
Misteri cinta
hati ini trasa sunyi tanpa nafas cintamu,,
hidup ini sepi tanpa senyuman darimu
diri inisenyap tanpa jiwa kasih mu,,
ruang hatiku gelap tanpa arah tuk melangkah
cinta,,,
mengapa semua harus terjadi???
mengapa disaat terang dunia kalbuku kau berlalu
kau tinggalkan sepenggal dusta dalam rasa,,
cinta..
aku hanya mampu memeluk rasa
memeluk mimpi senja yng kelabu
meniti harapan fajar kelana,,
cinta..
kau buat aku tak yakin untuk melangkah
kau beri aku segenggam luka
mengapa cahaya pelangi menjadi api,,
selamat jalan cinta,,
selamat berbahagia di atas luka ku,,
biarkan kata merangkai hati serupa darah dibalik tirai...