film indir
Aralık
11th 2007
C# Dilindeki Temel Veri Türleri

Posted under C# (csharp)

 Her dilde olduğu gibi C# dilinde de önceden tanımlanmış ve dillerin temelini oluşturan veri saklamak için kullanılan bir takım veri tipleri vardır. Bu makalemizde C# dilinde kullanılan veri türlerine değineceğiz. C# dilinde temel olarak veri tipleri ikiye ayrılır, bunlar önceden tanımlanmış veri türleri ve kullanıcı tarafından tanımlanmış veri türleridir. Önceden tanımlanmış veri türleri de kendi arasında referans tipi(reference types) ve değer tipi(value type) olmak üzere ikiye ayrılır. Bu detaylı bilgileri vermeden önce veri tipleri nasıl tanımlanır, veri türlerine nasıl ilk değer verilir ve veri türlerinin faaliyet alanı gibi temel konulardan bahsetmek istiyorum.

Değişken Kavramı

Değişkenler bir programlama dilinde temel verileri saklamak ve bu verileri sonradan kullanmak için kullanılan bellek bölgeleridir. C# dilinde genel olarak bir değişken tanımlaması aşağıdaki gibi olmaktadır.

Veritipi veriadı ;

Örneğin C# dilinde işaretsiz ve 32 bitlik veriyi temsil eden “a” isimli bir değişken aşağıdaki gibi tanımlanır.

int a ;

Fakat yukarıdaki tanımlamada bir sorun var. “a” adlı değişkende herhangi bir değer tutulmaktadır.Bu yüzden C# derleyicisi şimdilik “a” değişkenini kullanmamıza müsade etmez, çünkü “a” da neyin olduğu henüz belli değildir.Bu yüzden değişkenlere =(eşittir) operatörüyle ilk değerler atarız, ya da değişken tanımlamasından sonra, değişkene bir değer atarız. Bir değişkene bir değer atamak için iki farklı yöntem kullanılır. Aşağıda bu iki yönteme ait örnek bulunmaktadır.

int a = 10 ; //değişken tanımlanırken bellekteki değer 10 olarak düzenleniyor.

——————–

int b;
b = 10 ; /*değişken tanımlandıktan sonra değişkene değer atanıyor.İşlevsel olarak bu iki kullanım açısından bir fark yoktur.*/

——————–

int a=10, b;
b = 10 ; /*eğer bir satırda birden fazla değişeken tanımlaması yapmak istiyorsak bu yapıyı kulanırız.Bu durumda a ve b int türden değişkenlerdir denir.*/

Önemli Not: C# dilinde bir değişkene herhangi bir değer atamadan onu kullanmak yasaktır. Yani derleme işlemi gerçekleşmez, örneğin aşağıdaki gibi bir kullanım derleme zamanında hata verecektir. Bu yüzden eğer bir değişkeni kullanmak istiyorsak yukarıda açıkladığımız gibi değişkenlere bir değer vermek zorundayız. Bu kural önceden tanımlanmış referans tipleri için de değer tipleri için de geçerlidir.

int a ;
Console.WriteLine(a); //Bu ifadeleri içeren bir kod derlenemez.

Değişkenlerin Faaliyet Alanları (Scope)

C# dilinde programın genel akışı açılan ve kapanan parantezler içerisinde yazılır. Bu açılan ve kapanan parantezler arasındaki bölgeye blok denir. Tanımlanan bir değişkene, ancak tanımlandığı blok içerisinde ulaşılabilir. Örneğin aşağıdaki kısa örnekte tanımlanan örnekte her iki “a” değişkeni birbirinden bağımsızdır ve bellekte ayrı bölgelerde saklanırlar.

public class deneme
{
public static void Main()
{
{ //Birinci blok
int a=20 ;
}
{//İkinci blok
int a=20 ;
}
}
}

Yukarıdaki örnekte birinci ve ikinci blokta tanımlanan “a” isimli değişkenler Main bloğu içinde geçersizdir. Birinci a değişkeninin faaliyet alanı 1.Blok ,ikinci a değişkenin faaliyet alanı ise 2. Bloktur. Bu durumda Main() bloğunda Console.WriteLine(a); gibi bir ifade hatalıdır, çünkü Main bloğu içinde tanımlanan bir a değişkeni yoktur. Unutmamalıyız ki daha sonraki makalelerde detaylı olarak göreceğimiz for ve diğer döngüler de birer blok olduğu için bu bloklarda tanımlanan değişkenler döngü bloğunun dışında geçersiz olacaktır. Diğer bir önemli nokta ise faaliyet alanı devam eden bir değişkenin bir daha tanımlanmasının hataya yol açmasıdır. Örneğin aşağıdaki gibi bir durum derleme zamanında hata verecektir. Çünkü bir değişkenin faaliyet alanı bitmeden aynı isimli değişken tekrar tanımlanıyor.

public class C#nedir?com
{
public static void Main()
{
int a;
{
int a=20 ;
}
}
}

Gördüğünüz gibi Main bloğunda tanımlanan a değişkeninin faaliyet alanı açılan blokta devam etmektedir.Bu yüzden yukarıdaki gibi ifadeler geçersidir.Üst seviyede açılan bloklar alt seviyedeki blokları kapsadığı için, birinci tanımlanan a değişkeni sonradan açılan blok içinde hala geçerlidir.

Yukarıda anlatılan duruma ters düşüyor gibi görünse de aşağıdaki gibi bir kullanım son derece legal bir durumdur. Bu konuyu daha sonraki makalelerimizde detaylı bir şekilde inceleyeceğiz.

public class C#nedir?com
{
   static int a = 10;
   public static void Main()
   {
       int a;
      {
         int a = 10 ;
      }
   }
}

Bu konu sınıflarla ilgili bir konu olduğu için detaylarına girmeyeceğiz ama şimdilik böyle bir kullanımın geçerli olduğunu bilmenizde fayda var.

Sabitler

Bir program boyunca değerinin değişmeyeceğini düşündüğümüz verileri sabit veriler olarak tanımlarız. Sabit veriler tanımlamak için tanımlama satırında const anahtar sözcüğünü kullanırız. const olarak tanımlanmış değişkenlerin en büyük avantajı program içinde sıkça kullandığımız değerleri aniden değiştirmek gerektiğinde görülür.Mesela matematiksel işlemler yapan bir programda pi sayısını const olarak tanımlayıp istediğimiz zaman pi sayısını değiştirebiliriz. Tabi bu işlemi const değilde normal bir değişkenle de yapabilirdik, ama şu da bir gerçek ki çok uzun programlarda sabit olmasını istediğimiz değişkeni yanlışlıkla değiştirebiliriz. Fakat const olarak tanımladığımız bir değişkenin değerini değiştirmeye çalıştığımızda c# derleyicisi derleme aşamasında hata verecektir. Bu da gözden kaçan bazı hata durumlarını minimuma indirmek demektir. Sabit ifadeleriyle ilgili bilmemiz gereken 3 önemli kural vardır. Bunlar şunlardır :

1-) Sabitler tanımlandıklarında değerleri atanmaladır. İlk değer verilmeyen değişkenler const yani sabit olamazlar.
2-) Sabit ifadelere ancak sabit ifadelerle ilk değer atanabilir yani şu şekildeki bir kullanım hatalıdır. const int = a + b ;
3-) Sabit ifadeleri içsel tasarım olarak zaten statik oldukları için, ayrıca statik olarak belirtmek hatalıdır ve kullanılamaz.(statik değişkenler ileriki yazılarda detayl olarak anlatılacaktır.)

Basit bir sabit tanımlaması aşağıdaki gibi yapılmaktadır.

const double pi = 3.14 ; // double, kesirli sayıları tutmak için tanımlanmış bir veri türüdür.


Değer(value) ve referans(reference) tipleri

C# dilinde önceden tanımlanmış(c# dilinde varolan tipler) veri tipleri değer tipleri ve referans tipleri olmak üzere ikiye ayrılır. Bu iki veri tipi arasındaki farkı çok iyi kavramak gerekir. Daha önce dediğimiz gibi değişkenler bellekte bulunan verilerdir. Aslında bir değişkeni kullanırken o değişkenin bellekte bulunduğu adresteki veriye ulaşıyoruz. Değer tipleri değişkenin değerini direkt bellek bölgesinden alırlar. Referans tipleri ise başka bir nesneye referans olarak kullanılırlar. Yani referans tipleri aslında bir çeşit bellek bölgesi olan heap alanında yaratılan veri türlerinin (bunlara kısaca nesne de diyebiliriz) adreslerini saklarlar. Değer tipleri yaratıldıklarında stack dediğimiz bellek bölgelerinde oluşturulurlar, referans tipleri ise kullanımı biraz daha sınırlı olan heap dediğimiz bellek bölgesinde saklanırlar. C ve C++ dillerine aşina olan arkadaşların da tahmin ettiği gibi gösterici kavramı ile referans veri tipleri arasında çok fazla fark yoktur. Fakat C# dilinde kullanıcının direkt olarak kullanabileceği bir gösterici veri türü tanımlamak yoktur. Bunun yerine bazı değişkenler değer tip bazıları ise referans tipi olarak işlem görürler. Peki bunlar nelerdir? Temel veri tipleri olan int,double, float ve yapı nesneleri gibi veri türleri değer tipler, herhangi bir sınıf türü ise referans türüdür. İki değer tipi nesnesini birbirine eşitlerken değişkenlerde saklanan değerler kopyalanarak eşitlenir ve bu durumda iki yeni bağımsız nesne elde edilmiş olur yani birinin değerini değiştirmek diğerini etkilemez, ancak iki referans tipini birbirlerine eşitlediğimizde bu nesnelerde tutulan veriler kopyalanmaz, işlem yapılan nesnelerin heap bölgesindeki adresleridir, yani iki nesne de aslında heap bellek bölgesinde aynı adresi gösterecekleri için birinde yapılan değişiklik diğerini de etkileyecektir. Referans tiplerini tanımlarken herhangi bir adresi göstermediğini belirtmek için null değere atanırlar.(Mesela: y = null ;)

CTS (Common Type System) Tipleri

.NET bir yazılım geliştirme platformudur. Aslında bütün veri tipleri CTS dediğimiz bir sistem ile tanınırlar. Yani C# dilinde ki veri türleri aslında CTS ‘deki veri türleri için birer arayüz gibidirler. CTS sayesinde .NET platformu için geliştirilen bütün diller aynı veri tiplerini kullanırlar, tek değişen veri türleni tanımlama yöntemi ve sentaksıdır. Bu yüzden bizim C# dili ile tanımlayacağımız her veri tipinin CTS ‘de bir karşılığı mevcuttur. Bu veri türleri ve CTS karşılıkları aşağıda tablolar halinde mevcuttur.

C# dilinde tanımladığımız bütün basit veri tipleri aslında CTS ‘de bulunan bir yapı nesnesidir.C# dilindeki önceden tanımlanmış temel veri tipleri on beş tanedir. Bunlardan on üçü değer tipi ikisi de değer tipidir.

Önceden Tanımlanmış Value Veri Tipleri

Aşağıda temel value tiplerin C# dilindeki adı, CTS karşılığı, açıklaması ve kullanım aralığı bulunmaktadır.

C# taki adı CTS Karşılığı Açıklama Max ve Min aralık yada değeri
sbyte System.Byte 8 bit işaretli tamsayı -128 : 127
int System.Int32 32 bit işaretli tamsayı -2.147.483.648 : 2.147.483.647
byte System.Byte 8 bit işaretsiz tamsayı 0 : 255
uint System.UInt32 32 bit işaretsiz tamsayı 0 : 4.294.967.295
float System.Single 32 bit tek kayan sayı +yada - 1,5*10-45 : + ya da - 3,4*1038
decimal System.Decimal 128 bit ondalıklı sayı +yada - 1,5*10-28 : + ya da - 7,9*1028
char System.Char Karakterleri temsil eder 16 Unicode karakterleri

Şimdi tabloda verilen veri türleri ile ilgili tanımlamalara örnekler verelim :

long a = 0xEF20 ; // 0x öneki sayıları hexadecimal olarak yazmamızı sağlar.
ulong ul = 5698UL ; // Sayının sonuna UL koyarak UnsignedLong olduğunu belirtiyoruz.

float fl = 3.14f ;

decimal d = 65.25M;

bool b = false ;

char ch1 = ‘a’ , ch2 = ‘\\’ , ‘ \” ‘ , ‘m’ ;

Önceden Tanımlanmış Reference Veri Tipleri

C# dilinde önceden tanımlanmış iki tane referans tipi vardır. Bunlar string ve object türleridir. Object türü C# dilinde bütün türlerin türediği bir sınıf yapısıdır. Kullanıcı tarafından sonradan tanımlanacak bütün veri tipleri de aslında Object türünden türemiş olacaktır. Bu da object türünden bir nesneye herhangi bir veri türünden nesneyi atayabileceğimiz anlamına gelir. Çünkü C# dilinde bütün nesneler bir object’dir. object ‘ler özelliştirilerek farklı amaçlar için kullanılır. Herhangi bir nesneyi object türü ile eşleştirme kavramı boxing olarak adlandırılır. Boxing ve bunun tersi işlemi olan unboxing kavramlarını daha sonraki makalelerimizde detaylı olarak inceleyeceğiz.

Diğer bir referans tipi ise string türüdür. C ve C++ gibi dillerde string işlemleri yapabilmek için karakter dizileri tanımlanır ve bunlar string olarak işleme alınırlar ancak C# dilinde karakter dizileri tanımlamak yerine string adı ile yeni bir türü mevcuttur. String veri türü birtakım yararlı işler daha kolay bir şekilde yapılmaktadır. Mesela aşağıda iki string’ in + operatörüyle arka arkaya nasıl eklendiği gösterilmektedir. + operatörü burada string sınıfı için yüklenmiştir(overload). Overloading kavramı başlı başına bir makale konusu olduğu için burada değinmeyeceğim.

string s1 = “Hello ” ;
string s2 = “.NET” ;
string s3 = s1 + s2;

Bir dilin sentaksı açısından özel anlamlar ifade eden karakterleri kullanmak istiyorsak bunları \ (escape) ifadesiyle belirtmek gerekir. Mesela bir dizin bilgisini içeren bir string nesnesini aşağıdaki gibi tanımlarız.

string yol = “C:\\docs\\xxx\\” ;// Bu tür kullanıma escape sequence kullanımı denir.

Escape sequence ‘leri kullanmak yerine string içinde görünen ifadenin aynısı belirtmek için string ifadesinin önüne @ işareti kullanılır.Mesela ;

string esc = @”C:\docs\xxx\” // böyle bir kullanımda escape karakterini kullanmayı kaldırmış oluyoruz.


C# taki adı CTS Karşılığı Açıklama
object System.Object Bütün veri türlerinin türediği kök eleman

Yukarıda C# dilindeki temel referans veri türleri tablo halinde gösterilmiştir.

No Comments »

Aralık
11th 2007
IF Kosulu Ve Programlama Mantigi

Posted under Visual Basic

IF (Eğer) koşulu Bölüm 1

if / else / end / if
#if / iif / select case / choose / switch
Bölüm 1

if / else / end / if #if / iif / select case / choose / switch

Bölüm 1

“if”, ingilizce de eğer anlamına; “then”, daha sonra anlamına; “else”, başka türlü, başka , anlamına gelmektedir.

Yeni Tanım Run-time

Runtime - karşılık olarak çalışma zamanı , çalışma anı, anlamına gelmektedir.
Programımızın dizaynını ve kodlarını çalıştırıp nasıl göründüğünü, ve herşeyin çalışıp çalışmadığını kontrol ederiz. İşte programımızı çalıştırmak için üst Toolbar da (yada Coolbar desek daha doğru olur) “Run” Butonunuveya klavyeden “F5″ tuşunu kullanabiliriz. Programı çalıştırdığımızda artık görsel olarak kod haricinde objelerin özelliklerini şekillerini değiştirmek obje eklemek ve kaldırmak imkansızdır. Çalışma anında (bir kaç özel sistem haricinde) ve program durdurulmadığı sürece, kod eklemek imkansızdır.
Continue Reading »

No Comments »

Aralık
11th 2007
Yardım Dosyalarına Common Dialog İle Bağlantı Kurmak

Posted under Visual Basic

Project–>Components–>Microsoft Commont Dialog Control `ü components`i seçin . CommonDialog1`i formunuza ekleyin .
Project–>Project1 Properties (? Hangi proje ismini vermişseniz )–>Help File Name `den hazırlamış olduğunuz *.hlp ( ? Hangi help dosya ismini vermişseniz ) dosyasını giriniz . App nesnemizin HelpFile özelliği tasarım aşamasında set edilmiş olur . Ayrıca setup hazırlarken help dosyalarını da otamatik olarak ekletmiş oluruz .

Continue Reading »

No Comments »

Aralık
11th 2007
LGS Sonuçlarını Veri Tabanınıza Hızlı Bir Şekilde Ekleyin

Posted under Visual Basic

‘Önce değişkenler
Dim MyExcel As Object
Dim MyChart As Object
Dim i
Dim db As Database
Dim rs As Recordset
Dim Baglanti
Dim rs1
Dim sql
Dim id

Continue Reading »

No Comments »

Aralık
11th 2007
Titreyen Form

Posted under Visual Basic

öncelikle form’a bir adet Timer ve bir adet HscrollBar koyuyoruz.

Sonra timer nesnesinin properties kısmında interval değerini 10 yapıyoruz.

Timer nesnesiyle işimiz bittikten sonra scrollbar’ın properties kısmında max değerine kafamıza göre bir sayı atıyoruz (çok uçmamak lazım ben 500 yaptım). Min değerini ise 0 yapın.

code kısmına gelince…

Continue Reading »

No Comments »

Next »

yeliiniz Silinmitir.Ltfen Sayfanzdan Kodu Kaldrnz. Sayfa Bloggoayrılık yazılarıoyunlarkurye web tasarımı broşürlük dizi izle dizi izleKombi Tesisat Radyo DinleChat paysafe paysafe kartSohbet arkadaş travestitravesti travesti travesti Film izle Sicak Videolar Porno izle film izle e-okul arog Ask-i Memnu Sehitler Olmez sohbet Chat K�zlarla Sohbet sohbet chat kale kapi mirc Bedava Program Yukle Turkce Program Indir Celik Konstr�ksiyon evden eve nakliyat Toplist