Değişkenler, Printf,Scanf Kullanımı

From Lapis Wiki

Jump to: navigation, search

Konu başlıkları

Değişkenler

Bir problemin çözümünde, bir programda tanımlanan bilgi alanı. Farklı adımlarda, farklı değerler alabiliyorsa bu bilgi alanına "Değişken" denir. Değişkenler temelde bilgisayar donanımı üzerinde bellekte saklanmalarına rağmen biz onları sembolik isimlerle ifade eder ve kullanırız. Genellikle farklı tiplerdeki değişkenler farklı büyüklükte bellek alanı kaplar.

A = 5 ; 

A değeri bir değişkendir.

B = A + 5 ;

B değeride bir değişkendir.

Tanımlanacak değişkenler için C Programlama dilindeki bir takım kurallara uyulması gerekir. Maddeler halinde sıralamamız gerekirse;

1. Değişken adı A-Z, a-z arasındaki karaterler veya _ karakterleri ile başlamalıdır. Değişken adı, bir kelime yada arada boşluk olmama koşulu ile bir cümle olabilir.

A, Sayi, Toplam, toplam, adsoyadi vs. gibi değişkenler kullanılabilir.

2. Bir değişkenin ilk karakteri asla sayısal olamaz. Ancak bir karekterden sonra istenilen sayı kullanılabilir. Örneğin :

a1, a10, toplam1, toplam5, sayi6 vs. gibi değişkenler doğru...
10a, 20b,30c 1sayi, gibi değişkenler yanlıştır! 

3. Değişken adları c programlama diline ait deyim veya komut adı olamaz! Örneğin :

else, return, printf, scanf, fopen... değişkenleri geçersizdir!

4. Değişken isimleri verilirken özel Türkçe karakterleri kullanmamaya dikkat ediniz. Örneğin :

Sonuç, giriş, değer, çıkış... gibi Türkçe karakterler kullanmayınız!


C dilinde bir değişkenler kullanılmadan önce mutlaka tanımlanmalıdır.

Değişken Tanımlama Cümlesi;

Veri Tipi    Değişken adı    [ = değer ]    ;
                          kullanılmayabilir

Örneğin :

int    sayac    = 2006 ;
char   karakter = 'L'  ;
double yuzde    = 0.1482965 ;
char   *pointer ;

Değer Atama İşlemleri

Bir aritmetik ifadenin (matematiksel ifadenin) bir değerin herhangi bir değişkene tanımlanmasına "aktarma-aktarma" işlemleri adı verilir. Bu atama ve aktarma işlemleri sayısal ifadeler ve aritmetik ifadeler için;

<değişken adı> = <aritmetik ifade yada değer> ; şeklindedir.

Örneğin :

int A, sayi, Sayi, toplam ;

A    = 5 ;
sayi = Sayi + 1 ;
toplam = a + b + c ;


Eğer atanacak ifade sayısal bir değer içermiyorsa (ali, ahmet, mehmet, yakup, serkan gibi) " veya ' sembolleri arasına yazılarak atanmak mecburiyetindedir.

<değişken adı> = “<karakter dizisi>” ;
<değişken adı> = '<karakter>' ; şeklindedir.

Örneğin :

char *isim = "mehmet" ;
char *karakter1 = 'P';
char karakter2 = 'F';

Arttırım İşlemleri ve Azaltım İşlemleri

Bilgisayar mantığı, insan mantığından biraz farklılık gösteriyor bu konuda. Bilgisayar mantığına göre, herhangi bir değişkene kendisi ile birlikte bir değer atanılabilir.

<değişken> = <Değişken> (matematiksel işlem operatörü +,-,* gibi) <atanacak değer> ;

Örneğin :

int Toplam;
Toplam = Toplam + 1 ;

int sayi ;
sayi = sayi - 1 ;


Aritmetik ve Mantıksal Operatörler

(+) Toplama İşlemi
(-) Çıkarma İşlemi 		(<) Küçüktür İşlemi
(*) Çarpma İşlemi 		(>) Büyüktür İşlemi
(/) Bölme İşlemi 		(<=) Küçük yada Eşit İşlemi
(=) Aktarma İşlemi              (>=) Büyük yada Eşit İşlemi
(++) Bir artırma İşlemi 	(==) Eşit İşlemi
(--) Bir azaltma İşlemi  	(!=) Eşit Değil (Farklı) İşlemi
(%) Mod işlemi


Matematiksel işlemlerdeki operatörlerin kullanım öncelikleri, algoritma ve akış şemalarında da aynen geçerlidir. Bu kullanım öncelikleri aşağıdaki gibi tanımlanmaktadır.

1. Öncelikli, varsa parantez içerisi ( )
2. Öncelikli, Çarpma ye Bölme işlemi *, /
3. Öncelikli, Toplama ve Çıkarma işlemi, +, -

Veri Türleri

Üst konularda değişkenleri, değişken artırımını-değişken azaltımını, değişkenlerde uygulanması gereken kurallardan bahsettik. Veri türleri, değişkenimizin alacağı değer topluluğu olarak özetlenebilir. Konuya bir örnekle açıklık kazandıralım.

#include <stdio.h>

int main()
{
    int sayi1, sayi2, toplam; /*Buradaki "int" veri tipi, bizim sayılarımızın max. ve min. değerini belirler  */

    printf("Birinci sayıyı giriniz : ");
    scanf("%d",&sayi1);

    printf("İkinci sayıyı giriniz");
    scanf("%d",&sayi2);

    toplam = sayi1 + sayi2;
    printf("toplam : %d \n", toplam);

 }

Yukarıdaki C programımızı, bir metin düzenleyici ile yazıp, "toplama.c" olarak kaydedelim. Sıra geldi bu kodları derlemeye, derleme işlemi için Linux İşletim Siteminde bulunan Gcc'yi kullanacağız. Konsoldan C programımızı yazdığımız dizine geliyoruz ve;

gcc -o yazmış_olduğumuz_programın_ismi (bir boşluk bırak) yazmış_olduğumuz_programın_ismi.c    

komutunu veriyoruz. Yani;

gcc -o toplama toplama.c

komutu ile programımız derlenecek ve bizlere "toplama" adında binary(makine kodu)nu üretecektir. Konsoldan

./toplam

yazdığımızda program çalışacak ve bizden değer girmemizi isteyecektir.

Burada bizim bilmemiz gereken int veri tipinin hangi aritmetiksel değerler alabileceğidir. Konumuz "Veri tipleri" ve bu konuda Veri tiplerine açıklık kazandıracağız.


Programlama dilinin tasarımından kaynaklanan ve dilin kurallarına göre varlığı garanti altına alınmış olan türlerdir. Her programlama dili programcının doğrudan kullanabileceği, çeşitli özelliklere sahip veri türleri tanımlar. C dilinde de önceden tanımlanmış (Doğal veri türleri) 11 adet veri türü vardır. C programlamada hazır veri türleri size yetersiz geliyorsa kendi veri türünüde tanımlayabilirsiniz.

Tamsayı Veri Türlerinin Alabileceği Değerler

TÜR İSMİ          UZUNLUK(byte)          (DOS / UNIX)          SINIR DEĞERLERİ
signed char          1                      -128                    127
unsigned char        1                       0                      255
signed short int     2                     -32.768                32.767
unsigned short int   2                       0                    65.535
signed int           2-4     -32.768 ile -2.147.483.64 arası      32.767 ile 2.147.483.64 arası
                                - değer alabilir.                    + değer alabilir.
unsigned int          2-4                   0-0                   65.535 arası 4.294.967.296
                                                                       değer alabilir.
long int              4            -2.147.483.648                 2.147.483.647
unsigned long int     4                       0                   4.294.967.296


Şimdi öntanımlı veri türlerine bir örnekle açıklık getirelim. Yukarıda yazmış olduğumuz programı hatırlayalım.

#include <stdio.h>

int main()
{
    int sayi1, sayi2, toplam; /*Buradaki "int" veri tipi, bizim sayılarımızın max. ve min. değerini belirler  */

    printf("Birinci sayıyı giriniz : ");
    scanf("%d",&sayi1);

    printf("İkinci sayıyı giriniz");
    scanf("%d",&sayi2);

    toplam = sayi1 + sayi2;
    printf("toplam : %d \n", toplam);

 }

Buradaki "int" değişkenimize verebileceğimiz en büyük ve en küçük değer -32.768 ile 32.767 arasındadır. Yani programımıza max-min sayı aralıkları dışında bir sayı girdiğimizde program doğru çalışmayacaktır. Bu da demek oluyorki, yazacağımız programa kullanılacak değerler arasında veri türü belirlemek gerekir.

Printf ve Scanf komutlarında kullanılan özel işaretler

Değişkenini ekrana yazdırırken veya klavyeden kabul ederken türünü bildirmemiz gerekir. Bu bildirim % işareti ile olur. Kullanılabilecek karekterler ve açıklamaları;

%d          İşaretli onluk tabanda sayı
%u          İşaretsiz onluk tabanda sayı
%c          Karekter
%s          Karekter dizisi
%o          İşaretsiz sekizlik tabanda sayı
%x          İşaretsiz onaltılık tabanda sayı
%f          Kayan noktalı sayılar

Örneğin %.2f kullanarak ekrana yazdırılacak sayının virgülden sonra sadece iki basamağını gösterebilirsiniz.

printf("Sayı=%.2f",sayi);

\ işareti ile de ekranda gösterim şeklini kontrol edebiliriz.

\n          Satır atlatır
\b          İmleci bir sola kaydırır
\r          Enter
\t          sekme
\a          Zil sesi
\v          Bir sonraki satıra geçiş

İnternet bağlatımın kopukluğu nedeni ile yazılarıma bir süreliğine ara vermek mecburiyetindeyim. Anlatıma devam etmek isteyenler yazı üzerinde istedikleri gibi değişiklik yapabilirler ve bu konuyu genişletebilirler.

Görüşmek üzere...