Tuesday, November 4, 2014

KONTROL PROGRAM, FUNCTION & PROCEDURE

            Kontrol Program
Disini kita akan mempelajari beberapa kontrol program yang disediakan Delphi dan sering dipakai. Kontrol program dipakai untuk mengatur jalannya program. Perlu diingat, satu pernyataan atau perintah dalam Delphi tidak harus berupa satu baris dan satu baris bisa berisi beberapa pernyataan yang dipisahkan dengan titik koma.
Normalnya, pernyataan � pernyataan akan dilaksanakan secara sekuensial (terurut), mulai urutan pertama sampai urutan terakhir. Akan tetapi, dengan kontrol program, kita bisa mengatur apakah suatu pernyataan dijalankan atau tidak, apakah pelaksanaan program dilanjutkan ke pernyataan berikutnya atau mengulang pernyataan tertentu dsb.

Pengulangan While � Do
While � Do dipakai untuk melakukan pengulangan satu pernyataan atau satu blok pernyataan, jika atau selama (while) suatu kondisi (syarat) bernilai True. Bentuk penulisannya seperti berikut ini.

While <ekspresi> do <pernyataan>;

Jalannya struktur pengulangan di atas adalah seperti berikut ini.
1.      Program akan menguji nilai <ekspresi>, <ekspresi> yang diuji harus berupa nilai boolean.
2.      Jika nilai <ekspresi> adalah False (salah), maka <pernyataan> tidak akan dilaksanakan dan langsung ke langkah no 5.
3.      Jika <ekspresi> bernilai True (benar), maka <pernyataan> akan dilaksanakan satu kali.
4.      Kembali ke langkah no 1.
5.      Program melanjutkan ke pernyataan setelah tanda titik koma (akhir pernyataan pengulangan).

Normalnya, pengulangan akan berhenti kalau <ekspresi> bernilai False. Akan tetapi, Anda dapat juga menggunakan pernyataan Breakuntuk memaksa program keluar dari pengulangan dan melanjutkan ke pernyataan sesudah pernyataan pengulangan.
Perhatikan bahwa <pernyataan> yang diulang hanya satu buah, tetapi bisa berupa sat <blok pernyataan>. Satu blok pernyataan diawali dengan begin dan diakhiri dengan end. Dalam blok pernyataan boleh terdapat lebih dari satu pernyataan. Setelah penulisan <pernyataan> atau <blok pernyataan>, harus diakhiri dengan tanda titik koma sebagai tanda akhir pernyataan while. Untuk lebih jelasnya, perhatikan contoh program.
// pengulangan satu pernyataan
While Data[i] <> x do I := I + 1;

// pengulangan satu blok pernyataan
while not EOF(inputfile) do
      begin
      readln(inoutfile, line);
proses(line);
      end;

// pengulangan satu blok pernyataan
while I > 0 do
      begin
      if a > b then
            begin
            c := a + b;
            d := b / a;
            end
      else
            break;
      end;
I := I div 2;
End; 
Pengulangan Repeat � Until
Pengulangan ini hampir sama dengan pengulangan while � Do. Perbedaannya antara lain seperti berikut ini.
1.      Dapat melakukan pengulangan lebih dari satu pernyataan, baik berupa kumpulan pernyataan tunggal atau berupa blok pernyataan.
2.      Pasti melaksanakan (minimal satu kali) segala sesuatu yang berada di antara pernyataan repeatuntil, karena pengujian terletak di bagian bawah pernyataan, yaitu pada pernyataan until.

Bentuk penulisan struktur Repeat � Until adalah seperti berikut.

repeat <pernyataan1>; � ; <pernyataan x>; until <ekspresi>;

atau kalau ditulis dalam beberapa baris akan menjadi seperti berikut ini.

repeat
<pernyataan1>;
... ;
... ;
<pernyataan x>;
until <ekspresi>;

sebagai contoh, perhatikan potongan program berikut ini.

repeat
k := I mod j;
I := j;
J := k;
until j = 0;




Pengulangan For
Untuk melakukan pengulangan (iterasi) satu pernyataan atau satu blok pernyataan, selama beberapa kali, yang ditentukan oleh suatu nilai awal dan nilai akhir. Bentuk penulisannya seperti berikut ini.

For <pencacah> := <awal> to <akhir> do <pernyataan>;

Atau

For <pencacah> := <awal> downto <akhir> do <pernyataan>;

<pencacah> adalah variabel bertipe ordinal, yaitu variabel yang mempunyai nilai yang pasti jika dinaikkan atau diturunkan satu satuan, misalnya tipe integer dan subrange. Nilai pencacah tidak boleh diubah dengan pernyataan buatan dalam pernyataan yang diulang, tetapi nilai pencacah akan otomatis bertambah (jika menggunakan To) atau berkurang (jika menggunakan DownTo) setelah pernyataan pengulangan dilaksanakan.
Sebagai contoh, perhatikan potongan program berikut ini.

for i := 2 to 63 do
      if data[i] > max then max := data[i];

Pencabangan Bersyarat If � Then � Else
Pencabangan bersyarat If � Then � Else digunakan untuk mencabang ke pilihan tertentu berdasar pengujian suatu nilai logika. Bentuk penulisannya seperti berikut ini.
if <ekspresi> Then <pernyataan>;

atau

if <ekspresi> Then <pernyataan1> else <pernyataan2>;
Pernyataan if yang pertama akan menguji <ekspresi> di sebelah kanannya. Jika <ekspresi> bernilai True, maka <pernyataan> atau <blok pernyataan> di sebelah kanannya akan dilaksanakan. Jika <ekspresi> bernilai False, maka <pernyataan> atau <blok pernyataan> disebelah kanannya tidak akan dilaksanakan. Selanjutnya program akan melanjutkan ke pernyataan setelah akhir blok If.
Bentuk if yang kedua akan menguji <ekspresi> di sebelah kanannya. Jika <ekspresi> bernilai True maka <pernyataan1> akan dilaksanakan. Jika <ekspresi> bernilai False, maka <pernyataan2> yang akan dilaksanakan. Perhatikan bahwa <pernyataan1> dan <pernyataan2> bisa juga berupa blok pernyataan. Sebagai contoh, perhatikan program berikut ini.
if j = 0 Then
      exit
else
      hasil := I / j;

Pencabangan Bersyarat Case
Pencabangan bersyarat Case digunakan untuk mencabang ke pilihan tertentu berdasar pengujian suatu nilai. Struktur pencabangan ini biasa dipakai jika alternatif pencabangannya cukup banyak. Bentuk penulisannya seperti ini.

case <ekspresipilihan> of
<daftar1> : <pernyataan1>;
<daftar2> : <pernyataan2>;
...
<daftarx> : <pernyataanx>;
            end;

atau

case <ekspresipilihan> of
<daftar1> : <pernyataan1>;
<daftar2> : <pernyataan2>;
...
<daftarx> : <pernyataanx>;
            else
                  <pernyataanlain>;
end;

<ekspresipilihan> adalah suatu ekspresi bertipe ordinal. Program akan menguji satu persatu <daftar> yang ada secara terurut. Jika <daftar> sama atau data adalah anggota dari <ekspresipilihan>, maka pernyataan atau blok pernyataan yang ada di kanannya aka dilaksanakan, untuk kemudian program melompat ke akhir dari struktur Case, tanpa melanjutkan pengujian <daftar> sesudahnya. Jika tidak ada <daftar> yang memnuhi syarat, tidak ada satu pun pernyataan yang dilaksanakan, kecuali digunakan bentuk Else, yang mengakibatkan <pernyataanlain> yang berada setelah pernyataan Else akan dilaksanakan jika tidak ada <daftar> yang memenuhi syarat. Sebagai contoh, perhatikan potongan program berikut ini.

case i of
1 .. 5      : Snilai := �Rendah�;
6 .. 10     : Snilai := �Tinggi�;
0, 11 .. 99 : Snilai := �tidak sah�;
else
Snilai := ��;
            end;

Pencabangan Tak Bersyarat Goto
Pernyataan Goto dipakai untuk melakukan pencabangan tak bersyarat ke sebuah label. Jadi, jika program menemui pernyataan Goto, maka tanpa syarat program akan langsung mencabang ke label yang mengikuti pernyataan goto. Label dapat dibuat menggunakan kata label diikuti nama labelnya. Label ini hanya sebagai tempat pengenal saja, jadi dapat ditempatkan di sembarang tempat dalam blok program. Sebagai contoh, perhatikan potongan program berikut ini.
begin
label awal;
A := A + 2;
B := B / A;
if (A > 100) then Goto awal;
...
            end;

Pencabangan Break
Pernyataan Break dapat dipakai untuk memaksa menghentikan pengulangan, baik pengulangan dengan While � Do, pengulangan di Repeat � Until maupun pengulangan for. Jika program menemui pernyataan Break pada suatu pengulangan, maka program akan langsung melompat ke pernyataan setelah akhir struktur pengulangan.

Pernyataan Exit
Pernyataan Exit dipakai untuk keluar dari suatu blok program. Jika pernyataan exit berada pada suatu procedure atau function, maka pernyataan exit akan menyebabkan proses dalam procedure atau function dihentikan dan kontrol program kembali pada pernyataan sesudah pernyataan pemanggil procedure atau function. Jika pernyataan exit berada pada program utama, program akan terhenti.

Pencabangan Try � Except
Pencabangan try � Except dipakai untuk pencabangan yang memiliki kesalahan operasi atau pelaksanaan program. Bentuk penulisannya seperti berikut ini.

try
<daftarpernyataan1>
            except
<daftarpernyataan2>;
            end;

Pertama kali program akan menjalankan satu atau lebih pernyataan yang berada di dalam pernyataan try. Jika tidak ada kesalahan, program akan melaksanakan sampai pernyataan sebelum pernyataan except kemudian melompat ke pernyataan end. Jika terdapat kesalahan pada pernyataan di bawah pernyataan try, maka program akan langsung melompat ke pernyataan except dan melaksanakan pernyataan � pernyataan di bawahnya.
Perhatikan bahwa struktur try � except ini akan bekerja hanya jika pilihan Stop on Delphi Exception yang terdapat pada page Language Exception dalam menu Tools, Debugger Option tidak diberi tanda pilih.

Pencabangan Try � Finally
Struktur try � finally hampir sama dengan struktur try � except. Bentuk penulisannya seperti berikut ini.

try
<daftarpernyataan1>
            finally
<daftarpernyataan2>;
            end;

Perbedaan dengan try except adalah bahwa dalam struktur try � finally. Daftar yang berada di bawah pernyataan finally akan selalu dilaksanakan, baik jika ada kesalahan pada daftar pernyataan di bawah try maupun jika tidak ada kesalahan.

            Function dan Prosedure
Function (fungsi) dan procedure adalah suatu rutin yang biasanya dipakai sebagai alat untuk melakukan tugas tertentu dan atau mendapatkan nilai tertentu. Pada bagian ini, kita akan membahas beberapa function dan procedure yang standar, sudah disediakan Delphi serta sering dipakai.
Function sebenarnya hanpir sama dengan procedure. Bedanya adalah function mempunyai nilai kembali (return value), sedangkan procedure tidak mempunyainya. Pada penulisannya procedure akan ditulis sebagai satu pernyataan yang berdiri sendiri, sedangkan function biasanya ditulis di sebelah kanan pernyataan lain atau ditulis sebagai suatu nilai yang dimasukkan ke dalam variabel. Untuk lebih jelasnya nanti dapat dilihat pada contoh � contoh yang disajikan.

Str
Str berupa procedure, jadi tidak mempunyai nilai kembalian. Procedure Str dipakai untuk mendapatkan nilai string dari suatu data numerik. Penulisannya sp berikut ini.

Str (X [: width [: decimal ]], var S);

X adalah data numerik bertipe integer atau real. Tanda dalam kurung siku bersifat optional (pilihan), artinya boleh dipakai, boleh pula tidak dipakai. Width menunjukkan lebar tempat hasil yang disediakan dan decimal menunjukkan lebar tempat decimal . S adalah variabel bertipe string untuk menyimpan hasil function Str. Jadi hasil fungsi disimpan dalam salah satu argumennya, bukan dalam nilai fungsinya. Sebagai contoh, perhatikan potongan program berikut ini.

var
I : Single;
S : String;
begin
I := 1500;
Str(I:8:2, S);    // S berisi  � 1500.00�
            end;



StrToCurr
StrToCurr berupa fuction, jadi mempunyai nilai kembalian (return value) atau hasil function. Function StrToCurr dipakai untuk mendapatkan nilai berupa data numerik bertipe currency dari suatu data string. Bentuk penulisannya seperti berikut ini.

StrToCurr (S: string)

Argumen S adalah suatu data string yang akan diambil nilai currency � nya. Sebagai contoh, perhatikan potongan program seperti berikut ini.

var
I : Currency;
S : String
begin
S := �1500�;
I := StrToCurr(S);      // I berisi data Currency;
            end;

Perhatikan bahwa hasil dari operasi function disimpan dalam function nya sendiri, sehingga function dapat ditulis disebelah kanan operator assignment.

StrToDate
StrToDate berupa function, yang dipakai untuk mendapatkan nilai data bertipe TdateTime dari suatu data string. Bentuk penulisannya seperti berikut ini.

StrToDate (S : String);

S adalah data bertipe string yang akan diambil nilai TdateTime � nya. Kita juga dapat menggunakan function StrToDateTime dengan penulisan dan hasil yang sama dengan StrToDate. Sebagai contoh perhatikan potongan program berikut ini.

            Var
Adate : TdateTime;
Days  : array[1..7] of string;
begin
Days[1] := �Sunday�;
Days[2] := �Monday�;
Days[3] := �Tuesday�;
Days[4] := �Wednesday�;
Days[5] := �Thursday�;
Days[6] := �Friday�;
Days[7] := �Saturday�;
Adate := StrToDate(edit1.text);
ShowMessage(edit1.text + � is a � +
                  Days[dayofweek(Adate)]);
            end;

StrToFloat
Function StrToFloat dipakai untuk mendapatkan nilai bertipe Extended (salah satu tipe real) dari suatu data string. Bentuk penulisannya seperti berikut ini.

StrToFloat(S : Sting);

S adalah data tipe string yang diambil nilai Extended - nya.

StrToInt
Function StrToInt dipakai untuk mendapatkan nilai integer dari suatu data string. Bentuk penulisannya seperti berikut ini.

StrToInt(S : Sting);

S adalah data tipe string yang diambil nilai Integer - nya.

UpperCase
Function UpperCase dipakai untuk mendapatkan huruf besar dari suatu data string. Bentuk penulisannya seperti berikut ini.

UpperCase(S : Sting);

S adalah data tipe string yang diambil nilai UpperCase - nya. Jika S berisi campuran huruf besar, huruf kecil, angka dan karakter lain, maka yang diubah hanya huruf kecilnya saja.

LowerCase
Function LowerCase dipakai untuk mendapatkan huruf kecil dari suatu data string. Bentuk penulisannya seperti berikut ini.

LowerCase(S : Sting);

S adalah data tipe string yang diambil nilai LowerCase - nya. Jika S berisi campuran huruf besar, huruf kecil, angka dan karakter lain, maka yang diubah hanya huruf besarnya saja.

Val
Procedure val dipakai untuk mendapatkan nilai numerik dari suatu data string. Penulisannya seperti berikut ini.

Val (S; var v; var code : integer);

S adalah tipe data string yang akan diambil nilai numeriknya, v adalah variabel tipe numerik untuk menampung hasil konversi, sedangkan code adalah variabel bertipe integer yang dipakai untuk menampung informasi tentang keberhasilan proses konversi. Jika proses konversi berhasil, code berisi angka 0 (nol), sebagai contoh, perhatikan potongan berikut ini.
Var
      I, code : integer
begin
Val (edit1.text, I, Code);
            If code <> 0 then
                  ShowMessage(�Error pada posisi :� + IntToStr(code))
            Else
                  ShowMessage(�Nilai = � + IntToStr(I));
            End;

DateToStr
Fungsi DateToStr dipakai untuk menempatkan nilai string disuatu data bertipe TdateTime. Penulisannya seperti berikut ini.

DateToStr(Date : TDateTime);

Date adalah tipe data TdateTime yang akan diambil nilai stringnya. Bentuk string tergantung dari format tampila date.

Format
Fungsi format dipakai untuk mendapatkan nilai string dari suatu data array. Data array dapat berupa bermacam � macam data. Penulisannya seperti berikut ini.

Format (<stringFormat>, <arrayDiFormat>);

<stringFormat> adalah string yang berisi kode � kode tertentu untuk memformat <arrayDiFormat>. Penulisan <stringFormat> diawali dengan tanda %, kemudian dapat diikuti dengan angka yang menunjukkan lebar data dan desimalnya serta kode format. Kode format dapat berupa karakter berikut ini.


Kode
Keterangan
d
Argumen atau data yang diformat bertipe integer.
u
Sama dengan d, tetapi tidak menghasilkan tanda positif atau negatif.
e
Argumen harus bertipe floating point.
f
Sama dengan e, tetapi tidak menggunakan angka eksponen.
g
Menggunakan format yang paling mungkin antara e dan f.
n
Argumen harus bertipe floating point, tidak menggunakan angka eksponen, menggunakan pemisah ribuan dan desimal.
m
Argumen harus bertipr floating point, menggunakan format currency.
p
Argumen harus berupa pointer, hasil berupa 8 karakter string yang menunjukkan nilai pointer dalam heksa desimal.
s
Argumen harus bertipe string atau Pchar.
x
Argumen harus bertipe integer, hasilnya berupa string dalam bentuk heksa desimal.

            Contoh :

Format(�%8.2f�, [123.456]);
Edkurs.text := format(�%25.2n�, [Kurs]);
edBeli.text := format(�%12.2m�, [NHbeli]);
           
Pos
Fungsi Pos dipakai untuk mencari string didalam string lain. Penulisannya seperti berikut ini.

Pos (<stringDiCari>, <stringTempatDiCari>);
                        Sebagai contoh :

X := Pos(�ab�, �abcdef�);     // X berisi 1
X := Pos(�cde�, �abcdef�);    // X berisi 3
X := Pos(�ba�, �abcdef�);     // X berisi 0

Copy
Copy adalah fungsi untuk mengambil sebagian string dari suatu string lain. Bentuk penulisannya seperti berikut ini.

Copy (<stringDiAmbil>, <posisiAwal>, <jumlahDIambil>);

Argumen <posisiAwal> dan <jumlahDiambil> adalah data tipe integer. Sebagai contoh perhatikan potongan program berikut ini.

A := �Bandung Kota Kembang�;

B := copy (A, 2, 10);         // B berisi �andung Kot�;

No comments:

Post a Comment