Pada umumnya, program komputer bekerja
dengan memanipulasi obyek (data) di dalam memori. Obyek yang akan diprogram
bermacam-macam jenis atau tipenya, misalnya nilai numerik, karakter, string,
dan rekaman (record). Suatu tipe menyatakan pola penyajian data dalam komputer.
Tipe data dapat dikelompokkan menjadi atas dua macam : tipe dasar dan tipe
bentukan. Tipe dasar adalah tipe yang dapat langsung dipakai, sedangkan tipe
bentukan dibentuk dari tipe dasar atau dati tipe bentukan lain yang sudah
dudefinisikan.
Suatu
tipe diacu dari namanya. Nilai-nilai yang dicakup oleh tipe tersebut dinyatakan
di dalam ranah (domain) nilai. Operasi-operasi (beserta operatot) yang dapat dilakukan
terhadap tipe tersebut juga didefinisikan.
3.1 Tipe Dasar
Tipe
dasar sudah dikenal dalam kehidupan sehari-hari. Kita hampir setiap hari
berbicara tentang angka-angka dan karakter. Dalam dunia pemrograman, yang
termasuk ke dalam tipe dasar adalah: bilangan logik, bilangan bulat, bilangan
riil, dan karakter.
3.1.1 Bilangan
Logika
Nama Tipe
Nama tipe bilangan logik adalah boolean
(dari nama seorang matematikawan Inggris, George Boole).
Ranah Nilai
Bilangan logik hanya mengenal dua buah
nilai: benar (true) atau salah (false). Istilah “bilangan” pada “bilangan
logik” muncul karena kita dapat menyatakan “benar” dengan angka 1 dan “salah”
dengan angka 0 (atau sebaliknya).
Tetapan
Karena ranah nilai tipe boolean hanya
beranggotakan dua buah nilai, maka tetapan (constant) yang terdapar pada tipe
ini adalah true dan false.
Operasi
Operasi-operasi yang dilakukan terhadap
tipe boolean dikenal dengan operasi logika. Operasi logika menghasilkan nilai
dalam ranah nilai tipe boolean (yaitu true atau false). Operator logika yang
dapat digunakan untuk operasi logika adalah: not, and, or,
dan xor.
Jika a dan b adalah peubah (variable) yang
bertipe boolean, maka hasil operasi a dan b dengan operator boolean tersebut
diberikan oleh tabel kebenaran berikut:
a
|
not a
|
true
|
false
|
false
|
true
|
A
|
B
|
a and b
|
a or b
|
a xor b
|
True
|
true
|
true
|
false
|
false
|
True
|
false
|
false
|
true
|
true
|
False
|
true
|
false
|
true
|
true
|
False
|
false
|
false
|
true
|
false
|
3.1.2 Bilangan
Bulat
Tipe sudah dikenal dalam kehidupan
sehari-hari. Bilangan bulat adalah bilangan yang tidak mengandung pecahan
desimal, misalnya 34, 8, 1203, 0, -17, dan sebagainya.
Nama Tipe
Nama tipe bilangan bulat adalah integer.
Ranah Nilai
Dalam implementasi, tipe integer mempunyai rentang nilai yang
terbatas. Pada kompilator Turbo Pascal misalnya, tipe integer dapat direpresentasikan ke dalam empat macam tipe, yaitu byte, shortint, word, integer, dan longint. Rentang nilai untuk kelima tipe tersebut adalah:
Tipe
|
Rentang nilai
|
Format
|
Byte
shortint
word
integer
longint
|
0 .. 255
-128 .. 127
0 .. 65535
-32768 .. 32767
-2147483648 .. 2147483647
|
Unsigned 8-bit
Signed 8-bit
Unsigned 16-bit
Signed 16-bit
Signed 32-bit
|
Tipe bilangan bulat adalah tipe yang
memiliki keterurutan. Ini artinya, bila sebuah nilai bilangan bulat diketahui,
nilai sebelumnya (predecessor) dan nilai sesudahnya (successor) dapat
ditentukan. Contohnya, predecessor dari 8 adalah 7, sedangkan successor-nya
adalah 9. Secara formal keterurutan itu didefinisikan sebagai berikut: jika a
adalah peubah bertipe bilangan bulat, maka predecessor(a)
= a-1, dan successor(a) = a+1.
Tetapan
Tetapan untuk nilai bertipe bilangan bulat
harus ditulis tanpa mengandung titik desimal. Contoh tetapan bertipe bilangan
bulat adalah:
78 -14 7654 0 5 99991
Operasi
Operasi yang dilakukan terhadap bilangan
bulat ada dua macam, yaitu operasi aritmatik dan operasi perbandingan. Operator
yang digunakan pada masing-masing operasi disebut operator aritmetika dan
operator perbandingan (atau operator relasional).
- Operasi Aritmetika
Operator aritmetika yang
berlaku pada bilangan bulat adalah:
+ (tambah)
-
(kurang)
* (kali)
div (bagi)
mod (sisa
hasil bagi)
Contoh-contoh
operasi aritmetika bilangan bulat:
3
+ 10 (hasil: 13)
87
– 31 (hasil: 56)
5
* 10 (hasil: 50)
10
div 3 (hasil: 3)
10
mod 3 (hasil: 1)
20
div 5 (hasil: 4)
20
mod 5 (hasil: 0)
- Operasi Perbandingan
Operasi perbandingan terhadap
bilangan bulat dengan salah satu operator relasional menghasilkan nilai boolean (true atau false).
Operator perbandingan untuk bilangan bulat adalah:
< (lebih
kecil)
≤ (lebih
kecil atau sama dengan)
> (lebih
besar)
≥ (lebih
besar atau sama dengan)
= (sama
dengan)
≠ (tidak
sama dengan)
Contoh operasi perbandingan:
3
< 8 (true)
74
> 101 (false)
9
≤ 9 (true)
9
< 9 (false)
17
= 17 (true)
(24
div 3) ≠ 8 (false)
3.1.3 Bilangan
Riil
Bilangan riil adalah bilangan yang
mengandung pecahan desimal, misalnya 3.65, 0.0003, 29.0, 2.60240000E-6, .24,
dan lain-lain. Ingatlah bahwa semua bilangan riil harus mengandung “.” (titik). Bilangan riil dapat juga dituliskan
dengan notasi E yang artinya perpangkatan sepuluh. Misalnya pada contoh tetapan
diatas, 2.60240000 x 10-6
Nama Tipe
Nama tipe bilangan bulat adalah real.
Ranah Nilai
Dalam implementasinya, tipe real mempunyai rentang nilai yang
terbatas. Pada kompilator Turbo Pascal misalnya, tipe real dapat direpresentasikan ke dalam empat macam tipe, yaitu real, single, double, dan extended. Rentang nilai positif untuk
keempat tipe tersebut adalah:
Tipe
|
Rentang nilai
|
Format
|
Real
single
double
extended
|
2.9 x 10-39 ..
1.7 x 1038
1.5 x 10-45 ..
3.4 x 1038
5.0 x 10-324 ..
1.7 x 10308
3.4 x 10-4932 ..
1.1 x 104932
|
6 byte
4 byte
8 byte
10 byte
|
Tetapan
Tetapan untuk nilai bertipe bilangan riil
harus ditulis dengan tanda titik desimal. Contoh tetapan bertipe bilangan riil
adalah:
0.78 -14.2376 7.654000+E8 0.0 -5 99.0
Operasi
Operasi yang dilakukan terhadap bilangan
riil ada dua macam, yaitu operasi aritmetika dan operasi perbandingan. Operator
yang digunakan pada masing-masing operasi tersebut operator aritmetika dan
operator perbandingan.
- Operasi Aritmetika
Operator aritmetika yang
berlaku pada bilangan riil adalah:
+ (tambah)
-
(kurang)
* (kali)
/ (bagi)
Contoh-contoh operasi
aritmetika bilangan riil:
6.4 + 5.7 (hasil:
12.1)
8.0 – 2.8 (hasil:
5.2)
10/3 (hasil:
3.333…)
10/2.5 (hasil:
4.0 → operasi bilangan campuran)
7.2 * 0.5 (hasil:
3.6)
- Operasi Perbandingan
Operasi perbandingan terhadap
bilangan riil dengan salah satu operator relasional menghasilkan nilai boolean (true atau false).
Operator perbandingan untuk bilangan riil adalah:
< (lebih
kecil)
≤ (lebih
kecil atau sama dengan)
> (lebih
besar)
≥ (lebih
besar atau sama dengan)
≠ (tidak
sama dengan)
Contoh operasi perbandingan:
0.003
< 0.3 (false)
8.0
≥ 5 (true)
3.0
≠ 3.5 (true)
3.1.4 Karakter
Yang termasuk ke dalam karakter adalah
huruf-huruf alfabet, tanda baca, angka ‘0’, ‘1’,.., ‘9’, dan karakter khusus
seperti ‘&’, ‘^’, ‘%’, ‘#’, ‘@’, dan sebagainya.
Nama Tipe
Nama tipe untuk karakter adalah char.
Ranah Nilai
Ranah karakter adalah semua huruf di dalam
alfabet (‘a’ .. ‘z’, ‘A’ .. ‘Z’), angka desimal (0..9), tanda baca (‘.’, ‘:’,
‘!’, ‘?’, ‘,’, dan lain-lain), operator arimetik (‘+’, ‘-‘, ‘*’, ‘/’), dan
karakter-karakter khusus seperti (‘$’, ‘#’, ‘@’, ‘^’, ‘~’, dan lain-lain).
Daftar karakter baku
yang lengkap dapat dilihat di dalam tabel ASCII.
Tetapan
Tetapan untuk data bertipe karakter harus
diapit oleh tanda petik tunggal.
Contoh tetapan karakter:
‘h’ ‘Y’ ‘.’ ‘
‘ ‘p’ ‘+’ ‘9’ ‘0’ ‘$’
Ingatlah bahwa ‘9’ adalah karakter, tetapi
9 adalah integer!
Operasi
Satu-satunya operasi yang dilakukan
terhadap tipe karakter adalah operasi perbandingan. Operator perbandingan yang
berlaku untuk tipe karakter adalah:
≠ (tidak
sama dengan)
= (sama
dengan)
< (lebih
kecil)
> (lebih
besar)
≥ (lebih
besar atau sama dengan)
Contoh:
‘a’
= ‘a’ {true)
‘T’
= ‘t’ (false)
‘y’
≠ ‘Y’ (true)
‘m’
< ‘z’ (true)
‘Q’
> ‘Z’ (false
3.2 Tipe Bentukan
Tipe bentukan adalah tipe yang
didefinisikan sendiri oleh pemrogram. Tipe bentukan disusun oleh satu atau
lebih tipe dasar. Ada
tiga macam tipe bentukan:
- string
- tipe
dasar yang diberi nama dengan nama tipe baru,
- rekaman (record)
3.2.1 String
String adalah deretan karakter dengan
panjang tertentu. Contoh-contoh string
misalnya ‘Halo-halo Bandung’,
‘Halo, dunia’, ‘D12345B’, dan sebagainya. Karakter adalah string dengan panjang 1.
Nama Tipe
Nama tipe string adalah string.
Ranah Nilai
Ranah nilai untuk tipe string adalah deretan karakter yang
telah didefinisikan pada ranah karakter.
Tetapan
Semua tetapan string harus diapit oleh tanda petik tunggal.
Contoh-contoh tetapan string:
‘BANDUNG’
‘ganesha’
‘ABCD765’
‘……………………………’
‘K7685302’
Operasi
Operasi terhadap data bertipe string ada dua macam:
a. Operasi
Penyambungan (Concatenation)
Operator : +
Operator “+” di sini bukanlah operator
penjumlahan seperti pada tipe numerik (integer
atau real). Operator “+” berarti
penyambungan. Bila a dan b adalah peubah bertipe string, maka a + b sama dengan ab.
Contoh:
‘Teknik’
+ ‘INFORMATIKA’ = ‘TeknikINFORMATIKA’
‘Teknik’
+ ‘ INFORMATIKA’ = ‘Teknik INFORMATIKA’
‘aaa’
+ ‘ bbb’ + ‘cc’ = ‘aaa bbbcc’
‘1’
+ ‘2’ = ‘12’ (namun 1 + 2 = 3, mengapa?)
b. Operasi
Perbandingan
Operator :
≠ (tidak sama dengan)
= (sama dengan)
< (lebih kecil)
> (lebih besar)
≥ (lebih besar atau sama dengan)
≤ (lebih kecil atau sama
dengan)
Contoh:
‘abcd’
= ‘abc’ (false)
‘aku < ‘AKU’ (true)
String yang disusun oleh gabungan
numerik dan karakter sering dinamakan alfanumerik.
Misalnya ‘K7685302’, ‘D5432AB’, dan sebagainya. Karena tipe string banyak dipakai dalam pemrograman,
maka string dapat diperlakukan
sebagai tipe dasar.
3.2.2 Tipe Dasar
yang Diberi Nama Tipe Baru
Kita dapat memberi nama baru untuk tipe
dasar dengan kata kunci type. Ranah nilai, cara menulis tetapan, dan
operasi terhadap tipe baru tersebut tidak berubah, tetap sama dengan tipe dasar
aslinya.
Contoh:
type
BilBulat : integer
3.2.3 Rekaman
Rekaman disusun oleh satu atau lebih field (Gambar 4.1). Tiap field menyimpan data dari tipe dasar
tertentu atau dari tipe bentukan lain yang sudah didefinisikan sebelumnya. Nama
rekaman ditentukan oleh pemrogram. Karena strukturnya yang disusun oleh field-field, maka rekaman dinamakan juga
tipe terstruktur (structured type).
field1
|
field2
|
field3
|
…
|
fieldN
|
Gambar 3.1 Gambaran Logik Rekaman dengan
N Buah Field
Contoh-contoh yang ditunjukkan di bawah
ini memperlihatkan bagaimana mendefinisikan tipe bentukan untuk rekaman.
Contoh 3.1
Didefinisikan tipe terstruktur yang
mewakili tanggal dalam kalender Masehi. Hari dinyatakan sebagai tanggal (dd), bulan (mm), dan tahun (yy),
misalnya 10-8:1999.
Misalkan tipe bentukan tersebut diberi
nama TGL.
Cara menuliskan tipe Tanggal:
type
Tanggal : record
: integer, {1..31}
mm : integer, {1..12}
yy :
integer { > 0 }
>
var
D : Tanggal
Jika D adalah peubah bertipe Tanggal, maka
cara mengacu tiap field.
D.dd
D.mm
D.yy
Tipe Tanggal didefinisikan sebagai
berikut:
Nama
tipe : Tanggal
Ranah
nilai : sesuai ranah masing-masing field
Contoh
tetapan: <12 1997="1997" 7="7">, <31 12="12" 1980="1980">, <29 1980="1980" 2="2">29>31>12>
Operasi : operasi aritmetik bilangan bulat
terhadap tiap field
operasi perbandingan terhadap masing-masing field
Contoh 3.2
Didefinisikan tipe terstruktur yang
mewakili jam. Jam dinyatakan sebagai jam (hh),
menit (mm), dan detik (ss), contohnya 12:45:10 (jam 12 lewat
45 menit lewat 10 detik). Misalkan tipe bentukan tersebut diberi nama JAM.
Cara menuliskan tipe JAM.
type
JAM : record
: integer, {0 .. 23}
mm : integer, {0
.. 59}
ss :
integer {0 .. 59}
>
var
J : JAM
Jika J adalah peubah bertipe JAM, maka
cara mengacu tiap field.
J.hh
J.mm
J.ss
Tipe JAM didefinisikan sebagai berikut:
Nama
tipe : JAM
Ranah
nilai : sesuai ranah masing-masing field
Contoh
tetapan: <12 10="10" 45="45">, <23 12="12" 19="19">, <9 17="17" 8="8">9>23>12>
Operasi : operasi aritmetik bilangan bulat
terhadap tiap field
operasi perbandingan terhadap masing-masing field
Contoh 3.3
NilMhs adalah nama tipe terstruktur yang
menyatakan nilai ujian seorang mahasiswa untuk suatu mata kuliah (MK) yang ia
ambil. Data setiap mahasiswa adalah NIM (Nomor Induk Mahasiswa), nama
mahasiswa, mata kuliah yang di ambil, dan nilai mata kuliah tersebut.
Cara menuliskan tipe NilMhs:
type
NilMhs : record
<
NIM : integer, {Nomor
Induk Mahasiswa}
NamaMhs : integer, {Nama
Mahasiswa}
KodeMK : integer {Kode
Mata Kuliah}
Nilai :
char {indeks nilai MK (A/B/C/D/E)}
>
var
M : NilMhs
Jika M adalah peubah bertipe NilMhs, maka
cara mengacu tiap field.
M.NIM
M.NamaMhs
M.KodeMK
M.Nilai
Tipe NilMhs didefinisikan sebagai berikut:
Nama
tipe : NilMhs
Ranah
nilai : sesuai ranah masing-masing field
Contoh
tetapan: <13596001 ali="ali" mir="mir">13596001>
<13596010 atna="atna">13596010>
Operasi : - operasi aritmetik bilangan bulat
terhadap NIM
- operasi string
terhadap NamaMhs, KodeMK, Nilai
Contoh 3.4
Tipe terstruktur untuk jadwal kereta api.
Jadwal keberangkatan kereta api terdiri atas informasi nomor kereta api (NoKA),
kota asal (KotaAsal), kota tujuan (KotaTujuan), jam berangkat
(JamBerangkat), dan jam tiba (JamTiba).
NoKA
|
KotaAsal
|
KotaTujuan
|
JamBerangkat
|
JamTiba
|
Cara menuliskan tipe JADWAL_KA:
type
JADWAL_KA : record
<
NoKA : string, KotaAsal :
string, JamBerangkat :
JAM,
KotaTujuan :
string,
JamTiba :
JAM
>
var
JKA : JADWAL_KA
Jika JKA adalah peubah bertipe JADWAL_KA,
maka cara mengacu tiap field.
JKA.NoKA
JKA.KotaAsal
JKA.JamBerangkat.hh
JKA.JamBerangkat.mm
JKA.JamBerangkat.ss
JKA.KotaTujuan
JKA.JamTiba.hh
JKA.JamTiba.mm
JKA.JamTiba.ss
Tipe JADWAL_KA didefinisikan sebagai
berikut:
Nama
tipe : JADWAL_KA
Ranah
nilai : sesuai ranah masing-masing field
Contoh
tetapan: <‘KA01’, ‘Jakarta’, <17 0="0" 2="2">, ‘Semarang’,
<05 0="0" 54="54">05>17>
<‘KA24’, ‘Bandung’, <9 40="40">, ‘Solo’, <14 10="10" 50="50"> >14>9>
Operasi : sesuai untuk masing-masing tipe field.
Contoh 3.5
Contoh berikut menyajikan struktur
bentukan yang cukup kompleks. Misalkan kita ingin menyimpan data nilai-nilai
mata kuliah yang diambil setiap mahasiswa. Data yang disimpan di dalam struktur
rekaman adalah sebagai berikut:
- NIM
(Nomor Induk Mahasiswa)
- NamaMhs
(nama mahasiswa)
- Mata
kuliah yang diambil mahasiswa tersebut, yang terdiri atas:
Kode mata kuliah
Nama mata kuliah
Nilai mata kuliah
Cara menuliskan tipe MataKuliah:
type
MataKuliah : record
<
KodeMK : string, NamaMK :
string, ` Nilai :
char
>
type
NilMhs : record
<
NIM : integer, NamaMhs :
string, ` MK :
MataKuliah
>
var
MKuliah : MataKuliah
Nil
: NilMhs
Jika MKuliah adalah peubah bertipe
MataKuliah, Nil adalah peubah bertipe NilMhs, maka cara mengacu tiap field.
MKuliah.KodeMK
MKuliah.NamaMK
MKuliah.Nilai
Nil.NIM
Nil.NamaMhs
Nil.MKuliah.MK
1.
Runtunan
Algoritma merupakan runtunan (sequence) satu atau lebih instruksi,
yang berarti bahwa :
- Tiap
instruksi dikerjakan satu per satu;
- Tiap
instruksi dilaksanakan tepat sekali; tidak ada instruksi yang diulang;
- Urutan
instruksi yang dilaksanakan pemroses sama dengan urutan aksi sebagaimana
yang tertulis di dalam teks algoritmanya;
- Akhir
dari instruksi terakhir merupakan akhir algoritma.
Bila runtunan instruksi dalam
algoritma berturut-turut dilambangkan dengan A1, A2, A3, A4, dan A5, maka
urutan pelaksanaan instruksi tersebuta adalah seperti diagram di bawah ini :
A1
¯
A2
¯
A3
¯
A4
¯
A5