Ders 2 - C++ Değişkenler

22 Kas 2015 · 13 dk okuma süresi

Herkese merhaba C++ eğitim serisinin 2. dersi olan “C++ Değişkenler” dersine hoş geldiniz. Eğer programcılığa yeni giriş yaptıysanız, bu dersi iyi anlamak için öncelikle ilk dersimiz olan “Merhaba C++” dersini okumanızı öneririm.


 Bu Derste Ne Öğreneceğiz?

  • Bu derste oluşturacağımız programların hafızada geçici olarak nasıl veri saklayacağını öğreneceğiz.</span>
  • C++ dilinde temel veri tiplerinin neler olduğunu öğreneceğiz.
  • Değişken tanımlama kurallarını öğreneceğiz.
  • Değişken türlerini öğreneceğiz.
  • Değişken isimlendirmeyi öğreneceğiz.
  • Değişkenlere nasıl değer atayabileceğimizi öğreneceğiz.
  • Kullanıcıdan değişkene nasıl değer alabileceğimizi öğreneceğiz.

 Temel Veri Tipleri

Her programlama dilindeki veri tipleri temel olarak: sayısal veriler, metin türündeki veriler ve mantıksal veriler gibi temel gruplara ayrılır diyebiliriz. Tabi bunların hafızada kapladığı yerlere ve kullanım alanlarına göre çeşitli türleri vardır. Her programlama türünde bunların değer aralıkları ve çeşitleri değişiklik gösterse de kullanım alanları aynıdır. Aşağıdaki tabloda C++ dilinin temel veri tipleri gösterilmiştir:

İsim Tanım Boyut Değer Aralığı
Char Karakter 1 byte İşaretli: -128 ile 127 arasında İşaretsiz: 0 ile 255 arasında
Short Kısa Tamsayı 2 byte İşaretli: -32768 ile 32767 arasında işaretsiz: 0 ile 65535 arasında
Int Tamsayı 4 byte Short ve Long Değerlerini Kapsar
Long Uzun Tamsayı 4 byte İşaretli: -2147483648 ile 2177483647 arasında işaretsiz 0 ile 4294967295 arasında
Double Uzun Ondalıklı Sayı 8 byte 1.7e +/- 308 (15 basamak)
Float Ondalıklı Sayı 4 byte 3.4e +/- 38 (7 basamak)
Bool True ya da False 2 byte Doğru ya da Yanlış durumlarını temsil eder.

Tablodan da anlayacağınız gibi veri tipleri kullanım alanlarına göre çeşitli boyutlara bölünmüştür. Böylece yapacağımız işlemlere göre değişken seçeriz ve gereksiz yere hafıza kullanımını önlemiş oluruz.

Değişken Tanımlama

Yukarıdaki tabloda temel veri tiplerini ve bu tiplerin değer aralıklarını belirttik. Şimdi bu veri tiplerinin nasıl tanımlandığını göreceğiz. Değişken tanımlamasının genel gösterimi:

(Değişken Tipi)  (Değişken ismi);

Şimdi örnek olarak gösterecek olursak:

int yas; //yas ismindeki tamsayı(int) tipindeki değişken

float fiyat; //fiyat ismindeki ondalıklı sayı(float) tipindeki değişken

char harf; //harf ismindeki karakter(char) tipindeki değişken

Üstteki örnekte görüldüğü gibi 3 tane farklı değişken bildirimi yaptık. Fakat henüz bu değişkenlerin sahip olduğu herhangi bir değer(value) mevcut değil. İsterseniz bu değişkenlerin tanımlamasını yaparken ilk değerlerini atayabiliriz. Şimdi değişkenleri tanımlarken nasıl ilk değer vereceğimizi görelim: İlk değer atamalı değişkenin genel gösterimi: (Değişken Tipi) (Değişken İsmi) = (değeri); Şimdi bunu örnek üzerinde gösterelim:

int yas=18; // yas değişkeni ilk değeri 18 olarak tanımlandı.

float fiyat=19.99; // fiat değişkeni ilk değeri 19.99 olarak tanımlandı.

char harf='F'; // harf değişkeni ilk değeri F karakteri olarak tanımlandı.

Yukarıda ki örnekte değişken tanımlamasını yapar yapmaz ilk değeri atadık. Bazı programlarda algoritmaya göre bazen ilk değerin verilmesi gerekirken bazen de gerekli değildir.

Örneğin matematiksel işlem uygulayacağımız bir değişkenin değerini atamadan işleme tabi tutarsanz program içerisinde hata oluşur. Bu nedenle gerek değişken tanımlanırken gerekse değişken kullanılmadan önce mutlaka değer ataması yapmalıyız.

Şimdi ise pratik yoldan birçok değişkenin tanımlamasını nasıl yapacağımıza bakalım. Örneğin kullanıcıdan 5 tane tamsayı tipinde veri alacaksınız ve bunun için değişken tanımlamalısınız. Bu 5 tane değişkeni ayrı satırları tek tek yazmak yerine bunları tek satır üzerinden daha az kod yazarak yapabiliriz. Örnekte bunun nasıl yapıldığını görüyorsunuz.

int sayi1, sayi2, sayi3;

char harf1, harf2, harf3;

Üstteki örnekte çoklu değişken tanımladık. Peki çoklu değişkeni tanımlarken ilk değer atamasını nasıl yapacağız? Onuda şu örnekte görelim:

int sayi1 = 10, sayi2 = 25, sayi3 = 50;

char harf1 = 'A', harf2 = 'B', harf3 = 'C';

Gördüğünüz gibi değişkenlerin nasıl tanımlandığı gördük. Şimdi ise değişken tanımlarken dikkat etmemiz gereken yazım kurallarına gelelim.

 Değişken İsimlendirme Kuralları

C++, büyük ve küçük harflere karşı duyarlıdır. Böylece ‘Sayi’ ve ‘sayi’ isminde 2 farklı değişken oluşturabilirsiniz. Bunları kullanırken karıştırmamak için dikkatli olmalısınız.

  Değişkenler adlandırılırken mutlaka harf veya _ (alt çizgi) ile başlamalıyız. Kesinlikle sayı veya özel karakter ile isimlendirmeye başlayamayız.

int \_sayi; // Doğru kullanım

int sayi; // Doğru kullanım

int ?sayi; // Yanlış kullanım

int &sayi; // Yanlış Kullanım

int 1sayi; // Yanlış Kullanım

  Değişken ismi en fazla 255 karakterden oluşabilir.

  Değişken ismi 2 kelimeden oluşuyorsa kelimeler arasına _ (alt çizgi) koyabiliriz.

int dogum tarihi; // Yanlış Kullanım

int dogum_tarihi; // Doğru Kullanım

int dogumtarihi; // Doğru Kullanım

  Değişken isimlerinde aşağıdaki tabloda belirtilen C++ dilinin özel anahtar kelimelerini kesinlikle kullanamayız.

C++ Dilinin Özel Anahtar Kelimeleri

asm auto bool break case catch char
class const const_cast continue default delete do
double dynamic_cast else enum explicit extern false
float for friend goto if inline int
long mutable namespace new operator private protected
signed sizeof static static_cast struct switch template
this throw true try typedef typeid typename
union unsigned using virtual void volatile while

Değişken Türleri

Yerel Değişkenler

Global Değişkenler

Static Değişkenler


1- Yerel Değişkenler

Bir değişkenin tanımlandığı yerin önemi büyüktür. Değişken tanımlamasını fonksiyonun içinde tanımlarsanız o değişkene sadece o fonksiyonun içerisinden erişebilirsiniz. İşte fonksiyonun içerisinde tanımlanan bu değişkenlere yerel değişkenler diyoruz. Alttaki örnekte, gol_sayisi isminde main fonksiyonuna ait yerel değişken tanımlanmıştır:

// Ders 2 - Degiskenler

#include "stdafx.h"

int main()
{
  int gol_sayisi;
  /* Bu değişken main fonksiyonunun yerel değişkenidir.
  Dolayısıyla bu değişkene sadece main fonksiyonun
  içinden erişebilirsiniz.*/

  return 0;
}

2- Global Değişkenler

Eğer bütün fonksiyonlar içinden erişebileceğiniz değişken tanımlamak istiyorsanız, bu değişkeni bütün fonksiyonların dışına yazmalısınız. Fonksiyonların dışında tanımlanan bu değişkenlere Global Değişkenler diyoruz. Alttaki örnekte, gol_sayisi isminde global değişken tanımlanmıştır.

// Ders 2 - Degiskenler

#include "stdafx.h"

int gol_sayisi;
/* Bu değişkene bütün fonksiyonlardan erişilebilir.
Çünkü herhangi bir fonksiyonun içinde tanımlanmamıştır.
Dolayısıyla bu değişken Global Değişkendir.*/

int main()
{
  // Yukarıda ki gol_sayisi isimli değişkene buradan erişilebilir.

  return 0;
}

3- Static Değişkenler

Diyelim fonksiyon içinde değişken tanımladınız. Yani yerel değişken tanımladınız. Bu değişken fonksiyon her çağrıldığında hafızada yer tutar, fonksiyon bittiğinde ise hafızadan yok edilir. Global değişkenler ise program açıldığında hafızada yer tutar ve program kapanana kadar yok edilmezler.

Kısacası yerel değişkenlerde fonksiyon yeniden çağrıldığında değişkenin değeri son değer ile aynı olmaz. Eğer biz tanımladığımız yerel değişkenin değerinin fonksiyonun tekrar çağrıldığında değerinin yok edilmeden var olan değerde kalmasını istersek Static Değişkenleri kullanırız. Static değişkenin nasıl tanımlandığını aşağıdaki örnekten görebilirsiniz:

Aşağıdaki örnekte gol_at isminde fonksiyon kullandık. İlerleyen derslerde fonksiyonların kullanımını ve diğer özelliklerini detaylı işleyeceğiz.

// Ders 2 - Degiskenler

#include "stdafx.h"
#include <iostream>

using namespace std;

void gol_at() {
  static int gol = 0;

  gol++; // gol sayısını 1 tane arttırıyoruz.

  cout << "Gol sayisi: " << gol << endl; // gol sayının değerini ekrana yazdırıyoruz ve alt satıra geçiyoruz.
}

int main()
{
  gol_at(); // gol_at ismindeki fonksiyonu çağırıyoruz. Yani işletiyoruz.
  gol_at();
  gol_at();
  gol_at();

  system("pause"); // ekranın açık kalmasını sağlıyoruz.

  return 0;
}

Yukarıdaki örnekte gol_at isminde fonksiyon oluşturduk. Bu fonksiyon: gol isminde ilk değeri sıfır olan tamsayı türünde static bir değişken oluşturuyor. Daha sonra bu değişkenin değerini ++ operatörü ile 1 tane arttırıp gol değişkeninin değerini ekrana yazdırıyor. Main fonksiyonunda ise gol_at(); kodu ile fonksiyonu çağırdık ve bu işlemi 4 kere tekrar ettirdik. Yani fonksiyon içindeki kodları 4 kere işlettik.

Örnekte kullandığımız ++(arttırma) operatörünü sıradaki dersimiz olan “C++ Operatörler” dersinde göreceğiz.

Yukarıdaki kodları çalıştırınca bakalım nasıl sonuç alıyoruz:

Programın çıktısı bu şekildedir. Eğer biz gol ismindeki değişkeni static olarak tanımlamasaydık ekrana yazdırılan değer her seferinde 1(bir) olacaktı çünkü değişkene ilk değer olarak 0(sıfır) değerini verdik ve ekrana yazdırmadan önce değeri 1(bir) tane arttırdık. Dolayısıyla Static değişken sayesinde değişken; fonksiyon her çağrıldığında yeniden oluşturulmak yerine sadece ilk seferde oluşturulup, sonrasında global değişkenler gibi değeri korunabiliyor. Bu örnekle birlikte static kavramının nasıl kullanıldığını ve mantığını anladık.

Fonksiyonu 4 kere yazmak yerine döngü kullanarak sadece 1 satır da yazabilir hatta oluşturduğumuz fonksiyondaki kodları döngü içine yazarak da aynı işlemi yapabilirdik. Ama döngülerin kullanımını daha öğrenmediğimiz için şuan amele usulü işlem yaptık.


Sabitler

Sabitler: program içerisinde değerinin değiştirilemediği değişken türleridir. Örneğin, pi değişkenin değerini tutan değişkenimizi sabit olarak tanımlarız ve bu değeri istesek dahi değiştiremeyiz. Sabit değişken bildirimlerinde Const ifadesini kullanırız. Sabit değişken bildirimi:

(Değişken Tipi) Const (Değişken İsmi) = (değeri);

veya:

Const (Değişken Tipi) (Değişken İsmi) = (değeri); şeklindedir.

Aşağıda dairenin alanını hesaplayan örnek kod parçası mevcut. Burada pi sayısı sabit olarak tanımlanmıştır:

// Ders 2 - Degiskenler

#include "stdafx.h"
#include <iostream>

using namespace std;

int main()
{
  int r = 12; // yarıçap
  double const pi = 3.14; // pi sayısını 3.14 sabit değişken olarak double tipinde tanımladık
  double alan = pi*r*r; // dairenin alanını 'alan' ismindeki double tipindeki değişkene atadık.

  cout << "Dairenin alani: " << pi * r * r << endl; // 'alan' ismindeki hesaplanan alanı tutan değişkeni ekrana yazdırdık.

  system("pause"); // ekranın açık kalmasını sağlıyoruz.

  return 0;
}

Yukarıdaki örnekte pi sayısnı sabit olarak tanımladık ve dairenin yarıçapını belirledik. Daha sonra bu belirlediğimiz değerler eşliğinde dairenin alanı hesaplanıp ekrana yazdırdık. Programın çıktısı şu şekildedir:

Sabit Değişken Kullanımı

Bu dersimizin son kısmında ise tanımladığımız değişkenlere kullanıcıdan nasıl değer alacağımızı öğreneceğiz.

Kullanıcıdan Değer Alma

Değişkenlerin tanımlamasını ve değişkenlere değer atamasını öğrendik. Peki biz kullanıcının gireceği değerleri nasıl değişkenlere alacağız diyorsanız doğru adrestesiniz  :-)  Kullanıcıdan değer almak için iostream kütüphanesine ait Cout<< ifadesiyle aynı namespace altında bulunan Cin>> ifadesini kullanacağız. Program Cin>> ifadesinin olduğu yerde durur ve kullanıcıdan değer girilmesini bekler, kullanıcı değer girdikten sonra, değer değişkene atanır ve program işlemeye devam eder. Aşağıdaki örnekte kullanıcıdan 2 tane sayı alınıyor ve alınan bu sayılar toplanıp ekrana yazdırılıyor:

// Ders 2 - Degiskenler

#include "stdafx.h"
#include <iostream>

using namespace std;

int main()
{
  int sayi1, sayi2; // tamsayı türünde 2 tane değişken tanımladık

  cout << "1\. Sayiyi Giriniz: "; //ekrana ilk sayının girilmesini isteyen mesaj yazdırdık
  cin >> sayi1; // kullanıcının girdiği değer sayi1 değişkenine atandı

  cout << "2\. Sayiyi Giriniz: "; //ekrana ikinci sayının girilmesini isteyen mesaj yazdırdık
  cin >> sayi2; // kullanıcının girdiği değer sayi2 değişkenine atandı

  cout << "Sayilarin Toplami: " << sayi1 + sayi2 << endl; //sayıların toplamı ekrana yazdırıldı

  system("pause"); // ekranın açık kalmasını sağlıyoruz.

  return 0;
}

Yukarıdaki örneğin çıktısı aşağıdaki gibidir:

Kullanıcıdan Değişkene Değer Alma

Tanımladığımız değişkenler tamsayı türünde olduğu için 12.8 gibi ondalıklı sayı girerseniz program hata verecektir. Eğer ondalıklı sayıları almak isterseniz float veya double tipindeki değişkenleri kullanabilirsiniz. Diğer bir nokta ise sayısal değişkene harf veya sayı dışında karakter girerseniz program yine hata verecektir. Kısacası tanımlanan değişken tipiyle girilen veri tipleri aynı tipte olmalıdır.


C++ eğitim serisinin 2. dersi olan “C++ Değişkenler” dersinin sonuna geldik. Eğer anlamadığınız bir yer veya sormak istediğiniz sorular varsa iletişim bölümünden mutlaka bana iletiniz. Diğer derslerde görüşmek üzere kendinize iyi bakın…