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.
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ış.
ASCII Tablosu ve static_cast
Ek olarak; buraya kadar int, tam sayı değişkenini gördük. Stringlerin 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;
C++ da A harfini integer karşılığında göstermek için static_cast kullanılabilir. Örnek;
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ış.
ASCII Tablosu ve static_cast
Ek olarak; buraya kadar int, tam sayı değişkenini gördük. Stringlerin 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;
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 Adan 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;
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: