21 Mart 2020 Cumartesi

Small Basic - Subroutine - Alt Yordam

Önceki derste de söylediğim gibi bu ders GraphicsWindow ile devam edeceğiz. Ancak bunu yapmadan önce bir konuya daha değinip öyle devam etmemiz gerekiyor. Çünkü bu konu olmadan GraphicsWindow içinde yapacağımız uygulamayı yapmamız mümkün değil.

Subroutine(Alt Yordam)
Evet Subroutine ya da Türkçe olarak Alt Yordam denen ve program içinde Sub olarak kullanacağımız bir özellik mevcut. Diğer programlama dillerinde fonksiyon olarak geçen Sub, bir işlemi tekrar tekrar yazmamıza gerek bırakmayarak, bir kod topluluğunu tek bir isimle kullanmamızı sağlıyor. 

Tanım: “Bir altyordam, her bir talimatı kopyalamanıza gerek kalmadan, programınızda birden çok kez çalıştırılabilen bir talimatlar topluluğudur.” Şeklinde geçiyor.

Peki, biz bunu nerede nasıl kullanacağız?

Daha önce Ekrana Yazı Yazdırmak başlıklı yazımızda TextWindow kullanımından bahsetmiştik. Aynı zamanda TextWindow için ayrıntılı olarak özelliklerinden de TextWindow Özellikleri yazımızda bahsetmiştik. Hatırlamayanlar bu konuları tekrar edip ondan sonra bu konuya devam etsinler.

Alt Yordam neden gerekli anlamak için öncelikle aşağıdaki örneği inceleyelim:

Kodlar:


Buradaki program bir soru soruyor, ardından doğru ya da yanlış değerini döndürüyor. Bunu yaparken verilen cevaba bağlı kalmaksızın rastgele bir sonuç döndürüyor. 

randomNumber = Math.GetRandomNumber(2)

Bu kod randomNumber değişkenine rastgele bir sayı üreterek eşitliyor. Math sınıfı Small Basic içinde hazır gelen fonksiyonlardan biri. Matematiksel işlemler için kullanılıyor. GetRandomNumber(2) ise 1 ile belirtilen sayı aralığında rastgele sayı üretir. Bu durumda ya 1 ya da 2 değeri üretecektir. Parantez içerisinden 10 yazılsaydı 1-10 arası bir değer üretecekti. Eğer üretilen değer 1 ise Doğru değilse Yanlış yazıyor. If kullanımını hatırlamayanlar buradaki yazıya ya da örnek için buradaki yazıya bakarak konuyu hatırlayabilirler.

Buraya kadar sorun yok. Peki bir soru daha sormak isteyelim aynı program içinde. Üstteki 9 satırı kopyala/yapıştır yaparak bunu kolayca yapabiliriz. Ancak biz biliyoruz ki programlama işleri kolaylaştırmak için vardır. Bunu daha önce döngüler konusunda da görmüştük.

İşte tam da burada işleri kolaylaştırmak adına Subroutine-Alt Yordam devreye giriyor. Şimdi kodları Alt Yordam kullanarak tekrar yazalım ve ikinci bir soru daha ekleyelim:


Kodlar:

TextWindow.WriteLine("Odanı sürekli temizler misin?")
TextWindow.Read()
yalandedektoru()

TextWindow.WriteLine("Kod yazmayı seviyor musun?")
TextWindow.Read()
yalandedektoru()

Sub yalandedektoru
  TextWindow.Write("Doğruluk dedektörü: ")
  randomNumber = Math.GetRandomNumber(2)
  If(randomNumber = 1)Then
    TextWindow.WriteLine("Doğru")
  Else
      TextWindow.WriteLine("Yanlış")
  EndIf
EndSub

Sub sözcüğünü kullanarak bir alt yordam tanımlıyoruz. Değişkenlerde olduğu gibi bunun da bir isme ihtiyacı var. Burada yalandedektoru ismini kullandık. Sorulardan sonra gelen yalandedektoru() kısmı sorudan sonra bizim alt yordamın çalışacağını belirtiyor.

9-17. satırlar arası yalandedektoru() yazılan her yerde yeniden çalışıyor. Bu sayede bu satırları her sorudan sonra tekrar takrar yazmak sorunda kalmıyoruz.

1-3: İlk soru soruluyor ve cevap girilmesi bekleniyor. (Burada ne yazdığınız çok önemli değil. Herhangi bir şey yazabilirsiniz.) Son olarak yalandedektoru() alt yordamı çalışıyor ve cevabı yazdırıyor.
5-7: İlk 3 satırda olanlar yeniden oluyor. Soru farklı ama 7. satırda yalandedektoru() aynı. Yine rastgele bir değer döndürüyor ve ekrana yazdırıyor.
9-17:  Programın bel kemiği burası. yalandedektoru() yazılan yerde ne olmasını istiyorsak burayı değiştirmemiz ve ona göre düzenlememiz gerekiyor. Örneğin Yanlış yerine Yalan yazdırmak istersek sadece burada değiştirmemiz yalandedektoru() alt yordamını çalıştırdığımız her yerde aynı sonuca ulaşmamızı sağlayacak.

Programı çalıştırdığımızda sonuç:


Şansıma her ikisi de doğru çıktı :)

Sonraki ders GraphiscWindow ile buton ekleyip, butona tıklandığında istediğimiz bir işlemi nasıl yaptırabiliriz buna bakacağız. GraphiscWindow ile ilgili önceki konuları tekrar etmek isterseniz aşağıdaki bağlantılardan ulaşabilirsiniz:

Paylaş:

0 yorum:

Yorum Gönder

Soru, sorun, görüş ve önerilerinizi bildirin. En kısa sürede yanıtlayalım...