break c etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
break c etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
  Bu yazımızda do...while döngülerine, break ve continue ifadeleri ile ilgili bilgi vereceÄŸiz ve örneklerle bu ifadeleri pekiÅŸtireceÄŸiz. Hadi baÅŸlayalım.

do...while Tekrarlama İfadesi

do...while tekrarlama ifadesi while ifadesine benzerdir. while ifadesinde, döngü devam koÅŸulu, döngü gövdesi icra edilmeden önce döngü başında kontrol edilir. do...while ifadesi döngü devam koÅŸulunu döngü gövdesi yapıldıktan sonra kontrol eder. Yani do...while döngülerinde kontrol sonda olduÄŸu için döngü içindeki deyimler en az bir kere iÅŸlem görür. Genel biçimi aÅŸağıda verilmiÅŸtir.

do
    deyim
while(koÅŸul);
...

do döngünün başını gösteren bir anahtar sözcüktür. Döngünün iç bölgesi do anahtar sözcüğünden while anahtar sözcüğüne kadar olan bölgedir. Diğerlerinde olduğu gibi, tek bir deyim için bloklamaya gerek yoktur, fakat birden fazla deyim için bloklama yapılır. Örneğin:

do{
    deyim1
    deyim2
    ...
}while(koÅŸul);
...



do...while döngüsünün gövdesi bir kez yürütülür.
 Test Expression doÄŸruysa döngünün gövdesi yeniden yürütülür ve Test Expression bir kez daha deÄŸerlendirilir. Bu iÅŸlem Test Expression yanlış olana kadar devam eder. Test Expression yanlış ise döngü sona erer.





Aşağıdaki örneği inceleyelim:

do{
    printf("(E)vet ya da (H)ayır\n");
    ch = getch();
}while((ch = toupper(ch)) != 'E' && ch != 'H');

Bu örnekte kullanıcı E,e,h,H harflerinden birini girmeye zorlanmaktadır. Bu harflerden biri girilmediÄŸi sürece döngü devam edecektir. Bir örnek daha yapalım.

#include <stdio.h>
int main(void){
    unsigned int counter = 1;
    do{
        printf(" %u ",counter);
    }while(++counter <=10);
}

Ekran çıktısı:

1 2 3 4 5 6 7 8 9 10

break ve continue İfadeleri

break ve continue ifadeleri kontrol akışını deÄŸiÅŸtirmek için kullanılır.

break İfadesi

break anahtar sözcüğü döngüleri sonlandırarak program akışını döngünün dışındaki ilk deyime taşır. Ã–rneÄŸin:

for(;;){
    ...   
    ch = getchar();
    if(ch =='q')
        break;
}
...

Burada klavyeden girilen karakter 'q' olduğunda break anahtar sözcüğü ile döngü kırılmaktadır. for(;;) sonsuz bir döngü olduğundan çıkış da ancak break ile mümkün olabilir.

...
while(k<100){
    ...   
    if(sample()<0) break;
    ...
}
...

Bu örnekte ise sample() fonksiyonunun geri dönüş değeri sıfırdan küçük ise döngü kırılmaktadır. Aşağıdaki örnekte de 0'dan 100'e kadar olan tamsayıları ekrana yazdırılıyor.

k=0;
for(;;){
    if(k>=100) break;
    printf("%d\n",++k);
}


continue İfadesi

continue anahtar sözcüğü o anda içinde bulunan yinelemeyi keserek bir sonraki yinelemeye geçilmesine neden olur. AÅŸağıdaki örneÄŸi inceleyelim.

do{
    ch = getchar();
    if(isupper(ch))
        continue;
    ...
}while(ch!='q');

Bu örnekte girilen harf, büyük harf ise işlem yapma, büyük harf değilse işlemleri gerçekleştir. Girilen harf 'q' ise döngüden çıkar.


Örnekler

1) Girilen sayıların toplamını bulan ve 0 girildiğinde döngüden çıkan program

// Program to add numbers until the user enters zero

#include <stdio.h>
int main() {
  double number, sum = 0;

  // the body of the loop is executed at least once
  do {
    printf("Enter a number: ");
    scanf("%lf", &number);
    sum += number;
  }
  while(number != 0.0);

  printf("Sum = %.2lf",sum);

  return 0;
}

Ekran Çıktısı:

Enter a number: 1.5
Enter a number: 2.4
Enter a number: -3.4
Enter a number: 4.2
Enter a number: 0
Sum = 4.70


2)  

#include<stdio.h>  
#include<stdlib.h>  
void main ()  
{  
    char c;  
    int choice,dummy;    
    do{  
    printf("\n1. Print Hello\n2. Print Javatpoint\n3. Exit\n");  
    scanf("%d",&choice);  
    switch(choice)  
    {  
        case 1 :   
        printf("Hello\n");   
        break;  
        case 2:    
        printf("Javatpoint\n");  
        break;  
        case 3:  
        exit(0);   
        break;  
        default:   
        printf("please enter valid choice\n");      
    }  
    printf("do you want to enter more?\n");   
    scanf("%d",&dummy);  
    scanf("%c",&c);  
    }while(c=='y');  
}    


Ekran Çıktısı

1. Print Hello
2. Print Javatpoint
3. Exit
1
Hello
do you want to enter more?
y

1. Print Hello
2. Print Javatpoint
3. Exit
2
Javatpoint
do you want to enter more?
n

3) 1'den 10'a kadar sayıları yazan program

#include<stdio.h>  
int main(){    
    int i=1;      
    do{    
        printf("%d \n",i);    
        i++;    
    }while(i<=10);   
    return 0;  
   

Ekran Çıktısı

1
2
3
4
5
6
7
8
9
10


4)  Girilen sayının çarpım tablosundaki deÄŸerleri yazan program

#include<stdio.h>  
    int main(){    
    int i=1,number=0;    
    printf("Enter a number: ");    
    scanf("%d",&number);    
    do{    
        printf("%d \n",(number*i));    
        i++;    
    }while(i<=10);    
    return 0;  
}    

Ekran Çıktısı


Enter a number: 5
5
10
15
20
25
30
35
40
45
50

5) Max 10 sayı alan ve bunları toplayan program. Kullanıcı negatif sayı girdiğinde döngüden çıkan program.


// Program to calculate the sum of numbers (10 numbers max)
// If the user enters a negative number, the loop terminates

#include <stdio.h>

int main() {
   int i;
   double number, sum = 0.0;

   for (i = 1; i <= 10; ++i) {
      printf("Enter n%d: ", i);
      scanf("%lf", &number);

      // if the user enters a negative number, break the loop
      if (number < 0.0) {
         break;
      }

      sum += number; // sum = sum + number;
   }

   printf("Sum = %.2lf", sum);

   return 0;
}

Ekran Çıktısı

Enter n1: 2.4
Enter n2: 4.5
Enter n3: 3.4
Enter n4: -3
Sum = 10.30


6) Max 10 sayı alan ve bunları toplayan program. Kullanıcı negatif sayı girdiÄŸinde toplamaya eklemeyen program.

// Program to calculate the sum of numbers (10 numbers max)
// If the user enters a negative number, it's not added to the result

#include <stdio.h>
int main() {
   int i;
   double number, sum = 0.0;

   for (i = 1; i <= 10; ++i) {
      printf("Enter a n%d: ", i);
      scanf("%lf", &number);

      if (number < 0.0) {
         continue;
      }

      sum += number; // sum = sum + number;
   }

   printf("Sum = %.2lf", sum);

   return 0;
}

Ekran Çıktısı

Enter n1: 1.1
Enter n2: 2.2
Enter n3: 5.5
Enter n4: 4.4
Enter n5: -3.4
Enter n6: -45.5
Enter n7: 34.5
Enter n8: -4.2
Enter n9: -1000
Enter n10: 12
Sum = 59.70





Bir sonraki derse ulaÅŸmak için: C'de Fonksiyonlar #C4
Bir önceki derse ulaÅŸmak için: C'de Program Kontrolü - switch-case #C3.2


Kaynaklar:

A'dan Z'ye C programlama
Deitel Deitel C ile programlama
https://www.programiz.com/c-programming/c-do-while-loops
javatpoint.com/do-while-loop-in-c
https://www.programiz.com/c-programming/c-break-continue-statement