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

Basit C Programları-İki Tam Sayıyı Toplatmak

PDF Yazdır e-Posta

Written by Admin

Posted on 05 Eylül 2010

Son Güncelleme 05 Eylül 2010

Bu programımızda scanf fonksiyonunu kullanarak, kullanıcıların klavyeden gireceği iki tamsayıyı tespit edip, bunları toplatacağız. Toplamı ise printf fonksiyonu sayesinde ekranda göstereceğiz. Program ve programın örnek bir çıktısı Şekil 2.5'te gösterilmiştir.

/*Toplama programı*/ yorumu, programın amacını belirmektedir. Daha önceden belirttiğimiz gibi, her program main çalıştırılarak başlar. Küme parantezleri main fonksiyonunun gövdesinin başlangıcını ve bitişini belirtirler.

1 /*Şekil 2.5:prog02_05.c
2 Toplama programı*/
3 #include <stdio.h>
4
5 int main( )
6 {
7 int tamsayi1,tamsayi2,toplam; /*bildirim*/
8
9 printf ( "İlk tamsayıyı giriniz\n" ); /*mesaj yazdırma*/
10 scanf ( "%d",&tamsayi1); /*ilk tamsayının okunması*/
11 printf ( "İkinci tamsayıyı giriniz\n" ); /*mesaj yazdırma*/
12 scanf ( "%d",&tamsayi2); /*ikinci tamsayının okunması*/
13 toplam = tamsayi1+tamsayi2; /*toplamın atanması*/
14 printf ( "Toplam %d dir\n",toplam ); /*toplamın yazdırılması*/
15
16 return 0; /*programın başarıyla sona erdiğini belirtmek*/
17 }

 

İlk tamsayıyı giriniz
45
İkinci tamsayıyı giriniz
72
Toplam 117 dir


Şekil 2.5 Toplama programı
7.satırdaki
int tamsayi1, tamsayi2, toplam;

bir bildirimdir. tamsayi1, tamsayi2 ve toplam, değişkenlerin isimleridir. Değişkenler, programın kullanabileceği bir değerin saklanacağı hafıza konumlarıdır. Bu bildirim, tamsayi1, tamsayi2 ve toplam değişkenlerinin int tipinde olduklarını yani bu değişkenlerin 7, -11, 0, 31914 gibi tamsayı değerlerini tutacağını belirtir. Değişkenlerin programda kullanılabilmesi için değişkenler bir isim ve değişken tipiyle, main fonksiyonunun başladığını belirten küme işaretinden , { , hemen sonra bildirilmelidir. C'de int tipinden başka veri tipleri de vardır. Aynı tipte değişkenler tek bir bildirim sayesinde bildirilebilirler. Her değişken için 3 ayrı bildirim yazabilirdik ancak az önce yaptığımız bildirim daha uygundur.

    İyi Programlama Alıştırmaları 2.6
    Virgülden hemen sonra bir boşluk bırakmak programın okunurluğunu arttırır.

C'de değişken isimleri geçerli tanıtıcılardan (identifier) biri olabilir. Tanıtıcılar, harf, rakam ve alt çizgi karakterlerinin dizisidir. Ancak bu diziler rakamla başlayamaz. Bir tanıtıcı, istenen uzunlukta olabilir ancak ANSI C standardındaki derleyiciler için yalnızca ilk 31 karakter önemlidir. C, harf duyarlıdır. C'de büyük harf küçük harf ayrımı yapılır. Bu sebepten, a1 ve A1 farklı tanıtıcılardır.

    Genel Programlama Hataları 2.4
    Küçük harf kullanılması gereken bir yerde büyük harf kullanılması hatadır. Örneğin, main yerine Main yazmak hatadır.

    Taşınırlık İpuçları 2.1
    Tanıtıcılarınızı 31 karakterden kısa tutmaya çalışın. Bu, taşınırlığı artıracaktır.

    İyi Programlama Alıştırmaları 2.7
    Anlamlı değişken isimleri kullanmak programda daha az yorum satırı yazmamız demektir.

    İyi Programlama Alıştırmaları 2.8
    Basit bir değişken olarak kullanılacak tanıtıcılar küçük harfle başlamalıdır. İleride, büyük harfle başlayacak ya da tüm harfleri büyük harf olan, özel öneme sahip değişkenlerden bahsedeceğiz.

    İyi Programlama Alıştırmaları 2.9
    Bir çok kelimeden oluşan değişken isimleri, programı daha okunabilir yapar. Ancak kelimeleri birleşik yazmaktan kaçının. Bunun yerine, kelimelerin arasında alt çizgi kullanın. Eğer kelimeleri birleşik yazmak istiyorsanız, ikinci kelimeden sonrasını büyük harfle başlatın. toplamkomisyon yerine toplam_komisyon ya da toplamKomisyon yazın.

Bildirimleri, bir fonksiyonun gövdesini başlatan küme parantezinden hemen sonra ve çalıştırılabilir ifadelerden önce yazın. Örneğin, Şekil 2.5'teki örnekte bildirimleri ilk printf'ten sonra yapmak bir yazım hatası ( syntax error ) olacaktı. Yazım hataları, derleyici bir ifadeyi tanıyamadığında gerçekleşir. Derleyici, bir hata mesajı oluşturarak programcıya yanlış ifadeleri düzeltmesi gerektiğini söyler. Yazım hataları dilin yanlış kullanılması yüzünden oluşur.Yazım hatalarına derleme hataları ya da derleme zamanı hataları da denir.

    Genel Programlama Hataları 2.5
    Değişken bildirimlerini çalıştırılabilir ifadelerden sonra yapmak hatadır.

    İyi Programlama Alıştırmaları 2.10
    Bildirimlerle, çalıştırılabilir ifadeler arasında boş bir satır bırakmak bildirimlerin sona erdiğini vurgulamaya yarar.

9.satırdaki
printf ( "İlk tamsayı giriniz\n" );

ifadesi, İlk tamsayıyı giriniz mesajını ekrana yazdırır ve imleci yeni satıra geçirir.Bu mesaj, kullanıcıya bir işlem yapması gerektiğini söyler.

Diğer ifade olan

scanf ( "%d", &tamsayi1 );

kullanıcının gireceği değeri almak için kullanılır. scanf fonksiyonu, giriş değerini standart girişten alır. Standart giriş genellikle klavyedir.
scanf fonksiyonunda iki argüman ( bağımsız değişken ) görüyoruz ; "%d" ve &tamsayi1. İlk argüman, biçim kontrol dizesi olarak adlandırılır ve kullanıcı tarafından girilmesi beklenen verinin tipini belirtir. %d dönüşüm belirteci, verinin tamsayı olması gerektiğini belirtir. (d harfi İngilizce decimal integer teriminin kısaltmasıdır.) % karakterine, scanf tarafından (ve ileride göreceğimiz gibi printf tarafından) ters çizgi ( \ ) gibi bir çıkış karakteri biçiminde ve %d'ye ise çıkış dizisi biçiminde davranılır. scanf'in 2.argümanı & karakteriyle başlar ve bir değişken ismiyle devam eder. & karakterine adres operatörü denir. Değişken ismiyle birlikte kullanıldığında & karakteri, scanf fonksiyonuna tamsayi1 değişkeninin hangi hafıza konumuna yerleştirileceğini söyler. Bilgisayar, tamsayi1 değişkeninin değerini o konuma yerleştirir. & operatörünün kullanımı, yeni programcılara ya da başka programlama dillerinde böyle bir operatöre ihtiyaç duymayan programcılara garip gelebilir. Şimdilik, scanf içinde her değişken isminden önce & operatörünü kullanın. Bu kuralın istisnalarını 6. ve 7.ünitelerde anlatacağız. & operatörün gerçek anlamı, 7.ünitede göstericiler konusunu anlattığımızda anlaşılacaktır.

Bilgisayar, scanf'i çalıştırdığında kullanıcının tamsayi1 değişkeni için bir değer girmesini bekler. Kullanıcı, bir tamsayı yazarak ve ardından da giriş tuşuna basarak sayıyı bilgisayara gönderir. Bilgisayar bu sayıyı, ya da bu değeri, tamsayi1 değişkenine atar. Programın devamında tamsayi1 kullanılacağında, her sferinde girilen bu değer kullanılır. printf ve scanf fonksiyonları, kullanıcıyla bilgisayar arasında iletişimi sağlar. Bu iletişim, bir diyalog sayesinde gerçekleştiği için buna interaktif kullanım da denir.

printf ( "İkinci tam sayıyı giriniz\n");

ifadesi, İkinci tam sayıyı giriniz mesajını ekrana yazdırır ve imleci yeni satırın başlangıcına taşır. Bu printf, kullanıcıya bir işlem yapması gerektiğini belirtir.

scanf ( "%d", &tamsayi2 );

ifadesi, kullanıcıdan tamsayi2 değişkeni için bir değer elde eder. 13. satırdaki

toplam = tamsayi1 + tamsayi2;

ataması tamsayı1 ve tamsayı2 değişkenlerinin toplamını hesaplayarak sonucu, atama operatörünü ( = ) kullanarak, toplam değişkenine atar. Bu ifade, "toplam, tamsayi1 + tamsayi2 değerini alır" şeklinde okunur. + operatörü, tamsayi1 ve tamsayi2 olmak üzere, iki operand kullanmıştır. = operatörü ise toplam ve tamsayi1 + tamsayi2 ifadesinin sonucu olmak üzere, yine iki operand kullanmıştır.

    İyi Programlama Alıştırmaları 2.11
    Operatörün her iki tarafına da bir boşluk bırakılmalıdır. Bu sayede program daha okunabilir olur.

    Genel Programlama Hataları 2.6
    Atama ifadelerinde hesaplama, = operatörünün sağ tarafında bulunmalıdır. Hesaplama operatörün solunda yapılırsa yazım hatası ortaya çıkar.

14. satırdaki
printf ( "Toplam %d dir\n", toplam );

ifadesi, printf fonksiyonunu çağırıp Toplam bilgisinden sonra, toplam değişkeninin sayısal değerini yazdırır. printf'in iki argümanı vardır; "Toplam %d dir\n" ve "toplam". İlk argüman, biçim kontrol dizesi olarak adlandırılır. Bu argüman, yazdırılacak karakterlerle, bir tamsayının yazdırılacağını gösteren %d dönüşüm belirtecini içerir. İkinci argüman yazdırılacak değeri belirler. Bir tamsayı için dönüşüm belirtecinin printf ve scanf'de aynı olduğuna dikkat ediniz. Bu durum, C de çoğu veri tipi için geçerlidir.
Hesaplamalar, printf ifadelerinin içinde de gerçekleştirilebilir. Daha önceden yazdığımız iki ifadeyi tek bir ifade biçiminde

printf ( "Toplam %d dir\n", tamsayi1 + tamsayi2 );

şeklinde de yazabilirdik.

16. satırdaki
return 0;

ifadesi 0 değerini, programın çalıştırıldığı işletim sistemi ortamına gönderir ve böylelikle işletim sistemine programın başarılı bir şekilde çalıştırıldığını belirtir. Bir programdaki her hangi bir hatayı işletim sistemine nasıl belirteceğinizi öğrenmek için işletim sisteminizin kılavuzunu inceleyiniz.

Küme parantezi, } , main fonksiyonunun sonuna ulaşıldığını gösterir.

    Genel Programlama Hataları 2.7
    printf ya da scanf içindeki biçim kontrol dizesinde, tırnak karakterlerinden birini ya da ikisini birden unutmak.

    Genel Programlama Hataları 2.8
    printf ya da scanf içindeki biçim kontrol dizesinde, % dönüşüm belirleme karakterini unutmak.

    Genel Programlama Hataları 2.9
    printf ya da scanf içinde ki \n çıkış sırasını, biçim kontrol dizesi dışına yerleştirmek.

    Genel Programlama Hataları 2.10
    Dönüşüm belirteçleri içeren bir printf ifadesi içinde, değerleri yazdırılacak deyimleri dahil etmeyi unutmak.

    Genel Programlama Hataları 2.11
    Bir deyim yazdırılacağında printf biçim kontrol dizesi içinde bir dönüşüm belirteci yazmamak.

    Genel Programlama Hataları 2.12
    Biçim kontrol dizesini yazdırılacak deyimlerden ayırmak için kullanılması gereken virgül ( ,) karakterini biçim kontrol dizesi içine yazmak.

    Genel Programlama Hataları 2.13
    scanf ifadesi içinde, bir değişkenin başına & konması gerekirken bu karakteri unutmak.

Çoğu sistemde, çalışma zamanlı bu hataya erişim hatası denir. Böyle bir hata, programcı erişim haklarına sahip olmayan bir hafıza alanına erişmek istediği zaman oluşur. Bu hatanın sebebi hakkında detaylı bilgiyi 7. ünitede açıklayacağız.

    Genel Programlama Hataları 2.14
    printf ifadesi içinde, bir değişkenin başına & operatörü yazmak.

7. ünitede göstericileri çalıştığımızda, bir değişkenin adresini yazdıracağımızda bu değişken ismi ile birlikte & operatörünü kullandığımızı göreceksiniz. Ancak ilerleyen bir kaç ünite boyunca printf ifadeleri içinde & operatörünü kullanmayacağız.

Add comment


Security code
Refresh