• Tidak ada hasil yang ditemukan

Nilai, Ekspresi, Input & Output

Komputer mampu melakukan operasi aritmetika dan logika terhadap nilai yang disimpan di memori. Di dalam program, nilai disimpan dalam suatu nama “variabel”, sehingga dengan mengacu kepada nama, dapat dilakukan operasi yang diinginkan. Nilai yang disimpan juga dapat diperoleh dari hasil pembacaan dari piranti masukan, serta dapat dikomunikasikan ke dunia luar melalui piranti keluaran.

Pada bagian ini dijelaskan notasi yang dipakai untuk mendefinisikan dan melakukan manipulasi nilai.

Nilai (Harga)

Nilai atau harga adalah suatu besaran bertype yang telah dikenal.

Harga dalam suatu algoritma dapat diperoleh dari :

- isi suatu nama, yaitu nama informasi atau nama konstanta - hasil perhitungan suatu ekspresi

- hasil yang dikirim suatu FUNGSI

- konstanta bernama atau tanpa diberi nama yang dipakai langsung Harga dapat dimanipulasi:

- diisikan ke NAMA informasi (nama variabel) yang mempunyai type sesuai dengan harga tersebut dengan instruksi “assignment”

- diacu saja dari suatu nama, untuk dipakai dalam perhitungan atau ekspresi - dibandingkan, sesuai dengan operator pembanding yang tersedia

- dituliskan ke piranti keluaran (layar, printer, menyalakan signal, ...) - dipakai dalam ekspresi , tergantung typenya

Pengisian Nilai

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

Assignment adalah instruksi primitif algoritmik untuk menyimpan harga pada suatu nama informasi yang isinya boleh bervariasi (“variabel”), dengan perkataan lain adalah memberikan harga pada suatu nama variabel. Dengan pemberian harga ini, harga lama yang disimpan tidak lagi berlaku, yang berlaku adalah harga paling akhir yang diberikan.

Memprogram 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, dsb). 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 dihhubungkan 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 dituliskan 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 bertype 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 ybs.), hasil pengiriman suatu fungsi atau merupakan suatu ekspresi.

Ekspresi uner adalah ekspresi dengan operator uner, yaitu operator yang hanya membutuhkan satu operan.

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