Sabtu, 21 Februari 2009

Struktur Kendali dalam Bahasa Pascal

A. Proses Eksekusi Program

Pada dasarnya sebuah Program Pascal dieksekusi secara runtut dari mulai statement yang pertama kali dibaca dilanjutkan dengan statement yang dibaca berikutnya. Tetapi alur pemrosesan itu bisa diubah dengan menggunakan seleksi dan perulangan sehingga memungkinkan sebuah program menjalankan tugas yang lebih kompleks. Alur pemrosesan dimulai dari bagian utama program.

B. Compound statement

Compound statement adalah gabungan dari beberapa statement.

Syntax:

Begin
[statement];
[statement];
.
.
.
End

Compound statement bisa digunakan dalam seleksi dan perulangan untuk menjalankan beberapa statement daripada satu statement.

C. Seleksi

Pada sebuah seleksi alur program akan mengalir berdasarkan kondisi tertentu. Ada dua macam seleksi yang ada di Pascal yaitu If-Then dan Case-Of.

If-Then

Syntax:

If <tes kondisi> Then <statement>;

atau

If <tes kondisi> Then
<statement>
Else
<statement>;

Setiap <statement> bisa digantikan dengan sebuah compound statement.

Perubahan alur proses:

If <tes kondisi> Then berpindah ke sini jika tes kondisi true;
dilanjutkan ke sini;

If <tes kondisi> Then
berpindah ke sini jika tes kondisi benar
Else
berpindah ke sini jika tes kondisi salah;
dilanjutkan ke sini;

Contoh pemakaian:

Program IfThen(input,output);
Var
Umur: Real;
Begin
Write('Berapakah umur kamu?');
ReadLn(Umur);
If Umur < 5 Then
Begin
WriteLn('Anda masih balita');
WriteLn('Anda harus mengikuti imunisasi dasar lengkap');
End
Else
WriteLn('Anda bukan balita lagi');
WriteLn('Selesai.');
End.

Dalam contoh program diatas, kita mengambil input Umur berupa bilangan Real. Kemudian memasuki seleksi dengan tes kondisi Umur < 5, jika Umur < 5 maka statement di bawah ini yang dijalankan:

Begin
WriteLn('Anda masih balita');
WriteLn('Anda harus mengikuti imunisasi dasar lengkap');
End

Tetapi jika tidak maka yang akan dijalankan adalah statement berikut:

WriteLn('Anda bukan balita lagi');

Setelah selesai maka pemrosesan dilanjutkan ke statement berikutnya:

WriteLn('Selesai');

Case-Of

Syntax:

Case <nilai> Of
<nilai1>: [statement];
<nilai2>,<nilai3>..<nilai4>: [statement];
.
.
.
[Else [statement]
End;

Setiap [statement] bisa digantikan dengan compound statement.

Perubahan alur proses:

Case <nilai> Of
<nilai1>: ke sini jika nilai = nilai1;
<nilai2>,<nilai3>..<nilai4>: ke sini jika nilai = nilai2 atau nilai antara nilai3 dan nilai4;
.
.
.
[Else berpindah ke sini jika nilai tidak sama dengan semua nilai yang dicantumkan]
End;
dilanjutkan ke sini;

Contoh pemakaian:

Program CaseOf(input,output);
Var
NilaiMataKuliah: Char;
Begin
Write('Apakah nilai matakuliah struktur data anda? ');
ReadLn(NilaiMataKuliah);
Case NilaiMataKuliah Of
'A','a':
Begin
WriteLn('Nilai anda sangat bagus');
WriteLn('Hebaaat');
End;
'B','b': WriteLn('Bagus');
'C','c': WriteLn('Cukup');
'D','d': WriteLn('Nilai anda kurang');
'E','e':
Begin
WriteLn('Nilai anda sangat parah');
WriteLn('Belajar dunk untuk masadepan mu');
End;
Else
WriteLn('Nilai yang anda masukkan tidak valid');
End;
End.

Dalam contoh program di atas, kita mengambil input NilaiMataKuliah berupa sebuah karakter. Kemudian memasuki seleksi Case-Of dengan nilai yang dites NilaiMataKuliah. Jika NilaiMataKuliah sama dengan 'A' atau 'a' maka statement berikut yang dijalankan:

Begin
WriteLn('Nilai anda sangat bagus');
WriteLn('Hebaaat');
End;

Jika NilaiMataKuliah sama dengan 'B' atau 'b' maka statement berikut yang dijalankan:

WriteLn('Bagus');

Dan seterusnya, sampai jika NilaiMataKuliah tidak terdapata dalam daftar yang disebutkan maka statement berikut yang dijalankan:

WriteLn('Nilai yang anda masukkan tidak valid');

D. Perulangan

Pada perulangan sebuah statement atau compound statement akan dijalankan berulang-ulang selama kondisi tertentu masih terpenuhi. Beberapa macam perulangan dalam Pascal antara lain: For-Do, While-Do, Repeat-Until.

For-Do

Syntax:

For <variabel> := <nilai_min> To <nilai_max> Do [statement];

atau

For <variabel> := <nilai_max> DownTo <nilai_min> Do [statement];

Setiap [statement] bisa digantikan dengan compound statement.

Keterangan:

Statement akan dieksekusi dengan nilai variabel dari nilai_min sampai nilai_max. Jika menggunakan To maka dalam perulangan nilai variabel akan dimulai dari nilai_min dan bertambah sampai sama dengan nilai_max. Jika menggunakan DownTo maka di dalam perulangan nilai variabel akan dimulai dari nilai_max dan berkurang sampai sama dengan nilai_min. Tipe data String, Real, Pointer tidak diperbolehkan untuk variabel yang digunakan untuk For.

Contoh pemakaian:

Program DemoFor(output);
Var
I: Integer;
Begin
WriteLn('Naik:');
For I := 1 to 5 do WriteLn(I);
WriteLn;
WriteLn('Turun:');
For I := 5 downto 1 do WriteLn(I);
End.

Output dari contoh program:

Naik:
1
2
3
4
5

Turun:
5
4
3
2
1

While-Do

Syntax:

While <tes kondisi> Do [statement];

Setiap [statement] bisa digantikan dengan compound statement.

Keterangan:

Statement akan dieksekusi selama nilai tes kondisi benar.

Contoh pemakaian:

Program DemoWh(output);
Var
I: Integer;
Begin
I := 5;
While I >= 1 Do
Begin
WriteLn(I);
I := I - 1;
End;
End.

Output dari contoh program:

5
4
3
2
1

Repeat-Until

Syntax:

Repeat
[statement];
[statement];
.
.
.
Until <tes kondisi>;

Setiap [statement] bisa digantikan dengan compound statement.

Keterangan:

Statement-statement akan dieksekusi terus selama nilai tes kondisi benar.

Contoh pemakaian:

Program DemoRep(output);
Var
I: Integer;
Begin
I := 5;
Repeat
WriteLn(I);
I := I - 1;
Until I < 1;
End.

Output dari contoh program:

5
4
3
2
1

Rabu, 18 Februari 2009

Firebird, RDBMS yang powerful dan mudah didistribusikan

Firebird adalah sebuah RDMS yang menawarkan banyak fitur standar ANSI SQL yang berjalan di Linux, Windows dan beberapa varian Unix. Firebird menawarkan konkurensi yang bagus, performa yang tinggi dan bahasa yang powerful yang mendukung prosedur dan trigger.

Proyek Firebird adalah sebuah proyek non komersial dari programmer C dan C++, penasehat teknis, dan para suporter yang membangun dan mengembangkan RDBMS multi platform dengan berbasiskan source code yang dikeluarkan oleh Inprise Corp (sekarang bernama Borland Corp) pada 25 Juli 2000.

Firebird telah mendukung penuh penggunaan stored procedure dan trigger semenjak versi pertamanya. Bahasa yang digunakan untuk stored procedure dan trigger di Firebird disebut PSQL (Procedural SQL). Bahasa SQL firebird juga sangat fleksibel dengan dukungan penggunaan sub query dan derivatif tabel (mulai versi 2.0).

Firebird memenuhi standar ACID sehingga menjamin transaksi database ditangani dengan layak. Selain itu Firebird juga mendukung penggunaan referential integrity untuk menjaga integritas database dengan baik.

Meskipun fitur-fitur yang didukung firebird sangat bagus dan sangat banyak tetapi ukuran file installernya cukup kecil sehingga sangat mudah untuk dibundle dalam installer software. Selain ukuran installer yang kecil yaitu sekitar 4 MB, lama waktu yang dibutuhkan untuk instalasi pada satu komputer dengan prosesor Pentium 4 adalah kurang dari 5 menit, bandingkan dengan lama waktu instalasi Oracle yang bisa berhari2.

Firebird telah digunakan untuk produksi pada banyak software. Beberapa software di Indonesia yang menggunakan Firebird untuk database servernya adalah Zahir Accounting, Accurate Accounting, Sistem Informasi Manajemen Penduduk Kota Madya Yogyakarta, dan lain sebagainya. Zahir Accounting adalah pemenang INAICTA (Indonesian ICT Award) selama 3 kali berturut-turut.

Apakah anda masih tidak yakin dengan Firebird?

Selasa, 17 Februari 2009

Pengenalan Bahasa Pascal

A. Apakah Bahasa Pascal itu?

Bahasa Pascal didesain pertama kali oleh Niklaus Writh pada tahun 1968 dan dipublikasikan pada tahun 1970. Setelah itu bermunculan beberapa varian dari Bahasa Pascal. Salah satu yang paling terkenal adalah Bahasa Turbo Pascal dan Delphi yang semuanya dibuat oleh Anders Helsjenberg yang juga membuat bahasa C#. Turbo Pascal sering digunakan dalam pengajaran matakuliah pemrograman komputer khususnya tentang algorithma dan struktur data.

B. Hello World!

Berikut adalah contoh program sangat sederhana dengan Pascal:

Program Hello(output);
begin
Write('Hello World!');
end.

Berikut ini adalah contoh program dengan Pascal yang menggunakan variabel:

Program Luas(input,output);
var r,L: Real;
begin
Write('Berapakah jari-jari lingkaran ?'); ReadLn(r);
L := 22/7*r*r;
WriteLn('Luas lingkaran = ',A);
end.

C. Tipe data dalam Pascal

Tipe data menunjukkan sifat dan ciri khas dari variabel. Tipe data menentukan jangkauan data yang bisa disimpan dalam variabel dan operasi-operasi apa saja yang diperbolehkan untuk variabel itu.

Beberapa tipe data sederhana dalam Pascal:
1. Integer: bilangan bulat antara -32768 sampai 32767.
2. Real: bilangan pecahan antar 1E-38 to 1E+38.
3. Boolean: bisa True atau False saja.
4. Char: semua karakter ASCII.
5. Enumerasi: semua nama anggota yang didaftarkan.

Contoh deklarasi variabel untuk masing-masing tipe data:

var
I: Integer;
X: Real;
Ulang: Boolean;
Kar: Char;
Warna: (Coklat,Merah,Kuning,Hijau,Biru,Nila,Ungu);

D. Struktur Data dalam Pascal

Selain memiliki beberapa tipe data sederhana, Pascal juga memiliki beberapa pembentuk tipe baru:

1. Sub range dari tipe data ordinal (selain tipe data real)

Di dalam Pascal anda bisa membentuk sebuah tipe data yang memiliki jangkauan nilai yang merupakan bagian dari jangkauan nilai tipe data ordinal.

var
Anak: 1..15;
HurufKecil: 'a'..'z';
WarnaKayu: Coklat..Hijau;

2. Set

Sebagaimana layaknya sebuah himpunan, anda bisa melakukan penambahan, pengurangan, interseksi dari variabel set.

var
Him1: set of 1..10;
Him2: set of 'a'..'z';
Him3: set of Coklat..Hijau;

3. Alias

Di dalam pascal anda bisa membuat tipe data yang merupakan alias dari tipe data yang lain.

type
IntegerKu = Integer;
IntegerAdikKu = IntegerKu;

4. Array

Array menyimpan banyak data dalam satu nama dan tersimpan di memori secara berurutan (kontigu) dan memiliki tipe data yang sama.

var
NilaiSiswa: array[1..100] of Integer;

5. Record

Record menyimpan banyak data dalam satu nama dan tersimpan di memori secara berurutan (kontigu) dengan tipe data yang berbeda-beda.

type
Siswa = record
NIM: array[1..10] of Char;
Nama: array[1..40] of Char;
Alamat: array[1..80] of Char;
NamaWali: array[1..40] of Char;
end;

Pemakaian record selain untuk menyimpan data di memory juga sering digunakan untuk penyimpanan data di file. Sehingga mirip dengan sebuah tabel database.

E. Pointer

Pascal mendukung penggunaan pointer. Tipe data pointer tidak menyimpan data yang sebenarnya tetapi menyimpan alamat data di memori. Pointer bisa digunakan untuk mengakses data yang dialokasikan secara dinamis di memori.

Berikut sebuah contoh program yang memakai pointer:

Program MakePtr(input,output);

type
x = ^y;
y = record
a: Integer;
b: Char;
end;

var
pointertob: x;
contohb: y;

begin
(* Sebuah pointer yang menunjuk ke variabel yang lain *)
contohb.a := 12;
contohb.b := 'C';
pointertob := @contohb;
WriteLn('pointertob^.a = ',pointertob^.a);
WriteLn('pointertob^.b = ',pointertob^.b);

(* Sebuah pointer yang menunjuk ke alamat di memori yang dialokasikan *)
new(pointertob);
pointertob^.a := 10;
pointertob^.b := 'A';
WriteLn('pointertob^.a = ',pointertob^.a);
WriteLn('pointertob^.b = ',pointertob^.b);
dispose(pointertob);
end.

E. Struktur Kendali

Pascal adalah bahasa terstruktur, berarti kendali aliran terstruktur di dalam elemen-elemen stanar, yang idealnya tidak menggunakan perintah 'go to'.

while a <> b do writeln('Waiting');

if a > b then
writeln('Condition met')

else
writeln('Condition not met');


for i := 1 to 10 do writeln('Iteration: ', i:1);

repeat

a := a + 1;
until a = 10;

case i of
0: write('zero');
1: write('one');
2: write('two')
end;

F. Prosedur dan Fungsi

Pascal membagi program ke dalam prosedur dan fungsi.

program mine(output);

var
i : integer;

procedure print(var j: integer);

function next(k: integer): integer;
begin
next := k + 1
end;

begin
writeln('The total is: ', j);
j := next(j)
end;

begin
i := 1;
while i <= 10 do print(i);
end.

Prosedur dan fungsi bisa bersarang sampai level berapapun, konstruk program menjadi blok logis terluar.

Creating Linux Daemon or Windows Service with Lazarus

Daemon Application in Linux or Service Application in Windows is an application that running in the background, usually automatically starte...