Kamis, 05 Oktober 2023

Belajar Autolisp dengan Praktek Langsung - 4. Menyimpan Nilai (variabel) dengan fungsi set/ setq

 Pada program sebelumnya 

(defun c:f2c()

(+ (* (/ 9.0 5.0) (getreal "Berapa Fahrenheit : ")) 32)
)

Pada fungsi (getreal "Berapa Fahrenheit : "), nilai yang kita masukan/ketik, bisa kita simpan dalam suatu variabel, misalnya f, sehingga program yang dibuat lebih mudah terbaca dan bisa digunakan berulang-ulang. Fungsi untuk menyimpan nilai kedalam suatu variabel yaitu set dan setq.

Fungsi Set

(defun c:f2c()

(set 'f  (getreal "Berapa Fahrenheit : "))

(+ (* (/ 9.0 5.0)  f) 32)
)



Fungsi Setq

(defun c:f2c()

(setq f  (getreal "Berapa Fahrenheit : "))

(+ (* (/ 9.0 5.0)  f) 32)
)

sepintas mirip ya, perhatikan tanda petik (quote) sebelum huruf f pada fungsi set. Setq sama saja dengan set quote. Pada prakteknya nanti seringnya fungsi setq ini yang sering dipakai, tetapi fungsi set sebenarnya lebih fleksible (karena dengan fungsi set bisa membuat variabel saat program berjalan, atau kerennya saat "run time")

contoh lain, misal kita ingin menghitung luas empat persegi panjang

(defun c:lpp()

(setq p  (getreal "Panjang : "))

(setq l  (getreal "lebar : "))

(* p l)
)

variabel yang sudah kita buat pada contoh diatas (f, p, l) tidak hilang setelah program selesai, bisa dicek dengan perintah !f, !p, !l pada command prompt.



Variabel seperti ini istilahnya adalah variabel global. Variabel global ini,  untuk alasan "security pemrograman", mestinya secara otomatis hilang saat program selesai ( atau memang jika betul-betul diperlukan baru tidak hilang). Variabel yang hilang saat program (atau fungsi) saat selesai dijalankan dinamakan variable lokal, dalam autolisp dibuat dengan cara menulisan variabel-variabel tersebut di dalam parameter fungsinya setelah tanda slash\ forward slash (/).

contoh 1:

(defun c:f2c( / f)

(setq f  (getreal "Berapa Fahrenheit : "))

(+ (* (/ 9.0 5.0)  f) 32)
)

contoh 2 :

(defun c:lpp( / p l)

(setq p  (getreal "Panjang : "))

(setq l  (getreal "lebar : "))

(* p l)
)








Tidak ada komentar:

Posting Komentar