C programlama : döngüler ve dallanma

Dallanma ve Döngü
C programlamada if ifadesi ve while döngüsü boolean cebrine dayanır. Aşağıda if ifadesini gösteren bir program vardır.

#include

int main()
{
int b;
printf(“Bir deger girin:”);
scanf(“%d”, &b);
if (b < 0) printf("Deger negatif\n"); return 0; } Yukarıdaki program kullanıcının girdiği sayıyı alarak if ifadesi ile sıfırdan büyük olup olmamasına göre karşılaştırır. Eğer girilen sayı sıfırdan küçükse program "Deger negatif" şeklinde bir çıktı verecektir. Dallanma ve Döngü

Aşağıda daha karmaşık bir örnek bulunmaktadır :

#include

int main()
{
int b;
printf(“Bir deger girin:”);
scanf(“%d”, &b);
if (b < 0) printf("Deger negatif\n"); else if (b == 0) printf("Deger sifir\n"); else printf("Deger pozitif\n"); return 0; } Yukarıdaki örnekte else if ve else bölümleri sıfır ve pozitif değerlerini değerlendirir. Aşağıda daha karmaşık bir boolean ifadesi bulunmaktadır : if ((x==y) && (j>k))
z=1;
else
q=10;

Yukarıdaki ifade şunu anlatmaktadır :

Eğer x değeri y değişkenine eşitse ve j değişkeni k değişkeninden büyükse z değişkeni 1 olacaktır. Diğer durumlarda ise q değişkeni 10 olacaktır.

C programlamada == ifadesinin eşitliği test ettiğini = ifadesinin ise değer atadığını unutmayınız. && ifadesi ise lojik ve işlemini gerçekleştirir.

Tüm lojik operatörler aşağıda listelenmiştir

eşitlik ==

küçüktür < büyüktür >

küçük eşit < = büyük eşit >=

eşit değil !=

ve &&

veya ||

değil !

while ifadesinin kullanımıda if kullanımı kadar kolaydır :

while (a < b) { printf("%d\n", a); a = a + 1; } Yukarıdaki döngü a değişkeni b' den büyük veya eşit olana kadar devam edecektir. While Döngüsü

C ayrıca do-while yapısını da kullanmaktadır :

C also provides a do-while structure:

do
{
printf(“%d\n”, a);
a = a + 1;
}
while (a < b); for döngüsü while ifadesinin yaptığı işlemleri oldukça basitleştirmektedir. Örneğin aşağıda while döngüsü x=1; while (x<10) { ................................................. x++; /* x++ ifadesi x=x+1 ile aynı anlama gelmektedir.*/ } Yukarıdaki ifade for döngüsüyle yazılacak olursa for(x=1; x<10; x++) { .................................................... } Başlangıç adımı x=1, test adımı x<10 ve arttırma adımı x++' dır. Görüldüğü gibi while döngüsüyle üç adımda yapılan işlem for döngüsüyle tek satırda gerçekleştirilebilir. Örneğin : a=1; b=6; while (a < b) { a++; printf("%d\n",a); } yukarıdaki ifade for döngüsüyle aşağıdaki gibi olacaktır : for (a=1, b=6; a < b; a++, printf("%d\n",a)); Döngü : Gerçek Bir Örnek Fahrenayttan Santigrad dereceye dönüşüm yapan bir program oluşturalım. Bu program while veya for döngülerini kullanarak kolaylıkla oluşturulabilir : #include

int main()
{
int a;
a = 0;
while (a < = 100) { printf("%4d F derece = %4d C derece\n", a, (a - 32) * 5 / 9); a = a + 10; } return 0; } Eğer yukarıdaki program çalıştırılacak olursa 0 Fahrenayt dereceden 100 fahrenayt dereceye kadar aşağıdaki tabloyu çıkaracaktır : 0 derece F = -17 derece C 10 derece F = -12 derece C 20 derece F = -6 derece C 30 derece F = -1 derece C 40 derece F = 4 derece C 50 derece F = 10 derece C 60 derece F = 15 derece C 70 derece F = 21 derece C 80 derece F = 26 derece C 90 derece F = 32 derece C 100 derece F = 37 derece C Yukarıdaki tabloda derecelerin onar onar arttığını farketmişsinizdir. Başlangıç, bitiş veya artış değerlerini kolaylıkla değiştirebilirsiniz. Eğer sonuçların daha kesin olmasını istiyorsanız floating point değerlerde alınabilir #include

int main()
{
float a;
a = 0;
while (a < = 100) { printf("%6.2f F derece = %6.2f C derece\n", a, (a - 32.0) * 5.0 / 9.0); a = a + 10; } return 0; } a değişkeninin bildiriminin float olarak değiştiği görülmektedir. %f sembolü, %d sembolünün yerini almıştır. Buna ek olarak %f sembolü değerinde noktanın solunda 6 basamak, sağında ise 2 basamak olabileceğini göstermektedir. Programımıza insan vücut sıcaklığı olan 98.6 F dereceyi içeren ekstra bir satır eklemek isteyelim. Bunun için : #include

int main()
{
float a;
a = 0;
while (a < = 100) { if (a > 98.6)
{
printf(“%6.2f F derece = %6.2f C derece\n”,
98.6, (98.6 – 32.0) * 5.0 / 9.0);
}
printf(“%6.2f F derece = %6.2f C derece\n”,
a, (a – 32.0) * 5.0 / 9.0);
a = a + 10;
}
return 0;
}

Yukarıdaki program son değer 100 olduğunda bir sorun çıkarmadan çalışacaktır. Ancak son değer 200 olarak değiştirilirse program 98.6 dereceyi çok fazla gösterecektir. Bu problemlem birkaç yolla çözülebilir. Bu yollardan birini inceleyecek olursak :

#include

int main()
{
float a, b;
a = 0;
b = -1;
while (a < = 100) { if ((a > 98.6) && (b < 98.6)) { printf("%6.2f F derece = %6.2f C derece\n", 98.6, (98.6 - 32.0) * 5.0 / 9.0); } printf("%6.2f F derece = %6.2f C derece\n", a, (a - 32.0) * 5.0 / 9.0); b = a; a = a + 10; } return 0; } ALIŞTIRMA - Yukarıdaki program üzerinde bazı değişiklikler yapın ve sonuçlarını inceleyin. - Yukarıdaki problemi çözmek için başka yollar bulmaya çalışın - Mili kilometreye çeviren bir program yazın. KAÇINILMASI GEREKEN C HATALARI - = işareti ile == işaretlerinin birbirlerinden farklı anlamlara geldiğini unutmayın - Sayıcıyı arttırmayı unutmayın. Unutulursa sonsuz bir döngü oluşacaktır.

Bir cevap yazın

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