. ARİMEİK FONKSİYONLAR.1. ~ (~ tamsayı) Yalnız bir tam sayının değerini bir arttırarak tersini veren fonksiyondur. amsayı pozitif ise bir arttırır ve negatifini, tamsayı negatif ise bir arttırır ve pozitifini verir. (~ ) -4 (~ 100) -101 (~ -4).2. ABS (abs sayı) Reel veya tamsayıların mutlak değerini verir. (abs 100) 100 (abs -100) 100 (abs -99.25) 99.25. SIN (sin açı) Bu fonksiyon, radyan cinsinden verilen bir açının Sinüs değerini verir. AutoLISP açıların sinüs değerini hesaplarken derece kullanmaz. Girdi olarak açı derece olarak verilse bile, program içerisinde radyana çevrilmelidir. Örneğin : 60 yerine pi kullanılır. = 60 olsun = 60/180 * pi şeklinde kullanılır. Ve AutoLISP içerisinde de radyan değeri alınır. (Sin 1.0 ) 0.841471 (Sin 0.0 ) 0.0 (Sin (/ pi 2) ) 1.0 (Sin (/ (* pi ) 2) 1.0
(sin (/ pi 6)) 0.5 (sin (/ pi 4)) 0.707107 (sin (/ pi )) 0.866025.4. COS (cos açı) Radyan cinsinden verilen bir açının cosinüs (Cos) değerini verir. Açılar genellikle derece cinsinden kullanılırlar. Ancak bu derece değeri program içerisinde radyana çevrilmelidir. a = 60 derece ise a = / a = 75 derece ise a = 75 / 180 (cos 0.0) 1.0 (cos pi) -1.0 (cos (/ pi 6)) 0.866025 (cos (/ pi 4)) 0.707107 (cos (/ pi )) 0.5 (cos (* 2 (/ pi ))) -0.5.5. AAN (atan sayı1 [sayı2]) Sayıların radyan cinsinden ark tanjantını verir. rigonometrik olarak ifade edilen denklemlerde lar bazen cos veya sin cinsinden hesaplanırlar. Cos A = ( b²+c² a² ) / 2bc Denkleminde A açısını bulabilmek için ark tanjant (AAN ) fonksiyonu kullanılabilir. Bunun içinde Cos A açısı an A ( tanjant ) değerinde bulunmalıdır. Bu işlem Sin A = 1 Cos² A ve an A= Sin A/Cos A denklemleriyle ifade edilebilir. A = an A eşitlenerek A açısı
(setq A (atan A )) program satırı yazılarak işlem tamamlanır. Burada bulunan A açısının değeri radyan cinsinden olduğu unutulmamalıdır. Aşağıda bazı örnekler verilmiştir. Örnek: (atan 1) 0.78598 (atan 1.0) 0.78598 (atan 0.5) 0.46648 (atan 1.0) 0.78598 (atan -1.0) -0.78598 (atan 2.0.0) 0.58800 (atan 2.0 -.0) 2.5559 (atan 1.0 0.0) 1.5708 (defun acos (cs) (cond ((> (abs cs) 1.0) (prompt " Arc cosinus hatası.")) ((equal cs 1.0 0.000000001) 0.0) ((equal cs -1.0 0.000000001) pi) (t (- (/ pi 2) (atan (/ cs (sqrt (- 1 (* cs cs))))))))) (defun asin (sn) (cond ((> (abs sn) 1.0) (prompt " Arc sinus hatası.")) ((equal (abs sn) 1.0 0.000000001) (* sn (/ pi 2))) ((zerop sn) 0.0) (t (atan (/ sn (sqrt (- 1 (* sn sn)))))))).6. EXP (exp sayı)
e üzeri x in değerini veren komuttur. x yerine herhangi bir sayı yazılabilir. (exp 1.0) 2.71828 (exp 2.2) 9.02501 (exp -0.4) 0.6702 (exp 1 ) 2.7182 (exp 2.2 ) 9.0250 (exp 0.4 ) 0.670.7. EXP (expt sayı kat) Herhangi bir sayının sayıca ( 2 üzeri 4 ) ( 10 üzeri 2 ) kuvvetini veren fonksiyondur. Sayılar, reel veya tam sayı olabilirler..8. FIX (fix sayı) (expt 2 4) 16 (expt.0 2.0) 9.0 (expt 5 2 ) 25 (expt 27 (/1 )) (expt 10 ) 1000 am veya reel verilen sayıların tam sayıya çeviren komuttur. Bu komut yuvarlatma yapmaz ve satırın tam olan kısmını alır. (fix ) (fix.7) (fix.9 )
(fix 61.1 ) 61 (fix 145.5 ) 145 (fix 101 ) 101.9. FLOA (float sayı) am veya reel verilen sayıları reel sayıya çevirir. (float ).00 (float.75 ).75.10. GCD (gcd tamsayı1 tamsayı2) Verilen tam sayıların en büyük ortak bölenini verir..11. LOG (log sayı) (gcd 81 57) (gcd 12 20) 4 (gdc 8 57 ) (gcd 12 20 ) 4 (gcd 0 81 ) 9 Sayıların logaritmasını verir. (log 4.5) 1.50408 (log 1.22) 0.198851 (log 4.5 ) 1.504 (log 1.22 ) 0.198
.12. LOGAND (logand tamsayı tamsayı...) Bu fonksiyon, fonksiyonlara alınmış argümanların mantıksal AND işleminin (bit. yöntemli) sonucunu verir. (logand 7 15 ) (logand 2 15) 2 (logand 8 4) 0 (logand 7 15 ) (logand 2 15) 2 (logand 8 4) 0.1. LOGIOR (logior tamsayı tamsayı...) Bu fonksiyon, fonksiyonlara alınmış argümanların mantıksal OR işleminin (bit. yöntemli) sonucunu verir. (logior 1 2 4) 7 (logior 9 ) 11 (logior 1 2 4) 7 (logior 9 ) 11.14. LSH (lsh tamsayı kaç bit ) Lsh fonksiyonu,<arg> ın <kaç bit> kadar bit le kaydırılarak yer değiştirmesinin sonucunu verir. Bu kaydırma, mantıksal bit yöntemiyle yapılır. Fonksiyonda kullanılacak <arg>ve <kaç bit> değerleri tam sayı olmalıdır. Bu durumda elde edilecek yine bir tamsayı olacaktır. Fonksiyona verilecek <kaç bit> değeri eğer pozitif ise kaydırma sola doğru,negatif ise kaydırma sağa doğru yapılır.kaydırmalar sonucunda, içeri kaydırılan sıfır bitler ile dışarı kaydırılan bitler çıkartılır. Eğer bir bit i <arg> olarak verilen tamsayının 16 cı bitinin dışına kaydırılmışsa elde edilecek olan tamsayının işareti değişir. Verilen<arg> ın işareti (-) ise (+), (+) ise (-) olur. (lsh 2 1) 4
(lsh 2-1) 1 (lsh 16 ) 128 (lsh 16 -) 2 (lsh 5 4) 80 (lsh 1684 1) -2768.15. MAX (max sayı sayı...) Verilen reel veya tam sayıların en büyüğünü verir. (max 4.07-144) 4.07 (max -88 19 5 2) 19 (max 61 1 4 7 ) 7 (max 75 1.6 86.1 60.02 ) 86.1 (max 1 7 2 0.5 5 ) 7.16. MIN (min sayı sayı...) Verilen reel veya tam sayıların en küçüğünü verir. (min 68-10.0) -10.0 (min 7 2 48 5) 2 (min 7.0 2 48 5) 2.0 (min 2 4 6.7) 2.0 (max 61 1 4 7 ) 61
(max 75 1.6 86.1 60.02 ) 1.6 (max 1 7 2 0.5 5 ) 0.5.17. MINUSP (minusp sayı sayı...) Verilen reel veya tam sayılar negatif (sıfırdan küçük ) ise, değilse nil sonucunu verir. (minusp -1) (minusp -4.29) (minusp 80.2) nil (minusp 1.5 ) (minusp 97.5 ) nill (minusp 1 ) nill (minusp 7 ).18. PI (pi) Matematiksel bir sabit olan pi sayısı AutoLISP de hazır bir sembol olarak verilmiştir ve değeri.1415926 dır (setq r (* pi 10 ) 1.15926 (setq a (+ pi pi ) ) 6.281852 (setq c (* 2 pi 10 ) 62.81852.19. REM (rem sayı1 sayı2...) Bu fonksiyon iki sayıyı böler ve kalanı verir. sayılar tam veya reel sayı olabilir. (rem 42 12) 6 (rem 12.0 16) 12.0 (rem 26 7 2) 1
(rem 42 12 ) 6 (rem 12.0 16 ) 12.0 (rem 60 0 ) 0.20. SQR (sqrt sayı) Bu fonksiyon sayıların kare kökünü verir. Örnek: (sqrt 4) 2.0 (sqrt 2.0) 1.41421 (sqrt 16 ) 4 (sqr 2 ) 1.4142 (sqr 144 ) 12 ;üç kenar uzunluğu bilinen üçgenin alanını hesaplar ;Gerekli formuller ; S = (a + b + c) / 2 ;alan = (S (S - a) (S - b) (S - c))½ (defun c:alan () (setq a (getreal "\na kenarının uzunlugu: ")) (setq b (getreal "\nb kenarının uzunlugu: ")) (setq c (getreal "\nc kenarının uzunlugu: ")) (setq p (+ a b c)) (setq s (/ p 2)) (setq alan (sqrt (* s (- s a) (- s b) (- s c)))) (princ "\nalan ") (princ alan) (princ "\nparametre ") (princ p) (princ) ).21. ZEROP (zerop sayı) Sayı sıfır ise (doğru ), sıfır değil ise nil sonucu verir. (zerop 0)
(zerop 0.0) (zerop 0.0001) nil (zerop 0 ) (zerop 0.0001 ) nil.22. BAZI FORMÜLLERİN AUOLISP KARŞILIKLARI 1. Ücgenin alanı Alan = bh/2 2. Dairenin alanı Alan = pr2 Matematiksel formül. Silindirin hacmi Hacim = pr2h 4. Kürenin hacim Hacim = (4/)pr 5. pisagor teoremi c = (a2 + b2)½ 6. faranayt F = (9/5)C + 2 AutoLISP karşılığı (setq alan (/ (* base hei) 2.0)) [hei = yükseklik] (setq alan (* pi rad rad)) [rad = yarıçap] (setq vol (* pi rad rad hei)) [vol = hacim, rad = yarıçap, hei = yükseklik] (setq vol (/ (* 4 pi rad rad rad) )) [vol = hacim, rad = yarıçap] (setq c (sqrt (+ (* a a) (* b b)))) [c = Hipotenüs, a = a kenarı, b =b kenarı] (setq far (+ (* 1.8 cel) 2)) [far = faranayt, cel = santigrat].2. ARİMEİK FONKSİYONLARIN YAZIMINDA KARŞILAŞILABİLECEK BAZI PROBLEMLER 1. (+6 7) error : bad function (6 7) *cancel* İfadede geçen (+) toplama işaretinin, (6) argümanından ayrı yazılması gerekir. Yani (+ 6 7) şeklinde yazılması beklenir. Bu ifadede, program +6 ifadesini bir fonksiyonmuş gibi algılar. AutoLISP programlama dilinde böyle bir fonksiyon olmadığından bad function hatası vermektedir.
2. (+6.25) error : invalid dotted pair *cancel*.25 argümanı tamamlanmamış bir argümandır. Bu sayının AutoLISP ortamında 0 ile başlaması gerekmektedir. Yani ifade (+ 6 0.25) şeklinde olmalıydı.. (+ 5 6 1>) 11 Sol tarafta ifadeyi başlatmak için açılan parantezin kapanmadığını gösterir. Sondaki sıra 1>) kaç tane parantezin kapatılması gerektiğini kullanıcıya gösterir. İstenen sayı kadar parantez buraya konulduktan sonra ifade değerlendirilerek bir sonraki satırda cevap yazılacaktır.