Bölüm indeksi
Makaleler
Sık Sorulan Sorular
Download
İzle Öğren
Eğitim Videoları
AutoCAD Videoları
3ds Max Videoları
AutoCAD Kursu Ders Videoları
AutoCAD Kursu 2 Boyut Dersleri
AutoCAD Kursu 3 Boyut Dersleri
Proje Dökümanları
Çizimler
Mimari Çizimler
Elektrik
Doğalgaz
Harita Çizimleri
Tesisat
Ferforje
Makine
3 Boyut
3ds Max
ArchiCAD
Solidworks
Diğer Çizimler
Lispler
Menüler
Fontlar
FreeMUST
Eğitim Dökümanları
Genel Kategori
Çizim Programları
IES Dökümanları
AutoCAD
AutoLISP
Konu Anlatımları
1) AutoLISP Nedir?
2) AutoLisp dos.
3) Lisp Dosyala.
Autolisp komutl.
Autolisp te tip.
entmake fonksiy.
entmake fonksiy.
entmake fonksiy.
entmake fonksiy.
entmake fonksiy.
Liste Fonksiyon.
entmake fonksiy.
Liste Fonksiyon.
entmake fonksiy.
Liste Fonksiyon.
Örnek Lispler
Sürümler
Menüler
DWF Dosyaları
Programlama
AutoCAD Püfleri
Eğitim
AutoCAD Eğitimi
Karma 3 Boyut Dersleri
Adım Adım AutoCAD Eğitimi
01.Bölüm
02.Bölüm
03.Bölüm
04.Bölüm
05.Bölüm
06.Bölüm
07.Bölüm
08.Bölüm
09.Bölüm
10.Bölüm
11.Bölüm
12.Bölüm
Uygulamalar
Adım Adım 3 Boyut Eğitimi
Kariyer
3ds Max
Attribute lar
Sık Sorulan Sorular
Download
İzle Öğren
Eğitim Videoları
AutoCAD Videoları
3ds Max Videoları
AutoCAD Kursu Ders Videoları
AutoCAD Kursu 2 Boyut Dersleri
AutoCAD Kursu 3 Boyut Dersleri
Proje Dökümanları
Çizimler
Mimari Çizimler
Elektrik
Doğalgaz
Harita Çizimleri
Tesisat
Ferforje
Makine
3 Boyut
3ds Max
ArchiCAD
Solidworks
Diğer Çizimler
Lispler
Menüler
Fontlar
FreeMUST
Eğitim Dökümanları
Genel Kategori
Çizim Programları
IES Dökümanları
AutoCAD
AutoLISP
Konu Anlatımları
1) AutoLISP Nedir?
2) AutoLisp dos.
3) Lisp Dosyala.
Autolisp komutl.
Autolisp te tip.
entmake fonksiy.
entmake fonksiy.
entmake fonksiy.
entmake fonksiy.
entmake fonksiy.
Liste Fonksiyon.
entmake fonksiy.
Liste Fonksiyon.
entmake fonksiy.
Liste Fonksiyon.
Örnek Lispler
Sürümler
Menüler
DWF Dosyaları
Programlama
AutoCAD Püfleri
Eğitim
AutoCAD Eğitimi
Karma 3 Boyut Dersleri
Adım Adım AutoCAD Eğitimi
01.Bölüm
02.Bölüm
03.Bölüm
04.Bölüm
05.Bölüm
06.Bölüm
07.Bölüm
08.Bölüm
09.Bölüm
10.Bölüm
11.Bölüm
12.Bölüm
Uygulamalar
Adım Adım 3 Boyut Eğitimi
Kariyer
3ds Max
Attribute lar
AutoCAD Genel
AutoCAD Eğitimi
3ds Max
Özel Yazılımlar
- aLd Fonksiyonu
- TCad Metraj
- FacadeCAD
- Cephe Kot
- HQ Library
- FreeMUST
- ALS/Pasdoc.A
- Excele Tablo Aktaran Lisp
- Nokta Koordinat Tablosu
- Plana İç Ölçü Verme
- Toplam Alanı Yazan Lisp
- Alan ve Çevre Yazan Lisp
- Koordinat, Alan ve Çevre Tablo Halinde Yazma
- AutoCAD'de Nokta Dökümü
- Hava Kanalı Metraj Fonksiyonu
- Boru Metrajı Fonksiyonu
- OptiCAD
- Özel Çizgi Tipi Oluşturmak
- AutoCAD te Koni Açılımı Nasıl Yapılır?
- PolyLine & Point Objelerinden Aplikasyon Çizelgesi
- Z değerini sıfırlama
- AutoCAD te Polyline üzerine uzunluk yazdırma
- Sıralı numaralandırma
- Yazı içindeki sayıları toplama
- Karmaşık Path ile Loft Uygulaması
- Çoklu Fillet Fonksiyonu
- Ölçekli Türk Bayrağı çizen lisp
- Duvar-Lento-Kapı-Pencere Metraj Programı
Liste Fonksiyonları-3
Listelerde Sıralama ve lambda fonksiyonu
shark - 07.02.2006 10:59
shark - 07.02.2006 10:59
Visual Lisp'te listelerde siralama fonksiyonu olarak vl-sort kullanilir.
Örnek :
(setq liste1 (list 5 2 7 3 8))
(vl-sort liste1 '<)
Sonuc :
(2 3 5 7 8)
Burada vl-sort fonksiyonuna verdigimiz 1. parametre siralamak istedigimiz liste, 2. parametre de karşılaştırma fonksiyonudur. Burada karşılaştırma fonksiyonu olarak < fonksiyonu kullanılmış ve liste1 listesinin küçükten büyüğe doğru sıralanmış hali elde edilmiştir. < fonksiyonu yerine > fonksiyonunu ya da kendi tanımladığımız başka bir karşılaştırma fonksiyonunu kullanabiliriz.
Ancak; elimizde, sayı çiftlerini içeren şöyle bir liste olsun:
(setq liste2 (list (list 15 7) (list 9 12) (list 38 4)))
((15 7) (9 12) (38 4))
Biz bu listeyi, sayi ciftlerinden 1.sine göre sıralamak isteyelim. Bunu vl-sort fonksiyonu ile yapmak istersek:
(vl-sort liste2 '<)
; error: bad argument type for compare: (38 4) (9 12)
gibi bir hata ile karşılaşırız. Çünkü karşılaştırma fonksiyonu olarak verilen < fonksiyonu; (38 4) ve (9 12) gibi bir yapıyı karşılaştırmak istemiş ve bunun mümkün olmadığını bildiren bir hata mesajını bildirmiştir.
Bunu aşmak için kendi karşılaştırma fonksiyonumuzu tanımlamamız gereklidir.
(defun karsilastir(a b)
(< (car a) (car b))
)
sonra yazdığımız fonksiyonu kullanarak vl-sort ile sıralayalım:
(vl-sort liste2 'karsilastir)
((9 12) (15 7) (38 4))
Aynı şeyi, yeni bir fonksiyon tanımlamak yerine lambda fonksiyonu ile yapabiliriz.
(vl-sort liste2
(function (lambda (a b)
(< (car a) (car b))
)
)
)
((9 12) (15 7) (38 4))
aynı sonucu elde ettik.
Burada; daha önce karsilastir ismiyle tanımladığımız fonksiyonu vl-sort içinde lambda fonksiyonu olarak tanımladık. Lambda fonksiyonunu kullanarak, bir daha işimize yaramayacak bir fonksiyonu (karsilastir fonk.) ayrıca tanımlamaktan kurtulduk ve yazdığımız kod daha okunur/anlaşılır bir kod oldu.
Lambda fonksiyonları Lisp programlama dilinin en güzel özelliklerinden biridir ve burada yalnızca basit bir kullanım örneği verilmiştir.
Örnek :
(setq liste1 (list 5 2 7 3 8))
(vl-sort liste1 '<)
Sonuc :
(2 3 5 7 8)
Burada vl-sort fonksiyonuna verdigimiz 1. parametre siralamak istedigimiz liste, 2. parametre de karşılaştırma fonksiyonudur. Burada karşılaştırma fonksiyonu olarak < fonksiyonu kullanılmış ve liste1 listesinin küçükten büyüğe doğru sıralanmış hali elde edilmiştir. < fonksiyonu yerine > fonksiyonunu ya da kendi tanımladığımız başka bir karşılaştırma fonksiyonunu kullanabiliriz.
Ancak; elimizde, sayı çiftlerini içeren şöyle bir liste olsun:
(setq liste2 (list (list 15 7) (list 9 12) (list 38 4)))
((15 7) (9 12) (38 4))
Biz bu listeyi, sayi ciftlerinden 1.sine göre sıralamak isteyelim. Bunu vl-sort fonksiyonu ile yapmak istersek:
(vl-sort liste2 '<)
; error: bad argument type for compare: (38 4) (9 12)
gibi bir hata ile karşılaşırız. Çünkü karşılaştırma fonksiyonu olarak verilen < fonksiyonu; (38 4) ve (9 12) gibi bir yapıyı karşılaştırmak istemiş ve bunun mümkün olmadığını bildiren bir hata mesajını bildirmiştir.
Bunu aşmak için kendi karşılaştırma fonksiyonumuzu tanımlamamız gereklidir.
(defun karsilastir(a b)
(< (car a) (car b))
)
sonra yazdığımız fonksiyonu kullanarak vl-sort ile sıralayalım:
(vl-sort liste2 'karsilastir)
((9 12) (15 7) (38 4))
Aynı şeyi, yeni bir fonksiyon tanımlamak yerine lambda fonksiyonu ile yapabiliriz.
(vl-sort liste2
(function (lambda (a b)
(< (car a) (car b))
)
)
)
((9 12) (15 7) (38 4))
aynı sonucu elde ettik.
Burada; daha önce karsilastir ismiyle tanımladığımız fonksiyonu vl-sort içinde lambda fonksiyonu olarak tanımladık. Lambda fonksiyonunu kullanarak, bir daha işimize yaramayacak bir fonksiyonu (karsilastir fonk.) ayrıca tanımlamaktan kurtulduk ve yazdığımız kod daha okunur/anlaşılır bir kod oldu.
Lambda fonksiyonları Lisp programlama dilinin en güzel özelliklerinden biridir ve burada yalnızca basit bir kullanım örneği verilmiştir.
Yazar: Derya KILIÇ
İçerik:
Tag:
Yorumlar :
yurtsan 16.09.2014 08:28 #15419
bana su şekilde bi lips lazım kod. işareti olcak kendim kot vercem sonra tıkladıkca yukseklige gore ilk verdiğim koda ekleyerek sayı yukselecek.yardımcı olurmusunuz acil