Alt Bloklar, Koşullar, Döngüler

Alt programları (yordamlar) bir önceki yazıda anlattık. Bir de bu yordamların kendi içinde, bu yordamların parçası olan blok bölümler var. Bunlar koşullara göre çalışan kod bloklarından oluşmakta. Hemen her dilde ortak olan ancak yazılma biçimleri (syntax) değişen bu kod bloklarını tanıyabilmemiz, programlama için en temel gereksinimlerden birisi.

Bir önceki Alt Programlar, Fonksiyonlar, Prosedürler yazımızda alt programlar ve fonksiyonlardan bahsetmiştik. Yordam ifadesi biraz “kafa karıştırıcı” geldiği için daha önce kullanmadım. Ancak o yazıda anlattığım alt programların tamamı için (sub, procedure, fonksiyon vs) artık yordam ifadesini kullanabiliriz. Yordam dediğimizde, artık neyi kastettiğimizi biliyorsunuz.

Şimdi bu yordamların her dilde bir başlangıcı ve bitişi olduğunu farketmişsinizdir. Örneğin bir önceki yazıda bahsettiğim BASIC türevi dillerde her yordam tanımıyla başlar, END [YORDAM TÜRÜ] komutuyla biter.

Örneğin;

Private Sub btn20to30_Click(sender As Object, e As EventArgs) Handles btn20to30.Click ‘Bu yordamın başlangıç satırı
  Dim LARGE As Integer ‘Bunlar yordamın işlem satırı, yüzlerce satır olabilir
  Dim SMALL As Integer ‘Yordam devam ediyor
  SMALL = InputBox(“Kucuk sayiyi girin”) ‘Yordam devam ediyor
  LARGE = InputBox(“Buyuk sayiyi girin”) ‘Yordam devam ediyor
  AsallariListele(SMALL, LARGE) ‘Yordam devam ediyor
End Sub ‘Bu da artık bu yordamın bittiği, sonlandığı anlamına geliyor

Yukarıda gördüğünüz gibi yordamlar, yapısal programlamayı destekleyen her dilde vardır. Basic’de türüne göre tanımla başlar END SUB‘la biter (yukarıda görüyorsunuz). Pascal‘da tanımdan sonra BEGIN yazıp, bittiği yere de END yazarız. C‘de tanımdan sonra { ile yordamımızı başlatıp, } ile de bitiririz.

Bir de bu programların içinde kullandığımız alt bloklar vardır. Bunlar bir tanım gerektirmez. İstediğimiz zaman, istediğimiz yerde kullanırız. Kendilerine ait bir yazım biçimleri (syntax) vardır ve uygun şekilde yordamlarınızın içinde istediğiniz kadar kullanabilirsiniz.

 

IF-ELSE BLOKLARI

Programlamanın en temel alt blok yapısı IF bloklarıdır. Her dilde vardır. En çok kullanılan da budur. Hemen örnekler üzerinden anlamaya çalışalım.

Şöyle bir örneğimiz olsun. Kullanıcıya öğrencinin notunu soralım. Ve nota göre ekrana yazıyla bir sonuç üretelim. Çeşitli dillerde bu programı if bloğu kullanarak yazalım. Sizler de if mantığını daha iyi anlayın. Bu kez referans dil olarak C#‘ı seçelim.

C# if bloğu

Görüldüğü gibi if döngüsüne başlarken if yazıp şartımızı yazıyoruz. Başka şartlar da eklemek için else koyup bir if şartı daha yazıyoruz. Şart eklemek yerine yukarıda yazdığımız şartlar dışındaki durumların hepsini ifade etmek içinse else’yi tek başına kullanmamız yeterli. C#’da if şartından sonra { koymazsak, bu bloğumuzun tek satır olduğunu ifade eder. { koyarsak, } işareti gelene kadar son yazdığımız şartın geçerli olduğunu belirtir.

Programı iki kez çalıştırıp 86 ve 24 değerlerini girdim:

 

Aynı örneği Vb.Net dilinde yazalım:

vb.net if döngüsü

Sonuç tamamen aynı olacaktır. BASIC temelli dillerde blok açma simgesi yoktur. Her blok kendi ifadesiyle başlar ve End [Blok Türü] ifadesiyle bitirilir. Burada da if bloğumuzu IF deyimiyle başlattık. End If ifadesiyle kapattık. Yine Basic temelli dillerde ElseIf ifadesi birleşik yazılır.

Programlama dillerinin 3 ana gruptan kökenlendiğini söylemiştik. C kökenli ve Basic kökenli dillerde IF yapısını inceledik. Şimdi bir de PASCAL türevlerinden biri olan OBJECT PASCAL‘da örneğimizi yazalım.

Pascal if döngüsü

Pascal dillerinin blok yapısı C’ye benzer şekildedir. C’de {} arasına koyduğumuz blokları, Pascal’da BEGIN ve END arasına koyuyoruz. If satırımızın sonuna da Basic’teki gibi THEN ifadesini koyuyoruz.

Programı iki kez çalıştırıp 86 ve 24 değerlerini girdim:

Görüldüğü gibi IF bloklarının mantığı hemen her dilde birbirine benzer. Diller arasında küçük farklar var. Her zaman söylediğim gibi önemli olan “mantığı” kavrayabilmek. Dil öğrenmek çok da zor bir iş değil.

 

DÖNGÜ BLOKLARI

If bloğunu incelerken, alt blokların mantığını kavradığımızı düşünüyorum. Kodumuzun içinde belli bir başlangıcı ve bitişi olan bölümlere alt bloklar dedim ben. Döngülerdeki blok yapısı da IF bloğuna benzer. Fakat if bloğu bir kez çalışır. Şu şundan büyükse, şunu yap. Bu buna eşitse şunu yap vs. Ancak bir de tekrar tekrar çalışan bloklar vardır. Şu şundan büyük olana kadar şunu yap. Bu buna eşit olana kadar şunu yap gibi. Bunlara “döngü” diyoruz.

Başlıca döngü blokları, while ve for döngüleridir. İkisi birbirine çok benzer. Hatta biriyle yaptığınız hemen her işi, diğerini kullanarak da yapabilirsiniz. Ancak mantıkları değişiktir.

While döngüsüne bir şart verirsiniz. Şartınız gerçekleştiği sürece çalışmaya devam eder. Şartınız gerçekleşmiyorsa döngüden çıkar. C++ örneği ile anlatalım:

int a = 10;
while( a < 20 )

{
cout
<< “value of a: “ << a << endl;
a
++;

}

Buradaki kodda a değişkeni 20’den küçük olduğu sürece ekrana a’nın değerini yazdırıp, sonra a’nın değerini bir arttırır.

Sonuç şöyle olacaktır:

value of a: 10
value of a: 11
value of a: 12
value of a: 13
value of a: 14
value of a: 15
value of a: 16
value of a: 17
value of a: 18
value of a: 19

Döngü a, 20’den küçük olduğu sürece devam ediyor ve a’nın 20’den küçük olmadığı durumda sonlanıyor.  a birinci çalışmasında 10 olduğu için ekrana yazdırıp 1 arttırıyor. Sonraki çalışmasında 11 olduğu için devam edip a’yı yine 1 arttırıyor. Bu işleme a = 20 olana kadar devam ediyor. Bloğun 10. çalışmasının sonunda a < 20 şartı gerçekleşmedi için bloktaki işlemi sonlandırıyor.

For döngüsü de benzer bir mantıkla çalışmaktadır. While’den tek farkı, kendiliğinden bir sayaca sahip olmasıdır. C++’da örnek vererek açıklarsak:

for( int a = 10; a < 20; a = a + 1 )
{
cout
<< “value of a: “ << a << endl;

}

Bu kod yukarıdaki While örneğiye tamamen aynı işi yapıp, aynı sonucu üretmekte. Ancak a++ satırını yazmamıza gerek olmadığına dikkat edin. Onun yerine for tanımlamamızın içine a = a + 1 yazdık. O bölüm a’nın her döngüde bir arttırılıacağını belirtiyor.

for( int a = 10; a < 20; a = a + 1 )

Bu kısmı tek tek açıklamak gerekirse; tanımlamanın ilk bölümü (int a = 10) sayacımızın a değişkeni olduğunu, int tipinde olduğunu ve 10’dan başlayacağını belirtiyor. İkinci kısım (a < 20) ise a değişkeni 20’den küçük olduğu sürece devam edeceğini belirtiyor. Sondaki kısım (a = a +) ise döngünün her çalışmasında a’nın otomatik bir artacağını söylüyor.

Bu döngüde de a, 10’dan başlayacak; 20’ye kadar (20 dahil değil) devam edecek ve her seferinde ekrana a’yı yazacaktır. a her seferinde otomatik 1 artacaktır.

Hangisini kullanacağınız bir sayaca bağlı olup olmadığınıza göre değişir. Bir sayaca ihtiyacınız varsa for’u tercih etmenizde fayda var. Çünkü yukarıdaki örnekte iki satır ad kod yazdık. Sayaca bağlı olmayan bir şarta bağlı olarak çalışacaksanız ve sayaç gerekli değilse, while döngüsü işinizi kolaylaştıracaktır.

 

DİĞER BLOKLAR

Farklı dillerde farklı blok tipleri de bulunur. Örneğin CASE bloğu bunlara örnektir. Ancak bu gibi detayları, dile özel incelemekte fayda var. Genelde bu tür blokların her dilde belli bir mantığı vardır ve bütün bloklar birbirine benzer.

One thought on “Alt Bloklar, Koşullar, Döngüler

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir