Şimdi ekrana bir şeyler yazdıralım
cout << "Merhaba Esat" << endl; // Merhaba Esat
Bunu daha kompakt bir hale getirelim
string isim = "Esat";
cout << "Merhaba " + isim << endl; // Merhaba Esat
daha da
string merhaba = "Merhaba";
string isim = "Esat";
cout << merhaba + " " + isim << endl; // Merhaba Esat
Şimdi ise isim değişkenine konsoldan yazacağımız değeri atayalım.
string merhaba = "Merhaba";
string isim = "Esat";
cout << "Lutfen isminizi giriniz" << endl;
cin >> isim; // kullanıcıdan girdi almak için kullanıyoruz.
cout << merhaba + " " + isim << endl;
// Lutfen isminizi giriniz
// Mehmet
// Merhaba Mehmet
Değişkenler, veri tutar. Bu veriyi bellekte saklar. Bilgisayarı en temelde 2 elemana indirgeyebiliriz. Bir işlemci(CPU), bir bellek(RAM) ve aralarındaki kablolar (bus)

İşlemci, bellekten programı okur ve verilen komutlara göre veriyi manipüle eder. Verilerimiz bellekte saklamak için değişkenleri kullanabiliriz. Değişkenler, bellekte belirli bir alan tutar ve tuttuğu alanda bulunan veriye belli bir anlam yükler. Normalde bellekte ard arda dizilmiş 0 ve 1 ler bulunmakta. Bu sıfır ve birlerin ne anlama geldiğini değişkenler yoluyla belirliyoruz.
Eğer biz bir karakteri saklamak istiyorsak char veri tipini kullanıyoruz. Eğer bir kelimeyi saklamak istiyorsak string veri tipini kullanıyoruz. String dediğimiz şey aslında karaterlerden oluşan bir dizi/liste dir.
Farklı sayıları tutmak için farklı veri tipleri vardır. Temel olarak 2 sayı tipi vardır:
- Tam sayılar (integer)
- Kayan noktalı sayılar (float). (ki bence rasyonel sayılar diyebiliriz)
İki farklı tip olmasının belli bir sebebi var. Tam sayılarla, noktalı sayıları farklı bir şekilde ifade ediyoruz. Bu sadece mantıksal bir ayrımdan da öte direk donanım bazında fark yaratan bir durumdur. Birlerimizi ve sıfırlarımız çeşitli elektronik devrelerden geçerek matematiksel işlemleri gerçekleştirmektedir.
Bu arada bu 1 ve 0 meselesine bir açıklık getirelim. Her 1 ve 0’a bit diyoruz. Belki “elektriğin varlığıyla ve yokluğuyla temsil ediliyor” diye şeyler duymuş olabilirsiniz. Tam olarak öyle değil. Elektriğin voltajına göre belli aralıkta 0 belli aralıkta 1 olarak temsil ediliyor. Tabi bu farklı voltaj değerleri de diğer devre elemanlarının farklı şekillerde çalışmasını sağlıyor. Atıyorum 0.5V da kapalı olan bir eleman 4V da açık duruma geliyor.

Çeşitli devre elemanların birbiriyle senkronize bir şekilde çalışması için clock kullanıyoruz. Örneğin benim şuanki kullandığım işlemci: “Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz 2.59 GHz” 2.6 GHz clock hızına sahipmiş. Peki tam olarak ne yapıyor?
Bir tane kristalin elektrik verdiğinde titreşmesi ile bir elektrik dalgası elde ediliyor. Bu dalgayı biraz modifiye edip aşağıdakine benzer bir dalga elde ediyor. Bu dalgadaki atlama anlarında ise devrenin durumu değişiyor. (aniden yukarıya çıkanlarda veya aniden aşağıya inenlerde)

8 tane bit yan yana gelerek 1 byte‘ı oluşturuyor. 8 olmasının sebebi bir tasarım seçimi.

Bellekteki her bir byte’ın kendi adresi var. Yani bellekteki her bir byte’ı bireysel olarak okuyup yazabiliriz.
Eğer yeterince yaşlıysanız bazı bilgisayarlardaki ram limitini duymuşsunuzdur. Buradaki olay 32 bitlik işlemcinin, bellekteki adresliyebileceği alanın limitiyle alakalı.
https://en.wikipedia.org/wiki/2_GB_limit
Günümüzdeki bilgisayarlara 64 bitlik işlemciler kullandığımız için artık bölye bir sorunumuz yok 🙂
Görseldeki adress değerler 0x00 şeklinde gösterilmesine dikkat etmişsinizdir. Buna hexadecimal gösterim diyoruz. Yani 16’lık sayı sistemi.
float, kayan noktalı sayıları tanımlamak için kullanılır. Aşağıdaki örnekte Vücut Kitle İndeksini ölçüyoruz.
#include <iostream>
using namespace std;
int main(){
// Vücut kitle endeksinin hesaplanması
// mass(kg) / height(meter)^2
// kutle ve boy'a gerekli değerler cinsinden atadık
float kutle = 88; // 88 kg
float boy = 180; // 180 cm
boy = boy / 100; // 100 e bölerek cm yi metreye çevirdik.
float BMI = kutle / (boy * boy); // BMI hesapladık
cout << BMI << endl; // Konsola yazdırdık
}
Şimdi kodumuzu inceliyelim
float kutle = 88;
float tipinde kutle isminde bir değişken oluşturuyoruz ve buna 88 değeri atıyoruz. Oluşturma ve atama aynı anda oluyorsa buna initialization diyoruz. (initial = ilk, baştaki)
float kutle; // Tanımlama declare
kutle = 88; // Atama assignment
int a; // no initializer (default initialization)
int b = 5; // initial value after equals sign (copy initialization)
int c( 6 ); // initial value in parenthesis (direct initialization)
// List initialization methods (C++11) (preferred)
int d { 7 }; // initial value in braces (direct list initialization)
int e = { 8 }; // initial value in braces after equals sign (copy list initialization)
int f {}; // initializer is empty braces (value initialization)
int main(){
int a, b, c; // Değişkenleri oluşturduk Definition
a = 3; // değer atadık Assignment
b = 4;
c = a * a + b * b;
c = sqrt(c);
cout << c; // 5
}
Eşittir sembolü=, sağdaki değeri soldaki değişkene atayan bir eleman olarak düşünün.


Leave a Reply