07.08.2019 09:30    

ahmet82
defunu argümanla çalıştıramıyorum.
Mehmet Şahin Güvercin'in kitabunun 172. sayfasında kullanımına dair bir örnek var fakat ben kullanamadım.
karesi yazıp boşluk bırakınca direkt karesi adlı işlevimi çalıştırıyor tabi sonuç olarak da hata veriyor.

Konu hakkında yardımcı olabilecek arkadaşlara şimdiden teşekkürler.

Örnek Kod:
(defun karesi (a / b)
(setq karesi (* a a))
(princ b)
)

07.08.2019 09:42    

ehya
Sürekli aynı işlemi tekrarlamak gerektiğinde bu tür defun komutları hazırlanır.

Ancak hazırladığınız kodlamada hata var. Gövde adı ile girdi adı aynı anda kullanılamaz.

Kod:

(defun karesi (a)
(setq kare (* a a))
  (princ kare)
  (princ)
)


Kodun doğru hali yukarıdadır. Bu kodu kullanmak için aşağıdaki gibi bir kod yazılabilir.

(karesi 5)

07.08.2019 11:00    

ahmet82
hocam yardımlarınız için çok teşekkür ederim.

21.08.2019 20:54    

yazgunesi
Autolisp programlarda kullanılan ''program formatı'' genellikle aşağıdaki gibidir :

Kod:

; Çizgi çizme lispi

(defun c:line1 (/ pt1 pt2)
(setq  pt1 (getpoint "\n İlk nokta için ekrana tıkla ?! :"))
(setq  pt2 (getpoint "\n İkinci nokta için ekrana tıkla ?! :"))
(command "line"  pt1  pt2 "")
(princ)
)


Programın ilk satırı defun c: olarak başladıysa bilgisayarın klavyesinden programı çalıştırmak sadece line1 yazmamız gerekli. Bu ilk satırda program isminin line1 olarak tanımladık.

Eğer kodlama aşağıdaki gibi olsaydı, daha doğrusu c: kullanılmasaydı ; program şu şekilde olurdu :

Kod:

; Çizgi çizme lispi

(defun line1 (/ pt1 pt2)
(setq  pt1 (getpoint "\n İlk nokta için ekrana tıkla ?! :"))
(setq  pt2 (getpoint "\n İkinci nokta için ekrana tıkla ?! :"))
(command "line"  pt1  pt2 "")
(princ)
)


Bu durumda programı çalıştırmak için klavyeden (line1) şeklinde yazmak gerekli. Yani parantez de kullanmak gerekli.

> 1 <
Copyright © 2004-2022 SQL: 1.333 saniye - Sorgu: 53 - Ortalama: 0.02514 saniye