1. Skip to Menu
  2. Skip to Content
  3. Skip to Footer>

for Yapısıyla ilgili örnekler

PDF Yazdır e-Posta

Written by Admin

Posted on 07 Eylül 2010

Son Güncelleme 07 Eylül 2010

for YAPISIYLA İLGİLİ ÖRNEKLER

Aşağıdaki örnekler for yapısında kontrol değişkeninin nasıl değiştirilebileceğini göstermektedir.

1. Kontrol değişkenini 1'den 100'e kadar birer birer arttır.

1
for ( i = 1; i <= 100; i++)

2. Kontrol değişkenini 100'den 1'e kadar birer birer azalt.

1
for ( i = 100; i <= 1; i--)

3. Kontrol değişkenini 7'den 77'ye kadar yedişer yedişer arttır.

1
for ( i = 7; i <= 77 ; i += 7)

Şekil 4.4 Tipik bir for döngü yapısının akış grafiği

4. Kontrol değişkenini 20'den 2'ye kadar ikişer ikişer azalt.

1
for ( i = 20; i <= 2 ;i -= 2)
5. Kontrol değişkenini 2, 5, 8, 11, 14, 17, 20 değerlerini alacak biçimde değiştir.
1
for ( j = 2; j <=20; j += 3)

6. Kontrol değişkenini 99, 88, 77, 66, 55, 44, 33, 22, 11, 0 değerlerini alacak biçimde değiştir.

1
for ( j = 99; j <= 0 ;j -= 11)
Şimdiki 2 örneğimiz, for yapısının basit uygulamalarını göstermektedir. Şekil 4.5, for yapısını 2'den 100'e kadar tüm çift sayıları toplamak için kullanmaktadır.

Şekil 4.5'te, for yapısının gövdesinin, aşağıdaki biçimde virgül kullanarak for içine alınabileceğine dikkat ediniz.

1
2
for (sayi=2;sayi<=100;toplam+=sayi,sayi+=2)
; /*boş gövde*/

    İyi Programlama Alıştırmaları 4.9
    for yapısı gövdesindeki ifadeler, for yapısı içine alınabilse de bunu yapmaktan kaçınmalıyız. Çünkü programın okunurluğu zorlaşır.

    İyi Programlama Alıştırmaları 4.10
    Kontrol yapısını eğer mümkünse tek bir satıra sığdırmak.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    /* Şekil 4.5: fig04_05.c
  for ile toplama */
#include <stdio.h>
 
int main( )
{
int toplam = 0, sayi;
 
for ( sayi = 2; sayi <= 100; sayi += 2 )
toplam += sayi;
 
printf( "Toplam %d\n", toplam );
 
return 0;
}

Toplam 2550

Şekil 4.5 for ile toplama

Diğer örneğimiz ise for yapısı kullanarak birleşik faiz hesaplamaktadır.Aşağıdaki problemi inceleyiniz:

Bir kişi $1000'ını %5 faizle bankaya yatırmıştır. Bütün faizin hesaptaki paraya eklendiğini düşünerek 10 yıl boyunca, her yıl sonunda hesapta birikecek parayı hesaplayıp yazdırınız. Aşağıdaki formülü kullanınız:

    a = p (1 + r)n

    a: n yıl sonra hesapta birikecek miktar
    p: ilk yatırılan miktar
    n: yıl sayısı
    r: faiz oranı

Bu problem, 10 yıl boyunca her yıl sonunda hesapta biriken parayı bulmamız için yukarıdaki formülü kullanmamızı istiyor. Öyleyse bir döngü kullanmalıyız. Çözüm, Şekil 4.6'da gösterilmiştir. [ not : Çoğu UNIX C derleyicilerinde Şekil 4.6'daki programı derleyebilmek için –lm yazmanız gerebilir. ( Örneğin : cc -lm fig04_06.c )

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    /* Şekil 4.6: fig04_06.c
  Birleşik faizin hesaplanması */
#include <stdio.h>
#include <math.h>
 
int main( )
{
int yil;
double miktar, anapara = 1000.0, oran = .05;
 
printf( "%4s%21s\n", "Yıl", "Depozito Miktarı " );
 
for ( yil = 1; yil <= 10; yil++ ) {
miktar = anapara * pow( 1.0 + oran, yil );
printf( "%3d%21.2f\n", yil, miktar );
}
 
return 0;
}

 


Yıl Depozito Miktarı
1 1050.00
2 1102.50
3 1157.62
4 1215.51
5 1276.28
6 1340.10
7 1407.10
8 1477.46
9 1551.33
10 1628.89

Şekil 4.6 for ile birleşik faiz hesabı

for yapısı ( 13.satır ) kontrol değişkenini 1'den 10'a kadar birer birer arttırarak, gövdesini 10 kez çalıştırmaktadır. C, üs almak için özel bir operatöre sahip olmasa da bunun yerine standart kütüphane fonksiyonlarından pow fonksiyonunu bu amaçla kullanabilir. pow ( x, y ) fonksiyonu x'in y'ninci kuvvetini hesaplar. Bu fonksiyon, double tipte iki eleman alır ve double tipinde bir sonuç döndürür. double tipi, float tipine oldukça benzer ancak float tipi kullanılarak saklanabilecek ondalıklı sayıları daha büyük bir duyarlıkta saklayabilir ve double tipindeki bir değer, float tipiyle temsil edilebilecek bir değerden daha büyük değerler temsil edebilir. pow gibi bir matematik fonksiyonu programda kullanıldığında, math.h ( satır 4 ) öncü dosyasının programa eklenmesi gerektiğine dikkat ediniz. Bu program, math.h programa eklenmeseydi hatalı çalışırdı. pow fonksiyonu double tipte elemanlar kullanır. sene değişkenin tamsayı olduğuna dikkat ediniz. math.h dosyası, derleyiciye fonksiyonu çağırmadan önce, yil değişkeninin değerini geçici olarak double tipte temsil etmesi gerektiğini söyleyen bilgiler içerir. Bu bilgi, pow fonksiyonunun prototipinde yer almaktadır. Fonksiyon prototipleri, ANSI/ISO C'nin önemli özelliklerindendir ve 5.Ünitede detaylı bir biçimde açıklanmıştır. pow fonksiyonu ve diğer matematik kütüphane fonksiyonlarını da 5.ünitede daha detaylı olarak bulabilirsiniz.

Bu örneğimiz için, anapara, oran ve miktar değişkenlerimizi double tipte tanıttığımıza dikkat ediniz. Bunu, programda basitlik sağlaması için yaptık çünkü burada dolarların ondalıklı kısımlarıyla ilgileniyoruz.

    İyi Programlama Alıştırmaları 4.11
    float ve double tipte değişkenleri parayla ilgili hesaplamalarda kullanmayınız. Ondalıklı sayıların kesin olarak gösterilememesinden dolayı hatalar oluşabilir. Örneklerde, tamsayıların para ile ilgili hesaplarda kullanımını araştıracağız.

Şimdi, float ve double tiplerinin dolar miktarlarını göstermek için kullanıldıklarında nelerde sorun yaşayabileceğimize bakalım.

float tipiyle temsil edilen iki dolar miktarının hafızada, 14.234 ( %.2f ile 14.23 olarak yazdırılacaktır ) ve 18.763 ( %.2f ile 18.67 olarak yazdırılacaktır ) saklandıklarını düşünelim. Bu miktarlar toplandıklarında 32.907 sonucunu verir ve %.2f ile bu sonuç yazdırıldığında 32.91 sonucunu verir.Aşağıda, yapılan işlemin çıktısı gösterilmiştir:

14.23
+ 18.67
----------
32.91

Ancak toplamınızın sonucu 32.90 olmalıydı! Daha önceden sizi uyarmıştık.

Programımızda miktar değişkenin değerini yazdırmak için %21.2f dönüşüm belirtecini kullandık. Dönüşüm belirtecindeki 21 , değerin yazdırılacağı alan genişliğini belirtir. 21 alan genişliği, yazdırılacak değerin 21 pozisyon olarak gözükeceği anlamına gelir. 2 ise duyarlığı (noktadan sonra kaç basamak yazdırılacağını) gösterir. Eğer yazdırılacak değer alan genişliğinden daha az yer kaplıyorsa, değer otomatik olarak sağa dayalı olarak yazdırılır. Bu, aynı duyarlığa sahip ondalıklı sayılar için kullanışlı bir yöntemdir. Bir değeri alan içinde sola yaslamak için % işaretiyle alan genişliği arasına eksi ( - ) işareti konmalıdır. Eksi işareti tamsayıları ve karakter stringlerini sola yaslamakta da kullanılabilir. (Örneğin, %-6d ve %-8s ) printf ve scanf fonksiyonlarının biçimlendirme yeteneklerini 9.ünitede anlatacağız.