• Tidak ada hasil yang ditemukan

Suatu nama konstanta secara otomatis akan mempunyai harga tetap yang terdefinisi pada saat nama konstanta tersebut didefinisikan dalam kamus. Jadi, menyebutkan nama konstanta secara otomatis akan memakai harga yang didefinisikan pada kamus tersebut. Tidak demikian halnya dengan nama informasi. Suatu nama informasi dapat dipakai dalam ekspresi jika harganya telah terdefinisi. Ada dua cara untuk mengisi suatu nama informasi dengan harga, yaitu dengan:

- assignment, atau

- dibaca dari suatu piranti masukan

Assignment

harga lama yang disimpan tidak lagi berlaku, yang berlaku adalah harga paling akhir yang diberikan.

Memrogram secara prosedural pada hakekatnya adalah memanipulasi nama yang mewakili alokasi memori tertentu dan memaipulasinya dengan algoritma yang ditulis. Manipulasi harga terhadap nama dilakukan dengan assignment.

ALGORITMA

<nama1> ← <nama2> { harga dari nama2 disalin ke nama2 }

{ harga nama1 sama dengan harga nama2

setelah instruksi ini }

<nama> ← <konstanta> { harga konstanta diisikan ke nama } <nama> ← <ekspresi> { hasil perhitungan ekspresi diisikan ke

nama }

dengan syarat:

- bagian kiri dan bagian kanan tanda pemberian harga (←) bertype sama,

- <nama> dan <nama1> (bagian kiri tanda ← harus merupakan nama informasi, tidak boleh nama konstanta, type, fungsi atau prosedur,

- nama yang tertulis di bagian kanan tanda ← (misalnya nama2 atau nama konstanta atau nama yang dipakai dalam ekspresi) boleh berupa nama informasi, nama fungsi, nama konstanta,

- semua nama yang dipakai dalam assignment tidak boleh berupa nama type atau nama prosedur.

Input

Selain dengan assignment, suatu harga dapat diisikan ke suatu nama informasi melalui

pembacaan harga tersebut dari piranti masukan (keyboard, mouse, scanner, dan sebagainya). Disebut “dibaca” karena arah dari pengisian harga yaitu seakan-akan komputer “membaca” harga yang diberikan pengguna. Pemberian harga dari piranti masukan ini mencakup konsep “menerima nilai” dari piranti masukan apapun, misalnya menerima nilai besaran temperatur dari sebuah sensor temperatur yang dihubungkan dengan komputer di suatu ruangan.

ALGORITMA

input(list-nama)

dengan syarat:

- list nama adalah satu atau lebih nama informasi,

- nama yang muncul pada list-nama hanya boleh berupa nama informasi, dan tidak boleh nama lain (nama konstanta, type, fungsi atau prosedur).

Output

Suatu harga yang disimpan dalam memori komputer (diacu berkat definisi nama informasi (variabel), nama konstanta atau konstanta) harus dapat dikomunikasikan ke dunia luar untuk diinterpretasikan oleh pemakai program. Dalam hal ini, harga harus dapat dituliskan ke suatu piranti keluaran, misalnya layar, printer.

Instruksi algortimik yang disediakan untuk menuliskan nama informasi adalah instruksi penulisan atau output. Instruksi output tidak mengubah nilai yang disimpan.

ALGORITMA

output(<list-nama>)

{ Semua harga yang tersimpan dalam setiap nama yang ada pada list-nama akan dituliskan pada piranti keluaran sesuai dengan urutan penulisan nama. Perhatikan bahwa yang dituliskan ke piranti keluaran hanya harga yang disimpan saja. Lihat contoh. }

output(<konstanta>)

{ Harga konstanta ke piranti keluaran } output(<ekspresi>)

{ Harga hasil perhitungan ekspresi dituliskan ke piranti

keluaran }

output(<list-nama>, <konstanta>, <ekspresi>)

{ Yang dituliskan ke piranti keluaran adalah semua harga sesuai dengan urutan penulisan nama, konstanta,

ekspresi }

dengan syarat :

- list nama adalah satu atau lebih nama : boleh nama informasi, nama konstanta

atau hasil pemanggilan/aplikasi fungsi. Khusus untuk pemanggilan fungsi, lihat pemakaian fungsi.

- nama-nama dalam list-nama tidak boleh berupa nama type atau prosedur.

- nama yang akan dituliskan sudah terdefinisi harganya. Jika suatu nama informasi, didefinisikan dengan assignment atau instruksi input.

Ekspresi

Ekspresi suatu “rumus perhitungan", yang terdiri dari operan dan operator. Operator

yang dituliskan harus didefinisikan untuk mengoperasikan operan ber-type tertentu. Hasil perhitungan adalah harga dengan domain yang memenuhi type operator yang bersangkutan.

Operan harus mempunyai harga, karena itu dapat berupa konstanta, nama (dalam hal ini yang dipakai dalam perhitungan adalah harga yang dikandung nama yang bersangkutan), hasil pengiriman suatu fungsi atau merupakan suatu ekspresi.

Ekspresi biner adalah ekspresi dengan operator biner (membutuhkan dua operan) dapat dituliskan dalam 3 macam notasi, yaitu:

a. Notasi infix: operator di tengah operan1 operator operan2 Contoh:

13 * 5

((3 * 5) + (4 div 7) )- (a * b) b. Notasi prefix: operator di awal

operator operan1 operan2 Contoh :

* 13 5

- + * 3 5 div 4 7 * a b adalah - ( ( + (* 3 5) (div 4 7) ) (* a b) ) c. Notasi suffix/polish: operator di akhir

operan1 operan2 operator Contoh :

13 5 *

3 5 * 4 7 div a b * + - adalah (3 5 *) ( ( 4 7 div) ( a b * ) + ) -

Untuk selanjutnya, pada kuliah ini ekspresi dituliskan dalam bentuk infix, yang sesuai dengan penulisan ekspresi aritmatika sehari-hari. Ada bahasa pemrograman memakai ekspresi infix, prefix atau postfix. Untuk menghindari kerancuan prioritas perhitungan, ekspresi ditulis dengan tanda kurung yang lengkap.

Ekspresi akan dihitung (dengan beberapa perjanjian jika terjadi ketidak-cocokan type maupun ketelitian). Hasilnya sesuai dengan type ekspresi, selanjutnya dapat dimanipulasi, ditampilkan pada piranti keluaran atau disimpan dalam suatu nama. Type ekspresi sesuai dengan type hasil. Contoh type ekspresi untuk type dasar adalah:

- logika (boolean)

- numerik

- karakter dan string

Contoh Ekspresi Boolean

Diberikan sebuah kamus dan algoritma untuk mendefinisikan nama variabel

KAMUS

{ Nama Konstanta }

constant benar : boolean = true { Nama Informasi }

Found : boolean Flag : boolean ALGORITMA

{ Pada bagian ini telah didefinisikan sehingga nilai berikut: Harga Found adalah true dan Flag adalah false }

Ekspresi boolean Hasil Keterangan

true and false false true or false true benar xor true false

Flag false Flag = false

not Found false Found = true

Flag and Found false Flag = false, Found = true

Contoh Ekspresi Numerik

Diberikan sebuah kamus dan algoritma untuk mendefinisikan nama variabel:

KAMUS

{ Nama Konstanta }

constant PI : real = 3.14159 constant Faktor : integer = 3 { Nama Informasi }

i, j : integer Jum : integer x, y : real ALGORITMA

{ Pada bagian ini telah didefinisikan sehingga nilai berikut: Harga i adalah 5, j adalah 0, Jum adalah 4, x adalah 0.0, dan y adalah 7.5 }

Maka berikut ini adalah contoh ekspresi numerik dan hasilnya:

Ekspresi Hasil Keterangan

1 * 5 5 Ekspresi integer

1 + 3 * 5 16 Ekspresi integer

1 / 3 0.333 Ekspresi integer, hasil riil

11 > 3 true Ekspresi relasional untuk integer

11 > 21 false Ekspresi relasional untuk integer

10 mod 3 1 Ekspresi integer

10 div 3 3 Ekspresi integer

1+7 div 3 2 Ekspresi integer

1./3. 0.333 Ekspresi real

10./2. 5. Ekspresi real

i + 1 6 i = 5, ekspresi integer

i + j 5 i = 5 dan j = 0, ekspresi integer

x * PI 0.0 x = 0.0 dan PI = 3.1415, ekspresi riil

i + x ?? Operan tidak sejenis

x + y 0.0 x = 0.0 dan y = 7.5, ekspresi riil

KAMUS

{ Nama Konstanta }

constant blank : character = ’ ‘ { Nama Informasi }

CC : character str1, str2 : string ALGORITMA

{ Pada bagian ini telah didefinisikan sehingga nilai berikut: Harga CC adalah ‘A’, str1 adalah “AKU”, dan str1 adalah “X” }

Ekspresi Hasil Keterangan

CC = ‘X’ false Ekspresi pembandingan

blank ’ ‘ Nilai dari konstanta

str1 & str2 “AKUX” Konkatenasi

CC o str1 “AAKU” Operasi menambah karakter di awal

str1 • CC “AKUA” Operasi menambah karakter di akhir

Latihan Soal

Didefinisikan nama dalam kamus sebagai berikut:

KAMUS

constant Pi : real = 3.1714

GajiTotal, GajiPokok, Tunjangan, PotGaji : real MID1, MID2 : integer

Urutan, ranking : integer CC1, CC2 : character S1, Message : string Found : boolean

function AddXY (X, Y : integer) → integer { Menghasilkan penjumlahan X+ Y }

Berikut ini adalah contoh ekspresi dalam notasi infix untuk kamus dia atas. Periksalah apakah ekspresi yang dituliskan benar. Jika benar tentukan jenis hasilnya, jika salah koreksilah.

Ekspresi Jenis hasil dan komentar

Urutan – 1 CC1 or CC2

Found and (Urutan>100)

(Urutan ^ 2) +GajiTotal+ADDXY(MID1,MID2) GajiPokok + Tunjangan - PotGaji

Urutan * 2 /ranking Message & S1 Message = “HELLO”

Dokumen terkait