1372826956:AAFe2Py65GSQkfGiRnXuOQ-eD9yXcwMv988

AutoLISP Dersleri #8- Döngüler

sekil-01

Kullanabileceğiniz üç temel tip döngü vardır:

  • sayma döngüsü
  • sürekli değerlendirilen döngü
  • sonsuz döngü

Sayma döngüsü önceden tanımlanmış belirli bir sayıda döngüyü çalıştırır. Sürekli değerlendirilen döngü, belirli bir şart sağlanıncaya dek çalıştırılır. O şart sağlandığı zaman, döngüden çıkılır. Sonsuz döngü sonsuza dek çalıştırılır. Lisp programlarımız içerisinde kullanmak istemeyeceğimiz döngü çeşididir.

AutoLISP bizlere oldukça faydalı olan bazı temel döngü fonksiyonları sunmaktadır.

Döngü Fonksiyonları


repeat(tekrarlama sayısı ifade …)

Her ifadeyi verilen sayı kadar değerlendirir.

while(while kontrol ifadesi …)

while fonksiyonu “kontrol ifadesi” doğru “true” olarak kaldıkça ifadeyi değerlendirir. Bu fonksiyon önce kontrol ifadesini değerlendirir ve şayet  “kontrol ifadesi” doğru “true” ise, döngüdeki tüm ifadeleri işler. Daha sonra fonksiyon kontrol ifadesini tekrar değerlendirir; şayet “kontrol ifadesi” hala doğru “true” ise, döngüyü tekrar çalıştırır. Bu “kontrol ifadesi” yanlış “false” olarak dönene dek devam eder.

Tekrarlama Döngüsü


repeat fonksiyonu bir ifadeyi veya ifadeleri verilen sayı kadar işler. Adından da anlaşıldığı üzere bu fonksiyonun yaptıkları oldukça açık olup; daha fazla açıklama yapmaya gerek yoktur. Şayet döngünüzün kaç kez tekrarlanmasını istediğinizi biliyorsanız, tekrarlama döngüsü kullanmanız gereken döngülerden bir tanesidir.

(repeat 5
(bunu_yap))

repeat fonksiyonunun kullanımını sınırlayan şey döngüden kaç kere geçeceğinizi bilmemenizdir.

While Döngüsü


“while” döngüsünü kullanarak bir sıradaki bir veya daha fazla ifadeyi çalıştırabilirsiniz. “while” döngüsü içerisindeki ifadeler “kontrol ifadesi” yanlış “false” sonucunu döndürene dek çalıştırılacaklardır.

(while

(bu_doğrudur)

(bunu_yap))

“kontrol ifadesi” mantıksal işlemcilerin yanı sıra ilişkisel işlemciler de içerebilirler. Bu işlemciler bir doğru “true” veya yanlış “false” değeri geri döndürmek zorundadır. Daha öncede belirttiğim üzere, lisp içerisindeki yanlış “false” değeri boş (hiçbir şey) döndürmeme ile eştir. Şayet döngüye girildiği zaman, “kontrol ifadesi” yanlış “false” olarak değerlendirilirse, döngünün içerisinde tanımlı işlemler hiçbir zaman çalıştırılmazlar.

“kontrol ifadesi” döngünün ne zaman son bulacağını belirlediği için, döngünün içerisindeki bir şey “kontrol ifadesi” tarafından kullanılan değişkeni veya değişkenleri düzenlemek zorundadır. Şayet döngünün içerisinde “kontrol ifadesi” tarafından kullanılan değişken düzenlenmezse, kontrol ifadesi her zaman doğru “true” olarak kalır ve döngü hiçbir zaman son bulmaz. Bu sonsuz döngü olarak tanımlanan bir döngü olur ve gerçekten bu durumdan kaçınmalısınız.

Döngüyü Kontrol etme


Döngüleri yazarken, döngülerini<de kontrol altında tutmak zorunda olduğunuz birçok şey vardır. Döngüleri yazarken birçok şey yanlış gidebilir. Bunlar:

  • Döngünün başlatılması uygun değildir atlanmıştır.
  • Döngü için kontrol değişkenlerinin uygunsuz veya deklare edilmesi unutulmuştur.
  • Döngü sayacını artırmayı unutulmuştur veya değişken yanlış bir şekilde artırılmaktadır.

Döngüler yazarken beladan uzak durmak için yapabileceğiniz iki şey vardır.

  1. Döngüyü etkileyen faktörlerin sayısını azaltma. Döngüyü olabildiğince basit tutmalısınız.
  2. Yordamın iç kısmını bir fonksiyonmuş gibi muamele edin; döngü gövdesinin dışında mümkün olduğunca fazla kontrole sahip olun.

Fonksiyonunun gövdesini çalıştıracağınız zaman, kodunuz açık ve anlaşılır olsun. Kodunuzu daha sonra okuyacak olanları neler olduğunu anlamak için, döngüye bakmak zorunda bırakmayın. Döngü aynen bir fonksiyon gibi başka bir kara kutudur; döngünün içinde bulunduğu program döngüyü kontrol edebilmenizi sağlasa da döngünün içeriğini kontrol etmenizi sağlayamaz.

Döngü yazarken döngüyü başlatan kodu direkt olarak döngünün ön kısmına koyun. Döngüyü başlatan kodu döngünün kendisine yakın bir yere koyma döngünün nasıl çalıştığının görülmesini ve daha sonra yapılması muhtemel değişikliklerin kolaylaştıracaktır. Şayet döngü ile ilişkili ifadeler programınız içerisinde dağınık olarak bulunursa, daha sonra döngünün nasıl çalıştığını anlamak çok zor olacaktır.

Döngünüz için sonlandırıcıyı yazarken, döngüyü sona erdirecek her durumu görselleştirmeye çalışın.

Her şeyin ötesinde, döngümüzün son bulmasını istiyoruz. Normal durumlardaki sınır koşullarını ve aklınıza gelebilecek her istisnai durumu dikkate almalısınız.

Hakkında Sertan Türkan

AutoCAD Beyni

Bunu da Kontrol edin

Revitte Bölge Planları Hakkında

Revit’te bir plan görünüşünde birden çok kesme düzlemi tanımlamak için, Bölge Planları “Plan Regions” aracını …

Bir cevap yazın

This site uses Akismet to reduce spam. Learn how your comment data is processed.

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.