Değişkenler, her dil için var olması gereken ve aslında depolanan verilerdir. Bilgisayarlarımız aynı beynimiz gibi çalışır. Aklımıza tuttuklarımız gibi bilgisayarlarda söylediklerimizi hafızalarına kaydedebilirler. Basitçe bir örnek verelim ve bu örneği C++ dilinde bilgisayarımıza yaptıralım.
Aklımızdan 2 adet sayı tutalım.
Birinci Sayımız: 10
İkinci Sayımız: 5
Bu sayıları toplayalım (10+5 = 15) ve çıkan sonucu ikinci sayımıza göre mod alalım (15%5 = 0).
Bu işlemi bilgisayarımız aracılığıyla kolayca yapabiliriz. Öncelikle yapmamız gerekenlere şöyle bir göz atalım;
sayi1 = 10;
sayi2 = 5;
sonuc = (sayi1+sayi2)%5
Gördüğünüz üzere basit bir matematik işlemine dökmüş olduk olayı. Peki bu işlemi C++ dilinde yapmak istersek kod yapımız nasıl olacaktır;
#include <iostream>
using namespace std;
int main() {
int sayi1, sayi2, sonuc;
sayi1 = 10;
sayi2 = 5;
sonuc = (sayi1+sayi2)%5;
cout << sonuc;
}
Şimdi bu yapımıza bir göz atalım;
int sayi1, sayi2, sonuc;
Bu satırımızda int ile tabir edilen alan konu başlığımızda da yer verdiğimiz değişken türüdür. İngilizce integer olarak adlandırılan ve tam sayı anlamına gelen bu ifade ile sayi1, sayi2 ve sonuc değişkenlerimin bir tam sayı içerdiğini bilgisayarıma söylüyorum. Bilgisayarımda kendini bu değişken türüne göre hazırlıyor. Bu satırı atladığımız taktirde ne yazık ki hata ile karşılaşacağız. Çünkü bilgisayarımız hafızasında ne tutmasını gerektiğini bilemeyecek.
sayi1 = 10;
sayi2 = 5;
İlk satırımızda integer olarak belirttiğimiz sayi1 ve sayi2 değişkenlerimizin neye eşit olduğunu bilgisayarımıza bu satırda söylemekteyiz. İlk satırda "Bak şimdi iki tane tam sayı değerini sana söyleyeceğim" diyerek uyardığımız bilgisayarımıza bu satırda "Sana söyleyeceğim iki tam sayı değerlerini sakın unutma" diyerek bir hatırlatmada bulunuyoruz ve değişkenlerimize sayı değerlerini aktarıyoruz.
sonuc = (sayi1+sayi2)%5
Bu alan tamamıyla matematik! Evet, ilk satırda belirttiğimiz ve tam sayı olacağını bildirdiğimiz sonuc değişkenimize bir şeyler atıyoruz. Bu atadığımız bir şeyler aslında bilgisayarımıza önceki satırlarımızda aklında tutmasını söylediğimiz sayi1 ve sayi2 değişkenleri ile ilgili ufak bir işlem. (Eğer bilginiz yoksa mod almak için bilgisayar dilinde % işareti kullanılır.)
cout << sonuc;
Bu satır aslında aklınızı karıştırmış olabilir. "Ee biz sonuc değişkenine bir atama yaptık ve sonucu bulduk. Neden bu satırı yazıyoruz ki?" gibi bir sitemle karşılaşıyorsak basitçe açıklayalım. Sizler hafızanızdaki her şeyi her an söylemekte misiniz? Elbette ki hayır. Aynı şekilde sonuc ile başlayan satırımızda bilgisayarımıza sonuc değişkeninin kaça eşit olduğunu bildirdik lakin bu konu ile ilgili herhangi bir şeyi bize söylemesini istemedik. Bilgisayarımız sonucu buldu ve hafızasına yazdı. Bizler ondan sonucun ne olduğunu öğrenmek istiyorsak giriş dersinde ekrana yazdırmak için kullandığımız cout kavramını burada da kullanabiliriz. sonuc değişkeninin bu sayede ekrana yazdırmış olduk.
İşlemlerimizi tamamladık:
Sonuç olarak ekrandaki çıktıya baktığımızda bizlere "0" sonucunu yazdıracak. Anlaşıldığı üzere 15'in 5'e bölümünden kalanın 0 olduğu ortada. Şimdi belirttiğimiz sayi1 ve sayi2 değişkenlerine farklı değerler atayarak ortaya çıkan sonucu değerlendirebilirsiniz.
Değişkenler ile ilgili önemli bir nokta!
C++ dili büyük/küçük harf duyarlı bir dildir. Yani sayi1 = Sayi1 diyemeyiz! Bu nedenle değişken oluştururken buna oldukça dikkat etmelisiniz!
Değişken Türleri (Veri Tipleri - Data Types)
Veri tipleri tanımlayıcıların türlerini ve hafızada kaplayacakları alanları belirtmek için kullanılmaktadır.
int
integer : tamsayı
Bellek: 2 Byte
Tamsayıları içerir.
int a,b,c;
int sayi;
int sayi=5;
string
string : metinler
Yazı değerlerini içermektedir.
string merhaba;
string merhaba="Merhaba Dünya!";
Not: string kullanılırken std::string merhaba = "Merhaba Dünya!"; gibi bir yapı oluşturulmalı veya girişte string kütüphanesini çağırmak amacıyla #include ifadesine yer verilmelidir.
float
float : gerçel sayı
Bellek: 4 Byte
Hassasiyet: 7-8 basamaktır.
3.4E-38 ile 3.4E+38 aralığında değer alır.
float notOrtalamasi;
float e = 2.71;
float pi = 3.14;
double
double : gerçel sayı
Bellek: 8 Byte
Hassasiyet: 15-16 basamaktır.
1.7E-308 ile 1.7E308 aralığında değer alır.
double notOrtalamasi;
double e = 2.71828;
double pi = 3.14;
bool
boolean : iki olasılıklı değere sahiptir: Doğru/Yanlış (true-false olarak döner)
bool x;
bool y = true;
bool z = false;
Uzunluk Bildiriciler
short
short: kısa
Uyarı: yalnızca int sayı tipi ile uygulanır!
Bellek: 16 Bit
Signed (işaretli) ve Insigned (işaretsiz) tipine göre değişkenlik gösterir;
signed: -32768 ile +32767 arasında değer alır, unsigned: 0 ile 65535 arasında değer alır.
long
long: uzun
Uyarı: int, float ve double sayı tipleri ile uygulanabilir!
Bellek: 32 Bit
Signed (işaretli) ve Insigned (işaretsiz) tipine göre değişkenlik gösterir;
signed: -2147483648 ile +2147483647 arasında değer alır, unsigned: 0 ile 4294967295 arasında değer alır.
İşaret Bildiriciler
signed
signed: işaretli
Negatif ve Pozitif değerleri içerir.
4 bitlik bir tamsayı değerini ele alıyoruz. 24 = 16 farklı değer alabilir.
signed int
bits | value |
0000 | 0 |
0001 | 1 |
0010 | 2 |
0011 | 3 |
0100 | 4 |
0101 | 5 |
0110 | 6 |
0111 | 7 |
1000 | -8 |
1001 | -7 |
1010 | -6 |
1011 | -5 |
1100 | -4 |
1101 | -3 |
1110 | -2 |
1111 | -1 |
unsigned
signed: işaretli
Pozitif değerleri içerir.
unsigned int
bits | value |
0000 | 0 |
0001 | 1 |
0010 | 2 |
0011 | 3 |
0100 | 4 |
0101 | 5 |
0110 | 6 |
0111 | 7 |
1000 | 8 |
1001 | 9 |
1010 | 10 |
1011 | 11 |
1100 | 12 |
1101 | 13 |
1110 | 14 |
1111 | 15 |
Değişken ve Değişken Türleri ile ilgili Örnekler
Örnek:
#include <iostream>
using namespace std;
int main() {
int x,y,sonuc;
x = 6;
y = 3;
sonuc = x/y;
cout << "x'in y'ye bolumu: " << sonuc;
}
Çıktısı:
2
Örnek:
#include <iostream>
#include <string>
using namespace std;
int main() {
string kullanici = "Mert Topuz";
int yas = 20;
double boy = 1.75;
cout << "Hosgeldin " << kullanici << endl;
cout << yas << " yasindasin." << endl;
cout << boy << " boyundasin.";
}
Çıktısı:
Hosgeldin Mert Topuz
20 yasindasin.
1.75 boyundasin.