1372826956:AAFe2Py65GSQkfGiRnXuOQ-eD9yXcwMv988

Örneklerle Fonksiyon Tanımları #9-Liste Yönetimi

sekil-01


car      Bir listeden ilk elemanı geri döndürür. Bir nokta (üç koordinata sahip bir liste) ile kullanıldığı zaman, car fonksiyonu X koordinatını süzer.

(car (list 2 4 6 8))  2 olarak döner (car (list 2.75 8.875 3.00))  2.75 olarak döner (car (list (list 1 2) (list 3 4) (list 5 6) (list 7 8)))  (1 2) olarak döner

cadr    Bir listeden ikinci elemanı geri döndürür. Bir nokta (üç koordinata sahip bir liste) ile kullanıldığı zaman, cadr fonksiyonu Y koordinatını süzer.

(cadr (list 2 4 6 8))  4 olarak döner

(cadr (list 2.75 8.875 3.00)) 8.875 olarak döner

(cadr (list (list 1 2) (list 3 4) (list 5 6) (list 7 8)))  (3 4) olarak döner


caddr  Bir listeden üçüncü elemanı geri döndürür. Bir nokta (üç koordinata sahip bir liste) ile kullanıldığı zaman, caddr fonksiyonu Z koordinatını süzer.

(caddr (list 2 4 6 8)) 6 4 olarak döner

(caddr (list 2.75 8.875 3.00))  3.00  4 olarak döner

(caddr (list (list 1 2) (list 3 4) (list 5 6) (list 7 8)))  (5 6) 4 olarak döner


cdr      Bir listenin birinci elemanı hariç tüm elemanlarını geri döndürür.

(cdr (list 2 4 6 8))  (4 6 8) olarak döner

(cdr (list (list 1 2) (list 3 4) (list 5 6) (list 7 8)))  ((3 4) (5 6) (7 8)) olarak döner

(cdr (list 9)) hiçbir şey geri dönmez


car“, “cadr,” v.b. isimler hafızada depolanan liste şekillerinden türetilmişlerdir. Bir listedeki her bir eleman iki bitişik kayıtta depolanmaktadır. — an address register and a decrement register. Adres kaydı bir değer tutmakta ve azaltım kaydı sonraki kayıt çiftini işaretleyen bir işaretçi tutmaktadır. “cdr” kelimesi azalım kaydının içeriği anlamına gelirken; “car” kelimesi adres kaydının içeriği anlamına gelir. Bu iki fonksiyon temel iki fonksiyon olup; diğer tüm benzer fonksiyonlar bu iki fonksiyonun çeşitli şekillerdeki birleşimlerinden türetilmişlerdir. Örneğin, cadr kelimesi (car (cdr ___)) ifadesinin kısaltmasıdır ve caddr kelimesi ise, (car (cdr (cdr ___))) ifadesinin kısaltmasıdır.

 (setq L1 (list 1 2 3 4 5 6 7 8 9)) ifadesinden sonra (car L1) 1 olarak döner (cdr L1) (2 3 4 5 6 7 8 9) olarak döner

(car (cdr L1))  2 olarak döner (sonraki örnekle karşılaştırın)

(cadr L1) 2 olarak döner (önceki örnekle karşılaştırın) (car (cdr (cdr L1))) 3 olarak döner

(sonraki örnekle karşılaştırın) (caddr L1) 3 olarak döner (önceki örnekle karşılaştırın)

(car (cdr (cdr (cdr L1)))) 4 olarak döner (sonraki örnekle karşılaştırın) (cadddr L1) 4 olarak döner (önceki örnekle karşılaştırın)

AutoLISP sadece car ve cdr temel fonksiyonlarını değil; aynı zamanda aşağıda görüldüğü üzere 4 adete kadar a harfinin ve/veya d harfinin birleşiminden oluşan yerleşik fonksiyonları da içermektedir.

c a d r ………… c aa  ad  da  dd r ………… c aaa  aad  ada  add  daa  dad  dda  ddd r ………… c

aaaa  aaad  aada  aadd  adaa  adad  adda  addd  daaa  daad  dada  dadd  ddaa  ddad  ddda  dddd

r

Gömülü listelerle uğraşırken, car, cdr fonksiyonları ve bunlardan türetilmiş fonksiyonların tümü  aşağıdaki örneklerde görüldüğü üzere en üst seviye elemanlar ile ilgilenmektedirler.

 (setq L2 (list “bir” (list “iki” “üç”) “dört”)) ifadesinden sonra

(cdr L2)  ((“iki” “üç”) “dört”) olarak döner

(cadr L2) (“iki” “üç”) (caadr L2) “iki” olarak döner

(cadadr L2) “üç” olarak döner

Nokta çiftleri normal listelerden daha farklı depolanmaktadırlar. Bunlar iki bitişik kaydı işgal etmekle birlikte; ikinci kayıt işlemciden ziyade bir değeri tutmaktadır. Bu sebeple, bir nokta çifti ile uğraşırken, aşağıdaki örnekte görüldüğü üzere cdr fonksiyonu ikinci elemanı bir atom (tekil eleman) olarak geri döndürür.

 (5 . 6) koordinatındaki noktayı üreten ve bu noktayı L3 değişkenine atayan (setq L3 (cons 5 6)) ifadesinden sonra

(cdr L3) 6 olarak geri döner (dönen değerin liste yerine bir atom (tekil eleman) olduğuna dikkat edin)

nth      Bir listenin neninci elemanını geri döndürür; listenin ilk elemanın sıfırıncı eleman olarak numaralandırılır.

(setq L1 (list 2 4 6 8)) ifadesinden sonra

(nth 0 L1) 2 olarak geri döner (nth 2 L1)  6 olarak geri döner

(nth 4 L1) hiçbir şey geri dönmez (çünkü listede 3 eleman vardır.4. eleman yoktur.

(setq L2 (list “a” (list “b” “c”) “d” “e” (list “f” “g”))) ifadesinden sonra

(nth 1 L2)  (“b” “c”) olarak geri döner

(nth 5 L2)  hiçbir şey geri dönmez


last      Listenin son elemanını geri döndürür.

(last (list “bir” “iki” “üç” “dört”)) “dört” olarak geri döner

(setq L1 (list 9 8 7)) ifadesinden sonra (last L1) 7 olarak geri döner


reverse           Bir listeyi elemanlarını terse çevirerek geri döndürür.

(reverse (list 5.0 10.0 15.0)  (15.0 10.0 5.0) olarak geri döner

(reverse (list 1 (list 2 3) 4 5))  (5 4 (2 3) 1) olarak geri döner


list      Bir veya daha fazla sayıda ifadeyi bir listede gruplar ve bu listeyi geri döndürür.

(list 2.5 3.5 0.0)  (2.5 3.5 0.0) olarak geri döner. Bu örnek X, Y ve Z koordinatlarını gruplayarak bir noktayı tanımlama kullanımı için, tipik bir örnektir.

(list “a” (list “b” “c”))  (“a” (“b” “c”)) olarak geri döner


cons    Bir listenin başlangıcına bir eleman ekler.

(cons “tek” (list “buzlu” “rakı”))  (“tek” “buzlu” “rakı”) olarak geri döner

(setq a 11 b (list 12 13 14)) ifadesinden sonra

(cons a b) (11 12 13 14) olarak geri döner

cons fonksiyonu ikinci argüman bir atom (tekil eleman) olduğu zaman, (X,Y koordinatlı) nokta yaratır.

(cons “m” “n”)  (“m” . “n”) olarak geri döner

(cons 40 0.5)  (40 . 0.5) olarak geri döner

(setq w 1.25) ifadesinden sonra

(cons 40 w)  (40 . 12.5) olarak geri döner


append           İki veya daha fazla sayıda listeyi tek bir liste olarak birleştirir. Tüm argümanlar liste olmak zorundadır.

(append (list 1 2 3) (list 4 5)) (1 2 3 4 5) olarak geri döner

Yukarıdaki örnek ((1 2 3) (4 5)) olarak geri dönecek olan (list (list 1 2 3) (list 4 5)) örneğinden farklıdır.

(setq L1 (list “sesini” “duyuyorum”) L2 (list “ama” “seni”) L3 (list “göremiyorum”)) ifadesinden sonra

(append L1 L2 L3)  (“sesini” “duyuyorum” “ama” “seni” “göremiyorum”) olarak geri döner


length Bir listedeki üst düzey elemanların sayısını belirten bir tam sayı geri, döndürür.

(length (list 88 87 86 85)) 4 olarak geri döner

(length (list 1 (list 2 3) 4 (list 5 6 7))) 4 olarak geri döner

(length  ()) 0 olarak geri döner


member         Bir listede bir ifadeyi araştırır ve ifadeyi ve listenin geri kalanını içeren bir liste geri döndürür.

(member “b” (list “a” “b” “c” “d”))  (“b” “c” “d”) olarak geri döner

(member “b” (list “e” “f” “g” “h”)) hiçbir şey geri dönmez

(member “b” (list (list “a” “b”) (list “c” “d”)))  hiçbir şey geri dönmez. İfadenin bulunabilmesi için, ifadenin listede bir üst seviye ifade olma zorunluluğu vardır.


assoc   Verilen anahtar kelimeyi bir listede arar ve listedeki bu anahtar kelime ile ilişkili alt listeyi geri döndürür.

(setq carlist (list (list “yıl” “2006”) (list “Audi” “Q7”) (list “model” “jip””))) (assoc “Audi” carlist)  (“Audi” “Q7”) olarak geri döner


subst   İçerisindeki bir elemanı verilen bir eleman ile değiştirerek listeyi geri döndürür.

(subst 9 3 (list 1 2 3 4 5)) (1 2 9 4 5) olarak geri döner

(subst 9 6 (list 1 2 3 4 5)) (1 2 3 4 5) olarak geri döner

(subst (list “p” “q” “r”) “c” (list “a” “b” “c” “d” “e”)) (“a” “b” (“p” “q” “r”) “d” “e”) olarak geri döner


acad_strlsort Verilen dizge listesini esas alarak verilen bu listeyi içeren listeyi alfabetik olarak sıralayarak geri döndürür.

(setq L1 (list “ceset” “autocad” “deli” “beyin”)) ifadesinden sonra

(acad_strlsort L1)  (“autocad ” “beyin” “ceset” “deli”) olarak geri döner

 

Hakkında Sertan Türkan

AutoCAD Beyni

Bunu da Kontrol edin

Revitte Altlıklar “Underlay” Hakkında

Revit’te koordinasyon ve inşaat için farklı kotlardaki bileşenlerin ilişkisini anlamanız gerektiğinde Altlıklar “Underlays” yararlıdırlar. Video: …

Bir cevap yazın

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Yardıma mı ihtiyacınız var? Chat with us
Bir görüşme başlatmak için lütfen önce gizlilik politikamızı kabul edin.