C++ Ders 10[Değişken Tanımlama]

Life Hunter

Lapis Toplayıcısı
En iyi cevaplar
0
Merhaba, 10.dersimize geldik hepimizi kutlarım :D Bu ders konumuz değişken tanımlama.
Değişken Tanımlama:
Değişken Türü Değişken ismi
C++ ta ilk önce değişken türünü tanımlıyoruz. Değişken türü neden önemli?

Oluşturacağımız değişken hafızada bir alan kaplayacaktır. Değişken türüne göre değişkenin hafıza alanı büyüyüp küçülebilir. O yüzden türe ihtiyaç duyar derleyici.

Daha sonra değişkenin ismini tanımlarız. Değişkenin ismi hafıza alanına vereceğimiz ismi temsil eder. Örneğin hafıza alanının adresi 45567 ise biz o hafıza alanının adresine "sayı" ismini veriyoruz, ve ya başka bir isim. Hafıza alanına vereceğiniz isim size kalmıştır.

Örnek:
int sayi1;

"int" Değişkenin tam sayı bir değişken olduğu anlamına gelir. "sayi1" de değişkenin ismi. int yani tamsayı değişkenler 32 bitlik sistemde 4 byte lık yer kaplarlar. Mesela short tipindeki değişkenler 2 byte kaplar. double tipindeki değişkenler ise 8 byte yer kaplar.(Bunlar 32 bitlik sistem için geçerlidir)

4 ile 2 sayılarını toplayan C++ kodunu yazalım

Öncelikle bu iki sayıyı hafızaya yerleştirmemiz gerekir. İki değişken tanımlayarak bu işlemi gerçekleştiricez.
Kod:
int sayi1 = 4;
int sayi2 = 2;
Ardından "sonuc" adlı başka bir değişken oluşturup, "sonuc" değişkenin içerisine "sayi1" ile "sayi2" değişkenlerinin toplama işlemlerini yaptırıp, sonuc değişkenin içerisine atacağız.
Kod:
int sonuc = sayi1 + sayi2;
Burada ne oldu? Burada önce sonuc adlı bir değişken oluşturduk. Sonra sonuc değişkenin içerisine sayi1 + sayi2 işlemini yaptırıp, çıkan sonucu "sonuc" değişkeninin içine attık. sayi1 değişkeni hangi değeri tutuyordu? 4 değilmi? sayi2 hangi değeri tutuyor? 2 değerini. 4 ile 2 toplanırsa 6 sonucunu elde ederiz. sayi1 + sayi2 işlemi yapılınca derleyici 6 sonucunu elde etti ve biz bulduğun sonucu "sonuc" değişkenini içine at dediğimiz için "sonuc" değişkenin değeri 6 oldu.

Değişken Tanımlama İle İlgili Notlar:
Kod:
int sayi;
Diyelimki yukarıdaki gibi biz bir değişken tanımladık ama direk değer vermedik. Eğer o değişkenin bulunduğu hafıza hücresinde daha önceden bir değer varsa değişken o değeri alır. Örneğin sayi değişkeni 5678 no lu hafıza hücresine ait. 5678 no lu hafıza hücresinde daha önceden 10 var ise, sayi değişkeninin değeride 10 olur. Ama bir değer atarsanız bu durum değişir tabii ki.

C++ ilk değer atama işlemini yapmaz. Yani yukarıdaki gibi bir değişken yaratıp değer vermezseniz C++ o değişkene değer atamaz. Çünkü bir değer atamak işlem gerektiriyor ve uğraştığınız veri sayısı büyük ise değer atama işlemi makineyi yavaşlatır. O yüzden C++ ta ilk değer atama işlemi yoktur.
Ama C# ve ya Java gibi dillerde değişkenlere ilk değer olarak 0 değeri atanır.

Değişken isimlerinin başına sayı koyamazsınız. + ve ya - gibi simgeler koyamazsınız. Değişken isimlerinin karakter ile başlaması gerekir. Sadece alt tire simgesini destekler derleyici fakat pek de tavsiye etmem. Özellikle iki alt tire simgesini hiç tavsiye etmem çünkü derleyicinin kullandığı bir yapıdır alt tire ve derleyicinin değişkenleri ile çakışma riski vardır. Değişken tanımlarken olabildiğince karakter ile başlayın ve anlamlı isimler koymaya çalışın.

Peki değişken tanımladığımız zaman arka planda neler olur?
Linki görebilmek için üye olmanız gerekiyor. Giriş yap veya üye ol.

Şu grafiği inceleyelim.
Biz int sayi1 = 5 dediğimiz zaman, değişkenimiz int türünden olduğu için ve int hafızada 4 byte kapladığı için derleyici 4 byte lık bir hafıza alanı arar. Alanı bulduktan sonra, o alanı etiketliyor.Bu 4 byte lık alanın adı sayi1 diyor. Tabi bu etiketten kastım bir tablo tutuyor. sayi1 değişkeni 1 numaralı adresten başlayıp, 4 numaralı adrese kadar 4 byte yer kaplıyor diyor derleyici. Biz sayi1 değişkenine 4 değerini atadığımız için, Derleyici ek bir kod yazıp, bizim için ayırdığı 4 byte lık hafıza hücresinin içerisine 4 sayısını atıyor.

Mantık hep böyle işler değer atamada. Siz int sayi2 = 2; diye bir komut yazarsanız, Derleyici ilk başta 4 byte lık bir hafıza alanı ayırır bizim için.(int 4 byte olduğu için)
Sonra ayırdığı hafıza alanının ismine sayi2 ismini verir. Siz 2 değerini verdiğiniz içinde 4 byte lık hafıza alanının içine 2 değerini atar.

tabii ki biz bu hafıza alanlara etiketler ile erişiyoruz. Halbuki derleyici arka planda bu hafıza alanlarına erişim için gerekli olan makine kodlarını yazıyor ve bu makine kodlarında sayi1 diye bir isim yok. Direk adres ile erişiliyor makine kodunda. Tabi biz onunla ilgilenmiyoruz biz isimler ile erişiyoruz.

Bu ders bu kadar, Daha anlatılacak şeyler var ama tek bir derse sığdırmak iyi olmazdı :D Diğer ders devam edeceğiz.
 

Life Hunter

Lapis Toplayıcısı
En iyi cevaplar
0
Tüm Microsoft Dilleri Neredeyse Aynı :) Bizde C#Görüyoruz Aynı C++ gibiymiş :) paylaşım için teşekkürler :)
Bütün programlama dillerin de değişkenin oluşturulması aynı mantıkdır. Sonuçta ram e kaydedilir değişken. Kaydetme olayınında başka bir versyonu yoktur. Derleyici bakar kaç bytle lık değişken belirlemişsin, Boyuta uygun hafıza alanını ayırır. O hafıza alanının içine değeri atar. Her dilde aynı mantık.
 

Sarper170

Obsidyen Madencisi
En iyi cevaplar
0
Peki nasıl bir "randomizer" yapılır?
Örneğin bu (d1, d2, d3) üçünden birini rastgele bir şekilde söylüyecek her hangi bir tuş girilirse...
 

likecraft

YASAKLANDI
En iyi cevaplar
0
Vb icinde ben soyleyeyim;

Yazi tanimlama: public mc as string

Normal tanim: public ms as long

Sayi tanimlama: public mt as integer

Ornek:
Public sub selam()
Mc = "s.a"
End sub
Public sub sanada()
Ms = &H55
End sub
Public sub banada()
Mt = "6666"
End sub


Private sub Form_load()
Selam
Sanada
Banada
End sub

Private sub label1_click()
Label1.caption = mc & "/ " & ms & "/ " & mt
End sub

ALCATEL ONE TOUCH 7041X cihazımdan Tapatalk kullanılarak gönderildi
 

Life Hunter

Lapis Toplayıcısı
En iyi cevaplar
0
Vb icinde ben soyleyeyim;

Yazi tanimlama: public mc as string

Normal tanim: public ms as long

Sayi tanimlama: public mt as integer

Ornek:
Public sub selam()
Mc = "s.a"
End sub
Public sub sanada()
Ms = &H55
End sub
Public sub banada()
Mt = "6666"
End sub


Private sub Form_load()
Selam
Sanada
Banada
End sub

Private sub label1_click()
Label1.caption = mc & "/ " & ms & "/ " & mt
End sub

ALCATEL ONE TOUCH 7041X cihazımdan Tapatalk kullanılarak gönderildi
Bilgi paylaşımın için teşekkürler, Ama C++ dersi olduğu için C++ tan yöne katkılar daha iyi olur. Ayrıca Visual Basic önermem.
 

likecraft

YASAKLANDI
En iyi cevaplar
0
Bilgi paylaşımın için teşekkürler, Ama C++ dersi olduğu için C++ tan yöne katkılar daha iyi olur. Ayrıca Visual Basic önermem.
bende önermem. Sadece başlayanlara yardımcı olayım diye yazdım zaten :)) vb yerine c++ öğrenseydim daha iyi programcı olurdum diye düşünüyorum ..
 

Life Hunter

Lapis Toplayıcısı
En iyi cevaplar
0
bende önermem. Sadece başlayanlara yardımcı olayım diye yazdım zaten :)) vb yerine c++ öğrenseydim daha iyi programcı olurdum diye düşünüyorum ..
Visual Basic dışında Ruby ile bile başlasan daha iyidi. Visual Basic ürüne önem veren programcılar için bile iyi değil. Yapımcısı bile desteğini kesti. O dilin çıkması bir hataydı.
 
Üst