Berlatih Membuat Program Pascal Bagian 10 - Operasi File

Operasi File

Kali ini kita akan berlatih untuk membuat program yang berurusan dengan file. File yang banyak dijumpai biasanya berupa file .txt. File ini menyimpan data berupa teks yang dapat kita buat, baca, dan ubah menggunakan pascal. Untuk mengakses file pascal memerlukan uses ke sistem utility, sehingga perlu memanggil Sysutils dibagian uses.

Pada kesempatan kali ini, saya menggunakan Compiler Free Pascal untuk membuat program. Langsung saja kodenya sebagai berikut:

program latihan10;

uses Sysutils,crt;
var
f:textfile;
s:string[20];

BEGIN
clrscr;
writeln('Ketik nama file yang anda inginkan: ');readln(s);
Assign(f,s+'.txt');
rewrite(f);
writeln(f,'Hai Semua!');
writeln(f,'Coba ditulis ya');
close(f);
writeln('File ',s,'.txt telah berhasil dibuat');
readln;
END.

Tampilan programnya sebagai berikut:
Berlatih Membuat Program Pascal Bagian 10
Hasil .exe dari program diatas dapat anda unduh disini


Berlatih Membuat Program Pascal Bagian 9 - Record lanjutan

Record

Latihan kali ini merupakan lanjutan latihan bagian 8 yang menggunakan tipe data record. Maka dari itu langsung saja contoh kodenya sebagai berikut:
program latih9;

uses crt;
type
pegawai = record
nip     : string[6];
nama    : string[15];
gpokok  : real;
case status:char of
'b'     : (tunj_jbt : real);
'k'     : (tunj_jabatan,tunj_istri,tunj_anak : real);
end;

var
karyawan        : pegawai;
total_gaji      : real;

function upstring(s:string):string;
var
i:integer;
begin
for i:=1 to length(s) do
  s[i]:=upcase(s[i]);
  upstring:=s;
end;

procedure inputData;
begin
writeln('=============================================');
writeln('          Program Hitung Gaji');
writeln('=============================================');
  with karyawan do
  begin
    fillchar(karyawan,sizeof(karyawan),0);
    write('Nomor pegawai                    : ');readln(nip);
    write('Nama pegawai                     : ');readln(nama);
    write('Status pegawai (b)bujang/(k)kawin: ');readln(status);
    write('Gaji pegawai                     : ');readln(gpokok);

    if upstring(status) = 'B' then
    begin
      write('Tunjangan Jabatan                : ');readln(tunj_jbt);
    end
    else
    begin
      write('Tunjangan Jabatan                : ');readln(tunj_jabatan);
      write('Tunjangan Istri                  : ');readln(tunj_istri);
      write('Tunjangan Anak                   : ');readln(tunj_anak);
    end;
  end;
end;

procedure tampilData;
begin
  with karyawan do
  begin
    writeln('=============================================');
    writeln('NIP     Nama Pegawai        Gaji');
    writeln('=============================================');
    writeln(nip:7-length(nip),'  ',nama:16-length(nama),'      ',gpokok:5:0);
    writeln('=============================================');
    if upstring(status)='B' then
    begin
      writeln('Tunjangan jabatan                : Rp. ',tunj_jbt:6:0);
      writeln('Tunjangan Istri                  : Rp. ',tunj_istri:6:0);
      writeln('Tunjangan Anak                   : Rp. ',tunj_anak:6:0);
      total_gaji:= gpokok+tunj_jbt;
    end else
    begin
      writeln('Tunjangan jabatan                : Rp. ',tunj_jbt:6:0);
      writeln('Tunjangan Istri                  : Rp. ',tunj_istri:6:0);
      writeln('Tunjangan Anak                   : Rp. ',tunj_anak:6:0);
      total_gaji:= gpokok+tunj_jbt+tunj_istri+tunj_anak;
    end;
    writeln('=============================================');
    writeln('Total Gaji                       : Rp. ',Total_gaji:6:0);
  end;
end;

BEGIN
clrscr;
inputData;
tampilData;
readln;
END.

Tampilannya program diatas sebagai berikut:
Berlatih Membuat Program Pascal Bagian 9
Hasil .exe dari program diatas dapat anda unduh disini

Berlatih Membuat Program Pascal Bagian 8 - Record dasar

Record

Pada bagian ini kita akan berlatih membuat kumpulan variabel yang terdiri dari element tidak sama. Bila dibagian 7 anda memahami array yang merupakan kumpulan variabel dengan tipe sama. Kali ini lebih bebas sebab boleh menggunakan elemen data yang tidak sama disebut record.

Record memiliki masing-masing item data yang disebut dengan field. Setiap field dapat dibentuk dari variabel bertipe standar seperti real, integer, char, atau string tetapi boleh juga bila dibentuk dari array ataupun record yang lain.

Contohnya seperti berikut:
Type
Siswa = RECORD
    nama:string[20];
    usia:integer;
    jeniskelamin:char;
end;

Penulisn record harus diawali dengan Type dan ditutup dengan end. Pada record bisa juga dibentuk dari alternatif pilihan item yang telah dibuat atau disebut dengan invariate. Contohnya sebagai berikut:
Type
Siswa = RECORD
   nama: string[20];
   case kelas:char of
    'A' :(... );
    'B' :(... );
end;

Contoh kode programnya sebagai berikut:

program latih8;

uses crt;

type
pegawai = record
nip      : string[6];
nama   : string[15];
gaji     : real;
end;

var
karyawan : pegawai;

procedure inputData;
begin
  with karyawan do
  begin
    write('Nomor pegawai        :'); readln(nip);
    write('Nama pegawai         :'); readln(nama);
    write('Gaji pegawai (angka) :'); readln(gaji);
  end;
end;

procedure tampilkanData;
begin
  with karyawan do
  begin
    writeln('=======================================');
    writeln('nip    nama            gaji');
    writeln(nip:7-length(nip),' ',nama:16-length(nama),' ',gaji:5:0);
  end;
end;

BEGIN
clrscr;
inputData;
tampilkanData;
readln;
END.

Hasil tampilan program diatas sebagai berikut:
Berlatih Membuat Program Pascal Bagian 8
Hasil .exe dari kode diatas dapat anda unduh disini

Berlatih Membuat Program Pascal Bagian 7- Array

Array

Untuk latihan kali ini, kita akan mempelajari data yang dikumpulkan dalam satu variabel yang disebut array. Array di Pascal memiliki ciri khas yaitu terdiri dari sekumpulan data dalam satu type data. Agar array dapat dimanfaatkan maka array terlebih dulu harus dideklarasikan dengan suatu identifier dan ditentukan dulu tipe datanya serta indexnya.
Contohnya:
Nilai : array[1..10] of integer;

Array sebenarnya membuat proses data lebih cepat dari pada variabel yang dipanggil satu persatu. Array menempati memory komputer dalam satu jenis tipe data yang sama dengan nilai yang dapat berbeda-beda. Array biasa juga disebut sebagai tipe data larik yang bisa dibuat lebih dari satu dimensi. Setiap elemen array ditandai dengan index.

Langsung saja kita ke contoh programnya:
program latih7;

uses crt;

var
i,j,k : integer;
a,b : array[1..10] of integer;

BEGIN
clrscr;
writeln('Program Pengurutan Nilai');
writeln('------------------------');
for i:=1 to 10 do
begin
  write('Masukkan nilai ke ',i,' :');readln(a[i]);
end;

b:=a;
repeat
  j:=1;
  repeat
    if a[j]>a[j+1] then
    begin
      k      := a[j];
      a[j]   := a[j+1];
      a[j+1] := k;
    end;
    if b[j]<b[j+1] then
    begin
      k      := b[j];
      b[j]   := b[j+1];
      b[j+1] := k;
    end;
    inc(j);
  until j=10;
  dec(i);
until i=1;
writeln;
writeln('------------------------');
writeln('Setelah diurutkan dari kecil ke besar');
write('adalah: ');
for i:=1 to 10 do write(a[i]:5);
writeln;
writeln;
writeln('Setelah diurutkan dari besar ke kecil');
write('adalah: ');
for i:=1 to 10 do write(b[i]:5);
readln;
END.

Maka bila dijalankan tampilan dari program diatas sebagai berikut:
Berlatih Membuat Program Pascal Bagian 7
Hasil .exe dari program diatas dapat anda unduh disini

Berlatih Membuat Program Pascal Bagian 6 - Tipe Data

Tipe Data

Kali ini kita akan berlatih membuat tipe data scalar yang dapat anda buat sendiri. Di pemrograman pascal, selain tipe data standar yang sudah kita pelajari seperti String, Integer dan lainnya, sebenarnya masih banyak tipe data yang lain. Tipe data yang akan kita pelajari pada bagian ini adalah tipe data scalar yang dapat didefinisikan sendiri oleh programmer.

Untuk mendeklarasikan tipe data anda sendiri, anda dapat menuliskannya dibagian type diatas deklarasi variabel. Contohnya seperti ini:
Type
angka = (nol,satu,dua,tiga,empat,lima,enam,tuju,delapan,sembilan);
hari    = (senin,selasa,rabu,kamis,jumat,sabtu,ahad);
var
nama:String[15];

Langsung saja, implementasi programnya seperti berikut:
program latih6;

uses crt;

type
bulan = (januari,februari,maret,april,mei,juni,juli,agustus,september,oktober,nopember,desember);
hari = (minggu,senin,selasa,rabu,kamis,jumat,sabtu);

var
ujian : bulan;
bab,hariprak : hari;
BEGIN
clrscr;
bab:=senin;
writeln(ord(bab));
hariprak:=succ(bab);
writeln(ord(hariprak));
ujian:=agustus;
writeln(ord(ujian));
ujian:=pred(ujian);
writeln(ord(ujian));
writeln(ord(succ(ujian)));
readln;
END.

Maka hasilnya dapat dilihat sebagai berikut:
Berlatih Membuat Program Pascal Bagian 6
Hasil .exe dari kode diatas dapat anda unduh disini

Berlatih Membuat Program Pascal Bagian 5 - Procedure dan Function

Procedure dan Function

Dalam sebuah program, akan lebih mudah diatur dan dikelompokkan dalam modul atau bagian. Dengan pembagian yang sesuai maka pembuat program (programmer) tidak perlu menulis ulang bagian program yang sama berkali-kali. Dengan demikian maka proses pembuatan program lebih efisien.

Untuk membagi program pascal ada dua macam cara pengelompokan yaitu Procedure dan Function. 

Procedure

adalah bagian program yang terdiri dari gabungan beberapa statement untuk melakukan tugas tertentu tanpa memiliki nilai kembalian.
Procedure dalam pascal memiliki ciri-ciri:
  • Dipanggil dengan nama procedurnya
  • Tidak memiliki tipe
  • Nilai kembalian ditampung pada variabel

Function

adalah bagian program yang terdiri dari gabungan beberapa statemen untuk melakukan tugas tertentu dan memiliki nilai kembalian (return value) yang dapat diolah kembali oleh bagian program yang lain.
Function dalam pascal memiliki ciri-ciri:
  • Memiliki tipe data
  • Nilai kembalian diberikan dalam nama function
  • Cara memanggilnya diletakkan disebelah kanan Assigment

Langsung saja ini Contoh Programnya:

program latih5;

uses crt;

var
i,pangkat : integer;
hasil, dasar : real;

procedure beep;
begin
  sound(1200);delay(40);
  sound(2400);delay(40);
  sound(3600);delay(40);
  sound(4800);delay(40);
  sound(3600);delay(40);
  sound(2400);delay(40);
  sound(1200);delay(40);
  sound(4800);delay(40);
end;

function power(base:real;exp:integer):real;
var
hasil : real;
ind   : integer;
begin
hasil:=1;
for ind:=1 to abs(exp) do
  hasil:=hasil*base;
if exp<0 then
  hasil:=1/hasil;
power:=hasil;
end;

BEGIN
clrscr;
write('Masukkan Bilangan dasar :');readln(dasar);
write('Masukkan Pangkatnya     :');readln(pangkat);
hasil:=power(dasar,pangkat);
beep;
writeln;
write(dasar:5:0,' dipangkatkan ',pangkat,' hasilnya adalah :',hasil:5:0);
readln;

END.

Tampilan dari program diatas kurang lebih seperti ini:
Hasil .exe dari program diatas dapat anda unduh disini

Berlatih Membuat Program Pascal Bagian 4 - Percabangan dan Perulangan

Percabangan dan Perulangan

Dalam pemrogram pascal kali ini kita akan mulai lebih dalam berlatih logika. Dalam Pascal dikenal pula algoritma pemrograman yang melibatkan percabangan dan perulangan. Percabangan di bahasa pascal ada dua pilihan yaitu menggunakan :
if ... then merupakan operasi logika percabangan berdasarkan nilai tertentu yaitu benar (true) atau salah (false).
contoh:
i:= 500; if i < 100 then write('masih kurang') else write('ok sudah cukup');

case ..of merupakan operasi logika percabangan berdasarkan nilai yang sesuai dengan nilai yang diseleksi. Selektor yang digunakan harus bertipe skalar atau tipe data yang memiliki urutan sudah pasti misalnya seperti 1,2,3..dst atau a,b,c..dst. 
contoh:
i := 'A';
case i of 
'A':writeln('istimewa');
'B':writeln('baik');
'C':writeln('cukup');
'D':writeln('kurang');

Selain logika percabangan, di pemrograman pascal dikenal pula perulangan yang pilihannya ada tiga:

for.. do merupakan logika percabangan yang berulang-ulang dilakukan bila nilai atau kondisi tertentu belum terpenuhi. Nilai yang dijadikan pokok kondisi bisa dari index tertinggi atau index terendah.
contoh:
for i:=1 to 5 do writeln('urutan ke ',i);

while.. do merupakan perintah looping atau perulangan yang dimana suatu nilai diuji terlebih dahulu kemudian bila syarat belum terpenuhi akan diulang hingga nilai terpenuhi. 
contoh:
i:=10;
while i > 1 do
begin
writeln ('urutan ke ',i);
i := i-1;
end;

repeat.. until perintah ini jarang ada di bahasa pemrograman yang lain. Perulangan akan dilakukan secara terus menerus dan pengujian ekspresi baru dilakukan dibagian akhir.
contoh:
i:=10;
repeat 
writeln('urutan ke ',i);
i:= i -1;
until i = 0;

Langsung saja ini Contoh programnya


program latih4;

uses crt;

const
beaAdmin=1000;
var
nomor : string[6];
nama,alamat: string[20];
golongan : integer;
pakai, lalu, sekarang, bayar, total : real;
BEGIN
clrscr;
writeln('Program untuk menghitung biaya pemakaian listrik');
writeln('                   PT. Pascal');
writeln('================================================');
writeln('Note : (a) harus diisi dengan angka');
write('Nomer Pelanggan (a)          :'); readln(nomor);
write('Nama Pelanggan               :'); readln(nama);
write('Alamat Pelanggan             :'); readln(alamat);
write('Golongan Tarif (1 atau 2)    :'); readln(golongan);
write('Pemakaian Bulan lalu (a)     :'); readln(lalu);
write('Pemakaian Bulan Sekarang (a) :'); readln(sekarang);
pakai:= sekarang - lalu;
if golongan = 1 then
begin
  if pakai > 10000 then
     bayar:= 5000*100+5000*125+(pakai-10000)*150
  else
  if pakai > 5000 then
     bayar:= 5000*100+(pakai-5000)*125
  else
     bayar:= pakai*100;
end
else
if golongan = 2 then
begin
  if pakai > 10000 then
     bayar:=2500*100+2500*125+(pakai-5000)*150
  else
  if pakai > 5000 then
     bayar:=2500*100+(pakai-2500)*125
  else
     bayar:= pakai*100;
end
else
begin
  if pakai > 1000 then
     bayar:= 500*100+500*125+(pakai-1000)*150
  else
  if pakai > 500 then
     bayar:= 2500*100+(pakai-250)*125
  else
     bayar:= pakai*100;
end;
total:= bayar + beaAdmin;
writeln('------------------------------------------------');
writeln('Biaya pemakaian Listrik      : Rp.',bayar:7:2);
writeln('Biaya administrasi           : Rp.',beaAdmin);
writeln('Yang harus dibayar           : Rp.',total:7:2);
readln;
END.

Tampilan dari program diatas kurang lebih seperti ini:
Berlatih Membuat Program Pascal Bagian 4
Hasil .exe dari program diatas dapat anda unduh disini


Berlatih Membuat Program Pascal Bagian 3 - Modulus dan Division

Modulus dan Division

Kali ini kita akan berlatih dengan tipe data angka. Tipe data angka dalam pemorgraman pascal yang sering digunakan adalah integer dan real. Integer digunakan untuk tipe data angka bulat, sedangkan real biasa digunakan untuk operasi matematika yang membutuhkan pecahan. 

Pada umumnya operasi matematika yang membutuhkan pembagian akan membutuhkan tipe bilangan real untuk menampung hasil operasi tersebut. Sebab bukan tidak mungkin hasilnya akan jadi pecahan. Untuk latihan kali ini kita akan mengenal pula konsep Modulus dan Division. 

  • Modulus adalah hasil pembagian bilangan bulat
  • Division adalah sisa pembagian bilangan bulat


Agar lebih jelasnya, berikut ini kode program pascal yang dimaksud:

program latih3;
uses crt;
var
a,b,c,d : integer;
f : real;

BEGIN
clrscr;
a:=13;
b:=4;
c:=a div b;
d:=a mod b;
f:=a/b;
writeln('Hasil pembagian bulat ',a,' dengan ',b,' adalah ',c);
writeln(a,' dibagi dengan ',b,' akan mempunyai sisa ',d);
writeln('Hasil pembagian pecahan ',a,' dengan ',b,' adalah ',f:2:3);
readln;
END.

Bila sudah dikompile dan dijalankan akan tampil sebagai berikut:
Berlatih Membuat Program Pascal Bagian 3
Hasil file .exe dari program diatas dapat anda unduh disini.


Berlatih Membuat Program Pascal Bagian 2 - Variabel

Variabel

Pada bagian kedua ini, kita akan berlatih membuat variabel. Variabel dalam pemrograman diibaratkan adalah sebagai tempat untuk menampung data. Variable harus diberi nama yang berbeda antara satu dengan lainnya agar mudah dibedakan. 
Penamaan variabel sebaiknya:
  • pendek, 
  • satu kata, 
  • terdiri dari karakter tanpa spasi dan tanpa karakter simbol, kecuali underscrore ( _ )
  • boleh menggunakan karakter angka tetapi tidak boleh diletakkan pada paling depan
Walaupun dapat menampung data, tetapi data yang ditampung tidak boleh sembarangan. Ada aturan dimana suatu variabel hanya dapat menampung data yang bertipe sama dengan tipe variabel itu sendiri. Misalkan variabel yang sudah di deklarasikan bertipe angka maka tidak dapat diisi dengan variabel bertipe teks.  Aturan tersebut akan memudahkan kita nantinya bila akan melakukan proses untuk mengolah data yang ditampung dalam variabel. Misalnya untuk perhitungan, untuk menampilkan output dalam kata yang mudah dimengerti dan lain sebagainya.


Variabel dalam bahasa pascal, harus terlebih dulu dideklarasikan dengan kata var. Untuk mengisi data dalam variabel bahasa pascal maka bisa digunakan tanda := , atau bisa juga diisi dari inputan pengguna program menggunakan keyboard dengan kata kunci readln. Contohnya seperti berikut:
var
nama: string;
usia: integer;
begin
nama:= 'joko susilo'
writeln('Hallo ',nama);
write('Berapa usia anda sekarang?'); readln(usia); //mengisi data
writeln('Wah anda nampak awet muda di usia',usia);
readln;
end.

Untuk latihan kita akan mencoba membuat program berikut:

program latih2;

uses crt;
var
huruf:char;
angka:integer;
BEGIN
clrscr;
write('Masukkan Sembarang huruf:');readln(huruf);
writeln('Nilai konversi huruf: ',huruf,' ke ASCII= ',ORD(huruf));
writeln('Sebelum huruf: ',huruf,' adalah ',pred(huruf));
writeln('Setelah huruf: ',huruf,' adalah ',succ(huruf));
writeln;
write('Masukkan Sembarang bilangan bulat: ');readln(angka);
writeln('konversi dari ASCII ',angka,' adalah karakter=',chr(angka));
readln;

END.

Hasilnya kurang lebih akan tampil seperti gambar dibawah ini:

Hasil file .exe dari kode diatas dapat anda unduh disini.

Berlatih Membuat Program Pascal Bagian 1 - Pascal Dasar

Pascal 

Sebagaimana sering dibahas di banyak artikel, bahwa pascal merupakan bahasa pemorgraman tingkat tinggi (high level language) yang lebih mudah dipahami manusia. Pascal sering diajarkan terlebih dulu untuk mulai memperkenalkan logika perograman komputer sebelum mempelajari bahasa pemrograman yang lain. Untuk menjalankan kode pascal maka perlu dikompile dahulu dengan kompiler khusus untuk membuat sebuah file .exe yang dapat dijalankan di komputer bersistem operasi windows.

Kali ini kita akan latihan membuat sebuah program pascal sederhana dengan Free Pascal atau bisa juga dengan Turbo pascal. Pada artikel ini, saya membuat program pascal menggunakan Free Pascal. Dalam program ini, saya menggunakan beberapa statemen:
  • uses crt agar dapat memanggil prosedur clrscr
  • clrscr untuk membersihkan tampilan layar
  • writeln adalah perintah untuk menampilkan output dengan kursor akan turun satu baris, perintah ini hampir sama dengan write
  • write adalah perintah untuk menampilkan output tanpa turun satu baris
Langsung saja begini kode programnya:

program latih1;
uses crt;

BEGIN
clrscr;
writeln('Hallo... Selamat Datang!');
writeln('Saya Siswa Sekolah');
writeln('Jl...');
writeln;
writeln('Sedang Belajar Pascal');
writeln('---------------------');
writeln('Ternyata pascal itu mudah lho..');
writeln('Pascal akan jadi teman yang baik');
readln;
END.

Setelah kode diatas dikompile, maka hasilnya dapat anda jalankan seperti gambar berikut:
contoh hasil free pascal bagian 1

Hasil file .exe dari kode diatas dapat anda unduh disini.