appa pun pilihannyaa Keong Racun tetapp satuu...
and tak ada yang tak mungkinnn...!!

Rabu, 19 Oktober 2011

kasir n data karyawan

program quiz;
uses
 winCrt;
var
 p,ulang,pilih,jk:char;
 kd_brg,nm_ksr,nm_brg,kd_krywn,nm,alamat:string;
 harga,jml_byr,hrg_beli,diskon:real;
 akar:real;
 jml,kuadrat,bil:byte;
begin
 ulang:= 'Y';
 while(ulang='Y') or (ulang='y') do
 begin
  writeln('PROGRAM PILIHAN');
  writeln('----------------');
  writeln('[1]ENTRY DATA KARYAWAN');
  writeln('[2]PROGRAM KASIR');
  writeln;
  write('Masukkan Pilihan Anda[1/2] : ');readln(p);
  case p of
  '1':begin
      clrscr;
       writeln('PROGRAM ENTRY DATA KARYAWAN');
       writeln('---------------------------');
       writeln('Masukkan Data Karyawan:');
       write('Kode Karyawan : ');readln(kd_krywn);
       write('Nama          : ');readln(nm);
       write('Kelamin[L/P]  : ');readln(jk);
       write('Alamat        : ');readln(alamat);
       clrscr;
       writeln('DATA KARYAWAN');
       writeln('-------------');
       writeln('Kode Karyawan   : ',kd_krywn);
       writeln('Nama            : ',nm);
       writeln('Kelamin         : ',jk);
       writeln('Alamat          : ',alamat);
       writeln('----------------------------');
      end;
  '2':begin
       clrscr;
       writeln('PROGRAM PERHITUNGAN KASIR');
       writeln('*************************');
       write('Nama Kasir   : ');readln(nm_ksr);
       write('Kode Barang  : ');readln(kd_brg);
       write('Nama Barang  : ');readln(nm_brg);
       write('Harga Satuan : ');readln(harga);
       write('Jumlah       : ');readln(jml);
        hrg_beli:= jml*harga;
        if hrg_beli >= 100000 then
        begin
         diskon:= 0.1*hrg_beli;
         jml_byr:= hrg_beli-diskon;
        end else
        begin
         diskon:= 0;
         jml_byr:=hrg_beli;
        end;
       clrscr;
       writeln('Data Pembelian Anda');
       writeln('-------------------');
       writeln('Kode Barang       : ',kd_brg);
       writeln('Nama Barang       : ',nm_brg);
       writeln('Harga Barang      : ',harga:10:0);
       writeln('Jumlah Barang     : ',jml);
       writeln('Jumlah Pembelian  : ',hrg_beli:10:0);
       writeln('Diskon            : ',diskon:10:0);
       writeln('Jumlah Bayar      : ',jml_byr:10:0);
       writeln('--------------------------------');
       writeln('Terima Kasih Atas Kunjungan Anda');
       writeln('********************************');
    end else
       clrscr;
       writeln('Anda Salah Memasukkan Pilihan');
  end;
       write('Kembali Ke Menu?[Y/T] : ');readln(ulang);
       clrscr;
 end;
  writeln('TERIMA KASIH');
end.

IF hari

program konversi2;
uses
    wincrt;
var
   a: byte;

begin
     write('nomor hari : ');readln(a);
     if (a=1) then write ('senin')
     else
     if (a=2) then write ('Selasa')
     else
     if (a=3) then  write('rabu')
     else
     if (a=4) then  write('kamis')
     else
     if (a=5) then  write('jumat')
     else
     if (a=6) then  write('sabtu')
     else
     if (a=7) then  write('minggu')
     else
         write('tidak hari');

end.

case angka

Program Angka;
uses wincrt;
var
a:integer;
begin
write('Angka (1-3) = ');readln(a);
writeln;
case a of
1:write('Satu');
2:write('Dua');
3:write('Tiga');
else
write('Pilihan Salah!');
end;
end.

ganjil_gnap

program ganjil_genap;
uses
    wincrt;

var
nilai : integer;

 begin
    gotoxy(12,3);writeln('PROGRAM PENCETAKAN BILANGAN');
    gotoxy(11,4);writeln('=============================');
    write('Masukkan nilai : ');readln(nilai);
    writeln;
    if (nilai Mod 2) = 0 then
    writeln ('Nilai ',nilai,' ','adalah Genap')
    else
    writeln('Nilai ',nilai,' ','adalah Ganjil');

 end.  

Kamis, 06 Oktober 2011

program tekan tombol

Program TekanTombol;
Uses WinCrt;
Label
   Mulai;
Var
   Tombol,
   Jawab : Char;
Begin
 Mulai:
  ClrScr;
  Writeln('PROGRAM TENTUKAN TOMBOL');
  Writeln('-----------------------');
  Write('Tekan Sembarang TOMBOL : ');
  Readln(Tombol);
  Case Tombol Of
   'a'..'z','A'..'Z' : Begin
                         Writeln('Anda menekan tombol ',Tombol);
                         Writeln('Tombol ',Tombol,' Termasuk HURUF');
                       End;
   '0'..'9'          : Begin
                         Writeln('Anda menekan tombol ',Tombol);
                         Writeln('Tombol ',Tombol,' Termasuk ANGKA');
                       End;
   Else
                      Begin
                         Writeln('Anda menekan tombol ',Tombol);
                         Writeln('Tombol ',Tombol,' Bukan HURUF/ANGKA');
                       End;
  End;
  writeln;
  Write('Mau mencoba lagi [Y/T] ? ');Readln(jawab);
  If (Jawab = 'Y') or (Jawab = 'y') Then
  Goto mulai
End.

program menu matematika

program Menu;
uses
    winCrt;

procedure menu_prog;
 begin
  gotoxy (6,2) ; writeln('MENU PROGRAM MATEMATIKA');
 end;

procedure bintang;
 begin
   writeln;
   writeln('*****************************************');
   writeln;
 end;

procedure exit;
  begin
    writeln('KELUAR');
  end;

procedure Deret (var n :integer);
var
 a,jumlah:byte;
 begin
  a:= 1; jumlah:=0;
  while a<= n do
   begin
     write(a:3);
     jumlah:=jumlah+a;
     a:=a+1;
   end;
  writeln;
  writeln('Total Jumlah Deret : ',jumlah);
 end;

procedure balok(var p,l,t : integer;  luas : integer) ;
 begin
   writeln;
   luas:= 2 * ((p*l) + (p*t) + (l+t));
   writeln('Luas Balok adalah  ',luas,' cm');
 end;

function Bilangan (var nilai :integer ): string ;
 begin
    writeln;
    if (nilai Mod 2) = 0 then
    writeln ('Nilai ',nilai,' ','adalah Genap')
    else
    writeln('Nilai ',nilai,' ','adalah Ganjil');
 end;

 var
 n1,n2,n3,luas,pil:integer;
 ulang :char;

 begin
 ulang:='Y';
 while (ulang='Y') or (ulang='y') do
  begin
  menu_prog;
  bintang;
  writeln('(1) Menghitung Deret');
  writeln('(2) Menghitung Luas Balok');
  writeln('(3) Mencetak Biangan Ganjil/Genap');
  writeln('(4) KELUAR');
  bintang;
  write (' Silahkan Masukkan Pilihan Menu Anda [1/2/3/4] :  ');readln(pil);
  bintang;
  clrscr;

  case pil of
  1 : begin
     writeln ('Program Mencetak Deret');
     bintang;
     write('Masukkan Jumlah Deret : ');readln(n1);
     writeln;
     Deret(n1);
     bintang;
  end;
  2 : begin
    writeln('Program Menghitung Luas Balok');
    bintang;
    write('Masukkan Panjang Balok : ');readln(n1);
    write('Masukkan Lebar Balok   : ');readln(n2);
    write('Masukkan Tinggi Balok  : ');readln(n3);
    bintang;
    balok(n1,n2,n3,luas);
    bintang;
  end;
  3 : begin
    writeln('Program Pencetakan Bilangan');
    bintang;
    write('Masukkan Bilangan = ');readln(n1);
    Bilangan(n1);
    writeln;
    bintang;
   end;
  4..100 : begin
    writeln(' Menu Yang Anda Pilih Tidak Ada');
    bintang;
   end;
  end;
  writeln;
  write('Apakah Anda Ingin Menu Lain [Y/T] ? : ');readln(ulang);
  clrscr;
  end;
  writeln('Terima kasih telah menggunkaan program ini');
 end.

menu

program MENU;

uses
    wincrt;
var
   KK,kd_brg,hrg,jmlh,jmlh_brg,a:integer;
   jmlh_pmbli:longint;
   nama,almt,nm_ksr,nm_brg:string [20];
   klm,coba:char;
   jmlh_byr:real;

begin
     coba:='Y';
repeat
      writeln('PROGRAM MENU');
      writeln('------------');
      write('Masukkan Pilihan Menu [1/2] : ');readln(a);
      if (a=1) then
begin
     gotoxy(5,6);writeln('ENTRY DATA KARYAWAN');
     writeln;
     write('Kode Karyawan : ');readln(KK);
     write('Nama          : ');readln(nama);
     write('Kelamin       : ');readln(klm);
     write('Alamat        : ');readln(almt);
end else
     begin
     writeln('KASIR');
     write('Nama Kasir : ');readln(nm_ksr);
     write('Kode Barang : ');readln(kd_brg);
     write('Nama Barang : ');readln(nm_brg);
     write('Harga Barang : ');readln(hrg);
     write('Jumlah Barang : ');readln(jmlh);
     jmlh_pmbli:=hrg*jmlh;
     writeln('Jumlah bayaran : ',jmlh_pmbli);
     if jmlh_pmbli >= 100.000 then
        jmlh_byr:=0.2*jmlh_pmbli;
        writeln('Jumlah Bayar diskon: ',jmlh_byr:5:2);
     end;
     begin
          jmlh_byr := jmlh_pmbli;
     end;
         write('Masih Ada Data Lagi?[Y/T] : ');readln(coba);
          writeln;
until (coba='T') or (coba='t');   
  

 end.   
   

case of bulan and pengulangan while do

program case_of;

uses
    wincrt;
var
    bulan:string;
    indeks:byte;
    ulang:char;

begin
  ulang:='Y';
  while (ulang='Y') or (ulang='y') do
  begin
  writeln ('Program Mencetak Nama Bulan');
  writeln('____________________________');
  write('Masukkan no Bulan[1..8] : ');readln(indeks);
case indeks of
     1:bulan:= 'Januari';
     2:bulan:= 'Februari';
     3:bulan:= 'Maret';
     4:bulan:= 'April';
     5:bulan:= 'Mei';
     6:bulan:= 'juni';
     7:bulan:= 'Juli';
     8:bulan:= 'Agustus';
else
end;
    writeln('Nama Gak Ada');
    writeln('Bulan ke ',indeks,' Adalah ',bulan);
    write('Masih Ada Data Lagi?[Y/T] : ');readln(ulang);clrscr;
    writeln;
    end;
end.

case of bulan

program case_of;

uses
    wincrt;
var
    bulan:byte;

begin
  writeln ('Program Mencetak Nama Bulan');
  writeln('____________________________');
  write('Masukkan no Bulan[1..8] : ');readln(bulan);
case bulan of
     1:writeln ('Januari');
     2:writeln ('Februari');
     3:writeln ('Maret');
     4:writeln ('April');
     5:writeln ('Mei');
     6:writeln ('juni');
     7:writeln ('Juli');
     8:writeln ('Agustus');
else
    writeln('Nama Gak Ada');
end;
end.

array grade mahasisiwa 1 dimensi

program array_1Dimensi;
uses
 winCrt;
var
 nim,nm,smstr,mk,grade:array[1..4] of string;
 nh,uts,uas:array[1..4] of integer;
 na:array[1..4] of real;
 i:byte;
begin
  writeln('PROGRAM MENCETAK NILAI MHS');
  writeln('--------------------------');
 for i:= 1 to 2 do
 begin
 writeln('Input Data Mahasiswa ke ',i);  
  write('NIM         : ');readln(nim[i]);
  write('Nama        : ');readln(nm[i]);
  write('Semester    : ');readln(smstr[i]);
  write('Mata Kuliah : ');readln(mk[i]);
  write('Nilai Harian: ');readln(nh[i]);
  write('Nilai UTS   : ');readln(uts[i]);
  write('Nilai UAS   : ');readln(uas[i]);
  writeln('******************************');
  NA[i]:= 0.2*NH[i]+0.3*UTS[i]+0.5*UAS[i];
  if na[i] >= 90 then
     grade[i]:='A' else
  if na[i] >= 80 then
     grade[i]:='B+' else
  if na[i] >= 70 then
     grade[i]:='B' else
  if na[i] >= 60 then
     grade[i]:='C+' else
  if na[i] >= 50 then
     grade[i]:='C' else
  if na[i] >= 30 then
     grade[i]:='D'
  else
     grade[i]:='E';
 end; clrscr;
 writeln('DATA NILAI MHS SEBAGAI BERIKUT :');
 writeln('--------------------------------');
 for i:= 1 to 2 do
 begin
 writeln('Mahasiswa ke ',i);
  writeln('NIM          : ',nim[i]);
  writeln('Nama         : ',nm[i]);
  writeln('Mata Kuliah  : ',mk[i]);
  writeln('Nilai Akhir  : ',na[i]:3:0);
  writeln('Grade        : ',grade[i]);
  writeln('-------------------------------');
 end;
end.

berhitung

ses wincrt;

var
w:integer;
a,f:real;

procedure beban;
 var
   m: integer;
 begin
     writeln(' **** BEBAN **** ');
     writeln('==================');
     write('Masukkan Massa (kg)    : ');readln(m);
     w:=m*10;
     write(' Beban :  ',w,' Newton');
     writeln;
 end;

procedure kecepatan;
 var
   vt,vo,t: integer;
 begin
     writeln;
     writeln(' ### KECEPATAN ###  ');
     writeln('---------------------');
     write('Masukkan Kecepatan Akhir (Km/jam)   : ');readln(vt);
     write('Masukkan Kecepatan Awal (km/jam)    : ');readln(vo);
     write('Masukkan Waktu (Sekon)              : ');readln(t);
     a:=(vt-vo)*0.5*t*t;
     write(' Kecepatan :  ',a:2:0,' Km/Jam');
     writeln;
 end;

procedure gaya(w:integer; a,f:real);
 begin
     writeln;
     writeln('   ### GAYA ###      ');
     writeln('----------------------');
     f:=w*a;
     write(' Gaya :  ',f:2:0,' Newton');
 end;

begin
 writeln(' PROGRAM PENGHITUNGAN GAYA ');
 writeln('---------------------------');
 writeln;
 Beban;
 Kecepatan;
 Gaya(w,a,f);
end.

mencetak biodata

program Biodata;

uses
winCrt;

var
nl:string[25];
np:string[20];
jrsn,almt:string[35];
jk:char;

begin
gotoxy(12,3);writeln('Biodata Pribadi');
gotoxy(9,4);writeln('**-----------------**');
writeln;
write('Nama Lengkap     :');readln(nl);
write('Nama Panggilan   :');readln(np);
write('jurusan          :');readln(jrsn);
write('Alamat           :');readln(almt);
write('Kelamin [L/P]    :');readln(jk);
writeln;
clrscr;
gotoxy(10,2);writeln('Biodata Mahasiswa');
gotoxy(9,3);writeln('====================');
writeln;
writeln('Nama Lengkap       :',nl);
writeln('Jurusan            :',jrsn);
writeln('Alamat             :',almt);
writeln('Kelamin            :',jk);  

end.

menghitung grade mahasiswa

program nilai;
uses
     wincrt;
var
   a : string [ 20];
   b,t,h,u : integer;
   na : real;

begin
gotoxy(12,3);writeln('Program Pencetak Grade Mahasiswa ');
writeln;
begin
   Write ( ' Masukkan Nama : ');readln(a);
   Write ( ' Nim           : ');readln(b);
   Write ( ' Nilai Harian  : ');readln(t);
   Write ( ' UTS           : ');readln(h);
   Write ( ' UAS           : ');readln(u);
   na := 0.2 *t + 0.3 * h + 0.5 * u;
   write ('Hasil : ',na:2:2);Writeln;

   if na >= 90 then
   write ('A')
   else
  
   if na >= 80 then
   write('B+')
   else

   if na >= 70 then
   write ('B')
   else

   if na >= 60 then
   write ('C+')
   else

   if na >= 50 then
   write ('C')
   else

   if na >= 40 then
   write ('D')
   else
   write ('E');
   writeln;
   end;

end.

menentukan grade mahasisiwa

program kondisi_if;
uses
 wincrt;
var
 nilai:integer;
 ket,ucapan:string;
 ulang:char;
begin
 ulang:='Y';
 while (ulang='Y') or (ulang='y') do
 begin
  writeln('Program Kondisi IF');
  writeln('------------------');
  write('Masukkan sebuah Nilai : ');readln(nilai);
  if (nilai<0) or (nilai>100) then
     writeln('Nilai yang dimasukkan dari [1..100]')
  else
  if nilai >= 60 then
  begin
    ket:='LULUS';
    ucapan:='Selamat Yaaaa';
  end else
  begin
    ket:='GAGAL';
    ucapan:='SABAR YAAAA';
  end;
  writeln;
  writeln('Nilai Anda ',nilai,' maka ',ket);
  writeln('Kami Mengucapkan ',ucapan);
  writeln('-------------------------------');
  write('Mau Coba Lagi?[Y/T] : ');readln(ulang);
  clrscr;
 end;
 writeln('TERIMA KASIH');
end.

contoh program sederhana (kondisi)

Program Menentukan_Segitiga;
Uses
    Wincrt;
Var
   A,B,C,X,Y:integer;

Begin
     Writeln('Program Menentukan Segitiga');
     Writeln('=========================');
     Writeln;
     Write('Masukkan Sisi A: ');readln(A);
     Write('Masukkan Sisi B: ');readln(B);                                     
     Write('Masukkan Sisi C: ');readln(C);
     Writeln;
     X:=sqr(C);
     Y:=sqr(A)+sqr(B);
     if (X<Y) then
     Writeln('Segitiga Lancip')
     else
     if (X=Y) then
     Writeln('Segitiga Siku-Siku')
     else
     Writeln('Segitiga Tumpul')
End.

Rabu, 05 Oktober 2011

modul praktikum


MODUL I
STRUKTUR PROGRAM PASCAL
(1 x pertemuan)

I.        TUJUAN
Mahasiswa mengenal struktur program PASCAL, editor TURBO PASCAL. program sederhana dengan bahasa PASCAL, Statemen masukkan dan keluaran, Variabel, Konstanta dan Operator.

II.      TEORI SINGKAT
Editor TURBO PASCAL merupakan pelayanan terpadu antara editor dengan compiler. Untuk mengaktifkan editor TURBO PASCAL dapat dilakukan dengan :
·         Aktifkan komputer dalam keadaan prompt C:\> (DOS)
·         Masuk ke direktori TPW
·         Masuk ke direktori BIN
·         Ketikkan TPW.EXE
C:\> CD TPW
C:\TPW\TPW.EXE
Sehingga akan muncul jendela editor TURBO PASCAL dengan  menu antara lain : File, Edit, Search, Run, compile, Debug, Tools. Options, Window, Help.

Operasi-operasi pada editor PASCAL :
1.       Untuk menciptakan lembar kerja baru à File, New
2.       Untuk menyimpan hasil pekerjaan à File, Save/Save as, ketikkan nama filenya (Tekan tombol F2)
3.       Untuk membuka file data à File, Open, pilih file data, Tekan tombol Open (Tekan tombol F3)
4.       Untuk berpidah ke direktori kerja à File, Change dir…, Tentukan direktori kerja, Tekan tombol OK
5.       Untuk keluar ke prompt DOS sementara à File, DOS shell
6.       Untuk kembali ke editor PASCAL à ketikkan Exit
7.       Untuk menjalankan program PASCAL à Run, Run (Ctrl+F9)
8.       Untuk melihat hasil RUN à Alt+F

Struktur Program PASCAL :


PROGRAM NamaKepalaProgram;                    à Optional
LABEL
                <Deklarasi Label>                                   à Optional
CONST
                <Deklarasi Konstantal>                          à Optional
TYPE
                <Deklarasi Tipe>                                     à Optional
VAR
                <Deklarasi Variabell>                            à Optional
<Deklarasi Procedure dan Fuction>                  à Optional
Begin
<Pernyataan>
End.


NamaKepalaProgram

Dipakai untuk keperluan dokumentasi. Menunjukkan dari identifikasi program yang akan dibuat. Nama kepala program harus dimulai dengan huruf, dapat terdiri dari angka dan karakter _ (garis bawah) dan tidak boleh ada spasi. NamaKepalaProgram mempunyai aturan sama dengan Namavariabel. Namakonstanta, NamaTypeData, NamaProcedure, NamaFuction.

Program Sederhana

Program paling sederhana dari PASCAL hanyalah terdiri
      Begin
      End.
Program diatas tidak mengandung statement sama sekali, sehingga program diatas kalau dijalankan (Ctrl+F9) tidak menghasilkan Output.

Procedure Write dan Writeln

Write              : Mencectak dan kursor disebelahnya
Writeln           : Mencetak dan kursor satu baris ke baris awal




Contoh Program :


Program coba;
Begin
 write('Selamat datang ');
 write('di TURBO PASCAL');
 writeln;
 writeln('Laboratorium komputer');
 writeln('STMIK BUMIGORA MATARAM');
end.


Program diatas dapat anda jalankan dengan menekan tombol Ctrl+F9. Anda bisa melihat hasil dari ekselusi program dengan menekan tombol Alt+F5. Perhatikan hasil eksekusi program dengan cermat, apa efek dari write dan writeln.

Deklarasi Variabel (identifier) dan Format Keluaran

Sebelum suatu variabel digunakan maka terlebih dahulu harus dipesan dalam blok deklarasi variabel dengan bentuk :

Var         NamaVar : Typevariabelnya;
                NamaVar, NamaVar, … : Typevariabelnya;

Jika menggunakan variabel yang belum di deklarasikan maka saat program di RUN (dikompilasi) akan menyebabkan kesalahan dengan muncul pesan “Unknown identifier”.
Selanjutnya variabel bisa diisi data dengan statemen assingment.

                NamaVariabel := data;

:= adalah operator untuk pengisian variabel dengan nilai data.

Contoh program :

Program coba2;
var
  a,b,c : integer;
  p,q   : real;
  z     : string;
Begin
 a := 5; b := 6; c:= a * b;
 p := 12.5; q := p-4;
 z := ‘MATARAM’;
 writeln(a,b,c);
 writeln(p,q);
 writeln(z)
end.


Output program diatas :

5630
1.2500000000E+01 8.5000000000E+00
MATARAM

Perhatikan output diatas 5630 adalah isi dari variabel a, b, dan c yang dicetak berdempetan. sedangkan 1.2500000000E+01 dan 8.5000000000E+00 adalah isi dari variabel p dan q yang dicetak tanpa format. Kita dapat memberikan format cetakkan dengan aturan :

NamaVariabel : w   untuk variabel/data type integer atau string
Namavariabel : w : d              untuk variabel/data tipe real

w adalah lebar medan cetak dan d adalah jumlah digit desimal dibelakang titik desimal.
Jika program diatas diubah menjadi :



Program coba3;
var
  a,b,c : integer;
  p,q   : real;
  z     : string;
Begin
 a := 5; b := 6; c:= a * b;
 p := 12.5; q := p-4;
 z := 'EL RAHMA';
 writeln(a,'  ',b,'  ',c);
 writeln(p:5:2,'  ',q:5:2);
 writeln(z:10)
end.

Perhatikan perbedaan outputnya !

Deklarasi Type Variabel
Dalam PASCAL dikenal banyak type yang bisa digunakan untuk mendeklarasikan type suatu data.
Type
Kisaran nilai
Type sederhana :
Byte
Word
ShortInt
Integer
Longint
Real
Single
Double
Extended
Boolean
Char
String
Type terstruktur :
Array
Record
File
Set
Pointer

0 .. 255
0 .. 65535
-128 .. 127
-32768 .. 32767
-2147483648 .. 2147483648
1 E-38 .. 1 E+28
1.5 E-45 .. 3.4 E+38
5.0 E-324 .. 1.7E+308
1.9 E-4951 .. 1.1 E+4932
Kondisi True atau False
‘a’, ‘b’, .., ‘z’, ‘0’ .. ‘9’ à semua karakter
‘rangkaian karakter’

larik karakter, numerik
numerik, string, char
numerik, string, larik, record
data ordinal
alamat memori

Type diatas adalah type standard bawaan PASCAL (sudah didefinisikan oleh PASCAL). Kita dapat membuat/mendefinisikan sendiri type sesuai dengan keinginan kita dengan cara mendeklarasikan pada bagian type.

                Bentuk :
                                Type
                                   NamaTypeData = typedata;

selanjutnya NamaTypeData yang sudah kita definisikan bisa kita pakai sebagai type data pada variabel yang kita gunakan.


Contoh :
      Type
            Bulat = Integer;
            Pecah = Real;
            Karakter = String;
      Var
            a,b,c : Bulat;
            p,q : Pecah;
            z : Karakter;

Operator
Dalam PASCAL dikenal beberapa operator antara lain : Operator aritmetika, Operator string, Operator logika.

Operator aritmetika
/               pembagian
*              perkalian
div          pembagian integer
mod        sisa hasil pembagian integer
+ -           tambah dan kurang
di dalam PASCAL tidak dikenal operator pangkat. apabila dibutuhkan dapat dibuat untuk operasi pangkat.

operator string
Hanya ada satu operator string yaitu + yang artinya rangkai. Misalnya ‘Sistem’ + ‘Informasi’ à ‘Sistem Informasi’.

operator logika
operator logika yang terpenting adalah NOT, AND dan OR

Deklarasi Konstanta
Konstanta adalah suatu nilai yang tidak dapat diubah dalam tubuh program dan harus dideklarasikan di bagian deklarasi konstanta sebagai berikut :
               
                Const
                                NamaKonstanta1 = NilaiKonstanta;

Contoh program :
Untuk menghitung luas dan keliling lingkaran :

Program lingkaran;
const
 phi = 3.14;
var
 jari, luas, kel : real;

Begin
 Jari := 10.0;
 luas := phi * jari * jari;
 kel  := 2 * phi * jari;
 writeln('H A S I L');
 writeln('---------');
 writeln('Jari-jari lingkaran : ',jari:6:2);
 writeln('Luas lingkaran      : ',luas:6:2);
 writeln('Keliling lingkaran  : ',kel:6:2);
end.


Komentar Program
Komentar adalah sesuatu yang tidak akan diproses pada saat program dijalankan. Pemberian komentar ditandai dengan :

                {komentar … komentar}

Dekalrasi Unit
Unit adalah suatu kumpulan prosedur dan fungsi yang disediakan oleh PASCAL yang disesuaikan dengan tujuannya. Dalam PASCAL dikenal beberapa Unit standard antara lain WinCrt, Dos, Graph, Printer, Dos.
Contoh Unit yang tersedia dalam Unit WinCrt :
Clrscr          : Untuk membersihkan layar
GotoXY     : Untuk memposisikan kursor pada kom X dan baris Yang di layar
Cara mendeklarasikan Unit adalah :

                    Uses NamaUnit, NamaUnit, …;

Contoh program :

{ Contoh program menggunakan
  Unit untuk mengambil prosedure
  Clrscr dan GotoXY}
Program DenganUnit;
Uses WinCrt;
Begin
 Clrscr;
 GotoXY(34,13);write('TEKNIK INFORMATIKA');
 GotoXY(36,14);write('STMIK EL RAHMA');
End.


Prosedure Read dan Readln
Procedure ini digunakan untuk membaca data dari keyboard dengan memakai variabel yang sudah dideklarasikan dalam deklarasi variabel. Sintaxnya :

                    Read(NamaVariabel, NamaVariabel, …);
                    Readln(NamaVariabel, Namavariabel, …);
Read          : Tidak akan menurunkan kursor setelah proses pembacaan
Readln       : menurunkan kursor setelah proses pembacaan

Contoh program :
{
 Contoh program menginputkan data
 dengan perintah read atau readln
 kemudian menampilkannya dengan
 perintah write atau writeln
}
Program InputData;
uses WinCrt;
Var
 no_mhs : integer;
 nama, alamat   : string;
Begin
 clrscr;
 write('Nomor mahasiswa : ');readln(no_mhs);
 write('Nama Mahasiswa  : ');readln(nama);
 write('Alamat          : ');readln(alamat);
 clrscr;
 write('Dia adalah ',nama);
 writeln(' yang mempunyai nomor mahasiswa ',no_mhs);
 writeln('beralamat di ',alamat,' Yogyakarta');
 readln;
end.




Latihan Soal :
Buatlah algoritma, flow chart dan program untuk membaca cacah durian dan cacah orang. Jika mangga dibagi, tiap orang mendapat berapa mangga dan berapa sisnya . Apakah mangga tersebut habis dibagi atau tidak.

Contoh Output :

                    Jumlah durian                 : 8
                    Jumlah orang                   : 3

                    Hasil Pembagian Durian
                    -------------------------------
                    Tiap orang mendapat     : 3 mangga
                    Sisa mangga                     : 2

MODUL II
PENYELEKSIAN KONDISI
(1x pertemuan)


I.        TUJUAN
Mempelajari struktur kondisi dalam PASCAL yaitu Struktur If … Then …, If … Then … Else … dan Case … Of …

II.    TEORI SINGKAT

If … Then … :

Statemen If … Then … mempunyai syntax :

                If <syarat_logika> Then Statemen

Atau

                If <syarat_logika> Then
                        Begin
Statemen1;
Statemen2;            disebut blok statemen
……         ;
                        End;

<syarat_logika> adalah operasi relasi (seleksi kondisi) yang apabila bernilai TRUE (benar) maka statemen atau blok statemen setelah Then akan dilaksanakan. Apabila statemen yang berkaitan dengan nnilai TRUE lebih dari satu statemen maka blok statemen dipergunakan, jika hanya terdiri dari satu statemen maka blok statemen tidak perlu dipergunakan. Blok statemen ditandai dengan Begin …End;

Contoh : Akan dibaca dari keyboard nama siswa dan nilai angka. Akan ditentukan apakah siswa tersebut lulus atau tidak, siswa lulus jika nilai angka lebih besar atau sama dengan 60.


Program TentukanLulus;
Uses WinCrt;
Var
   NamaSis : String[35];
   Nilai   : Real;
   Ket     : String[25];
Begin
   ClrScr;
   Write('Nama Siswa  : ');Readln(NamaSis);
   Write('Nilai Angka : ');Readln(Nilai);
   Ket := 'Anda Tidak Lulus';
   If (Nilai >= 60) Then
      Ket := 'Anda Lulus, SELAMAT !';
   Writeln;
   Writeln('Hasil : ',Ket);
   Readln
End.


If … Then …Else … :

Mirip dengan syntax If … Then, tata aturan if then else adalah :

                If <syarat_logika> Then Statemen1 Else Statemen2;

Atau


                If <syarat_logika> Then
                        Begin
                                Statemen1;
                                Statemen2;              blok jika syarat True
                                            ;
                        End
                Else
                        Begin
                                Statemen1;
                                Statemen2;             blok jika syarat False
                                            ;
                        End;

Jika <syarat_logika> bernilai TRUE maka statemen atau blok statemen seteleh Then akan dikerjakan, jika <syarat_logika> bernilai FALSE maka statemen atau blok statemen seeleh Else akan dkerjakan.

Contoh : Pada conoth progrgam sebelumnya dapat kita tulis kembali dengan If … then … Else … dan kita kerjakan dengan blok statemen dan program dapat kita buat berputar dengan memakai deklarasi label.


Program TentukanLulus;
Uses WinCrt;
Label
   Mulai;
Var
   NamaSis   : String[35];
   Nilai     : Real;
   Ket,Pesan : String[35];
   Jawab     : Char;
Begin
  Mulai :
   ClrScr;
   Write('Nama Siswa  : ');Readln(NamaSis);
   Write('Nilai Angka : ');Readln(Nilai);
   If (Nilai >= 60) Then
      Begin
        Ket   := 'Anda Lulus';
        Pesan := ' SELAMAT, PERTAHANKAN TERUS !';
      End
   Else
      Begin
        Ket   := 'Anda Tidak Lulus';
        Pesan := ' TINGKATKAN BELAJARNYA, AWAS !!!!';
      End;
   Writeln;
   Writeln('Hasil : ');
   Writeln(Ket,Pesan);
   Writeln;
   Write('Mau mencoba lagi [Y/T] ? ');Readln(jawab);
   If (Jawab = 'Y') or (Jawab = 'y') Then
      Goto mulai
End.


Statemen Case NamaVar Of :

Statemen Case NamaVar Of dipakai untuk penyeleksian berganda. NamaVar adalah nama variabel yang harus bertype ordinal seperti Char, byte atau integer.
Padanan dengan If … Then , misalnya kita memiliki varibel Pil yang bertipe Char, dan dihadapi seleksi pilihan :
                If Pil = ‘a’ Then Statemen2;
                If Pil = ‘b’ Then Statemen2;
                Dst
Dapat ditulis dengan statemen Case … Of dengan syntax sbb :
Case Pil Of
                   ‘a’ : Statemen1;
                   ‘b’ : Statemen2;
                   .… : …;
                End;

Program TekanTombol;
Uses WinCrt;
Label
   Mulai;
Var
   Tombol,
   Jawab : Char;
Begin
 Mulai:
  ClrScr;
  Writeln('PROGRAM TENTUKAN TOMBOL');
  Writeln('-----------------------');
  Write('Tekan Sembarang TOMBOL : ');
  Readln(Tombol);
  Case Tombol Of
   'a'..'z','A'..'Z' : Begin
                         Writeln('Anda menekan tombol ',Tombol);
                         Writeln('Tombol ',Tombol,' Termasuk HURUF');
                       End;
   '0'..'9'          : Begin
                         Writeln('Anda menekan tombol ',Tombol);
                         Writeln('Tombol ',Tombol,' Termasuk ANGKA');
                       End;
   Else
                      Begin
                         Writeln('Anda menekan tombol ',Tombol);
                         Writeln('Tombol ',Tombol,' Bukan HURUF/ANGKA');
                       End;
  End;
  Write('Mau mencoba lagi [Y/T] ? ');Readln(jawab);
   If (Jawab = 'Y') or (Jawab = 'y') Then
      Goto mulai
End.


Contoh Soal :
Buatlah algoritma dan program untuk menentukan jumlah hari dalam suatu bulan tertentu jika dimasukkan dari keyboard angka bulan dan angka tahun.

PEMECAHAN
Pembahasan :
Jika dimasukkan angka bulan dari keyboard maka angka yang sah masuk adalah 1 .. 12 dan bertipe integer. Tahun yang boleh masuk dapat terdiri dari dua angka atau empat angka. Jika tahun dua angka berarti tahun < 100 dan jika tahun 4 angka berarti tahun > 1000. Tahun tidak mungkin dimasukkan 3 angka. Selanjutnya dicek apakah tahun habis dibagi 4, jika habis berarti tahun kabisat dan jumlah hari untuk bulan februari adalah 29. Selanjutnya cetak hari sesuai bulan.
Algoritma :
·         Baca angka tahun, cek apakah angka tahun < 100 atau > 1000 jika tidak ulangi baca tahun.
·         Baca angka bulan, cek apakah angka bulan 1 .. 12, jika tidak ulangi baca angka bulan.
·         *  Jika angka bulan 1,3,5,7,8,10,12 jumlah hari 31
*  Jika angka bulan 4,6,9,11 jumlah hari 30
       *  Jika angka bulan 2 jumlah hari 28 (jika bukan kabisat), 29 (jika tahun kabisat)
·         Cetak jumlah hari

Program
Program TentukanHari;
Uses WinCrt;
Label
  Awal, Baca1, Baca2;
Var
  TH, BL, JH : Integer;
  Lagi       : Char;

Begin
 Awal:
  ClrScr;
  GotoXY(20,5);Write('PROGRAM TENTUKAN JUMLAH HARI');
  GotoXY(20,6);Write('----------------------------');
 Baca1:
  GotoXY(20,8);Write('Masukkan Angka Tahun : ');Readln(TH);
  If Not( (TH<100) Or (TH>=1000) ) Then
     Begin
        GotoXY(20,8);Clreol;
        Write(#7);Goto Baca1;
     End;
 Baca2:
  GotoXY(20,9);Write('Masukkan Angka Bulan : ');Readln(BL);
  If ( (BL<1) Or (BL>12) ) Then
     Begin
        GotoXY(20,9);Clreol;
        Write(#7);Goto Baca2;
     End;
  Case BL Of
    1,3,5,7,8,10,12 : JH := 31;
    4,6,9,11        : JH := 30;
    2               : Begin
                        If (Th mod 2 = 0) Then
                          JH := 29
                        Else
                          Jh := 28;
                      End;
  End;
  GotoXY(20,12);Write('Jumlah Hari = ',JH);
  GotoXY(20,15);Write('Main Lagi [Y/T] ? ');Readln(Lagi);
  If (Lagi = 'Y') Or (Lagi = 'y') Then
     Goto Awal;
End.


Latihan Soal :
Buatlah algoritma,flow chart dan program untuk menghitung luas berbagai bangun yang dikontrol prosesnya dengan Case NamaVar Of
Output dari Program :

                PILIHAN PROSES
                -----------------------
1.       Luas Segi Empat
2.       Luas Segi Tiga
3.       Luas Lingkaran
4.       Selesai

PILIHAN ANDA [1-4] :

MODUL III
LOOPING (PERULANGAN)
(1 x pertemuan)


I.       TUJUAN
Mempelajari struktur dari statemen kontrol PASCAL untuk menangani proses berulang yaitu : For .. Do, While.. Do, dan Repeat .. Until.

II.      TEORI SINGKAT
For .. Do ..

Syntax for .. Do

                For NamaVarKendali := Awal to Akhit Do
                      Pernyataan;
Atau
For NamaVarKendali := Awal to Akhit Do
                      Begin
Pernyataan1;
Pernyataan2;            blok pernyataan
                      End;
Atau
                For NamaVarKendali := Awal Downto Akhit Do
                      Pernyataan;
Atau
For NamaVarKendali := Awal Downto Akhit Do
                      Begin
Pernyataan1;
Pernyataan2;            blok pernyataan
                      End;
Statemen/pernyataan atau blok pernyataan akan dikerjakan selama nilai dari NamaVarKendali dari Awal ke Akhir dengan kenaikan/penurunan satu langkah. Jika Awal lebih kecil Akhir kita pakai to, sedangkan jika Awal lebih besar Akhir kita pakai downto.
NamaVarKendali adalah idetifier  yang bertype ordinal seperti byte, integer atau char dan tidak dapat bertype string atau real. Berikut adalah program untuk mencetak karakter mulai dari awal sampa akhir dan dari akhir sampai awal, diman awal dan akhir dinputkan dari keyboard. Awal, akhir bertype char.


Program CetakKarakter;
Uses WinCrt;
Var
  Awal, Akhir, Karak : Char;
Begin
  Clrscr;
  Write('Karakter awal  : ');Readln(Awal);
  Write('Karakter akhir : ');Readln(Akhir);
  writeln;
  Write('N A I K    : ');
  For Karak := Awal to Akhir Do
      Write(karak);
  Writeln;
  Write('T U R U N  : ');
  For Karak := Akhir downto Awal Do
      Write(karak);
  Readln
End.


contoh diatas adalah jika statemen yang diulang tunggal, yaitu hanya Write(karak). Cobalah jika awal diisi dengan ‘1’ san akhir diisi dengan ‘z’, apa ourputnya. Cobalah jika write(karak) diganti writeln(karak), apakah ada perubahan, bagaiman penjelasannya. Sering kita temukan bahwa pernyataan yang akan dulang bukan tunggal, tetapi banyak sehingga kita harus memakai blok pernyataan.


While .. Do ..

Kontrol For .. Do .. kita pakai untuk memproses dengan jumlah ulangan diketahui sebelumnya. Apabila proses yang diulang tidak kita ketahui berapa putaran harus dilakukan, yaitu diputar selam kondisi tertentu dipenuhi, maka statemen yang kita pakai adalah While .. Do ..
Syntaxnya :
                While <syarat_logika> Do
                          <pernyataan>;
atau
While <syarat_logika> Do
                          Begin
   Pernyataan1;
   Pernyataan2;            blok pernyataan
  
                          End;
<syarat_logika> adalah suatu relasi yang selama relasi tersebut bernilai benar (TRUE) maka pernyataan/blok pernyataan akan terus menerus dikerjakan. Pernyataan/blok pernyataan akan berhenti dikerjakan jika <syarat_logika> tidak lagi bernilai benar.
Contoh berikut akan mencetak karakter ‘*’ terus menerus pada posisi baris kolom yang acak, setiap kita menekan suatu sembarang tombol. Proses berulang selam yang dibaca <> #27 (Esc).
Untuk meletakkan pada baris klo yang acak, setiap dipakai fungsi Random(x). Fuction standar Random(x) adalah fungsi untuk membangkitkan bilangan acak antara nol sampai x.
Selanjutnya satu karakter dibaca dengan Procedure standar ReadKey, dengan syntak :
                NamaVarKar := ReadKey;
Pembacaan data dari keyboard dengan ReadKey adalah untuk variabel bertype Char dan bersifat tidak meng-echo-kan (menampilkan ke layar).


Program Acak_dg_While_Do;
Uses WinCrt;
Const
   Escape = #27;
Var
   Baca         : Char;
   Baris, Kolom : Byte;

Begin
  Clrscr;
  Baca :=' ';
  While Baca <> Escape Do
    Begin
       GotoXY(34,12);Write('Tekan Escape Selesai ...');
       Baris := Random(23);
       Kolom := Random(80);
       GotoXY(Kolom,Baris);Write('*',' Kolom ',Kolom,' Baris ',Baris);
       Baca := ReadKey;Clrscr;
    End;
End.

#27 adalah konstanta karakter. Dalam PASCAL ada 2 macam cara untuk memperoleh konstanta karakter, yaitu dengan #n atau Chr(n) dimana n = kode ASCII karakter yang bersangkutan. Misalnya karakter CR (ENTER) mempunyai kode ASCII 13 dapat ditulis dengan #13 atau Chr(13).

Repeat .. Until ..

Statemen Repeat .. Until .. kita pakai apabila kita akan mengulang-ulang suatu proses terus menerus sampai kondisi tertentu dipenuhi.
Syntax :
                                Repeat
  Pernyataan1;
  Pernyataan2;
 
Until <kondisi>;
Pada contoh program diatas dapat kita modifikasi dengan memakai Repeat .. Until. Konstanta boolean keyPressed adalah konstanta yang bernilai FALSE selama kita tidak menekan sesuatu dan jika kita menekan sesuatu maka KeyPressed akan bernilai TRUE.





Program Acak_dg_Repeat_Until;
Uses WinCrt;
Var
   Baris, Kolom : Byte;

Begin
  Clrscr;
  Repeat
       GotoXY(34,12);Write('Tekan Escape Selesai ...');
       Baris := Random(23);
       Kolom := Random(80);
       GotoXY(Kolom,Baris);Write('*',' Kolom ',Kolom,' Baris ',Baris);
       Delay(10);
  Until KeyPressed;
End.


Latihan Soal :
Buatlah algoritma, flow chart dan program pascal untuk membaca data numerik dari keyboard. Data dibaca terus menerus sampai dimasukkan angka –999. Akhir program ditampilkan jumlah dan rata-rata dari data yang dimasukkan.



MODUL IV
TIPE ARRAY BERDIMENSI SATU
(1 x pertemuan)



I.        TUJUAN
Mempelajari tipe terstruktur Array dimensi satu dan dimensi dua.

II.      TEORI SINGKAT
Array merupakan tipe data terstruktur yang berguna untuk menyimpan sejumlah data yang bertipe sama, dimana masing-masing elemen array dapat diakses melalui indek array.

Arrray Dimensi Satur
Adalah array yang hanya memiliki satu tipe indek.
Deklarasi variabel bertipe array dimensi :
                Var
                  NamaArray : Array{tipeIndek] of TypeArray;

NamaArray adalah nama variabel bertipe array dan TypeArray adalah tipenya. TypeArray dapat berupa Integer, real, char, string atau record. Sedangkan tipeIndek dari array merupakan tipe ordinal seperti char, byte, integer, atau enumerasi.
Contoh deklarasi tipe array :

Type
     NanaArray = (senin,selasa,rabu,kamis,jumat,sabtu,minggu);
Var
     Hari    : DafHari;
     Incom : Array [DafHari] of integer;
     Masuk : Array [senin .. kamis] of integer;

DafHari adalah NamaType enumerasi yang kita jadikan indeks dari array Incom dan Masuk. Incom dan Masuk adalah array integer dengan indek enumerasi. Selanjutnya kita dapat mengisi elemen array dengan Incom[senin] atau Masuk[rabu] dan seterusnya.
Data bertipe string sesungguhnya adalah suatu larik data bertipe char.
Misalnya :
                Var
                    Pesan    : string[20];
Variabel Pesan merupakan string. Kita juga bisa memandangnya sebagai larik char. Pesan[1] adalah karakter pertama, Pesan[2] adalah karakter kedua, dst. Sedangkan Pesan[0] adalah karakter yang kode ASCIInya adalah cacah karakter dari isi pesan. Dengan demikian kita dapat mengetahui ada berapa cacah karakter isi dari Pesan dengan Ord(Pesan[0]), disamping dapat juga dipakai fungsi Length(Pesan).
Contoh berikut adalah membaca variabel pesan yang bertipe string yang secara otomatis dapat dipandang sebagai latik karakter dengan Ord(Pesan[0]) dapat diperoleh cacah karakter yang disimpan dalam CcHuruf.

Contoh Program 1 :

Uses WinCrt;
Const
  Vokal = ['A','I','U','E','O','a','i','u','e','o'];
Var
  Huruf   : char;
  Pesan   : string;
  i,CcHuruf,CcVokal : integer;
Begin
  clrscr;
  Write('Ketikkan Kalimat : ');
  Readln(Pesan);
  CcHuruf := Ord(Pesan[0]);
  CcVokal := 0;
  For i := 1 to CcHuruf Do
    Begin
      Huruf := Pesan[i];
      If Huruf in Vokal then
         CcVokal := CcVokal + 1;
    End;
  Writeln('DIBALIK');
  For i := CcHuruf downto 1 do
      write(Pesan[i]);
  Writeln;
  Write('VOKAL : ',CcVokal,' BUAH');
  Readln
End.


Contoh Program 2 :

program Array_max_min;
var
   nilai:array[1..5] of INTEGER;
   maks,mins,total,i,data  : integer;
   rata                    : real;
begin
   write('Jumlah Data = ');readln(data);
   write('Data ke-1 = ');readln(nilai[1]);
   maks :=nilai[1];
   mins :=nilai[1];
   total :=nilai[1];
   for i := 2 to data do
       begin
         write('Data ke-',i,' = ');readln(nilai[i]);
         if nilai[i]>maks then
            maks:=nilai[i];
         if nilai[i]<mins then
            mins:=nilai[i];
            total:=total+nilai[i];
       end;
   rata:=total/data;
   writeln('Nilai terbesar adalah  = ',maks);
   writeln('Nilai terkecil adalah  = ',mins);
   writeln('Nilai total adalah     = ',total);
   writeln('Nilai rata-rata adalah = ',rata:0:2);
   readln;
   end.


Latihan Soal
Buatlah algoritma, flowchart dan program untuk mengurutkan suatu data angka yang dimasukkan dari keyboard, secara urut menaik dan menurun. Gunakan variabel bertipe array

MODUL V
TIPE ARRAY BERDIMENSI DUA
(1 x pertemuan)



I.        TUJUAN
Mempelajari tipe terstruktur Array dimensi satu dan dimensi dua.

II.      TEORI SINGKAT
Array merupakan tipe data terstruktur yang berguna untuk menyimpan sejumlah data yang bertipe sama, dimana masing-masing elemen array dapat diakses melalui indek array.

Arrray Dimensi Dua
Adalah array yang memiliki dua tipe indek.
Deklarasi variabel bertipe array dimensi dua :
                Var
                  NamaArray : Array{tipeIndek1,tipeIndek2] of TypeArray;
Contoh deklarasi :

Contoh Prog02_1 :
Program berikut contoh penggunaan array dimensi dua untuk menampung 4 jumlah mahasiswa pada 3 angkatan, betulkan jika masih terdapat kesalahan :
Prog Tabel_Mahasiswa;
Use WinCrt;
Conts
  Jum_Tahun= 3;
  Jum_Mhs  = 4;
Tipe
  TabelMhs = Arrai[1..Jum_Mhs,1..Jum_Tahun] Of Integer;
Var
  DafMhs    : TabelMhs;
  Mhs,Tahun : Integer;
Begin
  ClsRcr;
  {--Memasukkan data--}
  For Mhs = 1 To Jum_Mhs Do
  Begin
     Writeln('Mahasiswa ',Mhs);
     For tahun = 1 To Jum_Tahun Do
     Begin
        Write('  Tahun ',Tahun,' = ');
        Readln(DafMhs[Mhs,Tahun]);
     End
  End;
  {--Menampilkan Data--}
  Writeln('Daftar Jumlah Mahasiswa El Rahma”);
  Writeln('Mahasiswa    Tahun 1       Tahun 2       Tahun 3');
  For Mhs = 1 To Jum_Mhs Do
  Begin
     Write(Mhs:6);
     For Tahun := 1 To Jum_Tahun Do
        Write(DafMhs[Mhs,Tahun]:14)
     Write;
  End;
  Readln
End.

Penggunaan secara umum untuk matrik dua dimensi adalah untuk memasukkan data matrik. Berikut penggalan program untuk memasukkan data matrik dengan ordo 2 x 2
Prog Matrik2Dimensi;
Use WinCrt;
var
  Matrik      : Array[1..10,1..10] Of integer;
  Baris,Kolom : Integer;
Begin
  ClsRcr;
  {-Memasukkan data matrik-}
  For Baris := 1 to 2 Do
   Begin
     For kolom := 1 to 2 Do
       Begin
         Write('Baris ',Baris,' Kolom ',Kolom,' : ');
         Readln(Matrik(Baris,Kolom));
       End;
   End
  {--Menampilkan Hasil--}
  For Baris := 1 to 2 Do
    Begin
      For kolom := 1 to 2 Do
        Begin
          Write(Matrik(Baris,Kolom):5);
        End;
    End;
  Readln
End.


Latihan Soal :
Buatlah algoritma, flowchart dan progam untuk menghitung penjumlahan dua buah matrik. Syarat penjumlahan dua buah matrik adalah kedua matrik tersebut mempunyai jumlah baris dan kolom yang sama.
Misalnya :
               
1         2                      2   2                        3   4
   +                             =
2         3                      3   2                        5   5




MODUL VI
PROCEDURE DAN FUNGSI
(2x pertemuan)

I.       Tujuan
Mempelajari pemecahan program ke dalam modul-modul program dalam bentuk prosedur dan fungsi

II.    Teori Singkat

a.       PROCEDURE
Procedure merupakan sub program yang berdiri sendiri yang dapat dipanggil dari program utama.

Deklarasi prosedur :
   PROCEDURE <Nama_prosedur> (<Daftar_parameter_formal>);
   <Bagian_deklarasi>
   Begin
      <Bagian _pernyataan>
   End;
Dalam prosedur atau fungsi dikenal adanya parameter. Parameter adalah suatu nilai atau variabel yang akan dilewatkan dalam prosedur atau fungsi. Pengiriman paramter dalam prosedur atau fungsi dibedakan menjadi 2 yaitu parameter nilai dan parameter referensi. Pelewatan parameter secara nilai dimaksudkan jika parameter yang dileatkan dimasudkan tidak untuk diubah oleh prosedur atau fungsi sekalipun perubahan telah terjadi di dalam prosedur atau fungsi tersebut. Sedangkan parameter referensi dimasudkan unutk mengubah nilai atau variabel sekeluarnya dari prosedur atau fungsi. Perbedaan cara pengiriman parameter didalam prosedur atau fungsi terletak pada deklarasi prosedur atau fungsinya. Contoh deklarasi prosedur dengan pengiriman parameter secara refensi :

      Procedure Tukar(var x,y : real);

Untuk mengubah sifat pengiriman parameter secara nilai, tinggal diubah deklarasi prosedur dengan menghilangkan var dalam kepala prosedur sehingga menjadi :

      Procedure Tukar(x,y : real);

Berikut contoh program pemakaian untuk menukarkan dua nilai memakai prosedure :
Contoh :
PROG3_01.PAS contoh program menukarkan data dengan prosedur
program tukar_data;
var
  a, b : real;          {deklarasi variabel global}

procedure info;
begin
  writeln('****************************');
  writeln('**   Program Tukar Data   **');
  writeln('**    Dengan Procedure    **');
  writeln('**        Oleh   :        **');
  writeln('**     Ki Joko Bodho      **');
  writeln('****************************');
end;
{Prosedur penukaran data}
procedure tukar(var x,y : real);
var
   tamp : real;
begin
   tamp := x;
   x    := y;
   y    := tamp;
end;
{Program utama}
Begin
   info;
   a := 12.33;
   b := 67.98;
   writeln('Sebelum memanggil prosedur Tukar');
   writeln('a = ',a:7:2,'   b = ',b:7:2);
   tukar(a,b);
   writeln('Setelah memanggil prosedur Tukar');
   writeln('a = ',a:7:2,'   b = ',b:7:2);
   readln;
End.
Contoh diatas pengiriman parameter dilakukan secara referensi, cobalah program diatas diubah pengiriman parameter dalam prosedur secara nilai!

b.       FUNCTION
Fungsi memiliki struktur yang hampir sama dengan procedure, bedanya fungsi memiliki tipe hasil sedangkan procedure tidak.

Deklarasi fungsi :
   FUNCTION <Nama_fungsi> (<Daftar_parameter>): tipe;
   <Bagian_deklarasi>
   Begin
      <Bagian _pernyataan>
   End;

Contoh :
PROG2_02.PAS contoh program perkalian dengan fungsi
program kali_data;
var
  a, b : integer;          {deklarasi variabel global}

procedure info;
begin
  writeln('****************************');
  writeln('**   Program Tukar Data   **');
  writeln('**    Dengan Procedure    **');
  writeln('**        Oleh   :        **');
  writeln('**     Ki Joko Bodho      **');
  writeln('****************************');
end;
{Prosedur peerkalian data}
function kali(x,y : integer):integer;
begin
   kali := x * y;
end;
{Program utama}
Begin
   info;
   a := 12;
   b := 67;
   writeln(a,' x ',b,' = ',kali(a,b));
   writeln('12 x 13 = ',kali(12,13));
   readln;
End.



c.        LATIHAN SOAL :
(Program yang anda buat harus dipecah dalam prosedur dan fungsi!!!!!!)
1.       Buatlah program dengan menggunakan prosedur untuk membalik suatu angka
Misalnya :
Masukkan angka  : 12309
Hasil pembalikan : 90321

2   Buatlah program dengan menggunakan fungsi untuk mencari jumlah dan rata-rata dari sejumlah data yang dimasukkan.


MODUL VII
REKURSI
(1 x pertemuan)

I.        Tujuan
Mempelajari proses rekursi dalampenggunaan prosedur dan fungsi

II.      Teori Singkat
Rekursi adalah suatu prosedur atau fungsi yang dapat memanggil dirinya sendiri. Contoh dari rekursi adalah proses menghitung faktorial dan proses menghitung bilangan fibonacci.
Program berikut menunjukkan contoh penggunaan rekursi yang identik dengan suatu perulangan.
Prog4_01.pas
Program rekursi;
var
   i : integer;

procedure ulang;
begin
   writeln(i,'. Tulisan ini akan tercetak 10 kali');
   if i < 10 then
     begin
      i := i + 1;
      ulang;
     end;

end;

begin
  i := 1;
  ulang;
  readln
end.
Perhatikan hasil dari eksekusi program diatas. Terlihat bahwa di dalam prosedur ulang terdapat baris perintah yang berfungsi untuk memanggil dirinya sendiri sebelum i = 10.
Contoh program berikut merupakan contoh rekursi untuk perhitungan suatu nilai faktorial.
Prog4_02.prg
Var
 i : byte;
function Faktorial(m:byte):longint;
begin
   if m = 0 then
      faktorial := 1
   else
      faktorial := m * Faktorial(m - 1)
end;

begin
   for i := 1 to 8 do
      writeln(i:2,'! = ',Faktorial(i));
   readln
end.
Perhatikan hasil tampilan dari program diatas, modifikasi program dengan bilangan yang akan difaktorialkan diinputkan dari keyboard, sehingga menghasilkan tampilan seperti berikut :
                Masukkan anngka              : 5
                Hasi faktorial :
3   x 4 x 3 x 2 x 1 = 120




Contoh program berikut merupakan contoh rekursi untuk menghitungan bilangan fibonnaci Prog4_03.prg
Var
  suku, nilai : integer;
function fibo(n:integer):longint;
begin
  if (n=1) or (n=2) then
    fibo:=1
  else
    fibo := fibo(n-1)+fibo(n-2);
end;

begin
  for suku := 1 to 10 do
   writeln(suku:3,fibo(suku):8);
  readln
end.
Soal latihan :
Ubahlah ketiga contoh program diatas tanpa menggunakan rekursi, tetapi menghasilkan output yang sama.

MODUL VIII
RECORD
(2 x pertemuan)

I.        Tujuan
Mempelajari penggunaan tipe data terstruktur record pada pascal

II.      Teori Singkat
Record merupakan tipe berstruktur yang memiliki beberapa komponen atau elemen dengan masing-masing elemen boleh memiliki tipe data yang berlainan.
Bentuk deklarasi variabel record :
RECORD
    Daftar_field_1 : tipe_1;
    Daftar_field_2 : tipe_2;
   
    Daftar_field_n : tipe_n;
END;
Masing-masing elemen dari record disebut dengan field. Masing-masign field dapat berupa tipe apa saja termasuk array.
Contoh deklarasi :
   Type
     RecBarang = RECORD
                   Nama   : string;
                   Banayk : integer;
                   Harga  : LongInt;
                 End;
   Var
      Barang : RecBarang;

Cara Mengakses field
Bentuk :

Variabel.field

Contoh :
                Barang.Nama;
Berarti field nama dari variabel record benama barang.
Contoh lain :
                Barang.Nama := ‘Sabun Mandi’;
Field Nama pada record Barang diisi string ‘Sabun Mandi’
Contoh program :
Program contoh_record;
Type
 Recbarang = RECORD
              Nama_B   : string[8];
              Jumlah   : Integer;
              Harga_b  : LongInt;
             End;
Var
 Barang : Recbarang;
Begin
  {Memasukan data ke dalam record barang}
  Barang.Nama_b := 'Baju koko';
  Barang.Jumlah := 10;
  Barang.Harga_b  := 200000;
  {Menampilkan isi field record}
  Writeln('Nama  Barang  : ',Barang.Nama_b);
  Writeln('Jumlah Barang : ',Barang.Jumlah);
  Writeln('Harga Barang  : ',Barang.Harga_b);
End.

Record di dalam record.
Mungkin saja sebuah record berisikan record saja. Sebagai contoh :
Type
  RecTgl  = RECORD
             Tgl,
             Bln,
             Thn : Integer;
            End;
  RecPegawai = RECORD
                Nmr     : Integer;
                Nama    : String[35];
                TgLahir : RecTgl;
                Gaji    : LongInt;
               End;
Var
  DataPeg : RecPegawai;
Begin
  {Mengisikan nilai terhadap field-field}
  DataPeg.Nmr    := 123;
  DataPeg.Nama   := 'Joko Bodho';
  DataPeg.TgLahir.Tgl := 13;
  DataPeg.TgLahir.Bln := 10;
  DataPeg.TgLahir.Thn := 1975;

  {menampilkan isi field}
  Writeln('Nomor         : ',DataPeg.Nmr);
  Writeln('Nama          : ',DataPeg.Nama);
  Writeln('Tanggal Lahir : ',DataPeg.TgLahir.Tgl,
           '/',DataPeg.TgLahir.Bln,'/',DataPeg.TgLahir.Thn);
  readln;
End.


Pernyataan WITH
Untuk menyederhanakan pernyataan seperti
                DataPeg.TgLahir.Tgl
Pascal menyediakan pernyataan WITH, dengan bentuk :
WITH nama_record Do
           <pernyataan>
Pada bentuk ini field-field yang terletak pada pernyataan dapat disebutkan tanpa menyertakan lagi nama recordnyadan tanda titik. Untuk jelasnya pada contoh program pertama akan dimodifikasi dengan pernyataan WITH :

Program contoh_record;
Type
 Recbarang = RECORD
              Nama_B   : string[10];
              Jumlah   : Integer;
              Harga_b  : LongInt;
             End;
Var
 Barang : Recbarang;
Begin
  {Memasukan data ke dalam record barang}
  Barang.Nama_b := 'Baju koko';
  Barang.Jumlah := 10;
  Barang.Harga_b  := 200000;
  {Menampilkan isi field record}
  WITH Barang Do
   begin
    Writeln('Nama  Barang  : ',Nama_b);
    Writeln('Jumlah Barang : ',Jumlah);
    Writeln('Harga Barang  : ',Harga_b);
   End;
  readln;
 End.
 
 


















Latihan Soal :
Buatlah algoritma, flowchart dan progam untuk memasukkan sejumlah data nilai mahasiswa dalam bentuk record. Data yang dimasukkan adalah Nim, Nama, Nilai UTS, Nilai UAS, Nilai Tugas. Setelah semua data dimasukkan, semua data ditampilkan dalam bentuk tabel yang diurutkan secara descending berdasarkan nilai rata-rata tiap mahasiswa, kemudian konversi nilai rata-rata ke dalam nilai angka dengan aturan.
Rata-rata >= 80 nilai huruf A keterangan Lulus
Rata-rata >= 70 nilai huruf B keterangan Lulus
Rata-rata >= 60 nilai huruf C keterangan Lulus
Rata-rata >= 50 nilai huruf D keterangan Tidak Lulus
Rata-rata < 50 nilai huruf E keterangan Tidak Lulus
Contoh output program :

Jumlah Data : 2
Data ke-1
      N I M       : 11010001
      N a m a     : Jono
      Nilai UTS   : 50
      Nilai UAS   : 50
      Nilai TUGAS : 50

Data ke-1
      N I M       : 11010002
      N a m a     : Hari
      Nilai UTS   : 90
      Nilai UAS   : 90
      Nilai TUGAS : 90
H A S I L  P R O S E S

No
NIM
Nama
Rata
Huruf
Keterangan
1
11010002
Hari
90
A
Lulus
2
11010001
Jono
50
D
Tidak Lulus