C ++ Ders 4: If Koşulu, ASCII Tablosu ve “static_cast”

ratio

Kıdemli Üye
6 Tem 2013
2,456
6
Turk
C ++ Ders 4: If Koşulu, ASCII Tablosu ve “static_cast”

Bir önceki derste aritmetik, eşitlik ve ilişkisel operatörleri görmüştük ve bu operatörleri kullanarak nasıl if (eğer) ifadeleri yazacağımızı görelim. Bu dersimize örnek ile başlayalım.

Kod:
[SIZE=3]// Sayıların if ifadesi, eşitlik ve ilişkisel operatörler kullanılarak karşılaştırılması. [/SIZE]

[SIZE=3]#include <iostream> [/SIZE]



[SIZE=3]// Aşağıdaki üç satırı sürekli olarak ifadelerin başına std:: yazmamak için ekledik. [/SIZE]

[SIZE=3]// Yani cout, cin ve endl ifadelerini tanımladık. [/SIZE]

[SIZE=3]using std::cout; // program cout kullanıyor [/SIZE]

[SIZE=3]using std::cin; // program cin kullanıyor [/SIZE]

[SIZE=3]using std::endl; // program endl kullanıyor [/SIZE]



[SIZE=3]// main fonksiyonun çalışmaya başlaması [/SIZE]

[SIZE=3]int main() [/SIZE]

[SIZE=3]{ [/SIZE]

[SIZE=3]    int number1; // karşılaştırılacak ilk sayı [/SIZE]

[SIZE=3]    int number2; // karşılaştırılacak ikinci sayı [/SIZE]



[SIZE=3]    cout << "Karşılaştırmak için iki sayı giriniz: "; // kullanıcıdan veri istemesi [/SIZE]

[SIZE=3]    cin >> number1 >> number2; // iki verinin kullanıcıdan alınması [/SIZE]



[SIZE=3]    if ( number1 == number2 ) [/SIZE]

[SIZE=3]        cout << number1 << " == " << number2 << endl; [/SIZE]



[SIZE=3]    if ( number1 != number2 ) [/SIZE]

[SIZE=3]        cout << number1 << " != " << number2 << endl; [/SIZE]



[SIZE=3]    if ( number1 < number2 ) [/SIZE]

[SIZE=3]        cout << number1 << " < " << number2 << endl; [/SIZE]



[SIZE=3]    if ( number1 > number2 ) [/SIZE]

[SIZE=3]        cout << number1 << " > " << number2 << endl; [/SIZE]



[SIZE=3]    if ( number1 <= number2 ) [/SIZE]

[SIZE=3]        cout << number1 << " <= " << number2 << endl; [/SIZE]



[SIZE=3]    if ( number1 >= number2 ) [/SIZE]

[SIZE=3]        cout << number1 << " >= " << number2 << endl; [/SIZE]

[SIZE=3]} // main fonksiyonun sonu [/SIZE]
Bu programda if ifadesinin aritmetik işlemler ile örneklemesini yaptık. Normal kullanımı;

If ( koşul )

Yapılması istenen şeklinde;

Eğer koşul doğru ise yapılması istenen kod bloğu çalıştırılır değilse görmezden gelinir.

Aşağıda çalıştırılmış bir örneğini paylaştım. Koşulları doğru olan kısımlar çalıştırılıp çıktılar alınmış.




98SySB.png










ASCII Tablosu ve “static_cast”

Ek olarak; buraya kadar int, “tam sayı” değişkenini gördük. String’lerin içinde kullandığımız harflerin, makinede integer karşılıkları vardır. Bu değerlerin bulunduğu tablo ASCII Tablosu olarak geçmektedir.

ASCII Tablosu, bilgisayarda kullanılan sembolleri sayısal olarak ifade etmeye yaramaktadır. Belirli bir standart ve ihtiyaç neticesinde ortaya çıkmıştır. Bildiğimiz üzere bilgisayarlar her şeyi sayı olarak algılamaktadır. Dünyada pek çok bilgisayar üreticisi olduğu için aynı sayıların farklı bilgisayarlarda da aynı şekilde tanınması gereksiniminden doğmuştur.

Tablo sıfırdan başlamaktadır ve ilk 32 karakter kontrol karakteri olarak geçmektedir. Yani yazdırılamayan kontrol kodları ve yazıcılar gibi çevre birimleri kontrol etmek için kullanılır.

32 ile 127 arasındaki karakterler basılabilir karakterler olarak geçer ve klavyemizde gördüğümüz harfler, rakamlar, noktalama işaretleri ve çeşitli sembolleri kapsamaktadır.

128 ile 255 arasındaki karakterler genişletilmiş ASCII tablosuna girmektedir ve standart bir versiyonu yoktur. Bu kısım ülkelerin kullandıkları dile göre düzenlenmektedir.

ASCII Tablosu;

N0S7KA.png


C++ ‘da ‘A’ harfini integer karşılığında göstermek için “static_cast” kullanılabilir. Örnek;

Kod:
[SIZE=3]// Bu program A harfini ve integer karşılığını çıktı olarak vermektedir. [/SIZE]

[SIZE=3]#include <iostream> [/SIZE]



[SIZE=3]using namespace std; [/SIZE]



[SIZE=3]int main() [/SIZE]

[SIZE=3]{ [/SIZE]

[SIZE=3]    cout << 'A'; // A harfinin direkt çıktı alınması [/SIZE]



[SIZE=3]    cout << static_cast< int >( 'A' ); // integer karşılığının çıktı alınması [/SIZE]

[SIZE=3]} // main fonksiyonun sonu[/SIZE]








Burada A’dan sonra yazan 65 sayısı büyük A harfinin ASCII tablosundaki karşılığıdır.


Edit: static_cast'in yanı sıra, casting diye bir olay vardır. Casting'de değerin başında parantez içinde tanımladığımız veri tipine değerin dönüşümünü yapar. Örneğin elimizde virgüllü sayı olan double veri tipinde sayı olsun. (6,5) Bu sayının int haline cast edilmesi, int veri tipine çevrilmesidir. Şu şekilde olur;


Kod:
(int)6,5;


Örnek;


98VKf1.png




Bu işlemin sonucunda int değer tipi virgüllü sayıları kabul etmediği için yani tam sayı olduğu için. Değerimiz 6'ya dönüşecektir.

Casting ne işe yarar?
Her zaman aldığımız verilerin tipleri aynı olmayabilir. String bir değişkene int atayamacağınız gibi veya tam tersi bir durum, hata almamıza veya sonucumuzun yanlış çıkmasına sebep olur. Ancak biz, kodu yazarken bu tarz değişikliklerin olabileceği veya sonucumuzun hatalı çıkmasına sebebiyet verebilecek yerlerde casting yaparak bu durumun önüne geçebiliriz.

Şimdiye kadar main fonksiyonun içerisinde temel kısımları çalıştık. Gelecek dersten itibaren nesne yönelimli programlamadan (Object-oriented programming) (OOP)’dan devam edeceğiz.
 
Son düzenleme:

Mapzilla

Adanmış Üye
23 Eyl 2016
7,205
13
static_cast<int>(foo) ve (int)foo arasında ne fark var? Bunu da konuya eklersen güzel olur
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.