ÜNİTE:
1.2. PROBLEM ÇÖZME VE ALGORİTMALAR
KAZANIMLAR:
1.2.7.1. Döngü mantık yapısı içerisinde biriktirme algoritması tasarlar.
1.2.7.2. Döngü mantık yapısı içerisindeki koşulları açıklar.
1.2.7.3. Problem çözme süreçlerinde döngü yapılarını kullanarak algoritma tasarlar.
8.4. While/While End Döngüsü
Ele alacağımız ilk yapı, While/While End döngü yapısıdır. Bu döngü yapısı bilgisayara, koşul doğru olduğu sürece işlemleri tekrarlanmasını belirtir. Algoritma yapısı şu şekildedir:
While/While End döngü yapısı tasarladığınız zaman, algoritmayı daha anlaşılır kılmak için girinti ve köşeli ayraçlardan yaralanabilirsiniz. Bu yapıya ilişkin akış şeması ise şöyledir:
Döngünün başlangıcında, döngü içerisinde yer alan yönergelerin işlenip işlenmeyeceğine ilişkin karar vermek için koşul kontrol edilir. Eğer koşul yanlış olursa döngü içerisindeki hiçbir yönerge işleme alınmaz. Eğer koşul doğru ise döngü içerisindeki tüm yönergeler çalıştırılır ve tekrar döngünün başına dönülür. Döngü, koşul durumu yanlış olana kadar devam eder.
Aşağıda aynı döngünün If/Then/Else karar yapısına eş değer algoritması ve akış şeması görülmektedir.
Yönergelerin kaç kez tekrarlanacağının belli olmadığı zaman ya da döngüdeki yönergelerin işleme alınmayacağı durumlar olduğunda, While/WhileEnd döngü yapısı kullanılır. Bu durumlarda döngüye girerken kontrol edilen durum yanlıştır.
Örneğin bir sınıftaki öğrencilerin yaş ortalamasını hesaplayan algoritma ve akış şeması nasıl olmalıdır?
8.5. Repeat/Until Döngüsü
Bir diğer döngü türü Repeat/Until yapısıdır. Bu yapı bilgisayara, yönergeleri Repeat ve Until komutları arasında bir koşul doğru olana kadar yapmasını iletir. Bu yapı ile While yapısı arasında iki temel fark vardır:
(1) While döngü yapısında döngü koşul doğru olduğu sürece çalışır, oysa Repeat yapısında döngü koşul doğru olduğunda durur,
(2) While döngüsünde koşul sürecin başında; Repeat yapısında ise döngünün sonunda kontrol edilir.
Böylece döngü içerisindeki yönergeleri, koşul kontrol edilmeden önce en az bir kere çalıştırmış olur. Bu yüzden koşulu kontrol etmeksizin en az bir kez yapılması gereken işlemler varsa Repat/Until döngü yapısının tercih edilmesi gerekir. Repeat/Until yapısının algoritması ve akış şeması şu şekildedir:
Şimdi, bu yapıya eş değer If/Then/Else yapısını inceleyelim.
8.6. Otomatik Sayaç Döngüsü
Döngü yapısının üçüncü türü otomatik sayaç döngüsüdür. Bu yapıda döngünün her tekrarında bir değişkenin değeri arttırılır ya da azaltılır. Arttırma değeri yönerge tarafından belirtilir. Bu döngüyü tasarlayan programcı, döngü tekrar sayısını kontrol etmek için değişken olarak tanımlanan bir sayaç tutar. Döngü, bu sayaç bitirme sayısından büyük olana kadar tekrar eder. Başlama ve bitiş değerleri ile arttırma değeri sabit; değişken ya da hesaplamalı olarak değişen bir değer olabilir. Döngü tamamlandıktan sonra tamamen değişebilir. Döngüye ilişkin koşul, döngünün başlangıcında ya da bitişinde olabilir.
Otomatik sayaç döngüsüne ilişkin algoritma ve akış şeması şu şekildedir:
Koşulun, döngünün başında ya da sonunda kontrol edilmesine göre akış şeması da değişir.
Sınıfın yaş ortalamasını bulmak için bu otomatik sayaç döngü yapısına ait algoritma ve akış şemasını inceleyelim.
8.7. İç İçe Döngüler
Karar yapılarında olduğu gibi döngüler de iç içe kullanılabilir. İç içe döngüler, tekrarlayan bir dizi işlem yine tekrar edilmek istendiğinde kullanılır. İçteki döngülerin dıştaki döngülerle aynı döngü yapısında olması gerekmez. Dıştaki döngü Repeat/Until (For) yapısında iken içteki döngü While/WhileEnd yapısında ya da tam tersi biçimde olabilir. Ancak içteki ve dıştaki döngüyü kontrol eden değişkenin farklı olması gerekir.
Örneğin aşağıda görülen 4 farklı yapı da aynı çıktıyı üretmektedir. Görüldüğü gibi dışta ve içte yer alan döngüler için farklı yapılar kullanılmıştır.
Comments