Bilgisayar Bilimi

Döngü Yapısı İle Problem Çözme

1. Döngü Mantık Yapısı

Problem çözüm sürecinde kullanılacak üçüncü bir karar yapısı, döngü yapısıdır. Bu yapı, tekrarlayan bir yapıdır. Çoğu problem, aynı işlemi farklı verileri kullanarak tekrar etmeyi gerektirir. Bu yüzden bu yapı son derece önemlidir. Bu yapı kullanılarak isim listesinin alfabetik sıraya dizilmesi ya da ödeme kayıtlarının araştırılması gibi tekrarlayan işlemler yapılabilir. Bu yapı, karar yapısından daha zor anlaşılan bir yapıdır ama bu yapının kullanımı daha kolaydır. Bu yapıdaki zorluk, hangi yönergelerin tekrarladığını belirleme sürecidir.

Tekrarlayan işlemleri yürütmenin yanı sıra döngü yapısı işlemi, çözüm basamakları içerisinde önceki basamaklara yönlendirmek amacıyla da kullanılır. Bu durumda GoTo (Git) komutu kullanılabilir. Bu komut numarası verilen satıra yönlendirme işlemi yapar. GoTo komutu yerine döngü kullanmak, programın okunabilirliğini de artırmaktadır. Her biri If/Then/Else ya da GoTo komutlarını kullanan farklı yönerge setleri ile oluşturabilen 3 farklı döngü yapısı vardır. Ancak If/Then/Else karar mantık yapısıdır ve bir döngüyü yönetmek amacıyla kullanılmamalıdır.

Döngü türlerinden biri, bir koşul doğru olduğu sürece işlemleri tekrarlayan While/WhileEnd döngü yapısıdır. Bu yapı, koşul yanlış olduğunda döngü işlemleri tekrarlamayı durdurur. Bir diğeri bir koşul yanlış olduğu sürece ya da doğru olana kadar işlemleri tekrarlayan Repeat/Until döngü yapısıdır. Üçüncü bir tür ise otomatik sayaç döngüsüdür. Bu yapıda bir değişkene ilk değer atanır, belirlenen sabit bir biçimde sürekli arttırılarak hedef sayıdan büyük ya da eşit olana kadar işlemlerin tekrarlanması sağlanır. Problemin çözüm sürecine göre bu 3 türden herhangi biri tercih edilebilir. Her üç tür için oluşturulacak algoritma ve akış şeması birbirinden farklıdır. Programın okunabilirliğini arttırmak için girinti kullanmak son derece önemlidir.

Döngü yapısı kapsamında birkaç standart işlem türü vardır. Bunlardan ikisi; sayaç kullanarak arttırma ya da azaltma yapmak, diğeri ise birikeç kullanarak toplam ya da işlem sonucunu hesaplamaktır. Her iki durumda değişkene atanan değer değişir ve yine aynı değişkende tutulur. Sayaç ve birikeç arasındaki temel fark, eklenen ya da çıkarılan değerdir. Sayarken değer sabittir ancak biriktirirken değişebilir. Her iki durumda da işlemlere başlamadan önce değişkene 0 (sıfır) değeri atanır ki bu işleme “ilk değer atama” denir.



2. Arttırma

Sayma ya da artırma işlemi bir değişkene sürekli sabit bir değer ekleyerek gerçekleştirilir. Bu işlemi gerçekleştirmek için bir atama satırı gerekir. Örneğin

sayaç = sayaç + 1 ya da s = s + 1

değişkeni her işlem adımında değişken değerine bir ekleyerek değeri artırır. Atama işlemi “= (eşit)” işaretinin sağ tarafındaki işlem sonucunun sol taraftaki değişkene yüklenmesini sağlar. Artırma işlemi bir atama yönergesidir. Bu yönerge programa, maddelerin ve insanların derece ve benzeri bir dizi olgu sayısını problemin çözümünün bir parçası olarak hesaba katmasını sağlar. Arttırma işlemi yapılırken kullanılan atama yönergesini inceleyelim. Kullandığımız değişken, atama ifadesinin her iki tarafında da yer almaktadır. Değişken + işaretinden sonra gelen değer kadar arttırılır. Bu yönerge, sayacın değerini alır ve bir ekleyerek değiştirir. Böylece değişkenin yeni bir değeri olur. Arttırmak için kullanılan değer 1, 2, 3 gibi pozitif sayılar arasından seçilen farklı bir değer olabilir hatta arttırmak yerine azaltmak istenirse negatif değerler de kullanılabilir. Bu örnekte sayaç değişkenine, döngüye girmeden önce “0” değeri verilerek ilk değer ataması yapılmıştır.

3. Biriktirme

Programın diğer bir görevi ise bir grup sayıyı toplayıp biriktirerek toplamı ya da sonucu bulmaktır. Biriktirme işlemi arttırma işlemi ile çok benzerdir ancak her seferinde toplama ya da sonuca eklenen değer sabit olmayabilir.

Biriktirme işlemi için kullanılan yönerge şu şekildedir:

toplam = toplam + değişken ya da t = t + d

Örneğin toplam satışı bulmak için kullanılacak yönerge şöyledir:

toplam satış = toplam satış + satış

Arttırma örneğinde olduğu gibi kullanılan değişken atama yönergesinde her iki tarafta da yer alır ancak eklenen değer (bu örnekte satış değişkeni) her defasında değişebilir. Diğer bir ifade ile, birikeç ile toplam ya da sonuç değeri içeren bir değişkene yeni bir değer eklenmektedir.

Bu örneklerde döngüye girmeden önce toplam satış ya da toplam değerine ilk değer olarak “0” atanmalıdır. Bir dizi sayının çarpımını hesaplamak, iki durum hariç, bu sayıların toplamını bulmaya benzemektedir: (1) “+” sembolü yerine “*” kullanılır, (2) sonuç değişkenine atanan ilk değer “0” değil “1” olmalıdır.

sonuç = 1

sonuç = sonuç * sayı

Bir değişken tekrarlı yapı içerisinde yeniden kullanılabilir.

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üsü 1

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:

While While End Döngüsü 2

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.

While While End Döngüsü 3

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?

While While End Döngüsü 4



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:

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,

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:

Repeat Until Döngüsü 1

Şimdi, bu yapıya eş değer If/Then/Else yapısını inceleyelim.

Repeat Until Döngüsü 2

Repeat Until Döngüsü 3

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.

Otomatik Sayaç Döngüsü 1

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.

Otomatik Sayaç Döngüsü 2



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.

İçe Döngüler 1

8. Göstergeler

Göstergeler, programcının bir akışı durdurmak ya da döngüyü sonlandırmak için kontrol amaçlı kullandığı değişkenlerdir. Göstergeler mantıksal bir veri ya da değer olabilir ve indikatör olarak da ifade edilir. Bu değerler, akışı kontrol etmek ve akışa müdahale etmek için kullanılır. Kullanıcılar bu değişkenler hakkında bilgi sahibi değildirler. Hata göstergesi, girdi ya da çıktı da bir hata oluştuğunu belirtir. Veri sonu göstergesi, girilecek başka veri olmadığı anlamına gelir.

Bu algoritmada döngü, gösterge olarak kullanılan “i” ifadesinin değerine göre sonlandırılmaktadır.

Başla.

i = 0,

Yaşı Oku; (yaş)

Eğer yaş<19; “Merhaba Genç” yaz; değilse “Yaşınız 18’den büyük.” yaz;

i = i+1;

Eğer i=25; 7. adıma git; değilse 3. adıma git

Bitir.

9. Öz Yineleme

Öz yineleme, farklı bir döngü yapısıdır. Bu durum, bir fonksiyon ya da modül kendi kendini çağırdığında oluşur. Bu durum için aşağıda verilen faktör hesaplama örneği incelenebilir.

Başla

Sayı Girin

Faktoriyel (n); Eğer n>1 ise Faktoriyel=n*Faktoriyel(n-1); değilse Faktoriyel=1;

Bitir.


Döngü Yapısı İle Problem Çözme konusu ile ilgili sunum dosyasına ve konu testine (yakında) aşağıdan ulaşabilirsiniz.

Sunu İndir2

Online Test Çöz2

Bir cevap yazın

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