Kenan k?l??aslan

  • Baca Hesabı
  • Sürtünme Kaybı
  • Diferansiyel Denklem
  • Denklem Çözümü
lisp

Koşullu Durumlar

(If) ile koşullu işlemler yapmak mükündür.

(if  (koşullu işlem)
              (xyz doğru ise lisp komutu)
              (xyz yanlış ise lisp komutu)
) 

Aşağıdaki basit bir örneğe bakınız.

(defun c:testif( ) 
       (setq a (getreal "\nBir sayı giriniz : ")
             b (getreal "\nİkinci sayıyı giriniz : ")
        ); setq
        (if (= a b)
            (prompt "\nHer iki sayı eşittir")
            (prompt "\nHer iki sayı eşit değildir.")
        (princ)
);defun
(princ)

Eğer doğru veya yanlış durumunda birden fazla komut çalışacak ise (progn) komutu kullanılır.

(if  (koşullu işlem)
         (progn
              (xyz doğru ise lisp komutu)
			  (xyz doğru ise başka bir lisp komutu)
	      ); doğru bitti
		  (progn
              (xyz yanlış ise lisp komutu)
              (xyz yanlış ise başka lisp komutu)
          ); yanlış bitti
)
  

Birden fazla komut olan if örneği aşağıdadır.

(defun c:testprogn ()
	(setq a (getreal "\nBir sayı giriniz : ")
	      b (getreal "\nİkinci sayıyı giriniz : ")
	);setq
	(if (= a b)
        (progn
		    (prompt "\nHer iki sayı eşit")
		    (prompt "\nBurada başka bir komut var")
		    (prompt "\nBuradada başka bir")
	      );progn
		(prompt "\nHer iki sayı eşit değil")
	);if
   (princ)
);defun
(princ)
  

(if) içinde AND, OR ve NOT gibi mantıksal operatörler kullanılabilir.


AND        OR        NOT

(and  
      (mantıksal işlem)
	  (mantıksal işlem)
); and	  

(or  
      (mantıksal işlem)
	  (mantıksal işlem)
); or	  

(not  
      (mantıksal işlem)
); not	  

AND ve OR operatörü örneği

(defun c:testand ()
	(setq a (getreal "\nEnter a Number : "))
	(if
	    (and
		(>= a 5.0)
		(<= a 10.0)
	    );and
		(prompt "\nNumber is between 5 and 10")
		(prompt "\nNumber is less than 5 or greater than 10")
	);if
   (princ)
);defun
(princ)


(defun c:testor ()
	(setq a (getstring "\nAre you Male? Y/N : "))
	(if 
	    (or
	      	(= a "y")
		(= a "Y")
	    );or
		(prompt "\nHello Sir")
		(prompt "\nHello Madam")
	);if
    (princ)
);defun
(princ)  

İlişkisel operatörler iki yada daha fazla sayının ilişkisini belirler

< daha küçük
> daha büyük
<= daha küçük veya eşit
>= daha büyük veya eşit
= eşit
/= eşit değil
eq iki ifade aynıdır
equal iki ifade eşittir

(Eq) örneği

(setq a '(x y z))
(setq b '(x y z))
(setq c b)
 
(eq a c) nill değer döndürürse, a ve c benzer liste değildir.
(eq c b) true değer döndürürse, b ve c benzer listedir.  

(Equal) örneği

(setq a '(x y z))
(setq b '(x y z))
(setq c b)
(setq m 1.123456))
(setq n 1.123457))
 
(equal a c) 
(equal c b) 
(equal m n) 
(equal m n 0.000001)   

Çoklu if fonksiyonu (cond)

Birden fazla koşula göre birden fazla ifade çalışması gerektği durumda (if) yerine (cond) fonksiyonu kullanılır. (cond) fonksiyonu örneği aşağıdadır. Buradanda gürülebileceği gibi 3 ayrı koşula bağlı 3 ayrı ifade vardır. Bu üç koşuldan hiçbiri true değer vermezse en alttaki T koşulundaki ifade çalışır.

(defun c:testcond ()
	(setq a
	   (strcase (getstring "\nCivata Seç (M10,M12,M16): ")
	   );strcase
	);setq
	(cond
		((= a "M10") (prompt "\nM10 seçtiniz"))
		((= a "M12") (prompt "\nM12 seçtiniz"))
		((= a "M16") (prompt "\nM16 seçtiniz"))
		(T (prompt "\nBilinmeyen civata seçtiniz"))
	);cond
   (princ)
);defun
(princ)  
beyaz_sayfa_en_alt_oval

Dökümanlar    Ürün ve Hizmetler    Hesaplamalar    Birim Çevir    Referanslar    İletişim

Boru Hesapları    Baca Hesapları    Havalandırma Kanalı    Soğutma, Klima    Denklem Çözümleri    Matematik Formülleri

Yer Kaloriferi Hesabı (Muhsoft)

Kenan KILIÇASLAN 2012© Tüm Hakları Saklıdır.       Designed by Nuit                                                  English    Italiano