Kenan k?l??aslan

  • Baca Hesabı
  • Sürtünme Kaybı
  • Diferansiyel Denklem
  • Denklem Çözümü
lisp

Listeler

Lispte listeler dizi yerine kullanılır. Aslında en güçlü olduğu yer listelerdir. LISP List Processing kısaltmasıdır. Listeler sayılardan, metinlerden, variable'lerden ve başka listelerden oluşabilir. Liste içinde liste olabilir. Liste elemanları arasında boşluk vardır. Liste örneği aşağıdadır.

(2 2.3 "kenan" (4.2 3.4) "istanbul")

Nokta bir listedir.

(setq pt1 (getpoint "\nBir nokta seçiniz : "))

Autolisp'te aşağıdakine benzer bir liste elde edilir. x, y, z koordinatlarını veren bir listedir.

(128.64 36.23 0.0) 

x, y, z koordinatlarını okumak için bir kaçtane liste fonksiyonu vardır.

Car

Car fonksiyonu, listenin ilk elemanını bize verir.

Örneğin,

(setq x (car pt1))

Bize pt1 noktasının x koordinatını aşağıdaki gibi verir,

(128.64)

Cdr

Car fonksiyonu, listenin ikinci elemanından sonraki listeyi verir.

Örneğin,

(setq b (car pt1))

Bize pt1 noktasının (y, z) koordinatını aşağıdaki gibi verir,

(36.23 0.0)

Cadr

Car fonksiyonu, listenin ikinci elemanını verir.

Örneğin,

(setq y (car pt1))

Bize pt1 noktasının (y, z) koordinatını aşağıdaki gibi verir,

(36.23)

Cddr

Car fonksiyonu, listenin üçüncü elemandan sonrasını verir.

Örneğin,

(setq c (car pt1))

Caddr

Car fonksiyonu, listenin üçüncü elemanını verir.

Örneğin,

(setq z (car pt1))

Bize pt1 noktasının z koordinatını aşağıdaki gibi verir,

(0.0)

nth

nth fonksiyonu, listenin n'inci elemanını verir. İlk eleman no sıfırdır. Aşğıdaki gibi kullanılır.

(nth num list)

Örneğin

(setq d '("M10" "M20" "M30" 10.25))
(setq e (nth 0 d))

Çalıştırdığımızda aşağıdaki sonucu verir.

("M10")

ve benzer olarak

(setq f (nth 3 d))

Çalıştırdığımızda aşağıdaki sonucu verir.

(10.25)

Diğer Liste İşlemleri

Bilinen elemanlardan ve değişkenlerden de liste oluşurulabilir. Aşağıda iki dennklem var. Bunlardan liste oluşturalım.

(setq a 210.0)
(setq b 500.0)

Biz a ve b değerlerinden yeni bir liste oluşturalım. (list) liste oluşturan fonksiyondur. Örneğin

(setq c (list a b))

Çalıştırdığımızda aşağıdaki sonucu verir.

(210.0 500.0)

benzer olarak yukarıdaki ifadeyi, aşağıdaki gibi yazarsak aynı sonucu buluruz.

(setq c '(a b))

Aşağıdaki örneği inceleyiniz.

(defun c:rec ( / pt1 pt2 pt3 pt4)
 
	(setq pt1 (getpoint "\nilk köşeyi seç: "))
	;ilk noktayı getirir
 
	(setq pt3 (getcorner pt1 "\nİkinci köşeyi seç: "))
	;bu üçüncü noktaı getirir.
 
	(setq pt2 (list (car pt1) (cadr pt3)))
	;ikinci noktayı tanımladık
 
	(setq pt4 (list (car pt3) (cadr pt1)))
	;dördüncü noktayı tanımladık
 
	(command "Line" pt1 pt2 pt3 pt4 "c")
	;dikdörtgeni çizdik
 
  (princ)
 
);defun
;**********************************************************
  
(setq pt2 (list (car pt1) (cadr pt3)))

Yukarıdaki ifadeyi inceleyelim. (car pt1) bize pt1 noktasının x koordinatını verir. (cadr pt3) bize pt3 noktasının y koordinatını verir. (list (car pt1) (cadr pt3)) ifadesi bize, pt1'in x, pt3'ün y koordinatından yeni bir liste (yani yeni bir nokta) oluşmasını sağladı.

Append

İki listeyi birleştirir.

(append '(12.0 15.5) '("M20" "M30))

Aşağıdaki çıktıyı verir.

(12.0 15.5 "M20" "M30")

Last

Bir listenin son elemanını verir.

(last '("M20" "M33" "M30"))

Aşağıdaki çıktıyı verir.

("M30")

Length

Bir listenin son elemanını verir.

(length '("M20" "M33" "M30"))

Aşağıdaki çıktıyı verir.

(3)

Member

Bir elemanın liste içinde olup olmadığını verir. Eğer elemanı ise, listenin bu elemandan sonrasını verir. Eğer elemanı değilse nill değer verir.

(member 'c '(a b c d e f))

Aşağıdaki çıktıyı verir.

(c d e f)

Subst

Bir listedeki bir eleman yerine, başka elemanlar koymak için kullanılan fonksiyondur.

ifade : (subst yeniİfade eskiİfade liste)
(setq liste '(a b c d e c))
	  
(subst 'f 'c liste)

liste içindeki c değeri yerine f değerini koyar. Çıktı aşağıdadır.

(a b f d e f)
beyaz_sayfa_en_alt_oval