Sunday 11 January 2015

RECORD PADA PASCAL

RECORD (REKAMAN)

Sebuah record rekaman disusun oleh beberapa field. Tiap field berisi data dari tipe dasar / bentukan tertentu. Record mempunyai kelebihan untuk menyimpan suatu sekumpulan elemen data yang berbeda-beda tipenya (di banding array). Contoh , sebuah record dengan empat buah field.

Cara pendeklarasian dari record adalah sbb:
• Mendefinisikan tipe dari record (jumlah field, jenis tipe data yang dipakai),
• Mendefinisikan variabel untuk dilakukan operasi.

Perbedaan Record dan Array

  • Elemen record bersifat heterogen, yaitu campuran beberapa tipe data, sedangkan elemen array bersifat homegen
  • Elemen record didefisinisikan dengan simbol/identifer sedangkan elemen array diidentifikasi dengan indeks.

Bentuk umum record

type
nama_record = record
identifier_1 : tipe_data_1;
:
:
identifier_n : tipe_data_n;
end;
var variabel : nama_record;

Contoh.

type

Data_mahasiswa = record
Nama : string;
Usia : integer;
Kota : String;
Kodepos : integer;
end;
Var
x: Data_mahasiswa;

Pengaksesan Elemen Record
      Nama variable disertai nama field.
x.Nama
x.Usia
x.Kota
x.Kodepos

Contoh.

program RECORD_INTRO;
type tanggal = record
bulan, hari, tahun : integer;
end;
var waktu : tanggal;
begin
waktu.hari :=25;
waktu.bulan:=09;
waktu.tahun:= 1983;
writeln('hari ini adalah ',waktu.hari,':',waktu.bulan,':', waktu.tahun)
end.

Pengunaan With … do
Pernyataan with untuk lebih menyederhanakan pengaksesan field-field pada record. Pemrograman dapat mengakses field cukup dengan menyebutkan nama field-nya saja. Misalkan pernyataan :

x.Nama
x.Usia
x.Kota
x.Kodepos

menjadi

with x do
Begin
Nama
Usia
Kota
Kodepos
end

Contoh.

program RECORD_INTRO;
type tanggal = record
bulan, hari, tahun : integer;
end;
var waktu : tanggal;
begin {program utama}
with waktu do {mulai with}
begin
hari :=25;
bulan:=09;
tahun:=1983;
writeln('hari ini adalah ',hari,':',bulan,':', tahun)
end {akhir with}
end.

Array dari Record
Suatu array dapat juga berisi record contoh suatu deklarasi record tanggal.

type tanggal = record
bulan, hari, tahun : integer;
end;
var waktu : tanggal;

kemudian kita membentuk suatu array dari record ini, namakan birthdays.

var birthdays : array[1..10] of tanggal;

pernyataan ini akan membentuk suatu array dengan 10 elemen. Dimana tiap elemen adalah sebuah record tanggal, yaitu, terdiri atas bulan, hari, tahun dengan tipe data Integer.

Contoh Pemberian nilai awal dari masing-masing elemen birthdays:

Birthdays[1].hari :=25;
Birthdays[1].bulan:=09;
Birthdays[1].tahun:=1983;


Record di dalam Record
Record bisa berisi record lain sebagai field. Seperti contoh record tanggal dan jam dikombinasikan menjadi sebuah record saat ini,

type tanggal = record
bulan, hari, tahun : integer;
end;
type waktu =record
jam, menit, detik : integer;
end;
type waktu_ini =record
tanggal_ini : tanggal;
waktu_ini : waktu
end;

Kemudian kita perlu membuat variabel kerja

var saat_ini : waktu_ini;

pemberian nilai akan terjadi seperti di bawah ini:

saat_ini.tanggal.bulan:= 11;
saat_ini.tanggal.hari:= 2;
saat_ini.tanggal.tahun:= 1985;
saat_ini.waktu.jam:= 3;
saat_ini.waktu.menit:= 3;
saat_ini.waktu.detik:= 33;


Sekian informasi singkat tentang record pada pascal 
Semoga Bermanfaat

ARRAY PADA PASCAL

Array adalah variabel yang dapat menyimpan lebih dari satu nilai sejenis. Terdapat dua bagian penting yaitu elemen array yang merupakan nilai dan endeks array yang merupakan nilai urut untuk mengakses nilai pada array.
Berikut ini contoh array A dengan 10 buah elemen tiap elemen memiliki nilai antara 10 hingga 100.
A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] A[9] A[10]
1 2 3 4 5 6 7 8 9 10
10 20 30 40 50 60 70 80 90 100

Bentuk umum dari array adalah:
NamaArray : aray[IndeksAwal..IndeksAkhir] of tipe_data;

Array Satu Dimensi
Array satu dimensi adalah kumpulan elemen-elemen yang identik, yang tersusun dalam satu baris. Elemen tersebut memiliki tipe data yang sama, tetapi isi dari elemen tersebut bisa berbeda.Bentuk Umum:

Var
nama_variabel : Array[ index ] Of Tipe_Data;

Contoh :

Var

Nilai : Array[1..10] Of Integer;


Pada contoh Array dengan nama Nilai telah dideklarasikan dengan tipe integer, dengan jumlah elemen maksimum 10 elemen, nilai dari elemen array tersebut diatas harus bertipe integer. Array tidak hanya dapat berupa suatu varibel yang dideklarasikan di bagian deklarasi variabel, tetapi dapat juga berupa konstanta (const). 
Contoh Program :

Program;
Uses Crt; 
Const 
Tetap : Array[1..4] of Integer=(7,10,21,20); 
Var 
i : Integer; 
Begin 
For i:= 1 to 4 Do 
Writeln('Nilai Konstan array ke ',i:2,' =',Tetap[i]); 
Readln; 

End.

Array Dua Dimensi


Di dalam pascal Array dapat berdimensi lebih dari satu yang disebut dengan array dimensi banyak (Multidimensional array), disini akan dibahas array 2 dimensi saja. Array 2 dimensi dapat mewakili suatu bentuk tabel atau matrik, yaitu indeks pertama menunjukkan baris dan indeks ke dua menunjukkan kolom dari tabel atau matrik.Bentuk umum :
Var <NamaVarArray>:
Array [indeksbaris,indekskolom] of TipeData;

Contoh

Array2D : array[1..3, 1..4] of integer;

Contoh Program
Program_Deklarasi_Array_Dua_Dimensi; 
Uses Crt;
Var Tabel : Array[1..3,1..2] of Integer;
i,j : Integer;
Begin 
ClrScr; 
Tabel[1,1]:=1; 
Tabel[1,2]:=2; 
Tabel[2,1]:=3; 
Tabel[2,2]:=4; 
Tabel[3,1]:=5; 
Tabel[3,2]:=6; 
For I := 1 to 3 Do Begin For J:= 1 to 2 Do Begin Writeln('Elemen ',i,',',j,'= ',tabel[i,j]); 
End; 
End; 
Readln; 

End.


Array Tiga Dimensi (Dimensi Banyak)
Array ini jarang digunakan, namun hal ini bukan berarti Pascal tidak menyediakan untuk dipakai bagi yang membutuhkan. Array tiga dimensi adalah kumpulan elemen-elemen yang terdiri lebih dari satu baris, seperti array yang memiliki array didalamnya.

Bentuk Umum:
Var <NamaVarArray>:
Array [Indeks1,Indeks2,..,IndeksN] of TipeData;

LATIHAN PROCEDURE DAN FUNCTION PADA PASCAL


Program untuk melakukan perhitungan penjumlahan, pembagian dan perkalian.
Langsung saja ketikkan listing dibawah ini di pascalnya ya..

   program Sub_Program;
   uses crt;
   var hasil, nilai1, nilai2 : integer;
      hbagi : real;
   procedure Tambah;
   begin
      hasil := nilai1+nilai2;
      writeln('Nilai X + Y = ',hasil);
   end;
   procedure Kurang(p, q : integer);
   begin
      hasil := nilai1 - nilai2;
      writeln('Nilai X - Y = ',hasil);
   end;function Kali : integer;
   begin
      Kali := nilai1 * nilai2;
   end;
   function Bagi(p,q : integer) : real;
   begin
      bagi := p/q;
   end;
   procedure tukar(var p, q : integer);
   var r : integer;
   begin
      r := p;
      p := q;
      q := r;
   end;
   var pilih : integer;
   begin
      clrscr;
      pilih := 0;
      while (pilih <> 5) do
      begin
        writeln;
        writeln(' Masukkan Pilihan Proses ');
        writeln('-------------------------');
        writeln(' 1. Penjumlahan');
        writeln(' 2. Pengurangan');
        writeln(' 3. Perkalian');
        writeln(' 4. Pembagian');
        writeln(' 5. Selesai');
        writeln('-------------------------');
        repeat
          write('Masukkan Pilihan Anda : ');
          readln(pilih);
        until pilih in [1,2,3,4,5];
        if pilih = 5 then exit;
        write('Masukkan Nilai X : ');readln(nilai1);
        write('Masukkan Nilai Y : ');readln(nilai2);
        case pilih of
           1 : tambah;
           2 : begin
                if nilai1 < nilai2 then
                  tukar (nilai1, nilai2);
                kurang (nilai1, nilai2);
               end;
           3 : writeln('Hasil X * Y = ',Kali);
           4 : begin
                 hbagi := bagi (nilai1,nilai2);
                 writeln('hasil X / Y = ',hbagi:10:4);
               end;
        end;
      end;
   end.

   Jika sudah diketik maka gambarnya akan seperti dibawah ini


         Dan hasilnya akan seperti di bawah ini

Keterangan:
       Jika kita ingin melakukan perhitungan lagi maka masukkan pilihan dan jika tidak pilih pilihan 5





PROCEDURE DAN FUNCTION PADA PASCAL

Procedure dan Function adalah suatu program terpisah dalam blok sendiri yang berfungsi sebagai sub-program (modul program) yang merupakan sebuah program kecil untuk memproses sebagian dari pekerjaan program utama. 

PROCEDURE
    Procedure adalah suatu program yang terpisah dalam blok tersendiri yang berfungsi sebagai subprogram. Penggunaan prosedur diawali dengan kata cadangan procedure dalam bagian deklarasi prosedur. Pemanggilan prosedur dapat dilakukan dengan menggunakan judul prosedur.
Pada program terstruktur banyak menggunakan prosedur karena :


  • Sebagai penerapan program yang modular yaitu memecah program yang rumit menjadi program-program bagian yang lebih sederhana dalam bentuk prosedur.
  • Untuk beberapa perintah yang sering digunakan berulang, cukup dituliskan sekali dalam prosedur dan dipanggil sewaktu-waktu.
Sebagaimana halnya sebuah program, suatu procedure juga memiliki header dan block.
Perbedaan bentuknya dengan program hanyalah pada bagian header-nya saja.
Bentuk Umum header suatu procedure adalah :

  PROCEDURE nama; 
    atau 
  PROCEDURE nama (formal parameter : jenis); 

Contoh :Misal akan dibuat suatu procedure untuk menentukan bilangan bulat terbesar diantara
tiga bulangan bulat, maka procedure tersebut adalah sebagai berikut :

PROCEDURE maksimum;
VAR max : integer;
BEGIN
 IF a > b THEN max := a ELSE max := b;
 IF c > max THEN max := c;
 WRITELN(max);
END.

Selanjutnya, di dalam suatu program, procedure ini dapat digunakan dengan bentuk penulisan

sebagai berikut :

Contoh 1
 PROGRAM contoh_1; 
 VAR a,b,c : integer; 
  PROCEDURE maksimum; 
  VAR max : integer; 
  BEGIN 
   IF a>b THEN max := a ELSE max := b; 
   IF c>max THEN max := c;
   WRITELN(max); 
  END; 
  BEGIN 
   READLN(a,b,c); 

  Maksimum
  End.

Contoh 2
  PROGRAM CONTOH_2; 
  VAR p,l,t,vol,panj : real; 
  PROCEDURE kotak; 
  VAR v,pl : real; 
  BEGIN 
   v := p * l * t ; 
   pl := p + 2.0 * t; 
   writeln(v,pl); 
  END; 
  BEGIN 
   writeln(‘panjang’ : 10,’lebar’ : 10,’tinggi’ : 10); 
   readln(p,l,t); 
   kotak; 

  END. 


Procedure dan Parameter
    Nilai di dalam suatu modul program Pascal sifatnya adalah lokal, artinya hanya dapat digunakan pada modul atau unit program yang bersangkutan saja, tidak dapat digunakan pada modul atau unit program yang lainnya.


Contoh : 
Prosedur Tanya_hitung; 
Var X,Y :real; 
Begin 
 Write (‘Nilai X ?’); 
 Readln(X); 
 Y:=X*X; 
 Writeln(‘Nilai Y = ‘,Y:6:2); 
End; 
Begin 
 Tanya_Hitung; 
End. 

Hasilnya : 
 Nilai X ? 5
 Nilai Y = 25.00 

Keterangan : 
Variabel X dan Y sifatnya adalah lokal untuk prosedur Tanya_hitung, artinya hanya dapat digunakan pada modul itu saja, Pada modul yang lain tidak dapat digunakan, contoh : 
Prosedur Tanya_hitung; 
Var X,Y :real; 
Begin 
 Write (‘Nilai X ?’); 
 Readln(X); 
 Y:=X*X; 
End; 
Begin 
 Tanya_Hitung; 
 Writeln(‘Nilai Y = ‘,Y:6:2); 

End. 

Hasilnya : 

 Error 31: Unknown identifier 

Supaya nilai variabel dapat digunakan di modul lainnya, maka dapat dilakukan dengan cara : 
1. Dibuat bersifat global
2. Dikirimkan sebagai parameter ke modul yang membutuhkannya. 

Prosedur Standar 
Prosedur yang disediakan oleh Turbo Pascal : 
1. Prosedur standar EXIT :Digunakan untuk keluar dari suatu blok. 
2. Prosedur standar HALT :Digunakan untuk menghentikan proses program baik     di program bagian maupun di program utama. 
3. Prosedur standar MOVE {Bentuk umum : MOVE (Var source,dest; count :           word);} : Digunakan untuk menyalin suatu blok sebanyak count byte memori     dari blok dimulai byte pertama source dan disalinkan ke byte pertama dest. 
4. Prosedur standar FILLCHAR :Digunakan untuk mengisi sejumlah byte nilai ke     dalam suatu variabel, sebagai berikut FillChar(x;count :word;ch); 


X adalah variabel yang dapat bertipe apapun yang akan diisi dengan nilai tipe ordinal Ch sebanyak count byte. 


FUNCTION
Blok pada function hampir sama dengan blok pada procedure, hanya pada function harus dideklarasikan dengan tipe dari function tersebut yang merupakan tipe hasil dari function itu sendiri. Sehingga dikatakan function dapat mengembalikan nilai. Secara umum bentuk header suatu function adalah : 

 FUNCTION nama : jenis hasil; 
 Atau 
 FUNCTION nama (formal parameter : jenis ) : jenis_hasil; 

Contoh 1
Akan dibuat suatu fungsi dengan nama MAX yang dapat menentukan integer terbesar di 
antara dua integer. 
Function MAX (x,y : integer) : integer; 
Begin 
 If x < y then MAX := y ; 
 Else MAX := x; 
End; 
Selanjutnya kita dapat menggunakan fungsi di atas dalam suatu program, misalnya dengan 
menyatakan sebagai berikut : 
 P := MAX(a,b);
 Z := MAX(a+b,a*b);
 Q := MAX(MAX(a,b),c);
 …………………………
dsb.
Perbedaan fungsi dengan prosedur adalah:
  • Pada fungsi, nilai yang dikirimkan balik terdapat pada nama fungsinya(kalau pada prosedur parameter yang dikirimkan secara acuan).
  • Karena nilai balik berada di nama fungsi tersebut, maka fungsi tersebut dapat langsung digunakan untuk dicetak hasilnya. Atau nilai fungsi tersebut dapat juga langsung dipindahkan ke pengenal variabel yang lainnya.
  • Pada prosedur, nama prosedur tidak dapat digunakan langsung, yang dapat langsung digunakan adalah parameternya yang mengandung nilai balik.

Fungsi Standar 
1. Fungsi standar arutmatika 
    • Fungsi standar ABS 
      Bentuk umum : ABS(x); Digunakan untuk memutlakkan suatu nilai yang     
      ditunjukkan oleh argumen x. 
       Contoh : 
        Begin 
          X:=-2.3; 
          Write(‘Nilai X = ‘,X,’ Nilai mutlaknya = ‘,Abs(X):3:1); 
        End. 
    • Fungsi standar EXP 
          Bentuk Umum : EXP(x:):real; Digunakan untuk menghitung nilai pangkat       dari bilangan e yaitu sebesar ex. Hasilnya berupa nilai real. 

    • Fungsi standar LN
          Bentuk umum : LN(x):real; Digunakan untuk menghitung nilai logaritma 
      alam (natural logarithm) dari nilai x. Hasilnya berupa nilai real. 
    • Fungsi standar INT 
           Bentuk umum : INT(x:real):real; Digunakan untuk menghasilkan nilai 
      integer dari x. hasil dari fungsi adalah tipe real dengan nilai yang berupa           pembulatan ke bawah (nilai pecahan dibuang) dari nilai x. 
      Contoh : 
        Begin 
           X:=9.99; 
          Write(‘Nilai yang akan dibulatkan = ‘,X); 
          Writeln(‘Nilai pembulatannya = ‘,Int(X):3:2); 
        End. 
        Hasil : 
        Nilai yang akan dibulatkan = 9.99 
        Nilai pembulatannya = 9.00 

    • Fungsi standar FRAC 
      Bentuk umum : FRAC(x:):real; Digunakan untuk mendapatkan nilai
      pecahan dari argumen x. Argumen x dapat bernilai real maupun integer dan
      hasil dari fungsi adalah real. 
      Contoh : 
     Begin 
       X:=9.99; 
       Write(‘Nilai X = ‘,X,’ Nilai pecahannya = ‘,Frac(X):4:3); 
     End. 
    Hasilnya : Nilai X = 9.99 Nilai pecahannya = 0.990 

    • Fungsi standar SQR 
      Bentuk umum : SQR(x); Digunakan untuk menghitung nilai pangkat
      kuadrat dari argumen x. 
      Contoh : 
     Begin 
       X :=2; 
       Write(‘Nilai X = ‘,X,’ Nilai kuadratnya = ‘,sqr(x)); 
     End. 
       Hasilnya : Nilai X = 2 Nilai kuadratnya = 4

    • Fungsi standar SQRT 
      Bentuk umum : SQRT(x) : real;Digunakan untuk menghitung nilai akar dari       argumen x, hasilnya berupa real. 
    • Fungsi standar PI, SIN, COS, ARCTAN 

2. Fungsi Standar Transfer 
    Digunakan untuk merubah suatu nilai ke bentuk nilai lain. 
    • Fungsi standar CHR 
      Bentuk umum : CHR(x:byte):char; Digunakan untuk merubah nilai dari byte       x ke bentuk karakter yang sesuai dengan kode ASCII. 
       Contoh : 
          X := 66; 
      Write(‘Nilai X = ‘,x,’ Nilai karakternya = ‘,CHR(X)); 
       Hasilnya : Nilai X = 66 Nilai karakternya = B 
    • Fungsi standar ORD
           Bentuk umum : ORD(x):longint; Digunakan untuk merubah nilai x ke 
       bentuk nilai longint yang sesuai dengan kode  ASCII, merupakan kebalikan        dari fungsi CHR. 
    • Fungsi standar ROUND
           Bentuk umum : ROUND(x:real):longint; Digunakan untuk membulatkan
      nilai dari real x ke nilai longint yang terdekat.Bila nilai pecahan sama dgn           atau lebih besar dari 0.5 akan dibulatkan ke atas, sedang kalau lebih kecil  
      dari 0.5 akan dibulatkan ke bawah. 
      Contoh : 
       Write(’10 dibagi 3 hasil pembulatan terdekat ‘,Round(10/3)); 
       Writeln(’20 dibagi 3 hasil pembulatan terdekat adalah                ‘,Round(20/3); 
        Hasilnya : 
      10 dibagi 3 hasil pembulatan terdekat adalah 3 
      20 dibagi 3 hasil pembulatan terdekat adalah 7 
   • Fungsi standar TRUNC 
      Bentuk umum : TRUNC(x:real):longint; Digunakan untuk membulatkan nilai
      dari real x ke nilai longint terkecil. Atau dengan kata lain membulatkan ke 
      bawah. 
      Contoh : 
      Write(’10 dibagi 3 hasil pembulatan terdekat ‘,Trunc(10/3)); 
      Writeln(’20 dibagi 3 hasil pembulatan terdekat adalah               ‘,Trunc(20/3); 
      Hasilnya : 
      10 dibagi 3 hasil pembulatan terdekat adalah 3 
      20 dibagi 3 hasil pembulatan terdekat adalah 6 

3. Fungsi Standar Lainnya 
    Fungsi standar yang tidak termasuk dalam kelompok pembagian di atas :          • Fungsi standar Hi, Lo, Swap
   • Fungsi standar Random 
        Bentuk umum : Random [(range :word)]; Digunakan untuk menghasilkan 
      angka random berkisar dari nilai lebih besar atau sama dengan nol dan
      lebih kecil dari satu. Bila range tidak disebutkan, hasil dari fungsi ini adalah
      real, bila range disebutkan, hasilnya adalah word. 
   • Fungsi standar SizeOf 
        Bentuk umum : SizeOf(x):word; Digunakan untuk menunjukkan besarnya 
      byte yang digunakan oleh suatu variabel x, hasilnya berupa nilai word. 
   • Fungsi standar UPCASE 
     Bentuk umum : UpCase(Ch:char):char; Digunakan untuk merubah argumen 
     suatu karakter yang ditunjukkan oleh Ch 
     menjadi bentuk karakter huruf besar (upper case). 

Saturday 10 January 2015

LATIHAN PERULANGAN PADA PASCAL (Bagian 3)

Sebelumnya saya sudah posting mengenai Latihan Perulangan Pada Pascal (Bagian 2). Kali ini saya akan melanjutkan posting berapa latihan latihan lagi, tapi kali ini cukup dengan 1 kasus saja, dan lumanya mudah kok. Ok langsung saja.

Kasus 
"Buatlah Program dengan 3 moodel perulangan Repeat-Until, While, dan For untuk permasalahan deret ukur 3, 9, 23, ..."

Baiklah langsung saja perhatikan di bawah ini

Perulangan Repeat - Until
   uses crt;
   var
     i,p,nilai   : integer;
   begin
     clrscr;
     writeln(' PERULANGAN REPEAT-UNTIL ');
     writeln('-------------------------');
     writeln;
     write('Masukkan Jumlah Deret = ');readln(p);
     writeln;
     nilai   :=3;
     i       :=1;
     repeat
     begin
          write(nilai:5);
          i      := i + 1;
          nilai  := nilai * 3;
     end;
     until i> p;
   readln;
   end.

   Tampilan program dan hasilnya:



Perulangan While
   uses crt;
   var
     i,deret,nilai   : integer;
   begin
     clrscr;
     writeln('    PERULANGAN WHILE     ');
     writeln('-------------------------');
     writeln;
     write('Masukkan Jumlah Deret : ');readln(deret);
     writeln;
     nilai   :=3;
     i       :=1;
     while i <= deret do
     begin
          write(nilai:5);
          i      := i + 1;
          nilai  := nilai * 3;
     end;
     readln;
     end.

  Tampilan program dan hasilnya:



Perulangan For
       uses crt;
   var
     i,p,nilai   : integer;
   begin
     clrscr;
     writeln('     PERULANGAN FOR      ');
     writeln('-------------------------');
     writeln;
     write('Masukkan Jumlah Deret : ');readln(p);
     nilai:=3;
     for i:= 1 to p do
     begin
          write(nilai:5);
          nilai  := nilai * 3;
     end;
   readln;
   end.

Berikut tampilan program dan hasilnya :







LATIHAN PERULANGAN PADA PASCAL (Bagian 2)

Sebelumnya saya sudah posting mengenai Latihan Perulangan Pada Pascal (Bagian 1). Kali ini saya akan melanjutkan posting berapa latihan - latihan lagi dengan kasus - kasus yang lumayan tambah rumit langsung saja.

Kasus 1
Buatlah program untuk menghitung jumlah yang harus dibayar oleh nasabah jika meminjam uang disuatu koperasi dimana bunganya dijadikan pokok pada bulan berikutnya.

Bingung...? langsung saja ketikan listing di bawah ini pada pascal
       uses crt;
   var
     awal,akhir,rpbunga   : real;
     bunga, lama, i       : integer;
     mau                  : char;
   begin
     repeat
       clrscr;
       write('Pinjaman Awal = Rp. ');readln(awal);
       write('Bunga [%] = ');readln(bunga);
       write('Lamanya Pinjaman [Periode] = ');readln(lama);
       writeln('------------------------------------------------');
       writeln(' Periode Bunga [%] Pinjaman Pinjaman Bunga [Rp] ');
       writeln('                    Awal      Akhir');
       writeln('------------------------------------------------');
       for i:=1  to lama do
       begin
         akhir:=awal + ((bunga/100) * awal);
         rpbunga:=0.1 * awal;
         writeln(i:5, bunga:9, awal:11:0, akhir:11:0, rpbunga:10:0);
            awal:=akhir;
       end;
       writeln('Mau Menghitung Lagi ? [Y/N] : ');
       readln(mau);
       until mau='N';
   readln;
   end.

Jika suda di ketik maka tampilannya akan seperti di bawah ini


Tampilan Hasilnya :

Di bawah hasil hitungannya ada pertanyaan "Mau Hitung Lagi" Jika kita pilih Y maka akan di lakukan perhitungan lagi dari awal dan jika kita pilih T akan berhenti dan keluar


Kasus 2
Ubah perintah For dari kasus 1 dengan perintah While Do

Langsung saja ketikan scrib atau listing di bawah ini :
   uses crt;
   var
     awal,akhir,rpbunga   : real;
     bunga, lama, i       : integer;
     mau                  : char;
   begin
     repeat
     clrscr;
       write('Pinjaman Awal = Rp. ');readln(awal);
       write('Bunga [%] = ');readln(bunga);
       write('Lamanya Pinjaman [Periode] = ');readln(lama);
       writeln('------------------------------------------------');
       writeln(' Periode Bunga [%] Pinjaman Pinjaman Bunga [Rp] ');
       writeln('                    Awal      Akhir');
       writeln('------------------------------------------------');
       i:=1;
       while i <= lama do
       begin
         akhir:=awal + ((bunga/100) * awal);
         rpbunga:=0.1 * awal;
         writeln(i:5, bunga:9, awal:11:0, akhir:11:0, rpbunga:10:0);
            awal:=akhir;
         i:=i+1;
       end;
       writeln('Mau Menghitung Lagi ? [Y/N] : ');readln(mau);
       until mau='n';
   readln;
   end.

Jika suda di ketik maka tampilannya akan seperti di bawah ini:



Tampilan Hasilnya :

sama seperti di hasil program dari kasus 1 di bawah hasil hitungannya ada pertanyaan "Mau Hitung Lagi" Jika kita pilih Y maka akan di lakukan perhitungan lagi dari awal dan jika kita pilih T akan berhenti dan keluar.
























ADS