Kamis, 25 Desember 2014

Bahan ajar dari Dosen bpk.Nuriadi



  1. Materi Pembelajaran (Kuliah)
PROSEDUR
Di dalam merancang sebuah pogram dengan sistem prosedure kita dapat menjalan kan prosedure yang kita inginkan dengan cara memanggil nama prosedur pada blok program utama. Cobakan program d bawah ini:

program prosedur_menu;
uses wincrt;
var p,l:byte;
    ls,kll:real;
    pil:byte;
procedure satu;
begin
     writeln (' luas persegi panjang');
     writeln ('---------------------');
     writeln;
     write ('inputkan nilai panjang      :');readln(p);
     write ('inputkan nilai lebar        :');readln(l);
     ls:=p*l;
     writeln ('luas persegi panjang adalah :',ls:0:0);
     end;

procedure dua;
begin
     writeln ('keliling persegi panjang');
     writeln ('------------------------');
     writeln;
     write ('inputkan nilai panjang      :');readln(p);
     write ('inputkan nilai lebar        :');readln(l);
     kll:=(2*p)+(2*l);
     writeln('keliling persegi panjang    :',kll:0:0);
end;
{program utama}
begin
writeln('Menu Utama');
writeln('Pilihan [1/2]');readln(pil);
case pil of
1:begin
  satu
  end;
2:begin
  dua
  end;
end;
end.

Apabila program tersebut di jalankan maka hasilnya adalah:



Dari hasil di atas dapat di simpulkan bahwa prosedure mencari luas persegi panjang akan di jalankan apabila kita melakukan pilihan 1, dan apabila kita pilih 2 maka yang akan di jalankan adalah keliling persegi panjang seperti di bawah ini





  1. Materi Pembelajaran (Kuliah)
Pada pertemuan sebelumnya kita sudah membahas cara membuat proscedure di dalam program dan bagaimana cara memanggil procedure itu. Dan pada pertemuan ini kita akan lanjutakn materi sebelumnya akan tetapi procedure yang telah kita buat bias kita jalankan secara berulang-ulang selagi kondisi terpenuhi. Bentuk umum dari procedure yang akian kita buat adalah sebagi berikut:

Procedure nama_procedure1;
            begin
                        Blok statement
            End;
Procedure nama_procedure2;
            Begin
                        Blok statement2
            End;

Begin
            Variable copnstan
            Cek kondisi variable constan
            Blok program utama
            Inputkan variable constan
End

Untuk lebih jelas lihat conoth program di bawah ini:

program prosedur_menu;
uses wincrt;
var p,l:byte;
    ls,kll:real;
    pil:byte;
    mad:char;
procedure satu;
begin
     writeln (' luas persegi panjang');
     writeln ('---------------------');
     writeln;
     write ('inputkan nilai panjang      :');readln(p);
     write ('inputkan nilai lebar        :');readln(l);
     ls:=p*l;
     writeln ('luas persegi panjang adalah :',ls:0:0);
     end;

procedure dua;
begin
     writeln ('keliling persegi panjang');
     writeln ('------------------------');
     writeln;
     write ('inputkan nilai panjang      :');readln(p);
     write ('inputkan nilai lebar        :');readln(l);
     kll:=(2*p)+(2*l);
     writeln('keliling persegi panjang    :',kll:0:0);
end;
{program utama}
begin
writeln('Menu Utama');
mad:='y';
while (mad='y') or (mad='Y') do
begin
writeln('Pilihan [1/2]');readln(pil);
case pil of
1:begin
  satu
  end;
2:begin
  dua
  end;
end;
write('ulangi[y/t]      :');readln(mad);
end;
end.
Apabila program tersebut di jalankan maka hasilnya adalah:



Dari hasil di atas dapat di simpulkan bahwa setelah kita panggil salah satu procedure dan apabila kondisi variable constan terpenuhi maka kita bisa memanggil procedure lagi


  1. Materi Pembelajaran (Kuliah)
  TIPE DATA RECORD (Rekaman)
Seperti halnya array(larik), record juga punya elemen, di sini elemennya disebut "Field". Tiap elemen bisa punya type data yang berbeda. Banyaknya field dapat bervariasi atau bisa juga tetap. Record yang punya field yang bervariasi disebut ‘Variant Record’. Deklarasi type data Record dapat ditetapkan di bagian deklarasi Var atau Type
Syntax  :
TYPE
nmPengenal = RECORD
Field1          : type1;
Field2          : type2;
:
fieldn          : typen;
END;
          VAR
                   nmRec        :  nmPengenal   ;
          Keterangan :
     nmPengenal       : Nama Dari Record  ;
     Field1, Field2,  Fieldn         : Nama dari Variabel/Field yang terdapat dalam Record
     Type1, Type2, Typen : Type Dari tiap-tiap Field yang dideklarasikan
     nmRec                : Nama Dari Record yang di deklarasikan

Contoh :
TYPE
          Mahasiswa  = RECORD
                   NIM             : String[8]   ;
                   Nama          : String[20] ;
                   Alamat                  : String[30] ;
                   Sex              : Char          ;
                   Umur          : Byte         ;
          END;
VAR
          RecMhs  : Mahasiswa   ;
MEMBACA & MENULIS FIELD
Dapat dilaksanakan pada seluruh record atau sebagian record.
Syntax  :   nmRec.Field1   ;

Tanda titik harus ditulis
Notasi ini disebut Penandaan field (‘field designator’).

Berbeda dengan statement pemberian (assigment), maka untuk membaca dan menulis record selalu dilakukan menurut Field yang ada, tidak dilakukan secara keseluruhan record.
Contoh  : Membaca        Readln(RecMhs.NIM );
         Readln(RecMhs.Nama );

     Menulis          Writeln(RecMhs.NIM );
        Writeln(RecMhs.Nama );

Untuk lebih jelas coba pratekan contoh program di bawah ini:

Program DenganRecord;
uses wincrt;
TYPE
Mahasiswa = RECORD
                   NIM      :  String[8]         ;
                   Nama   :  String[20]        ;
                   Umur   :  Byte                ;
END;
Var
          RecMhs : Mahasiswa          ;
Begin
          Clrscr ;
          {Bagian Input Data} 
          Writeln('NIM Anda          :'); readln( RecMhs.NIM ) ;
          Writeln('Nama                :'); readln( RecMhs.Nama ) ;
          Writeln('Umur                :'); readln( RecMhs.Umur ) ;

{Bagian Menampilkan Data yang telah diinputkan  }
          Writeln('NIM Anda          :' , RecMhs.NIM ) ;
          Writeln('Nama                :' , RecMhs.Nama ) ;
          Writeln('Umur                :' , RecMhs.Umur ) ;
          Readln;
End.


STATEMENT WITH
Digunakan untuk mengurangi penulisan yang berulang-ulang untuk nama recordnya. Maka dengan menggunakan statement WITH hanya cukup sekali saja menyebutkan nama recordnya.

         Syntax  :  WITH nmRecord DO

Contoh:

Program RecordDenganWithDo;
Uses wincrt;
TYPE
       Mahasiswa = RECORD
              NIM      :  String[8]         ;
              Nama   :  String[20]        ;
              Umur   :  Byte                ;
END;
Var
       RecMhs : Mahasiswa          ;
Begin
       Clrscr ;
       With RecMhs Do
Begin
                 {Bagian Input Data} 
                 Writeln(‘NIM Anda          :’); readln(NIM ) ;
              Writeln(‘Nama       :’); readln(Nama ) ;
                 Writeln(‘Umur      :’); readln(Umur ) ;

{Bagian Menampilkan Data yang telah diinputkan  }
                 Writeln(‘NIM Anda          :’ , NIM ) ;
              Writeln(‘Nama                :’ , Nama ) ;
                 Writeln(‘Umur                :’ , Umur ) ;
End;
       Readln;
End.


Program Record_Array;
Uses wincrt;
Type
Barang = record
Kode         : String[5]   ;
Nama                     : String[20]  ;
Jumlah       : Integer      ;
Harsat        : Longint     ;
End;
Var
RecBrg : Array [1..40] of Barang  ;
Lagi         : Char;
I, J            : Integer;
Begin
 I:=0    ; J := 0 ;
{  Untuk Menginputkan Data  Barang}
Repeat
Inc(I)   ;
Write('Kode Barang    :');  readln(RecBrg[I].Kode);
Write('Nama                :');  readln(RecBrg[I].Nama);
Write('Jumlah              :');  readln(RecBrg[I].Jumlah);
Write('Harga satuan    :');  readln(RecBrg[I].Harsat);
Write('Ada lagi [Y/T]  : '); readln(lagi);
Until (lagi<>'Y') or (lagi<>'y'   ) ;       {  bisa ditulis   Until Upcase(lagi)='Y'     }
{  Menampilkan Data  Barang   }

 Write('---------------------------------------------------------------------------');
 Write('No. Kode      Nama                                  Jumlah     Harga');
 Write('---------------------------------------------------------------------------');
For J := 1 To I  Do
Begin  
 Write( I ) ;
Write(RecBrg[J].Kode ) ;
Write(RecBrg[J].Nama ) ;
 Write(RecBrg[J].Jumlah ) ;
Write(RecBrg[J].Harsat) ;
            End;
 Write('---------------------------------------------------------------------------');
Readln;
End.


Tidak ada komentar: