Pada
bab dua ini terdapat beberapa sub bab, diantaranya:
ü Tipe data numerik
ü Tipe data karakter
ü Tipe data Boolean
ü Penyimpanan String dalam standar
Pascal dan implementasi modern dari bahasa
ü Fungsi standar dan
operator untuk pengolahan tipe data
yang berbeda
ü Tambahan jenis
Turbo Pascal, operator, dan fungsi
2-1 Ikhtisar Jenis
Data
Kita telah menggunakan jenis data INTEGER dan jenis REAL baik sebagai konstanta numeric dan variabel.
Kita juga
telah menggunakan operator
aritmatika dengan variabel dan konstanta
untuk membangun ekspresi aritmatika,
dan telah mengetahui beberapa fungsi seperti
ROUND dan TRUNC. Data diolah dengan suatu program yang mungkin berisi karakter tunggal,
string teks, dan jumlah logis.
Setiap jenis data disimpan dan dimanipulasi secara berbeda.
Pascal menyediakan tipe data standar berikut (juga disebut tipe
data yang sederhana atau skalar):
INTEGER
NYATA
CHAR
BOOLEAN
Bab ini memperkenalkan seluruh gambar
data jenis numeric dan fungsi terkait dan ekspresi.
Hal ini juga memperkenalkan tipe data CHAR yang digunakan untuk mewakili satu karakter, dan jenis BOOLEAN untuk mewakili nilai-nilai logis.
Pembahasan jenis karakter tunggal berisi gambaran tentang bagaimana
string diwakili dalam standar Pascal dan juga bagaimana mereka diwakili dalam implementasi
modern seperti Turbo Pascal dan UCSD Pascal (menggunakan tipe
STRING).
2-2 Jenis Numerik
Kisaran angka
yang dapat direpresentasikan sebagai bilangan bulat
(atau sebagai real) tergantung pada implementasi.
Untuk tipe INTEGER itu ditentukan oleh batas-batas sebagai berikut:
MAXINT bilangan
bulat positif maksimum
- (MAXINT + 1) bilangan bulat negatif maksimum
Sekali lagi,
nilai MAXINT tergantung pada pelaksanaannya. Bilangan real umumnya disimpan dalam
jumlah yang lebih besar dari byte daripada bilangan bulat,
tapi presisinya terbatas. Fraksi seperti
0.333333 dan 0.666666 dapat sebagai nilai-nilai
yang tepat 1/3 dan 2/3, terlepas dari berapa banyak
digit yang digunakan untuk mewakili jumlah.
Untuk alas an ini, tidak dianjurkan untuk menguji dua bilangan
real untuk kesetaraan. Sebaliknya, akan lebih baik untuk menguji untuk melihat apakah perbedaan antara kedua angka kurang dari beberapa jumlah kecil tertentu.
Dalam Turbo Pascal, ada jenis numeric tambahan,
yang diperkenalkan di bawah bagian ini.
·
Jenis angka dalam
Turbo Pascal
Dalam Turbo
Pascal tipe integer tambahan
(termasuk jenis INTEGER) di Turbo Pascal. Tipe ini tertera pada tabel 2-1 bersama dengan ukuran penyimpanan dan jangkauan maksimum nilai-nilai
yang dapat direpresentasikannya. Dalam satu
byte, kita dapat menyimpan baik dalam bentuk SHORTINT atau BYTE. BYTE ini sebenarnya merupakan Unsigned SHORTIN, yang berarti hanya
dapat berupa bilangan positif saja. Seperti
yang terlihat dalam tabel,
jangkauan maksimum nilai untuk tipe dua
kali lipat ketika tanda tidak digunakan.
Hal yang sama berlaku untuk jenis
INTEGER dan WORD, WORD adalah positif INTEGER dengan jangkauan maksimumnya sebesar dua kali lipat.
Tabel
2-1: Turbo Pascal tipe integer
Jenis Data
|
Ukuran (dalam byte)
|
Rentang
|
SHORTINT
|
1
|
Dari -128 sampai 127
|
BYTE
|
1
|
Dari 0 sampai 225
|
INTEGER
|
2
|
Dari -32768 sampai 32767
|
WORD
|
2
|
Dari 0 sampai 65535
|
LONGINT
|
4
|
Dari -2.147.483.648 sampai 2.147.483.647
|
Longint adalah bilangan bulat terbesar yang
dapat diwakili dalam
Turbo Pascal. Kita bisa menguji nilainya dengan menampilkan nilai
MAXLONGINT yang telah ditetapkan sebagai berikut:
Writeln (MAXLONGINT);
Perhatikan bahwa kisaran negativ dari jenis ditandatangani melebihi kisaran positif oleh salah satu (mis,
127 dan -128). Hal ini karena nol dihitung dengan angka positif.
Perhatian: di sini koma digunakan hanya untuk menyatakan jumlah besar dalam pembacaan. Kita tidak akan melihat koma dalam output dari program, koma juga tidak digunakan sebagai bagian dari konstanta
literal. Jadi, nomor 2,147,483,647
pasti ditetapkan
sebagai 2147483647.
Dalam
Turbo Pascal, ada juga jenis REAL tambahan
(termasuk jenis REAL) sebagaimana
ditunjukkan padaTabel 2-2. Untuk bilangan real, kolom baru akan ditambahkan ke table untuk menggambarkan akurasi nomor sebagai jumlah digit maksimum
yang tepat.
Tabel
2-2: Turbo Pascal jenis REAL
Jenis Data
|
Ukuran(dalam byte)
|
Presisi (hingga)
|
Rentang
|
SINGLE
|
4
|
7
|
Dari 0,71E-45sampai 3.4E+38
|
REAL
|
6
|
11
|
dari
2.94E-39 sampai 1.7E + 38
|
DOUBLE
|
8
|
15
|
dari
4.94E-324 untuk 1.79E + 308
|
EXTENDED
|
10
|
19
|
dari
3.3E-4932 untuk 1.18E + 4932
|
COMP
|
8
|
Bilangan bulatnya
|
±
9.2E + 18
|
Jika kita memeriksa
berbagai jenis data Tunggal kita akan menemukan bahwa itu cukup dekat dengan jenis
REAL, terutama di daerah jumlah yang sangat besar. Perbedaan utama antara keduanya
terletak pada penyimpanan ekonomis dari jenis data TUNGGAL (4 bytes dibandingkan
dengan 6), yang datang dengan mengorbankan presisi (7 digit dibandingkan dengan
11).
Jenis bilangan
Real selain REAL tidak tersedia kecuali menggunakan math coprocessor. Jenis
COMP benar-benar milik himpunan bilangan bulat, karena tidak menerima fraksi, tetapi
biasanya disebutkan antara real karena memerlukan penggunaan matematika yang coprocessor.
2-3 FungsiAritmatika
Pascal termasuk fungsi standar
yang dapat digunakan dalam ekspresi antara konstanta dan variabel.
Tabel 2-3 menunjukkan fungsi aritmatika standar yang dibagi menjadi tiga kelompok, yaitu :
ü fungsikonversi
ü fungsitrigonometri
ü fungsi Miscellaneous
Fungsi beroperasi pada
parameter yang disajikan dalam tanda kurungnya. Parameter
adalah ekspresi dari jenis tertentu
(perhatikan bahwa ekspresi mungkin variabel tunggal atau konstanta).
Sebelum menggunakan fungsi ini,
kita harus tahu jenis dari
parameter penggunaan fungsi dan jenis nilai
yang dikembalikan (yang juga merupakan jenis fungsi).
Fungsi konversi, misalnya, mengambil parameter nyata dan menghasilkan bilangan bulat.
Fungsi lain menggunakan baik
integer atau parameter nyata dan menghasilkan berbagai jenis.
Jenis nilai yang dikembalikan sangat penting ketika kita menetapkan fungsi untuk variabel.
Tabel
2-3: Fungsi Aritmatika Standar
Format Fungsi
|
Nilai Kembali
|
Tipe Parameter
|
Tipe Hasil
|
KONVERSI
FUNGSI:
|
|
|
|
ROUND
(x)
|
x
dibulatkan ke
integer terdekat
|
REAL
|
INTEGER
|
TRUNC (x)
|
X dengan fraksi bagian dipotong
|
REAL
|
INTEGER
|
TRIGONOMETRI FUNGSI:
|
|
|
|
Arctan
(x)
|
Arc tan x
|
REAL/INTEGER
|
INTEGER
|
Cos (x)
|
Cosinus x
|
REAL/INTEGER
|
INTEGER
|
Sin (x)
|
Sinus x
|
REAL/INTEGER
|
INTEGER
|
FUNGSI LAIN-LAIN
|
|
|
|
ABS (x)
|
Nilai absolut dari x
|
REAL/INTEGER
|
REAL/INTEGER
|
EXP (x)
|
Fungsi eksponensial dari x (ex)
|
REAL/INTEGER
|
REAL
|
LN (x)
|
Logaritma natural x
|
REAL/INTEGER
|
REAL
|
SQR (x)
|
Kuadrat dari x (x²)
|
REAL/INTEGER
|
REAL/INTEGER
|
SQRT(x)
|
Akar kuadrat dari x(^x)
|
REAL/INTEGER
|
REAL
|
*SEMUA SUDUT HARUS DINYATAKAN DALAM RADIAN
|
|
|
|
Lihatlah contoh-contoh ini:
SQR
(3) = 9
SQR
(2.5) = 6.25
SQRT
(9) = 3.00
ABS
(-28,55) = 28,55
LN
(EXP (1)) = 1.00
Arctan
(1) = 45 derajat
Perhatikan bahwa jenis hasil dikembalikan oleh fungsi SQR adalah sama dengan jenis
parameter,
tetapi fungsi SQRT
mengembalikan bilangan real yang terlepas dari parameter. Perhatikan juga bahwa parameter
fungsi mungkin saja berisi fungsi lain, seperti LN (EXP
(1)).
Output kembali dari fungsi terakhir (arctan) yang dikonversi menjadi derajat
di sini namun akan dikembalikan dalam radian jika tidak dikonversi. Program
yang dihasilkan ini ditunjukkan pada Contoh 2-1. Perhatikan deskripsi format,
yang digunakan untuk menghasilkan output
dalam format ini.
{-------------------------------
Contoh 2-1 -------------- -------------------
}
{Fungsi Aritmatika Standar}
PROGRAM
FungtionDemo
(OUTPUT);
CONST
Pi
= 3.14159; {Tidak perlu untuk bagian ini di Turbo Pascal}
BEGIN
Writeln
('SQR (3) =', SQR (3));
Writeln
('SQR (2,5) =', SQR (2.5): 0: 2); {Perhatikan
format}
Writeln
('SQRT (9) =', SQRT (9): 0: 2);
Writeln
('ABS (-28,55) =', ABS (-28,55): 0: 2);
Writeln
('LN (EXP (1)) =', LN (EXP (1)): 0: 2);
Writeln
('arctan (1) =', arctan (1) * 180 / Pi: 0: 0, 'derajat') {Perhatikan konversi dan format}
END.
{-------------------------------------------------
---------------------------
}
Power
Fungsi
Operator
listrik tidak ada dalam Pascal
seperti dalam beberapa bahasa lain (seperti
sebagai
Fortran dan Basic), tetapi Kita dapat membuat satu menggunakan fungsi aritmatika. Kita tentu saja
bisa menggunakanfungsi
SQR untuk menghasilkan kekuatan kecil, demikian:
SQR
(x) daya 2