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 larAutoCAD 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 :
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

