Karar Yapıları ve Donguler

Bu bolumde karar yapıları ve donguleri işleyeceğiz. Programlamada coğu kere birden fazla şart arasında bir seceneği secmek ve programı secilen seceneğe gore

dallandırmak gerekir. İşte bu durumlarda karşımızdaki problemin yapısına gore karar ifadelerini kullanırız.

Bu bolumde karar yapılarından if yapısını, case yapısını bulacaksınız.
Dongulerden for..do, repeat.. until, while..do oğreneceğiz.

Karar yapıları

Programlar normalde satır satır calışırlar. İstenilirse belirli şartlar aranarak programın bir kısmının calıştırılmasını veya calıştırılmaması sağlayabiliriz.

İf Yapısı

İf- şart yapısı butun programlama dillerinde olan, bazı şartların gercekleşmesi durumunda ve gercekleşmemesi durumunda ayrı-ayrı kodların calıştırılmasına imkan veren

yapıdır.



Şart gercekleşmesi halinde Then deyiminden sonraki satır işletilir. Gercekleşmemesi durumunda ise Else deyiminden sonraki satır işletilir.
Şartın gerceklememesi durumunda calışacak Else bloğu istenirse verilmeyebilir.



Tek satırlık ifadelerde Begin-End deyimi kullanılmayabilir.



Şart icerisinde birden fazla satır kullanılacaksa Begin-End deyimleri kullanılır.



Ornek:/



Ornek : İc ice İf-Then- else

İc ice if’ler de kullanılabilir. Yukarıdaki orneği geliştirerek butunleme notunu da soralım.




Case Yapısı

Bir değişkenin aldığı bir cok değere gore ayrı komutların calıştırılması gereken durumlar icin if yapısını kullanmak yerine Case yapısını kullanmak daha avantajlıdır.



Burda Değişken parametresi ile belirlenen değişkenin aldığı duruma gore DurumN değerinin karşısındaki komutlar işleme girer. Eğer değişkenin değer durumlardan hicbirine uymuyorsa Else kısmındaki komutlar calışacaktır.



Case yapısında durumu karşılaştırılan değişken String tipte veya kullanıcı tipte bir değişken olamaz. Bu değişken, değeri sayı olarak ifade edebilen bir değişken olmak zorundadır.



Dongu Deyimleri

Belirli bir komut parcasının belli şartlar gercekleşinceye kadar defalarca calışması gerekebilir. Calışma sayısının belli olduğu durumlarda For dongusu diğer durumlarda yani dongu sayısının değişken olduğu durumlarda ise Repeat-Until, While-Do blokları kullanılır.

For Dongusu



Burada Sayac değişkeni tamsayıya cevrilebilen tipte(Integer, LongInt, ShortInt, Byte, Word, Boolean, Char) bir değiken olması gerekir.

- For dongusu Sayac’ın BaşlangıcDeğer’inden başlayarak BitişDeğer’ine kadar sayacı birer artırarak blok icindeki komutları calıştırır.
- BaşlangıcDeğer,BitişDeğer’inden buyukse donguye hic girilmeyecektir.
- Dongu icerisinde birden fazla satır işletilecekse begin-end bloğu kullanılmalıdır.
- Sayac’ın artarak değil azalarak calışması icin to yerine downto deyimi kullanılır.



Ornek olarak 100 kişinin ismini sormanız gerektğini farz edelim. Bu durumda:



Yukarıdaki gibi 100 satırlık kod yazmak yerine 1 den 100’e kadar bir dongu kurarak aynı işi cok kolay yapabilir.



Yukarıdaki ornekte for dongusunun altında bir satılık kod yazdığımız icin Begin-End bloğunu kullanmadık.

Ornek : Rastgele dikdortgen cizmek icin;

Ornek olarak ekranda rasgele koordinatlara ic ice dikdortgenler cizecek bir program yazalım. Programımız icin formumuzun uzerine bir komut duğmesi(Button) yerleştirelim.



Ornek:Matris Hesaplama

Başka bir ornek olarak ta kullanıcının gireceği 3X2 boyutlu iki matrisi toplayıp, carpacak bir program yapalım.
Matris Hesabı icin Formu tasarlamamız gerekmektedir.



Prosedurler tarafından kullanılacak Global değişkenleri tanımlayalım.



FormCreate olayınada başlangıc değerileri ayarlayalım.



A Matrisi Girilsin;



B Matrisi Girilsin;



Matrisler Toplansın;



Matrisler Carpılsın;



For dongusunde sayaş değişkeni birer artıp/azalarak değişir. Artımın daha buyuk aralıklarla yapılması icin artıma işlemi blok icerisinde Sayac değişeninin değeri artırılarak yapılmaz. (1,0 versiyonunda yapılabilir). Bu gibi durumlarda While-Do dongusu kullanılmalıdır.


While-Do Dongusu

Bir şart gercekleştiği surece calışması gereken program bloklarında kullanılır.



Burada; şart gercekleştiği surece dongu calışmaya devam edecektir.
For dongusunun getirdiği bazı kısıtlamalar vardır. Sayac değişkenimiz tam sayı olmak zorunda ve birer artıp/azalmak zorunda idi. Bu sınırlamaları aşmak icin While-do dongusu For dongusune uyarlaya biliriz.



Aynı işi While-do ile yaparsak;



Artımı birden fazla yapmak icinde;



Ornek: Sayı Topla

Kullanıcının gireceği iki aralık arasındaki tek, cift veya butun sayıların toplayacak bir program yapalım. Orneğimiz icin formu oluşturalım. Butun sayıları toplamak icin For dongusunu tek veya cift sayıları toplamak icin artımın 2 olması geretiğinde While-Do dongusu kullanmamız gerekecektir.

Formu tasarlayınız.



Form uzerindeki Button icin resimdeki kodları yazınız.



Sonraki konumuz Repait-Until Dongusu;

//Temel konulardan gitmek her zaman iyidir. İşi temelinden oğrenirseniz daha iyi olacaktır. Delphi hem oğrenip hemde oğretiyorum. Eğer bir dili oğrenmek istiyorsanız ilk başta yapısını bilmek gerekir. Bu yuzden dediğim gibi Kontrol deyimlerinden tutun diğer ince ayarlarını bilmeniz gerekir cunku her zaman ne olacağını kestiremezsiniz o yuzden diğer konuyu bekliyorum bende , haydin goruşmek uzere.

Repeat-until Dongusu
Bu dongu yapısı şart gercekleşene kadar calışması gereken program bloklarını kullanır.



While-Do dongusunden farklı olarak donguye girerken değil cıkarken şart kontrol edilir. Boyle Repeat-Until dongusu icindeki komutlar en az bir kere calışır.

Ornek: Şartı sağla

Orneğin kullanıcıya sınav notunu sorduğumuzu duşunelim. Gireceği no 0-100 aralığı dışında ise; notu bu aralıkta girinceye kadar tekrar-tekrar sorulması gerekir. Bu iş icin Repeat-Until yapısı uygundur. Cunku dongu icerisinde not sorulduktan sonra not 0-100 aralığı dışında ise tekrar sorulması gerekir.



Dongu Kontrol ifadeleri

Bazen dongu bitmeden donguden cıkmak gerekebilir veya bazı durumlarda dongu icindeki bir miktar kodun calıştırılmaması istenebilir. Bu gibi durumlarda dongu kontrol deyimlerini kullanmak gerekir.

Break

Break proseduru;For, While veya Repeat dongulerinden birinde bazı şartların gercekleşmesi durumunda donguden cıkmak icin kullanılır.
Ornek: Şart sağlanırsa cık

Ornek olarak 1000 kişinin bulundu ad[1000] dizinde bir kişinin adını for dongusu ile aradığımızı kabul edelim. Aranan kişi bulundukdan sonra dongunun calışmaya devam etmemesi icin break kullanılması gerekir.


__________________