M. Niyazi Alpay
M. Niyazi Alpay
M. Niyazi Alpay

Çok küçük yaştan itibaren bilgisayar sistemleriyle ilgileniyorum ve 2005 yılından beri programlama ile uğraşıyorum, PHP, MySQL, Python, MongoDB ve Linux konularında bilgi sahibiyim

 

about.me/Cryptograph

C# Nedir?

C# nedir ?

Bildiğiniz gibi bilgisayarlarımızı rahat kullanabilmek için kullandığımız programlar vardır ve bu programaları yapabilmek için programlama dillerine ihtiyaç duyulur. Bu dillerden en popülerleri Basic, C, C++, Pascal, Java ve Assembler 'dır. Makina dili ise donanımı kontrol etmek için donanımı üreten firma tarafından tanımlanan komutlar kümesidir. Bazı programlama dilleri derleyicilere ihtiyaç duymasına karşın bazıları ise yorumlayıcılara ihtiyaç duyarlar, mesela bir C++ programını çalıştırabilmek için C++ derleyicisine ihtiyacımız varken, Perl ile yazılmış bir CGI scripti için komut yorumlayıcısına ihtiyacımız vardır. Derleyiciler programı çalıştırmadan önce kodları makina komutlarına çevirirler fakat yorumlayıcılar bir grup kodu satır satır ya da bloklar halinde yorumlayarak çalıştırırlar.

Aslında derleyiciler de, komut yorumlayıcıları da birer bilgisayar programından başka birşey değildirler. Yani C ve C++ dilleri bir giriş bekleyen ve çıkış veren birer bilgisayar programları gibi düşünülebilir. Giriş olarak kaynak kodu veren bu programlar çıkış olarak ise makina kodu üretirler.

C ve C++ Dillerine Kısa Bir Bakış

C dili en popüler yapısal programlama dilidir. C dili Dennis Ritchie tarafından, Martin Richards ve Ken Thompson tarafından geliştirilen BCBL ve B dillerinin temelleri üzerine kuruldu.

C dili "The C Programming Language by Brian Kernighan and Dennis Ritchie" kitabıyla büyümüştür. C dili için, 1983 yılının büyük önemi vardır. Çünkü 1983 yılında ANSI standartlar komitesi C standartları için toplanmıştır. Bu standartlaşma süreci tam 6 yıl sürmüştür.Ve tabi ki şu anki standartların oluşumuna katkıda bulunan ANSI 99 standartları da diğer önemli bir gelişmedir.

C programcılar tarafından herhangi bir tür program geliştirmek için yazılmış genel amaçlı bir dildir. C ile bir düşük seviyeli sistem için program yazabileceğimiz gibi, yüksek seviyeli bir GUI (Grafik Arabirimi) tasarlamamız da mümkündür.Ve elbette kendi kütüphanemizi de C ile oluşturabiliriz.C dilinin ortaya çıkmasından bunca yıl geçmesine rağmen popülaritesini hiçbir zaman kaybetmemiştir. Günümüz programcıları çeşitli amaçlar için programlarını geliştirirken C dili ile yazılmış kaynak kodlarını kullanırlar.

Bjarne Stroustrup 1980 yıllında C++ dilini ortaya çıkarmıştır. C++ dili C temelli ve C nin bir üst kümesi olarak düşünülebilir. C++ en popüler nesne temelli programlama dilidir. C++ dilinin ilk ismi "C with Classes" (C ile sınıflar) idi. C++ dili C diline nazaran daha etkili ve güçlüdür.Ve en önemli özellği ise C 'den farklı olarak nesne temelli bir dildir.Şu anda C++ dili ANSI ve ISO kuruluşları tarafından standartlaştırılmıştır. Bu standartların son versiyonu 1997 yılında yayınlanmıştır.

C# Diline Kısa Bir Bakış

C#, güçlü, modern, nesne tabanlı ve aynı zaman type-safe (tip-güvenli) bir programlama dilidir. Aynı zamanda C#, C++ dilinin güçlülüğünü ve Visual Basic' in ise kolaylığını sağlar. Büyük olasılıkla C# dilinin çıkması Java dilinin çıkmasından bu yana programcılık adına yapılan en büyük gelişmedir. C#, C++ 'ın gücünden , Visual Basic 'in kolaylığından ve Java 'nın da özelliklerinden faydalanarak tasarlanmış bir dildir. Fakat şunu da söylemeliyiz ki, Delphi ve C++ Builder 'daki bazı özellikler şimdi C# 'da var ama Delphi ya da C++ Builder hiçbir zaman Visual C++ ya da Visual Basic 'in popülaritesini yakalayamamıştır.

C ve C++ programcıları için en büyük sorun, sanırım hızlı geliştirememedir. Çünkü C ve C++ programcıları çok alt seviye ile ilgilenirler.Üst seviyeye çıkmak istediklerinde ise zorlanırlar.Ama C# ile artık böyle bir dert kalmadı. Aynı ortamda ister alt seviyede isterseniz de yüksek seviyede program geliştirebilirsiniz. C# dili Microsoft tarafından geliştirilen .NET paltformunun en temel ve resmi dili olarak lanse edilmiştir. C# dili Turbo Pascal derleyicisini ve Delphi 'yi oluşturan takımın lideri olan Anders Heljsberg ve Microsoft'da Visual J++ takımında çalışan Scott Wiltamuth tarafından geliştirilmiştir.

.NET framework'ünde bulunan CLR (Common Language Runtime), JVM (Java Virtual Machine)' ye, garbage collection, güvenilirlik ve JIT (Just in Time Compilation) bakımından çok benzer.

CLR, .NET Framework yapısının servis sağlama ve çalışma zamanının kod organizasyonu yapan ortamıdır. CLR, ECMA standartlarını destekler.

Kısacası C# kullanmak için CLR ve .NET Framework sınıf kütüphanesine ihtiyacmız vardır. Bu da demek oluyor ki C#, JAVA, VB ya da C++ değildir. C, C++ ve JAVA 'nın güzel özelliklerini barındıran yeni bir programlama dilidir. Sonuç olarak C# ile kod yazmak hem daha avantajlı hem daha kolay hem de etkileyicidir.

 

C# da Operatörler

Aritmetik Operatörler

Operatör Açıklama

+ Ekleme
- Çıkarma
* Çarpma
/ Bölme
% Kalan veya modül
++ Birer Birer Arttırma
-- Birer Birer Eksiltme

 

Yukarıdaki tablodaki operatörlerin kullanımı ile ilgili örnek kod aşağıdadır. Ayrıca 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("Sayı Biri Giriniz : " ); sayi1 = Convert.ToInt32(Console.ReadLine());   Console.WriteLine("Sayı İkiyi Giriniz : " ); sayi2 = Convert.ToInt32(Console.ReadLine());  toplam = sayi1 + sayi2; fark = sayi1 - sayi2; carpim = sayi1 * sayi2; kalan = sayi1 % sayi2; bolum = sayi1 / sayi2;  Console.WriteLine("Girilen Sayılar: Sayı 1 = {0}, Sayı 2 = {1}",sayi1,sayi2); Console.WriteLine("Sayıların Toplamı = {0}",toplam); Console.WriteLine("Sayıların Farkı (sayi1 - sayi2) = {0}", fark); Console.WriteLine("Sayıların Çarpımı = {0}", carpim); Console.WriteLine("Sayıların kalan (sayi1 in sayi2 ye bölümğnden kalan)= {0}", kalan); Console.WriteLine("Sayıların Bölümünden (sayi1 / sayi2) Bölüm = {0}", bolum);   sayi1++;  sayi2--;  Console.WriteLine("Sayi 1 in bir fazlası = {0}", sayi1); Console.WriteLine("Sayi 2 in bir eksiği = {0}", sayi2);  }

Yukarıdaki kodu inceleyecek olursanız. Console.WriteLine("Açıklama Metni {0}", sayi1); gibi bir yapı görürsünüz. String ifadelerde stringİfade1 + stringİfade2 şeklinde birleştirme yapmak yerine bu formatta stringleri birleştirebilirsiniz. {0} şeklindeki ifade virgülden sonra yazılan ilk değişkenin değerini buraya yaz demek oluyor. Eğer ikinci bir değişken varsa {1} şeklinde yazarak onunda değerini başka bir kısma yerleştirebiliriz. Dikkat etmeniz gereken {} ifadesinin içindeki sayılar sırası ile gitmeli. Yani 0, 1, 2,..

sayi1++ ifadesi

sayi1 = sayi1 + 1;

ile aynı anlama gelmektedir. Ayrıca bir sayıya herhangi bir sayı eklemek istiyorsak örneğin sayi1 e 5 ekleyelim.

sayi1 = sayi1 +5 yazmak yerine;

sayi += 5;

yazmak daha kısa ve doğrudur.

 

Ön Ek ve Arka Ek Olarak Kullanma

++ ve ? operatörleri en ve arka ek olarak kullanılabilir. Örneklerle anlatacak olursak;

sayi2 = 3;

sayi1 = ++sayi2;//sayi1 = 4, sayi2= 4 olur.

sayi1 = --sayi2;//sayi1 = 2, sayi2= 2 olur.

Örnekte görüldüğü gibi eğer operator ön ek olarak kullanılırsa derleyici önce operatörün görevini yapar daha sonra ise atama işlemini gerçekleştirir. Böylece sayi1 = ++sayi2 ifadesinde sayi2 önce bir arttırılır daha sonra sayi1'e sayi2 nin değeri atanır.

sayi2 = 3;

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

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

Operatör arka ek olarak kullanıldığında ise önce atama işlemi yapılar daha sonra operatörün görevi yerine getirilir. sayi1 = sayi2++ işleminde önce sayi2 nin değeri sayi1'e atanır, daha sonra sayi2 bir arttırılır.

 

Atama Operatörleri

Atama Operatörleri değişkenlere değer atamak için kullanılırlar.

Operatör Açıklama

= Basit eşitleme
+= Sağdaki Sayı ile topla sonra toplamı eşitle
-= Sağdaki Sayı yı çıkar sonra sonucu eşitle
*= Sağdaki Sayı ile çarp sonra toplamı eşitle
/= Sağdaki Sayı ile böl sonra bölümü eşitle
%= Sağdaki Sayı ile bölümünden kalanı bul sonra kalanı eşitle

 

İlişkisel(Karşılaştırma) Operatörleri

İlişkisel Operatörler genelde koşul ifadelerinde karşılaştırma için kullanılırlar. C# da kullanılan ilişkisel operatörler aşağıdakilerdir.

Operatör Açıklama

== Eşittir
!= Eşit Değildir
> Büyüktür
< Küçüktür
>= Büyük Eşittir
<= Küçük Eşittir

İlişkisel Operatörler her zaman true veya false olmak üzere boolean bir değer döndürürler. Örnekle anlatmamız gerekirse;

int sayi1 = 6, sayi2 = 4;

sayi1 == sayi2 //false;

sayi1 != sayi2 //true;

sayi1 > sayi2 //true;

sayi1 < sayi2 //false;

sayi1 >= sayi2 //true;

sayi1 <= sayi2 //false;

İlişkisel operatörler sadece birbiri ile uyumlu tipteki değişkenleri karşılaştırabilir. Bir boolean tipi ile integer tipindeki iki değişkeni karşılaştıramazsınız.

Mantıksal ve Bit Düzeyinde (Logical and Bitwise) Opeatörleri

Bu operatörler mantıksal işlemleri ve bit düzeyindeki işlemleri yapmak için kullanılırlar.

Operatör Açıklama

& Bit bazında ve işlemi
| Bit bazında or işlemi
^ Bit bazında xor işlemi
! Bit bazında not işlemi
&& Mantıksal ve işlemi
|| Mantıksal or işlemi

Bit bazındaki operatörler değişkene ait değeri bit bazında işleme tabi tutarlar. Mantıksal operatörler ise bildiğimiz mantık kavramı kapsamında bu ve şu doğrumu veya bu veya şu doğrumu gibi karşılaştırma yaparlar.

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

 

Mantıksal operatörlerde;

Doğru ve Doğru = Doğru;

Doğru ve Yanlış = Yanlış;

Yanlış ve Doğru = Yanlış;

Yanlış ve Yanlış = Yanlış;

Doğru veya Doğru = Doğru;

Doğru veya Yanlış = Doğru;

Yanlış veya Doğru = Doğru;

Yanlış veya Yanlış = Yanlış;

 

Mantıksal And işlemlerinde eğer koşullardan herhangi biri yanlış ise and işlemine tabi tutulan diğer koşullar true olsa bile sonuç falsedur. Or işleminde ise koşullardan herhangi birinin true olması diğer koşulların ne olduğuna bakmaksızın sonucun true olmasını sağlar.

C# Mantıksal operatörler Kısa Devre mantığıyla çalışır. Mantıksal işlemlerde koşullar soldan sağa doğru kontrol edilir. Yukarıdaki paragraftaki bilgiye göre; bir and işlemi kontrol ediliyorsa ve koşullardan birisi false ise sağda kaç adet daha and koşulu olmasına bakmaksızın sonucu false olarak belirleyebiliriz. C# derleyicisi de bu yöntemi kullanarak and işleminde ilk false gördüğü anda or işleminde ise ilk true gördüğü anda işlemi keser ve sonucu döndürür. Bu büyük uygulamalarda çok fazla koşul olduğu zamanlar uygulamamızın daha hızlı çalışmasını sağlar.

 

C# da Kullanılan Diğer Operatörler

Operatör Açıklama

>> Bit bazında sağa kaydırma
<< Bit bazında sola kaydırma
. Nesnelerin özelliklerine ulaşmak için
[] İndeks numarası ile dizi ve kolleksiyonların elemanlarına ulaşmak
() Çevrim Operatörü. Tip çevrimleri için kullanılır.
?: Koşul Operatörü. if else koşulunun kısa yazımı. İlerde anlatılacak

 

Operatörlerde Çalışma Önceliği

Tüm operatörlerin çalışma önceliği aynı değildir. Matematik kurallarında geçerli olan çarpma, bölme, çıkarma toplama işlemlerindeki öncelik sırası operatörler içinde geçerlidir. Öncelikleri belirlemek için işlemleri parantez içinde yazmamız gerekir. Örneğin

int i = 3 + 2 * 6; // önce 2 ile 6 çarpılır daha sonra çarpıma 3 eklenerek 15 bulunur.

 

int j = (3 + 2) * 6; // önce 3 ile 2 toplanır daha sonra toplam 6 ile çarpılarak 30 bulunur.

Muhammed Niyazi ALPAY - Cryptograph

Senior Software Developer & Senior Linux System Administrator

Meraklı

PHP MySQL MongoDB Python Linux Cyber Security

Bunları da okumak isteyebilirsiniz

1 yorum

  • webmaster
    webmaster
    02 Eyl 2013 09:05

    tşkler anlatım için.

Siz de yorum bırakın

E-posta adresiniz yayınlanmayacaktır. Zorunlu alanlar * ile işaretlenmiştir