1’den n’e kadar olan doğal sayıların toplamını hesaplamak için döngüler kullanılabilir. Bu sorunu çözmek için döngülerin nasıl kullanılacağını öğreneceksiniz.
Pozitif 1, 2, 3 sayıları … doğal sayılar olarak bilinir. Aşağıdaki programlar, kullanıcıdan bir girdi olarak pozitif bir tamsayı alır ve toplamı n’e kadar hesaplar.
Örnek 1 – Doğal Sayıların Toplamını For Döngüsü Kullanarak Hesaplama
#include <stdio.h>
int main()
{
int n, i, sum = 0;
printf("pozitif bir tamsayı girin: ");
scanf("%d",&n);
for(i=1; i <= n; ++i)
{
sum += i; // sum = sum+i;
}
printf("Toplam = %d",sum);
return 0;
}
Yukarıdaki program kullanıcının girdiği sayıyı alır ve n değişkeninde saklar. Daha sonra, for döngüsü verilen sayıya kadar olan toplamı hesaplamak için kullanılır.
Örnek 2 – Doğal Sayıların Toplamını While Döngüsü Kullanarak Hesaplama
#include <stdio.h>
int main()
{
int n, i, sum = 0;
printf("pozitif bir tamsayı girin: ");
scanf("%d",&n);
i = 1;
while ( i <=n )
{
sum += i;
++i;
}
printf("Toplam = %d",sum);
return 0;
}
Her iki programda da, n defalarca tekrarlanır. Ve, her yinelemede, i’nin değeri toplama eklenir ve i 1 ile arttırılır.
For mu While mı?
Her iki program da teknik olarak doğru olsa da, bu durumda For döngüsü kullanmak daha iyidir. Bunun nedeni, yineleme sayısının bilinmesidir.
Kullanıcı negatif bir tamsayı girerse, yukarıdaki programlar düzgün çalışmaz. İşte pozitif tamsayı girilene kadar kullanıcıdan girdi almak için yukarıdaki programda yapılan küçük bir değişiklik.
Örnek 3: Kullanıcı Pozitif Bir Tamsayı Girene Kadar Girdiyi Okuma Programı
#include <stdio.h>
int main()
{
int n, i, sum = 0;
do {
printf("pozitif bir tamsayı girin: ");
scanf("%d",&n);
}
while (n <= 0);
for(i=1; i <= n; ++i)
{
sum += i; // sum = sum+i;
}
printf("Toplam = %d",sum);
return 0;
}
Burada kullanıcıdan girmesi istenilen sayının pozitif olup olmadığını while içinde sorguladık (n <= 0). Kullanıcı negatif sayı girerse döngü başa dönüp tekrar kullanıcıdan pozitif bir tamsayı girmesini isteyecektir. Kullanıcı pozitif bir tamsayı girdiği durumda for döngüsü toplama işlemini yapmaya başlayacaktır.