Şartlı İfadeler

(If) muhtemelen en önemli ve en çok kullanılan durum bildiri ifadesidir.

Diğer bilgisayar dillerinden farklı olarak, yalnızca bir if ifadesini then ifadesi ile eşleştirebilirsiniz. Sözdizimi aşağıdaki gibidir:

(if xyz

               (then bunu yap)

               (else şunu yap))

Aşağıdaki basit örneği inceleyin:

(defun c:testif ()

               (setq a (getreal “\nBir sayı girin : “)

               b (getreal “\nİkinci sayıyı girin : “)

               )                                                                ;setq fonksiyonunun sonu

               (if (= a b)

                               (prompt “\nİki sayı eşittir “)

                               (prompt “\n İki sayı eşit değildir “)

               )                                                                ; if döngüsünün sonu

(princ)                                                                   ;defun fonksiyonunun sonu

(princ)

Şayet birden fazla then, ve else ifadesini değerlendirmeniz gerekiyorsa, (progn) fonksiyonunu kullanmalısınız.

İşte başka bir örnek:

(defun c:testprogn ()

               (setq a (getreal “\nBir sayı girin : “)

               b (getreal “\nİkinci sayıyı girin : “))

              ;setq fonksiyonunun sonu

               (if (= a b)

                               (progn

                               (prompt “\nİki sayı birbirine eşittir.”)

                               (prompt “\nHere is Another statement”)

                               (prompt “\nAnd Another One”)

                               )              ;progn fonksiyonunun sonu

                               (prompt “\nBoth numbers are not equal”)

               )     ;if fonksiyonunun sonu

(princ)

)     ;defun fonksiyonunun sonu

(princ)

(Progn) fonksiyonu içerisinde istediğiniz sayıda ifadeyi kullanabilirsiniz.

Ayrıca (if) döngüsünü mantıksal operatörler ile birlikte de kullanabilirsiniz. Bunlar iki veya daha fazla öğenin nasıl karşılaştırılacağını belirleyen fonksiyonlardır. Kullanabileceğiniz mantıksal operatörler:

AND     OR      NOT operatörleridir.

AND, tüm bağımsız değişkenler doğru olduğunda, sonucu doğru “true” olarak döndürür.

OR bağımsız değişkenlerden herhangi biri doğruysa, sonucu doğru “true” olarak döndürür.

NOT şayet argüman yanlışsa, sonucu doğru “true” olarak ve şayet argüman doğruysa, sonucu yanlış “false” olarak döndürür. Şimdi bazı örneklere bakalım:

(defun c:testand ()

               (setq a (getreal “\nBir sayı girin : “))

               (if

                               (and

                               (>= a 5.0)

                               (<= a 10.0)

               )     ;and operatörü sonu

                               (prompt “\nGirdiğiniz sayı 5 ile 10 arasındadır.”)

                               (prompt “\nGirdiğiniz sayı 5’den küçük veya 10’dan büyüktür.”)

               )     ;if döngüsü sonu

               (princ)

)     ;defun fonksiyonu sonu

(princ)

(defun c:testor ()

               (setq a (getstring “\nErkek misiniz? E/H : “))

               (if

                               (or

                               (= a “y”)

                               (= a “Y”)

                               )     ;or operatörü sonu

                               (prompt “\nMerhabaBeyfendi”)

                               (prompt “\nMerhaba Hanımfendi”)

               )     ;if döngüsü sonu

               (princ)

)     ;defun fonksiyonu sonu

(princ)

İlişki Operatörü, iki veya daha fazla nesne arasındaki ilişkiyi değerlendiren bir fonksiyondur. Mevcut ilişki operatörleri şunlardır:

<          küçük

>          büyük

<=       küçük eşit

>=       büyük eşit

=          eşit

/=        eşit değil

eq        iki ifade eş

equal  iki ifade eşit

Şimdi (eq) ve (equal) fonksiyonlarına biraz daha yakından göz atalım.

(eq) fonksiyonu, iki ifadenin aynı nesneye bağlı olup olmadığını belirler.

(setq a ‘(x y z))

(setq b ‘(x y z))

(setq c b) (eq a c)     —-> boş “nil” sonucunu geri döndürür; a ve c öğeleri aynı listede değildir.

(eq c b)     —-> doğru “true” sonucunu geri döndürür; a ve c öğeleri tam olarak aynı listededir.

(equal) fonksiyonu, iki ifadenin aynı değere sahip olup olmadığını belirler. Her iki ifadenin de farklı olabileceği ve yine eşit olarak kabul edilebileceği maksimum miktarı belirtmek için isteğe bağlı sayısal bağımsız değişkeni (fuzz) argümanını kullanabilirsiniz.

 (setq a ‘(x y z))

(setq b ‘(x y z))

(setq c b)(setq m 1.123456))

(setq n 1.123457))

(equal a c)     —-> doğru “true” olarak geri döner.

(equal c b)     —-> doğru “true” olarak geri döner.

(equal m n)     —-> boş “nil” olarak geri döner.

(equal m n 0.000001)     —-> doğru “true” olarak geri döner.

Şayet Birden çok (if) fonksiyonu varsa, ne olur. (cond) fonksiyonu da (if) fonksiyonu gibi çok işe yarar; ancak (cond) fonksiyonu herhangi bir sayıda sınama koşulunu değerlendirebilir.

(cond) fonksiyonu ilk koşulu doğru “true” olarak bulduğunda, o koşula bağlı ifadeleri işler. (Sadece ilk doğru “true” durumunu sağlayan ifadeyi işleme alır). İşte bir örnek:

(defun c:testcond ()

(setq a

(strcase (getstring “\nCivata ebatı (M10,M12,M16): “)

)     ;strcase

)     ;setq

(cond

((= a “M10”) (prompt “\nM10 cıvata seçtiniz.”))

((= a “M12”) (prompt “\n M12 cıvata seçtiniz.”))

((= a “M16”) (prompt “\n M16 cıvata seçtiniz.”))

(T (prompt “\nBelirsin cıvata ebatı”))

)     ;cond fonksiyonu sonu

(princ)

)     ;defun fonksiyonu sonu

(princ)

(cond) fonksiyonu, argüman olarak istediğiniz sayıda listeyi alır.

Her bir argüman, bir sınama içeren bir liste olmalı ve ardından, değerlendirilecek herhangi bir sayıda ifade bulunmalıdır.

Hakkında Sertan Türkan

AutoCAD Beyni

Bunu da Kontrol edin

Revitte Nesne Stilleri

Revit’te Nesne Stilleri “Object Styles“ aracı, bir projedeki model öğelerinin, açıklama öğelerinin ve içe aktarılan …

Bir cevap yazın

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.