FORUM Portal Albümlerim Sosyal Gruplar Kimler Online Bugünki Mesajlar
Geri git   JiyanBoard.org > WEBMASTER VE PROGRAMLAMA DiLLERi > Programlama Dilleri > C / C++ / C#
Kayıt ol CezalilarTüm Albümler Yardım Üye Listesi Ajanda Arama Bugünki Mesajlar Forumları Okundu Kabul Et

Konu Bilgileri
Konu Başlığı
4 . Bölüm : Veri türleri
Konudaki Cevap Sayısı
0
Şuan Bu Konuyu Görüntüleyenler
 
Görüntülenme Sayısı
29

Yeni Konu aç Cevapla
 
LinkBack Seçenekler Stil
Alt 09-20-2008, 15:20   #1 (permalink)
KecaKurdan
 
Gulasor - ait Kullanıcı Resmi (Avatar)
 
Üyelik tarihi: Sep 2008
Üye No: 8
Mesajlar: 3,691
Konular: 1966
Referanslari: 5
Arkadaslari: (11)
Nerden: KüRDiSTaN
Meslek: pc emekcisi :)
Interests: ASİ
Biyografi: kece kudan
Cinsiyet: .
Kullandigi Tesekkür: 30
Aldigi Tesekkürler: 253
Tecrübe Puanı: 150
Aldigi Puanlar: 3620
Gulasor has a reputation beyond reputeGulasor has a reputation beyond reputeGulasor has a reputation beyond reputeGulasor has a reputation beyond reputeGulasor has a reputation beyond reputeGulasor has a reputation beyond reputeGulasor has a reputation beyond reputeGulasor has a reputation beyond reputeGulasor has a reputation beyond reputeGulasor has a reputation beyond reputeGulasor has a reputation beyond repute
Ruh Hali:
Son Aktivitesi: Dün :   18:31 
Toplam Online Süresi: 6 Gün 10 Saat 44 Dakika 11 Saniye
Submit to Clesto Submit to Digg Submit to Reddit Submit to Furl Submit to Del.icio.us Submit to Jeqq Submit to Spurl
Standart 4 . Bölüm : Veri türleri

4 . BÖLÜM : VERİ TÜRLERİ

Nesne (Object) kavramını incelediğimiz zaman, nesnelerin en önemli özelliklerinden birinin nesnenin türü olduğunu belirtmiştik. Tür (type) nesnenin olmazsa olmaz bir özelliğidir ve türü olmayan bir nesneden söz etmek mümkün değildir. Derleyiciler nesnelerle ve verilerle ilgili kod üretirken, tür bilgisinden faydalanırlar. Tür bilgisinden, söz konusu veriyi bellekte ne şekilde tutacaklarını, verinin değerini ne şekilde yorumlayacaklarını, veriyi hangi işlemlere tabi tutabileceklerini öğrenirler.

Programlama dilleri açısından baktığımız zaman türleri iki ayrı gruba ayırabiliriz.

1. Önceden tanımlanmış veri türleri (Doğal veri türleri)
(Basic tpes, default types, built-in types, primitive types)

Programlama dilinin tasarımından kaynaklanan ve dilin kurallarına göre varlığı garanti altına alınmış olan türlerdir. Her programlama dili programcının doğrudan kullanabileceği, çeşitli özelliklere sahip veri türleri tanımlar. C dilinde de önceden tanımlanmış 11 adet veri türü vardır.

2. Programcının tanımlanmış olduğu veri türleri (user defined types)

Programlama dillerinin çoğu, önceden tanımlanmış veri türlerine ek olarak, programcının da yeni türler tanımlanmasına izin vermektedir. Programcının tanımlayacağı bir nesne için önceden tanımlanmış veri türleri yetersiz kalıyorsa, programcı kendi veri türünü yaratabilir. C dilinde de programcı yeni bir veri türünü derleyiciye tanıtabilir ve tanıttığı veri türünden nesneler tanımlayabilir.

Farklı programlama dillerindeki önceden tanımlanan veri türleri birbirlerinden farklı olabilir. Daha önce öğrenmiş olduğunuz bir programlama dilindeki türlerin aynısını C dilinde bulamayabilirsiniz.

C dilininin önceden tanımlanmış 11 veri türü vardır. Bu veri türlerinden 8 tanesi tamsayı türünden verileri tutmak için, kalan 3 tanesi ise gerçek sayı türünden verileri tutmak için tasarlanmıştır. Biz bu türlere sırasıyla "Tamsayı veri türleri" (integer types) ve "gerçek sayı veri türleri" (floating types) diyeceğiz.

tamsayı veri türleri (integer types)


C dilinin toplam 4 ayrı tamsayı veri türü vardır ancak her birinin kendi içinde işaretli ve işaretsiz biçimi olduğundan, toplam tamsayı türü 8 kabul edilir.

İşaretli (signed) tamsayı türlerinde pozitif ve negatif tam sayı değerleri tutulabilirken, işaretsiz (unsigned) veri türlerinde negatif tamsayı değerleri tutulamaz.

Bu türleri sırasıyla inceleyelim:
işaretli ve işaretsiz char veri türü :

Şüphesiz char sözcüğü ingilizce character sözcüğünden kısaltılmıştır ve türkçe "karakter" anlamına gelmektedir. Ancak bu türün ismini, bundan sonraki derste C dilinin bir anahtar sözcüğü olduğunu öğreneceğimiz char sözcüğü ile özdeşleştirip, "char türü" (çar diye okuyunuz) diye söyleyeceğiz. İşaretli char türünden bir nesnenin bir byte'lık bir alanda tutulması C standartlarınca garanti altına alınmıştır.

1 byte'lık bir alanı işaretli olarak kullandığımızda yazabileceğimiz değerlerin -128 / 127 değerleri arasında değişebileceğini sayı sistemleri dersimizden hatırlayalım.
işaretsiz char veri türünün işaretli olandan farkı 1 byte'lık alanın işaretsiz olarak, yani yalnızca 0 ve pozitif sayıların ifadesi için kullanılmasıdır. Bu durumda işaretsiz char türünde 0 - 255 arasındaki tamsayı değerleri tutulabilir.
işaretli ve işaretsiz short int veri türü (işaretli kısa tamsayı türü - işaretsiz kısa tamsayı türü) :

Yine bundan sonraki derste öğreneceğimiz gibi, short ve int sözcükleri C dilinin anahtar sözcüklerinden olduğu için bu türün ismini genellikle short int, ya da kısaca short türü olarak telaffuz edeceğiz.
işaretli ve işaretsiz short veri türünden bir nesne tanımlandığı zaman, nesnenin bellekte kaç byte yer kaplayacağı sistemden sisteme değişebilir. Sistemlerin çoğunda, short int veri türünden yaratılan nesne bellekte 2 byte'lık bir alan kaplayacaktır. işaretli short int veri türünden bir nesne -32768 - +32767 aralığındaki tamsayı değerlerini tutabilirken, işaretsiz short türü söz konusu olduğıundan tutulabilecek değerler 0 - +65535 aralığında olabilir.
işaretli int (signed int) türü ve işaretsiz int (unsigned int) türü :

işaretli ve işaretsiz int veri türünden bir nesne tanımlandığı zaman, nesnenin bellekte kaç byte yer kaplayacağı sistemden sisteme değişebilir. Çoğunlukla 16 bitlik sistemlerde, int veri , 32 bitlik sistemlerde ise int veri türü 4 byte yer kaplamaktadır.
16 bitlik sistem, 32 bitlik sistem ne anlama geliyor.
16 bitlik sistem demekle işlemcinin yazmaç (register) uzunluğunun 16 bit oldugunu anlatıyoruz.

int veri türünün 2 byte uzunluğunda olduğu sistemlerde bu veri türünün sayı sınırları, işaretli int türü için -32768 - +32767, işaretsiz int veri türü için 0 - +65535 arasında olacaktır.
işaretli ve işaretsiz long int veri türü (işaretli uzun tamsayı türü - işaretsiz uzun tamsayı türü)

Bu türün ismini genellikle long int, ya da kısaca long türü olarak telaffuz edeceğiz.
işaretli ve işaretsiz long int veri türünden biriyle tanımlanan bir nesnenin bellekte kaç byte yer kaplayacağı sistemden sisteme değişebilir. Sistemlerin çoğunda, long int veri türünden yaratılan nesne bellekte 4 byte'lık bir alan kaplayacaktır. İşaretli long int veri türünden bir nesne -2147483648 - +2147483647 aralığındaki tamsayı değerlerini tutabilirken, işaretsiz long int türü söz konusu olduğıundan tutulabilecek değerler 0 - +4.294.967.296 aralığında olur.
GERÇEK SAYI TÜRLERİ

C dilinde gerçek sayı değerlerini tutabilmek için 3 ayrı veri türü tanımlanmıştır. Bunlar sırasıyla, float, double ve long double veri türleridir. Gerçek sayı veri türlerinin hepsi işaretlidir. Yani gerçek sayı veri türleri içinde hem pozitif hem de negatif değerler tutulabilir. Gerçek sayıların bellekte tutulması sistemden sisteme değişebilen özellikler içerebilir. Ancak sistemlerin çoğunda IEEE 754 sayılı standarda uyukmaktadır.

Sistemlerin hemen hemen hepsinde float veri türünden bir nesne tanımlandığı zaman bellekte 4 byte yer kaplayacaktır. 4 byte'lık yani 32 bitlik alana özel bir kodlama yapılarak gerçek sayı değeri tutulur. IEEE 754 sayılı standartta 4 byte'lık gerçek sayı formatı "single precision " (tek hassasiyet) olarak isimlendirilmiştir. Bu standartta 32 bitlik alan 3 bölüme ayrılmıştır.

1 bitlik alan (sign bit): gerçek sayının işaret bilgisini yani pzoitif mi negatif mi olduğu bilgisini tutar.
8 bitlik alan (exponential part) :
23 bitlik alan (fraction part) : sayının ondalık kısmını tutar.

Sistemlerin hemen hemen hepsinde double veri türünden bir nesne tanımlandığı zaman bellekte 8 byte yer kaplayacaktır. Gerçek sayıların bellekte tutulması sistemden sisteme değişebilen özellikler içerebilir. Ancak sistemlerin çoğunda IEEE 754 sayılı standarda uyulmaktadır.

long double veri türünden bir nesne tanımlandığı zaman bellekte 10 byte yer kaplayacaktır.

C dilinin doğal veri türlerine ilişkin bilgileri aşağıda bir tablo şeklinde veriyoruz:



C DİLİNİN ÖNCEDEN TANIMLANMIŞ
(DEFAULT ) VERİ TÜRLERİ

TAMSAYI TÜRLERİ
(INTEGER TYPES)
TÜR İSMİ
UZUNLUK(byte)
(DOS / UNIX)
SINIR DEĞERLERİ
signed char
1
-128
127
unsigned char
1
0
255
signed short int
2
-32.768
32.767
unsigned short int
2
0
65.535
signed int
2
4
-32.768
-2.147.483.648
32.767
2.147.483.647
unsigned int
2
4
0
0
65.535
4.294.967.296
long int
4
-2.147.483.648
2.147.483.647
unsigned long int
4
0
4.294.967.296
GERÇEK SAYI TÜRLERİ
(FLOATING TYPES)
TÜR İSMİ
UZUNLUK
(byte)
SINIR DEĞERLERİ
en küçük pozitif değer
en büyük pozitif değer
float
4
1.17 x 10-38
(6 basamak hassasiyet)
3.40 x 1038
double
8
2.22 x 10-308
(15 basamak hassasiyet)
1.17 x 10-38
(15 basamak hassasiyet)
long double
10
taşınabilir değil


Yukarıda verilen tablo sistemlerin çoğu için geçerli de olsa ANSI C standartlarına göre yalnızca aşağıdaki özellikler garanti altına alınmıştır:

char türü 1 byte uzunluğunda olmak zorundadır.
short veri türünün uzunluğu int türünün uzunluğuna eşit ya da int türü uzunluğundan küçük olmalıdır. Yani

short <= int

long veri türünün uzunluğu int türüne eşit ya da int türünden büyük olmak zorundadır. Yani

long >= int

Derleyiciler genel olarak derlemeyi yapacakları sistemin özelliklerine göre int türünün uzunluğunu işlemcinin bir kelimesi kadar alırlar. 16 bitlik bir işlemci için yazılan tipik bir uygulamada

char türü 1 byte
int türü 2 byte (işlemcinin bir kelimesi kadar)
short türü 2 byte (short = int)
long türü 4 byte (long > int)

alınabilir.

Yine 32 bitlik bir işlemci için yazılan tipik bir uygulamada

char türü 1 byte
int türü 4 byte (işlemcinin bir kelimesi kadar)
short türü 2 byte (short < int)
long türü 4 byte (long = int)

alınabilir.

C dilinin en çok kullanılan veri türleri tamsaylar için int türü iken gerçek sayılar için double veri türüdür. Peki hangi durumlarda hangi veri türünü kullanmak gerekir. Bu sorunun cevabı olarak hazır bir reçete vermek pek mümkün değil, zira kullanacağımız bir nesne için tür seçerken bir çok faktör söz konusu olabilir, ama genel olarak şu bilgileri verebiliriz :

Gerçek sayılarla yapılan işlemler tam sayılarla yapılan işlemlere göre çok daha fazla yavaştır. Bunun nedeni şüphesiz gerçek sayıların özel bir şekilde belirli bir byte alanına kodlanmasıdır. Tamsayıların kullanılmasının yeterli olduğu durumlarda bir gerçek sayı türünün kullanılması , çalışan programın hızının belirli ölçüde yavaşlatılması anlamına gelecektir. Bir tamsayı türünün yeterli olması durumunda gerçek sayı türünün kullanılması programın okunabilirliğininin de azalmasına neden olacaktır.
__________________
Gulasor isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Cevapla

Bookmarks


Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir)
 
Seçenekler
Stil

Yetkileriniz
Konu Acma Yetkiniz Yok
Cevap Yazma Yetkiniz Yok
Eklenti Yükleme Yetkiniz Yok
Mesajınızı Değiştirme Yetkiniz Yok

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodu Kapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Açık

Hizli Erisim

Benzer Konular
Konu Konuyu Başlatan Forum Cvpl Son Mesaj
3 . Bölüm : Genel kavramlar Gulasor C / C++ / C# 0 09-20-2008 15:19
Bölüm : Sayi sistemleri Gulasor C / C++ / C# 0 09-20-2008 15:17


WEZ Format +3. Şuan Saat: 17:16.

Design By: JB-Team
Powered by JBulletin® JiyanBoard Version
Copyright ©2007 - 2009, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0