C Programlama Dili Döngüler

Döngüler programlama dillerinin temel yapılarından biridir, özellikle bu dersten itibaren devam edeceğimiz C programlama dili dersleri de döngülere bağlı olarak devam edecektir, o yüzden bu dersi dikkatli bir şekilde incelemenizi ve bol bol pratik yapmanızı tavsiye ederiz.

Programlama dillerinde aynı işlem kümelerini birden fazla defa tekrar yaptırmak istiyorsak döngüler tam bu noktada yardımımıza yetişiyor. Örneğin ekrana alt alta 100 tane “merhaba dünya” yazdırmak istiyoruz diyelim, bu güne kadar öğrendiğimiz bilgilere göre mecburen alt alta 100 satır şeklinde “merhaba dünya” yazdırarak bu işi yapardık ancak bu işi daha kısa yoldan yapabiliriz, döngüler sayesinde sadece bir kere “merhaba dünya” yazarak bizim yerimize döngünün onu 100 kere tekrar ettirmesini sağlayabiliriz.

Daha da teorik olarak ifade etmek gerekirse programın neyi, nasıl, ne zaman yapmasını belirleyebildiğimiz yapılara döngü deriz. C programlama dilinde temel olarak üç tane döngü yapısı vardır;

  1.  For Döngüsü
  2. While Döngüsü
  3. Do..While Döngüsü

Döngü yapılarında temel olarak yapılması istenen işlemlerin kaç kere veya hangi şartlar altında yapılacağını belirlemek çok önemlidir, eğer uygun değerler kullanılmazsa bir döngü kullanıcının bilgisayarının kaynaklarını oldukça zorlayabilir. Bu yüzden doğru adım sayısını belirlemek oldukça kritiktir. Döngüler içerisinde bu adım sayılarını belirlerken karşılaştırma operatörlerinden de faydalanabiliyoruz, bu yüzden operatörler hakkında bilginiz yoksa öncelikle burada ki yazımızı okuyarak operatörler hakkında bilgi sahibi olabilirsiniz. Şimdi döngüleri daha detaylı olarak inceleyebiliriz.

For Döngüsü

Özellikle yapılacak işlem sayısının belli olduğu durumlarda for döngülerini kullanırız. Başlangıç değerimiz ve gideceğimiz hedef değer belli olduğu için döngünün adım sayısını da belirlemiş oluyoruz, döngünün temel yapısı şu şekildedir;

for (degisken=baslangic_degeri;degisken<=hedef_deger;degisken++){
    islemler;
}

Parantez içinde ki bölüm fark ettiğiniz gibi “;” işaretleri ile üç ayrı bölüme ayrılmıştır, bu üç bölümün hepsi farklı durumları ifade ederler. İlk bölümde ismini bizim belirlediğimiz bir değişkeni başlangıç değerine eşitleriz; ikinci bölümde ise belirtilen karşılaştırmanın doğruluğu kontrol edilir, şart sağlandığı sürece döngü devam eder; son kısımda ise belirlediğimiz değişkenin değerinin döngünün her turunda bir artmasını veya azalmasını belirleriz. Bunun için ++ veya — operatörlerinden birisini kullanabilirsiniz.

Şimdi 10’a kadar olan pozitif sayıların toplamını hesaplayan bir program yazarak for döngüsünün mantığını daha iyi anlamaya çalışalım.

#include <stdio.h>
int main(){
 int i,toplam;
 toplam=0;
 for(i=1;i<=10;i++){
  toplam+=i; // Her adımda "i" değeri toplam değişkenine ekleniyor.
 }
 printf("Toplam = %d",toplam);
 return 0;
}
Toplam = 55

Kodlamayı açıklamak gerekirse, for döngüsüne girdiğimizde “i” değişkenine 1 değerini atıyoruz ve her adımda “i++” operatörü ile birer birer artmasını sağlayarak son değer olarak belirlediğimiz 10’a kadar gitmesini sağlıyoruz, “i” değeri 11 olduğu zaman “i<=10” koşulunu sağlamayacağı için döngüye devam etmeyecektir. Döngünün içerisinde ki işlemlerde ise her “i” değerini daha önce belirlediğimiz “toplam” isminde ki değişkenine ekliyor (burada toplam+=i; yerine toplam=toplam+i; de yazılabilirdi.) ve 10’a kadar olan sayıların toplamını hesaplamış oluyor.

Şimdide 10’a kadar olan sayıların karelerini ekrana yazdıran programın koduna bir bakalım;

#include <stdio.h>
int main(){
 int i,kare;
 for(i=1;i<=10;i++){
  kare=i*i;
  printf("%d    ",kare);
 }
 return 0;
}
1    4     9     16     25     36     49     64     81    100

Bu döngünün içerisinde de her “i” değerini kendi ile çarparak yani karesini alarak ekrana yazdırıyor, örneklerimizi bu şekilde çoğaltabiliriz…

C programlama dilinde bu yazımızda anlatacağımız üç farklı döngü yapısı içerisinde en çok kullanılan yapı for döngüleridir. Özellikle de sonra ki konularda göreceğimiz diziler ve matrislerle beraber kullanımı oldukça yaygındır.

While Döngüsü

While döngüsü ise işleyişi ve anlaşılması çok kolay bir döngü yapısıdır. Belirlediğimiz bir koşul sağlandığı sürece belirlediğimiz işlemlerin gerçekleşmesini sağlayan döngüye while döngüsü denir. Kod işleme sırasında while döngüsüne gelen programımız öncelikle döngünün şartının sağlanıp sağlanmadığını kontrol eder, daha sonra da eğer şart sağlanıyor ise döngüye girip içeride ki işlemleri yapıp döngüden çıkar, daha sonra tekrar şartı kontrol eder ve şart hala sağlanıyorsa tekrar döngüye girer, bu işlem döngüsü while döngüsünün şartı sağlanmayana kadar devam eder. While döngüsünün şartı sağlanmadığı zaman döngü tamamen terk edilir ve sonra ki kod yapılarının çalıştırılmasına geçilir. While döngülerinin temel yapısı aşağıda ki gibidir;

while(koşul){
    işlemler;
}

koşul kısmında daha önce öğrendiğimiz operatörlerden yararlanacağız, bu koşul bölümünde tek bir şartı kontrol edebileceğimiz gibi birden fazla şartı da kontrol etmemiz mümkündür, bu gibi durumlarda bu şartlar “ve” ile “veya” kontrolleri ile birbirlerine bağlanırlar. Şimdi while döngüsünün kullanımını örneklerle daha iyi bir şekilde anlayalım.

Girilen bir sayıya kadar olan sayıların karelerinin toplamını ekrana yazdıran programı yazalım.

#include <stdio.h>
int main(){
 int i,sayi,toplam;
 printf("Sayi Giriniz: ");
 scanf("%d",&sayi);
 i=0;
 toplam=0;
 while (i<sayi){
  toplam+=i*i;
  i++;
 }
 printf("Toplam: %d",toplam);
 return 0;
}

Bu kod içerisinde sırayla şu işlemleri yapıyoruz.

  • Öncelikle kullanıcıdan “sayi” değişkeni için bir sayı değeri alıyoruz.
  • Daha sonra da önceden tanımlayacağımız “i” ve “toplam” değişkenlerine 0 değerini atıyoruz, bunu yapmamızın nedeni bu değişkenlerin tanımlandığı zaman memory üzerinde ki rastgele değerlerden birine sahip olma ihtimalleridir. Örneğin toplam değişkenini tanımladığımızda bilgisayar bu değişkeni memory üzerinde bir yere atayacak ve belki de ilk değeri 12412532523 gibi bir sayı olabilecektir, bu yüzden değişkenlerimizin değerlerini sıfırlıyoruz.
  • “i” değişkenini zaten sıfırladığımız için “i” değişkenin değeri kullanıcının gireceği “sayi” değişkeninin değerinden küçük olacaktır, yani koşul sağlanacaktır, bu sayede programımız döngüye girecek.
  • Döngüye girdikten sonra “i” değişkenin değerini kendisi ile çarpacak ve “toplam” değişkeninin değerinin üstüne ekleyecek, daha sonra da döngünün ilerlemesi için “i” değişkeninin değerini bir arttırıyoruz. Bunu yapmamızda ki amaç döngünün sonsuzluğa kapılmamasıdır, eğer döngü içerisinde “i” değişkeninin değerini değiştirmezsek şart sürekli sağlanacağı için döngü asla sona ermeyecektir ve program hata verecektir.
  • Belirli bir işlem sayısı sonrasında “i” değişkenin değeri “sayi” değişkeninin değerini geçeceği için, tekrar döngüye girilmeyecektir ve döngüden sonra ki işlemlere devam edilerek toplam değeri ekrana yazdırılacaktır.

Do While Döngüsü

Do While döngüsü ise while döngüsüne alternatif bir döngü yapısıdır. Aralarında ki fark ise programımız while döngüsüne girmeden önce döngünün koşulunun sağlanıp sağlanmadığını kontrol eder, eğer şart sağlanırsa döngüye girerdi. Do While döngü yapısında ise program direk olarak döngüye girer, döngü içerisinde ki işlemleri gerçekleştirir ve en son döngüden çıkarken şartın sağlanıp sağlanmadığını kontrol eder. Bu durumda do while döngü yapılarının şartlar sağlansa da sağlanmasa da en az bir kez döngünün içerisine girecektir, ancak while döngüsünde şartlar sağlanmıyorsa döngüye hiç girilmezdi.
Genellikle kodlamalarda while döngüleri, do while döngülerine oranla daha çok tercih edilirler ancak bazı durumlar da şartlar ne olursa olsun en az bir defa döngüye girilmesini istiyorsak o zaman do while döngü yapısını tercih edebiliriz. Do While döngülerinin temel yapısı aşağıda ki gibidir;

do{
    işlemler;
} while(koşul);

Şimdi yukarı da yaptığımız örneğin do while döngüsü ile yapılmış haline bir göz atalım.

#include <stdio.h>
int main(){
 int i,sayi,toplam;
 printf("Sayi Giriniz: ");
 scanf("%d",&sayi);
 i=0;
 toplam=0;
 do {
  toplam+=i*i;
  i++;
 }while(i<sayi);
 printf("Toplam: %d",toplam);
 return 0;
}

Döngülerin temel kullanımları bu şekildedir, ancak döngüler programlama dillerinin temelini oluşturduğu için konunun iyice kavranması oldukça önemlidir. Özellikle ileride göreceğimiz diziler ve matrisler konuları ile daha karmaşık ve iç içe döngüler kullanmaya başlayacağız, önümüzde ki derste iç içe döngülerin kullanımlarından bahsedeceğiz. Eğer bu konu hakkında sorunlar yaşıyorsanız yorum bölümünden sorularınızı sorabilir veya örnek sorular bölümünden diğer örnekleri inceleyebilirsiniz.

Yorumlar (3)

  1. ogün dedi ki:

    acaba for döngüsünün hızını arttırma olalığımız var mı?
    örneğin 100 kere dönen döngü 5 saniye sürsün bunu 1 saniyeye nasıl çekebliriz? :)
    Yazdığım programda cpu %15 etkiliyor %100 olsa daha kısa sürer bilginiz var mı bu konu hakkında (:

  2. Halil dedi ki:

    sevgili Mehmet Burak,
    Daha önce sana yazmıştım ve teşekkür etmiştim. 2 yıl önce yazmış olduğun c programlama konusundaki yazılarını okurken bir konuda dikkatini çekme gereği duydum.Bana kızma. ”ki” nin kullanımına dikkat. ” burada ki, aşağıda ki, içinde ki, ” sözcüklerinde ”ki” ayrı yazılmaz. Ayrı yazıldığı yerler vardır ve anlamı değişir.
    Sevgilerimle. Tekrar başarılar diliyorum.
    Halil Soyuer