break in c etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
break in 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