Ö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:
0 yorum:
Yorum Gönder
Soru, sorun, görüş ve önerilerinizi bildirin. En kısa sürede yanıtlayalım...