Yazılımda Veri Tipleri
Tüm yazılım meraklılarına selam olsun :)
Bir önceki makalemizde ilk kodumuzu yazmış ve programımızla "merhaba dünyalı" pardon "merhaba dünya" diyerek tanışmıştık :)
E bu kadar selamlaşmadan sonra biraz daha yeni birşeyler öğrensek fena olmaz sanırım.
Bugünkü konumuz programcılığın gelmişin geçmişinden beri gelen veri tiplerini öğrenip birkaç öğretici uygulamalar yapıyoruz.
Peki nedir bu veri tipleri?
Bildiğiniz gibi bilgisayar dünyasının temeli bit dediğimiz 1 ve 0'dan oluşan en temel kavramlardan oluşur.Yani verilerin en basit şekli desek yerinde bir deyiş olur sanırım.
Peki veriler yan yana 1 ve 0'lardan oluşuyorsa bilgisayar bunu nasıl anlamlı bir ifadeye çevirip bizimle iletişim kurabilecek?
İşte bu sorunun cevabını veri tipleri karşılıyor,yani bilgisayara gönderdiğimiz dataları belli bir kalıba sokarak işlem yaptırmaya "Convert" (dönüşüm) ile sağlıyoruz.
Temelde veri tiplerinin köken "char" (karakter) e dayanır ancak genelde kullanımı üçe ayrılmakta;bunlar integer (sayı),string(metin) ve boolean(doğru veya yanlış) olarak üçe ayrılmaktadır.
Bu veri tiplerinden ise günlük ihtiyaçlarımızı karşılamak için,mesela Türk Lirasındaki kuruş kısmını ifade etmek istesek 15,90 TL (on beş TL doksan kuruş) diyebilmemiz adına virgül kullanırız ancak integer bir tam sayıyı (12 gibi) karşıladığı için ondalık kısmı veri tipine dönüşemeyecektir.Bu yüzden double (ondalık) ve decimal gibi virgül alabilen veri tipleri ortaya çıkmıştır.
Aşağıdaki tablo hangi veri tipinin karşılığında ne alabileceğini göstermektedir:
Dikkat edersek tablodaki veri tipleri, yukarıda bahsettiğim veri tiplerinden farklı tipleride kapsamaktadır.
İlk satırda görceğiniz üzere "char" (character) yani Türkçe manasıyla "karakter" anlamına gelen bir veri tipidir,tüm veri tiplerinin en temelini oluşturur.Bu veri tipi klavyenizdeki bütün harf ve noktalama ayrıca rakamları ifade eder.
Bir diğer veri tipi ise "unsigned" denilen işaretsiz veri tipidir,bu da integer tam sayı tipinden türemiştir yalnızca bu veri tipi negatif sayıları alamaz.
Son olarak "long" (geniş-uzun) veri tipinden bahsetmek istiyorum,bu da integer tam sayısından türemiştir yalnız bu veri tipi gerçekten çok büyük astronomik sayıları bünyesine alabilir.Gerçi aslında astronomiden bahsediyoruz herhalde NASA gibi uzay ve havacılıkla ilgilenen kurumlar ışık hızı gibi üst düzey sayıları bu veri tipleriyle hesaplıyorlardır :)
Tabloda göreceğiniz "short" (kısa) veri tipi ise gerçekten fazla büyük olmayan kısa sayılar için integer'dan türetilmiş veri tipidir.
Sanırım bu kadar teori yeterlidir,ancak pratiğe geçmeden önce kısa ve önemli bir dipnot belirtmek istiyorum.
İnteger yani tam sayı ve bu türden türeyen (mesela double) gibi ifadeler stringe dönüştürülebilir ama her string ifade diğer veri tiplerine dönüştürülemez.
Birkaç paragraf sonrasında ne demek olduğunu anlayacaksınız ;)
Şimdi Visual Studio'muzu açalım ve degiskenApp adında bir proje açalım.
Projemizdeki formun mavi şeridine tıklayalım ve load eventinin içine bir değişken tanımlayalım.
Mesela 21.satıra ilk değişkenimiz integer tipinde bir tam sayı alalım:
Burda şunu ifade ediyoruz;5 sayısını al,tam sayı tipindeki "sayi" değişkenine ata.
Artık "sayi" adındaki değişkenimiz bilgisayarımızın RAM belleğinde 5 sayısını tutmaktadır,daha sonra bu "sayi" tipindeki 5 sayısını programın izin verdiği her yerde kullanabiliriz.
Bu arada değişken isimleriyle ilgili bazı birkaç kural var:
Bir değişken;
*asla sayı ile başlamaz ama ortasında ya da sonunda içerebilir,
*asla boşluk içermez,
*sadece ingilizce karakterler içerebilir,
*değişken adının sonunda mutlaka ";" noktalı virgül konulmalı,
*global kurallar gereğince küçük harfle başlar,eğer iki kelimeden oluşursa ikinci kelime büyük harfle başlar.
Örneğin;
int kelime5 doğrudur ancak,
int şukelime, int bu kelime,int 5kelime yanlış ifadelerdir.
Bu konudan sonra şimdide string tipinde metin tabanlı bir değişken tanımlayalım;
Burda ise "isim" adında bir string değişken tanımladık ve bilgisayarın önbelleğine adımızı yazdırdık,artık bilgisayar adımızı öğrenmiş oldu :)
Şimdi kritik bir nokta daha karşımıza çıkıyor,sizce 9 sayı mıdır yoksa metin mi?
Cevabınız sayı ise yanıldınız çünkü bilgisayar dilinde 9 hem bir sayıyı hem de bir metni ifade eder,hatta aynı zamanda bir karakter olduğu için char ve de 9,0 ondalık sayısından farksız olduğu için double anlamına gelir.
Bir pratik yapalım bu konuda;
Gördüğünüz gibi yazılımda bazı böyle enteresan durumlar sözkonusu olabiliyor :)
Şimdi ise şöyle bir uygulama yapalım,yukarıdaki tüm değişkenleri yorum satırı haline getirelim,eğer unuttuysanız yorum satırı getirmek istediğimiz birden çok satırı /* */ arasına alıyorduk ;)
Mesela "elma" sözcüğünü herhangi bir değişken tipi olarak bilgisayar belleğine atalım,
yazalım ve F5 e basarak programımızı çalıştıralım,göreceğiniz üzere program normal bir şekilde çalışacak ve ekrana formumuz gelecektir.
Şimdi ise programı kapatıp tekrar kodlara geri dönelim ve aşağıdaki kod satırını yazalım;
gördüğünüz gibi "kelime" isimli değişkenimizin altında kırmızı bir işaret çıktı.
Farenizin okunu altı kırmızı olarak çizilen "kelime" nin üzerinde beklettiğinizde "local variable" ile başlayan bir cümle göreceksiniz.
Bunun anlamı şudur: metin tabanlı bir yazıyı sayı tabanlı bir değişkene atayamayız yani geçersiz bir "convert" (tip dönüşümü) olayı ortaya çıkıyor.
Biz yinede programı ısrarla çalıştırmaya devam edersek,
hatası ile karşılaşacağız ve IDE'miz programın bu hata ile devam edemeyeceğimizi söyleyip,bu hatalı kodu yoksayarak son çalışır haliyle çalışmasını isteyip istemediğimizi soracaktır.
Bu yazdığımız hatalı kod satırını yorum satırı haline getirelim ve aynı işlemi boolean (evet ya da hayır) değişkeni için deneyelim;
Bu defa ise "elma" sözcüğünün altı kırmızı çizildi ve string tipindeki bir ifadenin bool tipine dönüştürülemeyeceği bildirisini alıyoruz.
Son olarak aynı işlemi char veri tipinde karaktere dönüştürme işlemine tabi tutalım;
ve yine "elma" nın altı kırmızı çizildi,demek ki neymiş bilgisayar elma yemekten hoşlanmıyormuş :)
Şaka bi yana tabi,char yani karakter tipindeki değişkenler ise sadece tek tırnak (') içerisindeki ifadeleri barındırır.
He bir de tek tırnak içersinde yazalım şu elma olayını:
bu defada "Too many character" diye bir hata geliyor karşımıza,az önce bahsettiğim gibi char tipindeki değişkenler sadece tek tırnak işareti arasındaki karakterleri kabul edebilir.Bunlar ise harf,rakam,alt tre gibi özel karakterler olabilir.
Son olarak işimize yarayacak double değişken tipini ele alalım.Aslında hemen hemen double,decimal,float gibi değişken tipleri aynı ondalık ifadeleri karşılasa da virgülden sonraki sayı bakımından birbirlerinden ayrılıyorlar.
Hadi bakalım neymiş bu double zımbırtısı görelim :)
Tabi herkesin cebindeki para bundan daha fazla olsun ister gönlüm :)
Gördüğünüz gibi ondalık sayıları bu şekilde tutabiliyoruz ayrıca bu işlemi float ve decimal ile de yapabilirdik tercih size ait ancak ondalık kısımda virgülü kod tarafında nokta (.) işareti ile yazıyoruz yoksa işler karışır ;)
Yine unutuyordum nerdeyse herhalde yaşlanıyorum bu genç yaşımda :)
Hemen kısacık bir boolean (evet ya da hayır) değişken tipi örneği verelim:
Burda görüldüğü gibi kız evlilik teklifimizi kabul ediyor ve mutlu mesut yuva kuruyoruz :)
Yani bool değişkeninin karşılığı ya "true" ile evet ya da "false" ile hayır değerlerinden birisini alır.
Bu kısmı ileri ki derslerimizde karar verme süreçlerinde kullanacağız.
Şimdilik bu kadar uzun bir ders yeterlidir sanırım,umarım yazılarımı sıkılmadan okuyorsunuzdur :)
Bir sonraki makalemize kadar kendinize iyi bakın ve mutlaka kendinizce yeni değişkenler tanımlayıp pratik yapın derim ;)
Haydi kalın sağlıcakla!
Proje İndirme Linki:
https://www.serkanayyildiz.com/images/uploaded/29.01.2013-03-09-33/degiskenApp.zip.zip
Bir önceki makalemizde ilk kodumuzu yazmış ve programımızla "merhaba dünyalı" pardon "merhaba dünya" diyerek tanışmıştık :)
E bu kadar selamlaşmadan sonra biraz daha yeni birşeyler öğrensek fena olmaz sanırım.
Bugünkü konumuz programcılığın gelmişin geçmişinden beri gelen veri tiplerini öğrenip birkaç öğretici uygulamalar yapıyoruz.
Peki nedir bu veri tipleri?
Bildiğiniz gibi bilgisayar dünyasının temeli bit dediğimiz 1 ve 0'dan oluşan en temel kavramlardan oluşur.Yani verilerin en basit şekli desek yerinde bir deyiş olur sanırım.
Peki veriler yan yana 1 ve 0'lardan oluşuyorsa bilgisayar bunu nasıl anlamlı bir ifadeye çevirip bizimle iletişim kurabilecek?
İşte bu sorunun cevabını veri tipleri karşılıyor,yani bilgisayara gönderdiğimiz dataları belli bir kalıba sokarak işlem yaptırmaya "Convert" (dönüşüm) ile sağlıyoruz.
Temelde veri tiplerinin köken "char" (karakter) e dayanır ancak genelde kullanımı üçe ayrılmakta;bunlar integer (sayı),string(metin) ve boolean(doğru veya yanlış) olarak üçe ayrılmaktadır.
Bu veri tiplerinden ise günlük ihtiyaçlarımızı karşılamak için,mesela Türk Lirasındaki kuruş kısmını ifade etmek istesek 15,90 TL (on beş TL doksan kuruş) diyebilmemiz adına virgül kullanırız ancak integer bir tam sayıyı (12 gibi) karşıladığı için ondalık kısmı veri tipine dönüşemeyecektir.Bu yüzden double (ondalık) ve decimal gibi virgül alabilen veri tipleri ortaya çıkmıştır.
Aşağıdaki tablo hangi veri tipinin karşılığında ne alabileceğini göstermektedir:
Dikkat edersek tablodaki veri tipleri, yukarıda bahsettiğim veri tiplerinden farklı tipleride kapsamaktadır.
İlk satırda görceğiniz üzere "char" (character) yani Türkçe manasıyla "karakter" anlamına gelen bir veri tipidir,tüm veri tiplerinin en temelini oluşturur.Bu veri tipi klavyenizdeki bütün harf ve noktalama ayrıca rakamları ifade eder.
Bir diğer veri tipi ise "unsigned" denilen işaretsiz veri tipidir,bu da integer tam sayı tipinden türemiştir yalnızca bu veri tipi negatif sayıları alamaz.
Son olarak "long" (geniş-uzun) veri tipinden bahsetmek istiyorum,bu da integer tam sayısından türemiştir yalnız bu veri tipi gerçekten çok büyük astronomik sayıları bünyesine alabilir.Gerçi aslında astronomiden bahsediyoruz herhalde NASA gibi uzay ve havacılıkla ilgilenen kurumlar ışık hızı gibi üst düzey sayıları bu veri tipleriyle hesaplıyorlardır :)
Tabloda göreceğiniz "short" (kısa) veri tipi ise gerçekten fazla büyük olmayan kısa sayılar için integer'dan türetilmiş veri tipidir.
Sanırım bu kadar teori yeterlidir,ancak pratiğe geçmeden önce kısa ve önemli bir dipnot belirtmek istiyorum.
İnteger yani tam sayı ve bu türden türeyen (mesela double) gibi ifadeler stringe dönüştürülebilir ama her string ifade diğer veri tiplerine dönüştürülemez.
Birkaç paragraf sonrasında ne demek olduğunu anlayacaksınız ;)
Şimdi Visual Studio'muzu açalım ve degiskenApp adında bir proje açalım.
Projemizdeki formun mavi şeridine tıklayalım ve load eventinin içine bir değişken tanımlayalım.
Mesela 21.satıra ilk değişkenimiz integer tipinde bir tam sayı alalım:
Burda şunu ifade ediyoruz;5 sayısını al,tam sayı tipindeki "sayi" değişkenine ata.
Artık "sayi" adındaki değişkenimiz bilgisayarımızın RAM belleğinde 5 sayısını tutmaktadır,daha sonra bu "sayi" tipindeki 5 sayısını programın izin verdiği her yerde kullanabiliriz.
Bu arada değişken isimleriyle ilgili bazı birkaç kural var:
Bir değişken;
*asla sayı ile başlamaz ama ortasında ya da sonunda içerebilir,
*asla boşluk içermez,
*sadece ingilizce karakterler içerebilir,
*değişken adının sonunda mutlaka ";" noktalı virgül konulmalı,
*global kurallar gereğince küçük harfle başlar,eğer iki kelimeden oluşursa ikinci kelime büyük harfle başlar.
Örneğin;
int kelime5 doğrudur ancak,
int şukelime, int bu kelime,int 5kelime yanlış ifadelerdir.
Bu konudan sonra şimdide string tipinde metin tabanlı bir değişken tanımlayalım;
Burda ise "isim" adında bir string değişken tanımladık ve bilgisayarın önbelleğine adımızı yazdırdık,artık bilgisayar adımızı öğrenmiş oldu :)
Şimdi kritik bir nokta daha karşımıza çıkıyor,sizce 9 sayı mıdır yoksa metin mi?
Cevabınız sayı ise yanıldınız çünkü bilgisayar dilinde 9 hem bir sayıyı hem de bir metni ifade eder,hatta aynı zamanda bir karakter olduğu için char ve de 9,0 ondalık sayısından farksız olduğu için double anlamına gelir.
Bir pratik yapalım bu konuda;
Gördüğünüz gibi yazılımda bazı böyle enteresan durumlar sözkonusu olabiliyor :)
Şimdi ise şöyle bir uygulama yapalım,yukarıdaki tüm değişkenleri yorum satırı haline getirelim,eğer unuttuysanız yorum satırı getirmek istediğimiz birden çok satırı /* */ arasına alıyorduk ;)
Mesela "elma" sözcüğünü herhangi bir değişken tipi olarak bilgisayar belleğine atalım,
yazalım ve F5 e basarak programımızı çalıştıralım,göreceğiniz üzere program normal bir şekilde çalışacak ve ekrana formumuz gelecektir.
Şimdi ise programı kapatıp tekrar kodlara geri dönelim ve aşağıdaki kod satırını yazalım;
gördüğünüz gibi "kelime" isimli değişkenimizin altında kırmızı bir işaret çıktı.
Farenizin okunu altı kırmızı olarak çizilen "kelime" nin üzerinde beklettiğinizde "local variable" ile başlayan bir cümle göreceksiniz.
Bunun anlamı şudur: metin tabanlı bir yazıyı sayı tabanlı bir değişkene atayamayız yani geçersiz bir "convert" (tip dönüşümü) olayı ortaya çıkıyor.
Biz yinede programı ısrarla çalıştırmaya devam edersek,
hatası ile karşılaşacağız ve IDE'miz programın bu hata ile devam edemeyeceğimizi söyleyip,bu hatalı kodu yoksayarak son çalışır haliyle çalışmasını isteyip istemediğimizi soracaktır.
Bu yazdığımız hatalı kod satırını yorum satırı haline getirelim ve aynı işlemi boolean (evet ya da hayır) değişkeni için deneyelim;
Bu defa ise "elma" sözcüğünün altı kırmızı çizildi ve string tipindeki bir ifadenin bool tipine dönüştürülemeyeceği bildirisini alıyoruz.
Son olarak aynı işlemi char veri tipinde karaktere dönüştürme işlemine tabi tutalım;
ve yine "elma" nın altı kırmızı çizildi,demek ki neymiş bilgisayar elma yemekten hoşlanmıyormuş :)
Şaka bi yana tabi,char yani karakter tipindeki değişkenler ise sadece tek tırnak (') içerisindeki ifadeleri barındırır.
He bir de tek tırnak içersinde yazalım şu elma olayını:
bu defada "Too many character" diye bir hata geliyor karşımıza,az önce bahsettiğim gibi char tipindeki değişkenler sadece tek tırnak işareti arasındaki karakterleri kabul edebilir.Bunlar ise harf,rakam,alt tre gibi özel karakterler olabilir.
Son olarak işimize yarayacak double değişken tipini ele alalım.Aslında hemen hemen double,decimal,float gibi değişken tipleri aynı ondalık ifadeleri karşılasa da virgülden sonraki sayı bakımından birbirlerinden ayrılıyorlar.
Hadi bakalım neymiş bu double zımbırtısı görelim :)
Tabi herkesin cebindeki para bundan daha fazla olsun ister gönlüm :)
Gördüğünüz gibi ondalık sayıları bu şekilde tutabiliyoruz ayrıca bu işlemi float ve decimal ile de yapabilirdik tercih size ait ancak ondalık kısımda virgülü kod tarafında nokta (.) işareti ile yazıyoruz yoksa işler karışır ;)
Yine unutuyordum nerdeyse herhalde yaşlanıyorum bu genç yaşımda :)
Hemen kısacık bir boolean (evet ya da hayır) değişken tipi örneği verelim:
Burda görüldüğü gibi kız evlilik teklifimizi kabul ediyor ve mutlu mesut yuva kuruyoruz :)
Yani bool değişkeninin karşılığı ya "true" ile evet ya da "false" ile hayır değerlerinden birisini alır.
Bu kısmı ileri ki derslerimizde karar verme süreçlerinde kullanacağız.
Şimdilik bu kadar uzun bir ders yeterlidir sanırım,umarım yazılarımı sıkılmadan okuyorsunuzdur :)
Bir sonraki makalemize kadar kendinize iyi bakın ve mutlaka kendinizce yeni değişkenler tanımlayıp pratik yapın derim ;)
Haydi kalın sağlıcakla!
Proje İndirme Linki:
https://www.serkanayyildiz.com/images/uploaded/29.01.2013-03-09-33/degiskenApp.zip.zip
Sayıları int ile, harfleri string ile peki " %&++-*/ " gibi özel karakterleri hangi veri tipi ile tanıtıyoruz? programımda bununla ilgili sorun yaşıyorum.
Emre, karakterleri tek tek char değişken tipiyle tutabiliyoruz.