Ana Sayfa » Dersler » C# » Yazilim Mutfagi Dersleri (C#) Ders 2 - Degisken Tipleri, Degisken Tanimlama ve Operatörler

Yazilim Mutfagi Dersleri (C#) Ders 2 - Degisken Tipleri, Degisken Tanimlama ve Operatörler

C# Hakkinda Temel Bilgiler

Bu dersimizde C# dili hakkinda temel bilgiler ögrenecegiz. Biraz açarsak bu dersimizde veri tipleri, degiskenler ve operatörleri nasil kullanacagimizla ilgili bilgiler verecegiz.

Temel Veri Tipleri ve CTS(Common Type System) Karsiliklari

C# da iki çesit veri tipi vardir:

  • Deger Tipleri (Value type)
  • Referans Tipleri(Reference Type)

Degiskenler bellekte bulunan verilerdir. Bir degiskeni kullandigimiz zaman o degiskenin bellekte bulundu yerdeki bilgiyi kullaniriz. Deger tipleri veriyi direk olarak bellek bölgesinden alirken referans tipleri baska bir nesneye referans gösterirler. Yani referans tipleri içinde veri degil adres bilgisi tutarlar. Veri tipleri stack dedigimiz bellek bölgesinde tutulurlar, referans tipleri ise heap bellek bölgesinde saklanirlar. int, double, float gibi veri tipleri deger tiplerine örnek gösterilebilir. Herhangi bir sinif türü ise referans tipine örnek gösterilebilir. Deger tipleri birbirine esitlenirken degiskenin barindirdigi deger bir diger degiskene kopyalanir. Böylece iki farkli bagimsiz degisken olusur. Referans tipleri ise esitleme sirasinda degiskenlerin tasidiklari veri degil heap bölgesinde isaret ettikleri adres kopyalanir. Böylece eger iki referans degiskeni birbirine esitledi isek ve daha sonra bunlardan birinde bulunan veriyi degistirdi ise otomatik olarak diger referans degiskeninin degeri de degisir. Çünkü adresde bulunan veri degisince bu adresi isaret eden iki degiskende yeni veri bilgisine ulasir.

Bir önceki dersimizde Common Type System hakkinda bilgi vermistik. C# da tanimlanan veri tipleri ve bunlarin CTS deki karsiliklarini tablo halinde asagida bulabilirsiniz. C# da toplam 15 veri tipi vardir bunlardan 13 ü deger tipindedir, 2 si ise referans tipindedir.

Deger Tipleri:

C# Adi CTS Karsiligi Açiklama Max ve Min aralik yada degeri
sbyte System.Byte 8 bit isaretli tamsayi -128 : 127
short System.Int16 16 bit isaretli tamsayi -32.768 : 32.767
int System.Int32 32 bit isaretli tamsayi -2.147.483.648 : 2.147.483.647
long System.Int64 64 bit isaretli tamsayi -9.223.372.036.854.775.808 : -9.223.372.036.854.775.807
byte System.Byte 8 bit isaretsiz tamsayi 0,177083333
ushort System.UInt16 16 bit isaretsiz tamsayi 0 : 65.535
uint System.UInt32 32 bit isaretsiz tamsayi 0 : 4.294.967.295
ulong System.UInt64 64 bit isaretsiz tamsayi 0 : 18.446.744.073.709.551.615
float System.Single 32 bit tek kayan sayi +yada - 1,5*10-45 : + ya da - 3,4*1038
double Sytem.Double 64 bit çift kayan sayi +yada - 5*10-324 : + ya da - 1,7*10308
decimal System.Decimal 128 bit ondalikli sayi +yada - 1,5*10-28 : + ya da - 7,9*1028
bool System.Boolean true ya da false
char System.Char Karakterleri temsil eder 16 Unicode karakterleri

Referans Tipleri:

C# Adi CTS Karsiligi Açiklama
object System.Object Bütün veri türlerinin türedigi kök eleman
string System.String Unicode karakterlerinden olusan string

Degiskenler:

Bir program çalistirirken tüm veriler geçici olarak hafizada tutulur. Degiskenler bu verilerin isimlendirilmesi islemidir. C# da degiskenler asagidaki yapida tanimlanirlar.

 <veri tipi><degisken adi>;
 

Örnegin;

 int i;
 

Yukaridaki ifade bir integer veri tipini saklamak için programin diger asamalarinda i ismi ile ifade edilecek hafizada 4 bytelik bir alan açar. Bir degiskene tanimlarken deger atayabilirsiniz, ayrica bir veri tipi altinda birden fazla isimle farkli degiskenler tanimlayabilirsiniz.

bool dogruMu = false;
double yuzde = 98.32, ortalama = 35.32;
char karakter = 'A';

Diger modern programlama dilleri gibi C# dada degiskenleri kullanmadan önce tanimlamak zorundasiniz.  Ayrica eger bir yerel degisken (Bir method içinde tanimlanan degiskenler) tanimliyorsaniz bu degiskeni kullanmadan önce bir deger atamasi yapmak zorundasiniz.

static void Main(string[] args)
{
      int kilo;
      //kilo = 78;
      Console.WriteLine(kilo);
}

 

Yukaridaki kod parçacigi kilo degiskenine deger atamadiginiz için hata verecektir çünkü kilo degiskeni yerel bir degiskendir. Eger //kilo = 78; açiklama satirindaki // isaretlerini siler ve bu satiri koda dahil ederseniz hatanin ortadan kalktigini görürsünüz. Buradan da anlasilacagi gibi C# yerel degiskenlere ilk atama islemini otomatik yapmak global degiskenler de ise ilk deger atamasi degisken tipine göre otomatik olarak yapilir. Örnegin integer bir tip için 0 gibi.

Sabit Degiskenler:

Sabit degiskenler içinde buluna veri degisken ömrü tamamlanana kadar degismez. Bir sabit tanimlamak için const anahtar kelimesini kullaniriz. Ilk tanimlandiklari sirada ilk deger atamasi yapmak zorundayiz, uygulamamizin herhangi bir kisminda sabit degiskenin içerigini degistiremeyiz.

const double PI = 3.14;
const double PI;

Yukaridaki tanimlamalardan birincisi dogru ikincisi ise yanlis bir tanimlamadir. Ilk atamalari yapilmak zorundadir.

Sabitler genellikle büyük harflerle tanimlanirlar. Bu bir zorunluluk degildir.

Degiskenler ve Metotlar için Isimlendirme Konvansiyonlari

Microsoft degisken isimlendirmesi için Camel Notasyonu methotlar için ise Pascal Notasyonunu tavsiye ediyor.

Camel notasyonunda isim küçük harfle baslar, eger degisken isminde birden fazla kelime geçiyor ise isimdeki diger kelimeler büyük harfle baslar.

Camel Notasyonu:

maas;
maasMiktari;
massMiktariAciklama;
 

Pascal Notasyonunda kelime büyük harfle baslar. Camel Notasyonunda oldugu gibi diger kelimelerde büyük harfle baslar.

Pascal Notasyonu:

Maas();
MaasHesapla();
 

Bu notasyonlarin kullanimi mecburi degildir. Fakat sürekli olarak bu tür bir notasyona uyarak kodlarinizi yazarsaniz, kodlariniz daha anlasilir bir hale girer.

C# da Operatörler

Aritmetik Operatörler

Operatör Açiklama
+ Ekleme
- Çikarma
* Çarpma
/ Bölme
% Kalan veya modül
++ Birer Birer Arttirma
-- Birer Birer Eksiltme

Yukaridaki tablodaki operatörlerin kullanimi ile ilgili örnek kod asagidadir. Ayrica kodu buradan indirerek kendiniz deneyebilirsiniz.

public static void Main()
{

    int toplam = 0, fark = 0, carpim = 0, kalan = 0;
    float bolum = 0;
    int sayi1 = 0, sayi2 = 0;
        
    Console.WriteLine("Sayi Biri Giriniz : ");
    sayi1 = Convert.ToInt32(Console.ReadLine());

    Console.WriteLine("Sayi Ikiyi Giriniz : ");
    sayi2 = Convert.ToInt32(Console.ReadLine());

    toplam = sayi1 + sayi2;
    fark = sayi1 - sayi2;
    carpim = sayi1 * sayi2;
    kalan = sayi1 % sayi2;
    bolum = sayi1 / sayi2;
        
    Console.WriteLine("Girilen Sayilar: Sayi 1 = {0}, Sayi 2 = {1}", 
    		sayi1, sayi2);
    Console.WriteLine("Sayilarin Toplami = {0}", toplam);
    Console.WriteLine("Sayilarin Farki (sayi1 - sayi2) = {0}", fark);
    Console.WriteLine("Sayilarin Çarpimi = {0}", carpim);
    Console.WriteLine("Sayilarin kalan (sayi1 in sayi2 ye bölümgnden kalan)= {0}"
    		, kalan);
    Console.WriteLine("Sayilarin Bölümünden (sayi1 / sayi2) Bölüm = {0}", bolum);

    sayi1++;
    sayi2--;
    Console.WriteLine("Sayi 1 in bir fazlasi = {0}", sayi1);
    Console.WriteLine("Sayi 2 in bir eksigi = {0}", sayi2);
}
 

Yukaridaki kodu inceleyecek olursaniz. Console.WriteLine("Açiklama Metni {0}" , sayi1); gibi bir yapi görürsünüz. String ifadelerde stringIfade1 + stringIfade2 seklinde birlestirme yapmak yerine bu formatta stringleri birlestirebilirsiniz. {0}  seklindeki ifade virgülden sonra yazilan ilk degiskenin degerini buraya yaz demek oluyor. Eger ikinci bir degisken varsa {1} seklinde yazarak onunda degerini baska bir kisma yerlestirebiliriz. Dikkat etmeniz gereken {} ifadesinin içindeki sayilar sirasi ile gitmeli. Yani 0, 1, 2,..

	sayi1++ ifadesi

ile

	sayi1 = sayi1 + 1;
 

ayni anlama gelmektedir. Ayrica bir sayiya herhangi bir sayi eklemek istiyorsak örnegin sayi1 e 5 ekleyelim.

	sayi1 = sayi1 +5
 

yazmak yerine;

	sayi += 5;
 

daha kisa ve dogrudur.

Ön Ek ve Arka Ek Olarak Kullanma

++ ve – operatörleri en ve arka ek olarak kullanilabilir. Örneklerle anlatacak olursak;

sayi2 = 3;
sayi1 = ++sayi2;//sayi1 = 4, sayi2= 4 olur.
sayi1 = --sayi2;//sayi1 = 2, sayi2= 2 olur.
  

Örnekte görüldügü gibi eger operator ön ek olarak kullanilirsa derleyici önce operatörün görevini yapar daha sonra ise atama islemini gerçeklestirir. Böylece sayi1 = ++sayi2 ifadesinde sayi2 önce bir arttirilir daha sonra sayi1’e sayi2 nin degeri atanir.

sayi2 = 3;
sayi1 = sayi2++; //sayi1 = 3, sayi2= 4 olur.
sayi1 = sayi2--; //sayi1 = 3, sayi2= 2 olur.
 

Operatör arka ek olarak kullanildiginda ise önce atama islemi yapilar daha sonra operatörün görevi yerine getirilir. sayi1 = sayi2++ isleminde önce sayi2 nin degeri sayi1’e atanir, daha sonra sayi2 bir arttirilir.

Atama Operatörleri

Atama Operatörleri degiskenlere deger atamak için kullanilirlar.

Operatör Açiklama
= Basit esitleme
+= Sagdaki Sayi ile topla sonra toplami esitle
-= Sagdaki Sayi yi çikar sonra sonucu esitle
*= Sagdaki Sayi ile çarp sonra toplami esitle
/= Sagdaki Sayi ile böl sonra bölümü esitle
%= Sagdaki Sayi ile bölümünden kalani bul sonra kalani esitle

Iliskisel(Karsilastirma) Operatörleri

Iliskisel Operatörler genelde kosul ifadelerinde karsilastirma için kullanilirlar. C#da kullanilan iliskisel operatörler asagidakilerdir.

Operatör Açiklama
== Esittir
!= Esit Degildir
Büyüktür
Küçüktür
>= Büyük Esittir
<= Küçük Esittir

Iliskisel Operatörler her zaman true veya false olmak üzere boolean bir deger döndürürler.  Örnekle anlatmamiz gerekirse;

int sayi1 = 6, sayi2 = 4;
sayi1 == sayi2 //false;
sayi1 != sayi2 //true;
sayi1 > sayi2 //true;
sayi1 < sayi2 //false;
sayi1 >= sayi2 //true;
sayi1 <= sayi2 //false;

Iliskisel operatörler sadece birbiri ile uyumlu tipteki degiskenleri karsilastirabilir. Bir boolean tipi ile integer tipindeki iki degiskeni karsilastiramazsiniz.

Mantiksal ve Bit Düzeyinde (Logical and Bitwise) Opeatörleri

Bu operatörler mantiksal islemleri ve bit düzeyindeki islemleri yapmak için kullanilirlar.

Operatör Açiklama
& Bit bazinda ve islemi
| Bit bazinda or islemi
^ Bit bazinda xor islemi
! Bit bazinda not islemi
&& Mantiksal ve islemi
|| Mantiksal or islemi

Bit bazindaki operatörler degiskene ait degeri bit bazinda isleme tabi tutarlar. Mantiksal operatörler ise bildigimiz mantik kavrami kapsaminda bu ve su dogrumu veya bu veya su dogrumu gibi karsilastirma yaparlar.

bool sonuc = (i > 3 && j < 5) || (i < 7 && j > 3);

Mantiksal operatörlerde;

Dogru ve Dogru = Dogru;
Dogru ve Yanlis = Yanlis;
Yanlis ve Dogru = Yanlis;
Yanlis ve Yanlis = Yanlis;
Dogru veya Dogru = Dogru;
Dogru veya Yanlis = Dogru;
Yanlis veya Dogru = Dogru;
Yanlis veya Yanlis = Yanlis;

Mantiksal And islemlerinde eger kosullardan herhangi biri yanlis ise and islemine tabi tutulan diger kosullar true olsa bile sonuç falsedur. Or isleminde ise kosullardan herhangi birinin true olmasi diger kosullarin ne olduguna bakmaksizin sonucun true olmasini saglar.

C# Mantiksal operatörler Kisa Devre mantigiyla çalisir. Mantiksal islemlerde kosullar soldan saga dogru kontrol edilir. Yukaridaki paragraftaki bilgiye göre; bir and islemi kontrol ediliyorsa ve kosullardan birisi false ise sagda kaç adet daha and kosulu olmasina bakmaksizin sonucu false olarak belirleyebiliriz. C# derleyicisi de bu yöntemi kullanarak and isleminde ilk false gördügü anda or isleminde ise ilk true gördügü anda islemi keser ve sonucu döndürür. Bu büyük uygulamalarda çok fazla kosul oldugu zamanlar uygulamamizin daha hizli çalismasini saglar.

C# da Kullanilan Diger Operatörler

Operatör Açiklama
>>  Bit bazinda saga kaydirma
<<  Bit bazinda sola kaydirma
, Nesnelerin özelliklerine ulasmak için
[] Indeks numarasi ile dizi ve kolleksiyonlarin elemanlarina ulasmak
() Çevrim Operatörü. Tip çevrimleri için kullanilir.
?: Kosul Operatörü. if else kosulunun kisa yazimi. Ilerde anlatilacak

Operatörlerde Çalisma Önceligi

Tüm operatörlerin çalisma önceligi ayni degildir. Matematik kurallarinda geçerli olan çarpma, bölme, çikarma toplama islemlerindeki öncelik sirasi operatörler içinde geçerlidir. Öncelikleri belirlemek için islemleri parantez içinde yazmamiz gerekir. Örnegin


int i = 3 + 2 * 6; 
// önce 2 ile 6 çarpilir daha sonra çarpima 3 eklenerek 15 bulunur.

int j = (3 + 2) * 6; 
// önce 3 ile 2 toplanir daha sonra toplam 6 ile çarpilarak 30 bulunur.

how to cheat reasons why wives cheat on their husbands how to cheat on husband
my wife cheated on me with my father reasons women cheat read
my wife cheated on me with my father why women cheat on men they love read
abortion shot teenage abortion cost for abortion
sex stories non fiction dirty adult stories kristens adult stories
married men who cheat with men read what causes women to cheat
walgreens photo coupons in store lifespan-software.com walgreens photo printing coupons
walgreens photo prints click drug coupon card
imitrex 50mg link ciprofloxacin pill
cialis coupon codes new prescription coupons prescription savings card
coupons for drugs prostudiousa.com discount coupons for cialis
lamictal 100mg hinta lamictal alkoholi lamictal yliannostus
buscopan composto buscopan gotas buscopan plus
tamoxifen dosering click tamoxifen
araval arava 20 aravalle

Yazar Hakkında

Mehmet Sabri KUNT

Google Plus
Yazilim Mutfagi kurucu ve yöneticisidir. 2005 Selçuk Ünv Bilgisayar mühendisligi mezunudur. Telekomünikasyon sektöründe BI&DWH alanindan çalismaktadir.

Makale Sayısı : 116

Yazilim Mutfagi Dersleri (C#) Ders 2 - Degisken Tipleri, Degisken Tanimlama ve Operatörler

28 yorum
yorumekle yorumekle Toplam 28 Yorum Yapılmış. Sizde yorum yazmak ve soru sormak için bu linki takip edin. -Forum sayfasına yönlendirileceksiniz-

Yorumlar

  • avatar

    Guests

     c# toplama yapmak icin + operatorunu kullanirsiniz. ama once hangi sayilari toplayacaksiniz sayilarin yazildigi textboxlari convert methoduyla double degisken tipine cevirmeniz lazim ve deger atamaniz lazim.

    Butunun icine bu kodlari yazioruz

    double sayi1 = Convert.ToDouble(textBox1.Text );

    double sayi2 = Convert.ToDouble(textBox2.Text );

    double toplam=sayi1+sayi2;

    textBox3.Text=toplam.ToString();

    Textbox3 te sonucumuz butono bastgmzda cikar

    Cevapla Alıntı Yaparak Cevapla
  • avatar

    Guests

     c# toplama yapmak icin + operatorunu kullanirsiniz. ama once hangi sayilari toplayacaksiniz sayilarin yazildigi textboxlari convert methoduyla double degisken tipine cevirmeniz lazim ve deger atamaniz lazim.

    Butunun icine bu kodlari yazioruz

    double sayi1 = Convert.ToDouble(textBox1.Text );

    double sayi2 = Convert.ToDouble(textBox2.Text );

    double toplam=sayi1+sayi2;

    textBox3.Text=toplam.ToString();

    Textbox3 te sonucumuz butono bastgmzda cikar

    Cevapla Alıntı Yaparak Cevapla
  • avatar

    Guests

    hocam c# da nokta tanimlamasi nasil yapiyor.örnegin; iki nokta arsindaki mesafe, kordinatlari nedir bunnlari

    bulmam için noktayi nasil  tanimlama lazim.kisaca programi yazabilirmisiniz.

    Cevapla Alıntı Yaparak Cevapla
  • avatar

    mskunt

    Insanin bildiklerini paylasmaya çalismasi bence çok güzel bir hareket. bu düsünce ile yola çikiyor olman bile güzel. Yazilarini bekleriz.

    Cevapla Alıntı Yaparak Cevapla
  • avatar

    Guests

    C# ögrenmeye yeni basladim. Aslinda bugün basladim ve bu site yani yazilimmutfagi.com gayet yararli oluyor su anda benim için. Kisa bir süre sonra ne kadar ilerledigimi de buraya yazarak bir feedback saglayacagim :) Umarim kisa sürede istedigim çiktilari almaya baslayabilirim.

    Cevapla Alıntı Yaparak Cevapla