TIPE DATA
TIPE DATA DALAM PASCAL Tipe data sederhana
a. standar: integer, char,string, boolean, real b. user defined : enumerated, subrange Tipe data terstruktur a. array, b. set, c. record, d. file Tipe data penunjuk (Pointer) 2
Kita telah mengenal tipe-tipe data standar di bab
sebelumnya yaitu tipe data integer, real, char, string dan boolean Disamping tipe data standar ini, pascal juga memungkinkan para user untuk mendeklarasikan sendiri tipe data sederhana yang lainnya (user defined data type) Tipe data user define yg sederhana adalah tipe data enumerated dan subrange
ENUMERATED Deklarasi
tipe data ini harus dideklarasikan terlebih dahulu di bagian deklarasi tipe yg diawali dengan kata cadangan Type contoh: type bahasa = (basic,fortran,pascal); hari = (senin,selasa,rabu,kamis,jumat,sabtu);
Enumerated (lanj.) Penggunaan tipe data enumerated :
type nmhari=(senin,selasa,rabu,kamis,jumat); var hari : nmhari; Begin for hari:=selasa to kamis do writeln(‘pascal’); End. Fungsi standar untuk manipulasi data tipe enumerated di dalam
Pascal ada 3 yaitu PRED, SUCC, dan ORD
Fungsi standar pred & succ Pred predecessor (urutan sebelumnya) Succ sucessor (urutan berikutnya)
Syntax : Pred(x); Succ(x); x adalah nilai ordinal yang dapat berupa nilai data tipe standar atau tipe enumerated
Contoh 1:
writeln(succ(3)); writeln(pred(3));
Contoh 2 Type hari = (senin,selasa,rabu,kamis,jumat);
Succ(senin) selasa succ(rabu) kamis pred(rabu) selasa Pred(jumat) kamis
4 2
Fungsi standar ord Syntax:
Ord (x); x adalah nilai integer yg merupakan urutan dari data tipe ordinal bersangkutan Contoh: type hari=(senin,selasa,rabu); var KodeHari : hari; begin KodeHari :=senin; 0 writeln(ord(KodeHari)); end.
Program Enum;
Type hari_Kerja = (senin, selasa, rabu, kamis, jumat); Var hari : hari_Kerja; Begin hari := senin; if hari = Senin then writeln('Hari Senin') else writeln('Hari kerja yang lain'); writeln('Hari kerja ke-',ord(hari)); Case hari of senin : write('I don''t Like Monday'); Rabu : write('Aku sedang giat kuliah'); Jumat : write('Time to party'); end; readln End.
SUBRANGE Suatu range yang menunjukkan nilai terkecil dan nilai terbesar yg
dapat dipergunakan Deklarasi: type hari = 1..31; nilai = ‘A’..’E’; Nilai dari subrange dpt juga berupa tipe enumerated yg telah dideklarasikan, seperti di bawah ini: type bulan=(jan,feb,mar,apr,mei,jun,jul,ags,sep,nop,des); semester1=jan..jun; semester2=jul..des;
Program Range; Uses crt; Type bil = 1..30; Var angka : bil; Begin Clrscr; angka := 2; writeln(ord(angka)); angka := angka + 4; Writeln(Angka); readln End.
ARRAY Array adalah tipe data terstruktur yang terdiri dari
sejumlah komponen-komponen yang mempunyai tipe sama Komponen-komponen tersebut disebut sebagai komponen type, larik mempunyai jumlah komponen yang jumlahnya tetap. Banyaknya komponen dalam larik ditunjukkan oleh suatu index, dimana tiap komponen di array dapat diakses dengan menunjukkan nilai indexnya.
Array dapat bertipe data sederhana seperti byte, word,
integer, real, bolean, char, string dan tipe data enumerated atau subrange Tipe array mengartikan isi dari array atau komponenkomponenya mempunyai nilai dengan tipe data tsb Contoh: Var nilai : array[1..50] of Integer;
Program Contoh_Array; Uses Crt; Var Bilangan : array[1..50] of Integer; Begin ClrScr; Bilangan[1]:=28; Bilangan[2]:=29; Bilangan[3]:=30; Bilangan[4]:=31; Bilangan[5]:=23; Writeln('nilai varibel bilangan ke 2 =',Bilangan[2]); Readln; End.
Program Array1;
Var Tiga : Array[1..3] of integer; Empat : Array[1..4] of Char; Hasil, I : integer; Begin Tiga[1] := 20; Tiga [2] := 30; Tiga [3] := 10; Hasil := Tiga[1] + Tiga[1] + Tiga[1]; Writeln('Nilai Variabel Hasil adalah ',Hasil); Empat[1] := 'A'; Empat[2] := 'B'; Empat[3] := 'C'; Empat[4] := 'D'; For I:=1 to 4 do writeln('Isi array Empat ke-',I,' : ',Empat[I]); Readln; End.
DEKLARASI TIPE INDEKS
indeks array menunjukkan maksimum banyaknya elemen-elemen dari array indeks array dapat berupa tipe subrange atau tipe enumerated apapun kecuali tipe real
Program Deklarasi_Indeks_Array;
Uses Crt; Var Jum : Array[(jan,feb,mar,apr,mei)] of Integer; Begin Jum[jan]:=25; Jum[feb]:=45; Jum[mar]:=21; Jum[apr]:=23; Jum[mei]:=50; Writeln('Jumlah nilai bulan maret =',Jum[mar]); Readln; End.
Var Jum : Array[(jan,feb,mar,apr,mei)] of Integer; dapat juga ditulis : type Bln = (jan,feb,mar,apr,mei); Var Jum : Array[bln] of Integer; atau type Bln =(jan,feb,mar,apr,mei); Var Jum : Array[jan..mei] of Integer;
Deklarasi Konstanta Array
Array tidak hanya dapat berupa suatu varibel yang dideklarasikan di bagian deklarasi variabel, tetapi dapat juga berupa konstanta (const)
Program Deklarasi_Array_Konstan; Uses Crt; Const Tetap : Array[1..4] of Integer=(7,10,21,20); Var i : Integer; Begin For i:= 1 to 4 Do Writeln('Nilai Konstan array ke ',i:2,' =',Tetap[i]); Readln; End.
konstanta array dapat juga berupa konstanta dalam bentuk char
Program Konstan_Char_; Uses Crt; Const Huruf : Array[0..5] of Char=('A','B','C','D','E','F'); Var i : Integer; Begin For i:= 0 to 5 Do Writeln('Nilai konstan array ke',i:2,' = ',Huruf[i]); Readln; End.
Konstanta array dapat juga berupa string
Program Constant_String; Uses Crt; Type A = Array [1..5] of String; Const Nama : A = ('basic','pascal','cobol','paradox','dbase'); Var i : Integer; Begin For i:= 1 to 5 Do Writeln('Nilai Array ke-',i:2,'= ',Nama[i]); readln; end.
Program Constant_String2; type bulan=(bln0,bln1,bln2,bln3,bln4,bln5); var urutanBulan:bulan; const namabulan:array[bln1..bln5] of string[9]=(‘januari’,‘februari’, ‘maret’, ‘april’, ‘mei’); Begin urutanBulan:=bln0; While urutanBulan < bln5 do begin urutanBulan:=succ(urutanBulan); writeln(‘bulan ke ‘, ord(urutanBulan):2,’ adalah’, namaBulan[urutanBulan]); end; End.
program array2; var I, Max : integer; data : array[1..3] of integer; begin Max := 0; For I := 1 to 3 Do Begin Writeln(‘Masukkan data ke-‘, I); readln(Data[I]) End; For I := 1 to 3 Do if Data[I] > Max then Max := Data[I] else Max := Max; write (Max); readln end.
Array Dimensi Banyak Array dapat berdimensi lebih dari satu yang disebut
dengan array dimensi banyak (Multidimensional array). Secara prinsip, array dimensi lebih dari 2 sama dg array dimensi 2 sehingga disini akan dibahas array 2 dimensi saja. Array 2 dimensi dapat mewakili suatu bentuk tabel atau matrik, yaitu indeks pertama menunjukkan baris dan indeks ke dua menunjukkan kolom dari tabel atau matrik.
Deklarasi array Dimensi 2
nama-array = array[tipe-indeks1] of array [tipeindeks2] of tipe-array Atau nama-array=array[tipe-indeks1,tipe-indeks2] of tipe-array
Contoh
Var Tabel : Array[1..3,1..2] of Integer; i,j : Integer; Begin Tabel[1,1]:=1; Tabel[1,2]:=2; Tabel[2,1]:=3; Tabel[2,2]:=4; Tabel[3,1]:=5; Tabel[3,2]:=6; For I := 1 to 3 Do Begin For J:= 1 to 2 Do Begin Writeln('Elemen ',i,',',j,'= ',tabel[i,j]); End; End; Readln; End.
ALTERNATIF LAIN DEKLARASI ARRAY DIMENSI 2
Var Tabel : Array[1..3] of Array[1..2] of Byte; atau Type Matrik = Array[1..3,1..2] of Byte; Var Tabel : Matrik; atau Type Baris = 1..3; Kolom = 1..2; Matrik = Array[Baris,Kolom] of Byte; Var Tabel : Matrik; atau Type Baris = 1..3; Kolom=1..2; Matrik= Array[Baris] of Array[Kolom] of Byte; Var Tabel : Matrik;
Var Matriks1 : Array [1..3,1..3] of integer; Matriks2 : Array [1..3,1..3] of integer; I, J : integer; Begin For I:=1 to 3 do For J:=1 to 3 do Begin Write('Masukkan angka pada Matriks1 [',I,',',J,'] = '); Readln(Matriks1[I,J]); End; For I:=1 to 3 do For J:=1 to 3 do Matriks2[I,J] := Matriks1[I,J] + 4; For I:=1 to 3 do For J:=1 to 3 do Writeln('Isi angka pada Matriks2 [',I,',',J,'] = ',Matriks2[I,J]); Readln End.
RECORD Record terdiri dari kumpulan field
yang dapat berbeda tipe. Contoh deklarasi record:
Atau dapat langsung
dideklarasikan langsung di variabel, sbb.
Type pelanggan = record kode:integer; nama:string[25]; alamat:string[45]; piutang:real; end; Var langganan : pelanggan;
Var
langganan : record kode:integer; nama:string[25]; alamat:string[45]; piutang:real; end;
Contoh penggunaan record
Type hasil=record sisi:real; luas:real; keliling:real; end; Var persegi : hasil; Begin Writeln(‘sisi persegi?’); Readln(persegi.sisi); Persegi.luas:=persegi.sisi*persegi.sisi; Persegi.keliling:=4*persegi.sisi; Writeln(‘luas persegi :’,persegi.luas:5:2); Writeln(‘keliling persegi :’,persegi.keliling:5:2); End.
Statement WITH
Type hasil=record sisi:real; luas:real; kell:real; end; Var persegi : hasil;
Begin With persegi do begin Writeln(‘sisi persegi?’); Readln(sisi); luas:=sisi*sisi; keliling:=4*sisi; Writeln(‘luas persegi :’,luas:5:2); Writeln(‘keliling persegi:’,kell:5:2); end; End.
SET (HIMPUNAN) Set (himpunan) adalah kumpulan dari obyek yg
mempunyai urutan yg dianggap sebagai satu kesatuan Tiap-tiap obyek di dalam set disebut dg anggota atau elemen himpunan Anggota-anggota dari set harus mempunyai tipe yang sama dan disebut dg base type Base type harus bertipe data sederhana, yaitu bertipe ordinal(integer,boolean,char,enumerated kecuali real)
Deklarasi Set
set of tipeordinal; contoh: type digit = set of 0..9; hurufkecil= set of ‘a’..’z’; warna= set of (merah,kuning,hijau); karakter=set of char; di dalam Pascal, jumlah max elemen/anggota adalah 256 dan nilai-nilai ordinal dari base type harus bernilai dari 0 sampai 255
Contoh
type karakter= set of ‘a’..’z’ var hurufku : karakter; atau var hurufku : set of ‘a’..’z’;
Pembentuk SET (Set Constructor)
[1,2,3,4] [1..4] [2,3,5] [‘A’..’D’] [‘Y’,’y’,’T’,’t’] [] [‘0’..’9’,’A’..’D’] [1..3,5,9..12]
nilai integer 1 sampai 4 nilai integer 1 sampai 4 nilai integer 2,3,dan 5 karakter ‘A,’B’,’C’ dan ‘D’ karakter ‘Y,’y’,’T’ dan ‘t’ set kosong tidak punya anggota karakter ‘0’ sampai ‘9’ dan karakter ‘A’ sampai ‘D’ nilai integer 1,2,3,5,9,10,11 dan 12
Contoh:
var hurufku : set of ‘a’..’z’; begin hurufku:=[‘i’..’l’,’o’..’q’];
Operasi Set 1. Union atau sum (penggabungan) [1,2,3,4]+[3,4,5,6,7]=[1,2,3,4,5,6,7] 2. Set difference (selisih) [1,2,3,4]-[3,4,5,6]=[1,2] 3. Intersection atau product (irisan) [1,2,3,4]*[3,4,5,6]=[3,4]
Penyeleksian Set
1. kesamaan set (A=B) semua anggota di kedua set sama 2. ketidaksamaan set (A<>B) semua/beberapa anggotanya tidak sama 3. set inclusion A<=B : semua anggota set A mjd anggota di set B A>=B : semua anggota set B mjd anggota di set A 4. keanggotaan set Menggunakan operator in
Program Sets( input, output ); type himpunan = set of 1..40; var himp1, himp2, Gabung, Selisih, Irisan : himpunan; nilai : integer; begin himp1 := [2..6]; himp2 := [4..10]; Gabung := himp1 + himp2 + [14..20]; Selisih := himp1 - himp2; Irisan := himp1 * himp2 * [5..7]; nilai := 1; while( nilai <> 0 ) do begin writeln('Masukkan suatu nilai integer, (0 untuk keluar)'); readln( nilai );
if nilai <> 0 then begin if nilai IN Gabung then writeln('Nilai dalam Gabungan himpunan') else writeln('Nilai tidak dalam Gabungan himpunan'); if nilai IN Selisih then writeln('Nilai dalam Selisih himpunan') else writeln('Nilai tidak dalam Selisih himpunan'); if nilai IN Irisan then writeln('Nilai dalam Irisan himpunan') else writeln('Nilai tidak dalam Irisan himpunan') end; writeln; end; end.
POINTER Pointer adalah variabel yg menunjuk lokasi memori tertentu Pendeklarasian pointer dilakukan dengan cara yg hampir sama dg pendeklarasian
variabel biasa, bedanya anda harus menambahkan tanda ^ di depan tipe pointer contoh: type catatankaryawan = record kode : string[5]; nama : string[25]; gaji : real; end; penunjukkaryawan = ^catatankaryawan; var datakaryawan = penunjukkaryawan; Datakaryawan adalah var pointer yg menunjuk pd letak record catatankaryawan
Type tipestring = string[15]; penunjukstring=^tipestring; Var nama:penunjukstring; Begin nama^:=‘pascal’; writeln(nama^); End.
Variabel nama adl var pointer dg
tipe penunjukstring Penunjukstring adl tipe data pointer yg menunjukkan letak dari suatu nilai string[15] Var pointer nama jg menunjukkan alamat dari letak nilai string[15] Nama^ menunjukkan isi dari memori yg alamatnya ditunjukkan oleh variabel pointer nama (menunjukkan nilai string[15] tsb)