Translate to your languages

Selamat Datang . Suatu kehormatan bagi saya atas kunjungan ini. Saya sangat berharap kunjungan berikutnya.

24 Desember 2008

record

REKAMAN (RECORD)


 

Untuk merepresentasikan objek, dibuat tipe bentukan (user-defined type) yg merupakan gabungan dari beberapa tipe dasar(integer, real, boolean, character) dan tipe bentukan lainnya. Salah satu tipe bentukan terstruktur adalah record.


 

Sebuah rekaman disusun oleh beberapa field. Tiap field berisi data dari tipe dasar / bentukan tertentu. Record mempunyai kelebihan untuk menyimpan sekumpulan elemen data yang berbeda-beda tipenya.


 

Contoh , sebuah record dengan empat buah field.

  

  

  

  

Field 1 

Field 2  

Field 3  

Field 4  


 

Cara pendeklarasian dari record adalah sbb:

  • Mendefinisikan tipe dari record (jumlah field, jenis tipe data yang dipakai),
  • Mendefinisikan variabel untuk dilakukan operasi.


 

BENTUK UMUM :

type nama_record = record

identifier_1 : tipe_data_1;

:

:

identifier_n : tipe_data_n;

end;

var

nama_variabel : nama_record;


 

Contoh :

type Data_mahasiswa = record

Nama     : string;

Umur     : integer;

Kota     : String;

Kodepos     : integer;

end;

Var

x : Data_mahasiswa;         <------------ Penggunaan record menjadi variabel-variabel


 


 

Pengacuan tiap field pada record(record selector) pada contoh di atas adalah sbb :

x.Nama
x.Umur
x.Kota
x.Kodepos


 

Contoh Program 1:

program CONTOH_RECORD_1;

uses wincrt;

type tanggal = record

hari, bulan, tahun : integer;

end;

var

waktu : tanggal;

begin

waktu.hari := 17;

waktu.bulan := 07;

waktu.tahun := 2007;

writeln( 'Tanggal Lahir : ', waktu.hari, ':', waktu.bulan, ':', waktu.tahun )

end.


 

Pengunaan With … do :

Pernyataan with untuk lebih menyederhanakan pengaksesan field-field pada record.

Misalkan pernyataan :

x.Nama
x.Umur
x.Kota

x.Kodepos

Menjadi :

with x do

Begin

Nama
Umur
Kota
Kodepos

end

Contoh Program 2:

program CONTOH_RECORD_2;
uses wincrt;

type tanggal = record

hari, bulan, tahun : integer;

end;

var waktu : tanggal;
begin {program utama}

with waktu do {mulai with}

begin

hari := 17;
bulan := 07;
tahun := 2007;

writeln ('Tanggal Lahir : ',hari,':',bulan,':', tahun)

end {akhir with}

end.

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:= 01;
saat_ini.tanggal.hari:= 07;
saat_ini.tanggal.tahun:= 2008;
saat_ini.waktu.jam:= 14;
saat_ini.waktu.menit:= 30;
saat_ini.waktu.detik:= 33;


 

LATIHAN :

Buatlah Program untuk mendapatkan tampilan dari penjelasan di atas !!!


 

STUDI KASUS :

Diketahui : Tipe bentukan record waktu yg terdiri field jam dan menit yg bertipe integer.

Buat program u/ membaca waktu : t1, t2 dan menghitung selisih jam dan menit.

Asumsi :

  • t2 selalu akhir dari t1,
  • nilai terbesar t1 dan t2 = 23:59 dan nilai terkecilnya =00:00,
  • nilai tidak melewati 23:59

Analisis :

  • Membaca waktu pertama(t1).
  • Membaca waktu kedua(t2).
  • Menghitung selisih antara waktu pertama dan waktu kedua, dengan :
    • Menghitung selisih menit.
    • Menghitung selisih jam.
  • Menampilkan selisih waktu di layar.


 

Contoh Program :

Program selisih_waktu;

Uses wincrt;

type waktu = record

        jam, menit : integer;

    end;

var

    t1,t2    : waktu;

    selisih    : waktu;

begin

writeln('Isikan Time pertama (t1)');

write('t1.jam     = '); readln(t1.jam);

write('t1.menit = '); readln(t1.menit);


 

writeln('Isikan Time kedua (t2)');

write('t2.jam     = '); readln(t2.jam);

write('t2.menit = '); readln(t2.menit);


 

if t2.menit < t1.menit then

begin

selisih.menit := (t2.menit+60)-t1.menit;

t2.jam := t2.jam – 1;

end

else

selisih.menit := t2.menit-t1.menit;

selisih.jam := t2.jam-t1.jam;


 

writeln ('Selisih t1 dan t2 adalah : ', selisih.jam, 'jam', selisih.menit, 'menit');

end.


 

TUGAS :

Buatlah program yg dapat membaca dua tanggal (tanggal, bulan, dan tahun), menghitung selisih kedua tanggal tersebut dalam hari, bulan, dan tahun serta menampilkannya di layar.


 

Asumsi : Satu bulan = 30 hari


 

************** GOOD LUCK **************

17 Desember 2008

Fungsi Pascal

Fungsi Matematik Standar dalam PASCAL



Beberapa fungsi matematik standar yang disediakan oleh PASCAL:

Nama Fungsi

Deskripsi

Tipe Argumen

Tipe Hasil Operasi

abs

absolute value

real/integer

real/integer

arctan

arctan (radian)

Real/integer

real

cos

cosine (radian)

real/integer

real

sin

sin (radian)

real/integer

real

exp

fungsi Perpangkatan e

real/integer

real

ln

ln

real/integer

real

round

Pembulatan terdekat

real

integer

sqr

kuadrat

real/integer

real/integer

sqrt

Akar kuadrat

real/integer

real

trunc

Pembulatan ke bawah

real/integer

integer


Contoh :
Abs(-11) (hasil: 11)
Round(10.6) (hasil: 11)
Trunc(10.6) (hasil: 10)
Sqrt(4) (hasil: 2)
Sqr(4) (hasil: 16)
Untuk fungsi trigonometri:
x = sin phi menjadi x:=sin (3.1416);

1. Statemen-statemen yang digunakan untuk input/output.

# ReadKey [fungsi].

Untuk pembacaan sebuah karakter dari keyboard. Tipe data yang dihasilkan adalah char.

Sintaks: ReadKey;

2. Statemen yang digunakan untuk memanipulasi string.

# ConCat[fungsi].

Untuk menggabungkan 2 atau beberapa variabel string.

Sintaks: ConCat (s1 [,s2,...,sn]: String) : String;

contoh: ConCat ('ABC','DEF') { ABCDEF }

# Copy [fungsi].

Mengambil satu atau beberapa karakter dari sebuah string.

Sintaks: Copy (S,Index,Count) : String;

Keterangan :

S = sebuah string (string).

Index = posisi awal kita akan mengambil beberapa

karakter (integer)

Count = banyaknya karakter yang akan diambil (integer).

# Length [fungsi].

Memberikan nilai panjang dari suatu string (jumlah karakter dalam string).

Sintaks: Length (S);

Keterangan : S = string

Length(S) menghasilkan nilai integer.

# Pos [fungsi].

Mencari posisi sebuah bagian string (substring) didalam sebuah string.

Sintaks: Pos (Substr,S); {menghasilkan nilai Byte}

Keterangan : Substr = substring yang akan dicari posisinya di dalam sebuah string S.

Bila bernilai 0 berarti nilai string yang dicari tidak ada.

# UpCase [fungsi].

Memberikan huruf kapital dari argumen.

Sintaks: UpCase (S);

Keterangan :

S = variabel bertipe karakter.

Contoh :

Program Man_String;

Uses Crt;

Var s : String;

1 : Integer;

h : String;

Const a='Dinda';

b='Bayi ';

c='Sehatku';

Begin

ClrScr;

s:= ConCat (a,b,c);

Writeln (s);

Insert (' & ',s,6);

Writeln(s);

Delete (s,7,7);

Writeln (s);

h:=Copy (s,1,5);

Writeln (h);

l:= Length(s);

Writeln ('Panjangnya string S : ',l);

Writeln ('Posisi "Sehat" pada nilai S : ',POS('Sehat',s));

END.

Hasilnya adalah :

DindaBayiSehatku

Dinda & Bayi Sehatku

Dinda Sehatku

Dinda

Panjangnya string S : 16

Posisi "Sehat" pada nilai S : 7

3. Statemen-statemen untuk perhitungan aritmatik.

# Abs [fungsi].

Memberikan nilai mutlak dari suatu argumen.

Sintaks: ABS(x);

# ArcTan[fungsi].

Memberikan nilai dari fungsi arctangent dari perhitungan goniometri.

Sintaks: ArcTan (x);

dimana x dapat bertipe real atau integer dan akan menghasilkan nilai bertipe real.

# Cos [fungsi].

Memberikan nilai dari fungsi Cosinus.

Sintaks: Cos (x);

# Exp [fungsi].

Menghitung nilai pangkat dari bilangan e (bilangan alam), yaitu sebesar x.

Sintaks: Exp (x);

x dapat bertipe real atau integer dan akan menghasilkan nilai bertipe real.

# Frac [fungsi].

Untuk mendapatkan nilai pecahan dari suatu bilangan.

Sintaks: Frac (x);

Tipe dari x sama seperti yang diatas.

# Int [fungsi].

Memberikan nilai integer (bilangan bulat) dari suatu variabel dengan membuang bilangan di belakang koma.

Sintaks: Int (X);

# Ln [fungsi].

Digunakan untuk menghitung nilai logaritma alam (natural logarithm) dari nilai x.

Sintaks: Ln (x);

# Sin [fungsi].

Memberikan nilai dari fungsi Sinus.

Sintaks: Sin (x);

# Sqr [fungsi].

Digunakan untuk menghitung nilai pangkat kuadrat dari suatu bilangan.

Sintaks: Sqr (x);

Tipe dari x bisa berupa real maupun integer. Dan hasilnya akan sama dengan tipe dari x.

# Sqrt (fungsi).

Digunakan untuk menghitung nilai akar dari suatu bilangan.

Sintaks: Sqrt (x);

Contoh :

Program Aritmatik;

Uses Crt;

Var x : Real;

Begin

Clrscr;

Write('Masukkan nilai dari X = ');

Readln (x);

If x <0>

Writeln('Nilai X = ',x:5:2);

Writeln ('Nilai eksponentialnya = ',EXP(x):9:3);

Writeln ('Nilai logaritma alamnya = ',LN(x):9:3);

Writeln ('Nilai integernya = ',INT(x):5:2);

Writeln ('Nilai fraksionalnya = ',FRAC(x):5:2);

Writeln ('Nilai X dipangkatkan = ',SQRT(x):9:3);

Writeln ('Nilai X diakarkan = ',SQRT(x):9:3);

Write('Nilai X jika dimasukkan dalam ');

Writeln('fungsi Sin,Cos,Tangen: ');

Writeln('- Sinus = ',Sin(x):9:3);

Writeln('- Cosinus = ',Cos(x):9:3);

Writeln('- Tangen = ',ArcTan(x):9:3);

End.

Hasilnya :

masukkan nilai dari X = -2.5

Nilai X = 2.50

Nilai eksponensialnya = 12,182

Nilai logarima alamnya = 0,196

Nilai integernya = 2.00

Nilai fraksionalnya = 0.50

Nilai X dipangkatkan = 6.250

Nilai X diakarkan = 1.581

Nilai X jika dimasukkan dalam fungsi Sin,Cos,Tangen:

- Sinus = 0.598

- Cosinus = -0.801

- Tangen = 1.190

4. Statemen-statemen untuk transfer nilai dari suatu variabel.

# Chr [fungsi].

Merubah nilai dari byte ke bentuk karakter yang sesuai dengan

kode ASCII.

Sintaks: Chr (x);

Keterangan : x bertipe byte

contoh : Writeln (Chr (61));

hasilnya : a

# Ord [fungsi].

Merubah nilai suatu variabel dari bentuk karakter ke bentuk longint.

Sintaks: Ord (x);

Keteranagn : x bertipe char

contoh : Writeln(Ord ('B'));

hasilnya : 42

# Round [fungsi].

Membulatkan data tipe real ke data tipe longint.

Sintaks: Round (x);

Keterangan : Jika nilai pecahan <>

Jika nilai pecahan > 0,5 maka dibulatkan keatas.

contoh : Writeln('10/3 dibulatkan = ',Round(10/3));

hasilnya : 10/3 dibulatkan = 3

# TRUNC [fungsi].

Membulatkan kebawah data tipe real ke data tipe longint.

Sintaks: Trunc (x);

contoh :

Writeln('20/3 dibulatkan kebawah = ',Trunc (20/3));

hasilnya : 20/3 dibulatkan kebawah = 6

5. Statemen-statemen untuk memanipulasi data.

# Pred [fungsi].

Memberikan nilai sebelum nilai argumen dalam urutannya dalam

ASCII.

Sintaks: Pred (x);

# Succ [fungsi].

Memberikan nilai sesudah nilai argumen dalam urutannya dalam ASCII.

Sintaks: Succ (x);

# Inc[fungsi].

Menambah (increments) nilai suatu variabel.

Sintaks: Inc (x,i); {i >= 1}

# Dec [fungsi].

Mengurangi (decrements) nilai suatu variabel.

Sintaks: DEC(x,i); {i >=1}

Contoh :

Progam Man_Data;

Uses Crt;

Type

hari = (hr0,hr1,hr2,hr3,hr4,hr5,hr6,hr7)

Var

urutanhr : hari;

Const

namahr : Array [hr1..hr7] of String [6]= ('Senin','Selasa','Rabu','Kamis', 'Jumat','Sabtu','Minggu');

Begin

Writeln('Daftar Nama Hari);

urutanhr := hr0;

While Urutanhr <>

Begin

urutanhr := Succ(urutanhr);

Write('hari ke ',Ord(Urutanhr):2,' adalah ');

Writeln(namahr[urutanhr]);

End;

End.

Hasilnya adalah :

Daftar Nama Hari

hari ke 1 adalah Senin

hari ke 2 adalah Selasa

hari ke 3 adalah Rabu

hari ke 4 adalah Kamis

hari ke 5 adalah Jumat

hari ke 6 adalah Sabtu

hari ke 7 adalah Minggu


Soal Latihan

{Buatlah program untuk permasalahan berikut ini}

1. Mencari nilai Sinus, Cosinus, dan Tangen dengan sudut diinput.

2. Mencari akar dan kuadrat dari suatu nilai (nilai diinput).

3. Mencari nilai bulat dan pecahan dari suatu nilai yang dimasukkan melalui keyboard (diinput). Nilai pecahan tersebut dibulatkan sampai 3 angka dibelakang koma (,).


============== SELAMAT BERLATIH ==============