C # Programcılık Dersleri (Bölüm 2)

Bir önceki ders veya makalede C# programlama diline başlama konusunda biraz sohbet etmiştik. Bu derste ise kod yazmaya başlayacağız.

Bir önceki ders veya makalede C# programlama diline başlama konusunda biraz sohbet etmiştik. Bu derste ise kod yazmaya başlayacağız. C# konulu hangi kitabı alırsanız alın, C# konulu hangi kursa gidiyorsanız gidin, C# programlama diliyle ilgili dersleri hangi fakültede alıyorsanız alın C#'la çalışmaya bu dersleri okumakla başlamanızı öneriyoruz. Bu sayede C#'a ayırmanız gereken zaman büyük oranda azalacaktır.

Yıllardır konu programcılık üzerine yazmak olduğunda asıl olanın anlatma şekli olduğunu savunuyorum. Yoksa söz konusu programlama diliyle ilgili olarak hemen her şey kısa sürede söylenmekte, hemen her sorunun çözümü bir şekilde anlatılmaktadır. Yoksa programcılık üzerine yazan birisinin okurları ile paylaştığı bir yenilikten söz etmesi uzak bir ihtimaldir. Bu durumda programcılık üzerine yazanlar ancak anlatma biçimleri ile övünebilirler, ancak kurdukları cümlelerin düzgünlüğü ile fark yaratabilirler. Yoksa bu makalede anlattığım her şeyi C#'la az çok uğraşmış herkes biliyordur.

.NET Framework'ü Kurmak

Herhangi bir programlama dili ile çalışılıp uygulama geliştirilmek istendiğinde ilk yapılması gereken derleyici edinmektedir. Ancak konu .NET Framework uyumlu programlama dilleri olduğunda derleyici aramak zorunda kalmıyorsunuz. Çünkü C#, Visual Basic ve C++ derleyicileri .NET Framework ile birlikte ücretsiz olarak dağıtılmaktadır. Buna göre C# programları yazabilmek için bilgisayarımıza .NET Framework'ün kurulu olması yeterlidir. Kullandığınız bilgisayarda Windows Vista kurulu ise ayrıca .NET Framework kurmanız gerekmiyor. Çünkü .NET Framework Vista ile birlikte geliyor. Kullandığınız bilgisayara Windows XP kurulu ise microsoft.com'dan .NET Framework'ü indirip kurmanız gerekir.

Şu günlerde kullanıma sunulan .NET Framework'ün en son sürümünün numarası 3.5. Daha önce işaret edildiği gibi bu derslerde örnek olması için verilen küçük programları yazıp deneyebilmeniz için .NET Framework'ün 2.0 sürümü yeterlidir. Bilgisayarınıza .NET Framework'ün yüklü olup olmadığını veya yüklü ise hangi sürümün yüklü olduğunu öğrenmek için Windows'un Program Ekle veya Kaldır penceresine bakabilirsiniz.

Kullandığınız bilgisayara .NET Framework kurulu ise hemen C# programları yazabilirsiniz. Not Defteri ile C# kodu yazıp CS uzantısı ile herhangi bir klasöre kaydedip sonra da .NET Framework ile gelen C# derleyicisi(yani csc.exe dosyası) sayesinde derleme yapıp EXE dosya hazırlayabilirsiniz. Bu kitapçıkta öncelikle C# programlarını Not Defteri ile yazıp derleyeceğiz. Devamında C# için hazırlanmış Express Edition'dan yararlanacağız.

Şimdi Microsoft'un sitesine uğrayıp .NET Framework 3.5'ı indireceğim. Bu amaçla microsoft.com'da arama yapıp .NET Framework 3.5'ı indirebileceğim linki buldum. Bu linki tıklayınca ekrana aşağıda verdiğim diyalog kutusu geldi.



Yaklaşık 3 Mb'lık bu dosyayı indirip bilgisayarıma kaydettikten sonra çalıştırdım. .NET Framework 3.5 gerçekte 72 MB olduğu için indirdiğiniz dosyayı çalıştırıp kurmaya başladığınızda geri kalanı Microsoft'un sitesinden indiriliyor. Başka bir deyişle nete bağlı değilken bu 3 Mb'lık dosya ile kurma işlemi yapılamıyor.

2. Ders: Program Yazmaya Başlıyoruz.

Konu .NET uyumlu programlama dilleri ve özellikle C# olduğunda ilk karşılaşmamız gereken kavram Class kavramıdır. C# programları Class şeklinde düzenlendiği için en başından Class kavramından söz etmek gerekmektedir. Programları Class'lar halinde düzenlemenin sayısız yararları vardır. Ancak bunları burada anlatmayacağım. Class'lar hakkında bilgi sahibi olmadan Visual Basic 6 ve Delphi gibi programlama dilleri ile program geliştirmek mümkün iken C++, C# ve Java gibi diller Class'lar hakkında bilgi sahibi olmanızı zorunlu kılmaktadır.

Quick Basic, Pascal ve C gibi klasik programlama dillerinde kod dosyaları içinde fonksiyonlar ve procedure'ler bulunuyordu. Hatta C'de fonksiyon procedure ayrımı da yoktur. Başka bir deyişle programcılar yapmak istedikleri işlemlere uygun fonksiyonlar yazıp gerek duydukça bunları çağırırlardı.

Zamanla programlar büyüyüp karmaşıklaştıkça paketlenmesi ihtiyacı doğdu. Fonksiyon ve metotların Class'lar halinde paketlenmesi ile birlikte Class içinde bulunan fonksiyonların kullanılması, organize edilmesi ihtiyacı doğdu. Günümüzde yaygın olarak kullanılan programlama dillerinde Class'lar metotlardan başka Interface'leri, Olayları, Özellikleri, Delegate'leri ve Yapıcı metotları içerebilmektedir. Lütfen olay nedir özellik nedir ki diye sormayın. Zamanı gelince bu konular hakkında bilgi verilecektir.

Yerli yabancı ayrımı yapmadan bugüne kadar hangi kaynağa baktıysam konu nesneye yönelik programcılık olduğunda ilk birkaç sayfada biyolojiden, memelilerden, ütülerden arabalardan vs. söz edilmektedir. Her yazar nesneye yönelik programcılığın 3 temel kavramını kendince anlatmaktadır. Hemen belirtmek isterim ki anlayış öğrenmeyi zorlaştırmaktadır.

İstediğiniz ayrıntıda polimorfizm'den söz edin, istediğiniz kadar biyolojiden memelilerden örnek verin bu kavramların kod karşılığı görülmeden verilen bilgiler havada kalıyor. Bu nedenledir ki bu derste nesneye yönelik programcılığın temel kavramlarından söz etmeden bu konuyu anlatmak istiyorum. Esasında burada bilim yapmıyoruz, olsa olsa sizlere C# programlama dili ile nasıl program yazabileceğinizi anlatmak istiyoruz. Amacımız en basit şekilde programcılık tecrübesi olmayanları programcılığa alıştırmaktır, onları C# programlama dillini öğrenebileceklerine inandırmaktır.

Aşağıda en basit veya en kısıtlı, en az satıra sahip bir C# programı bulunmaktadır. Bu kodu Not Defteri penceresine yazıp CS uzantısı ile kaydedip .NET Framework ile gelen C# derleyicisi ile derleyip EXE yapabilirsiniz. Bu işlemin nasıl yapıldığı ileriki sayfalarda anlatılacaktır.



gerekmektedir. C# programlarının başlangıç noktası Main() metodu olduğundan Main() metoduna yer vermek zorundasınız. Bu C# kodu CS uzantılı bir dosyaya yazılıp kaydedilip derlenip hazırlanan EXE dosya çalıştırılırsa herhangi bir hata ile karşılaşılmaz. Ancak bu program bu hali ile herhangi bir işlem yapmaz.

En az satıra sahip bu C# programındaki Main() metodunun hem static hem de void olduğunu işaret ettim. C# programlarının başlangıç noktası olan Main() metodu(C programlama dilinde Main'den fonksiyon diye söz edilir) statik olmak zorundadır ama void olması zorunlu değildir. Metot geriye bir değer göndermeyecekse metot adından önce void yazılır. Daha sonra metotların geriye nasıl değer gönderdikleri konusunda bilgi verilecektir.

Bu kısacak programda bile Class'tan söz ettik, metottan söz ettik. Size önerim başlangıçta verdiğim kısacak kodlarda kullanıp ancak sözünü etmediğim deyimlere, metotlara veya satırlara kayıtsız kalmanızdır. Örneğin bu kısacak örnekte bile sözünü etmediğim, dikkatinizden kaçırmak istediğim bir şeyler var. Dikkat ederseniz Main() metoda adından sonra parantezlerin arasına 'string[] args' yazdım. Bu parantezin içine yazdıklarım gerçekte dizi değişken tanımlamaktan başka bir şey değildir Ancak şu anda bundan söz etmeyeceğim. Bu nedenle bu derslerden azami verimi almak istiyorsanız anlatılmayanlara değil anlatılanlara odaklanmalısınız.

Şimdi C# programının başlangıç noktası olan Main() metodu içinde bir değişkene yer vereceğim. Bu değişkeni Main() metodu içinde tanımladım. Değişkeni Main() metodu tarafından sınırlanan kod bloğu yerine Class bloğu içinde tanımlayabilirdim.


class Deneme

 {

   static void Main(string[] args)

    {

      int yil;

     }

 }



Gördüğünüz gibi C# programlarında değişken tanımlanırken önce değişkenin tipi sonra adı yazılmaktadır. Buradaki int bu değişkenin integer yani tamsayı tipindeki bilgileri saklayabileceğini işaret etmektedir. Programcılıkta değişken tanımlamayı günlük hayatta telefon edip bir otelde yer ayırmaya benzetmek mümkündür. Bu değişkeni tanımlamakla derleyiciye demiş oluyorum ki, programın ileriki safhalarında integer bilgileri bellekte tutma gereğini duyabilirim. Bu nedenle bana bellekte bu amaçla kullanacağım bir yer ayırt.

Bu kısacak kodu iki cümle ile yorumlamak gerekirse şunlar söylenebilir: Bu programdaki 'Deneme' adlı Class'ın Main() adında bir metodu bulunmaktadır. Main() metodu içinde yaşayabilecek 'yil' adında ve Integer tipindeki bilgilerin aktarılabileceği bir değişken tanımlanmıştır. Bu değişkeni Main() metodu içinde tanımladığım için yalnızca Main() metodunun sınırları içinde yaşar. Fark etmiş olabileceğiniz gibi C# programlarında Class ve metot başlatılan satırlar hariç her satırın sonuna ';' konulmaktadır.

Bu kodu VB.NET için yazsaydım biraz farklı olurdu. Ancak temel mantıkta pek farklılık yoktur. VB.NET'te de zorunlu olmamakla birlikte uygulamalar Class halinde düzenlenmekte ve Class'ların içinde metotlar, alanlar(yani değişkenler), özellikler, olaylar, Interface'ler olabilmektedir. Lütfen olay nedir, özellik nedir, Interface nedir gibi sorularla şimdilik meşgul olmayın.

Şimdiye kadar incelemiş olduğum yerli yabancı bütün kaynaklarda, bütün kitaplarda 'değişkenler' adında bir bölüm mutlaka vardı. Kitaplarda değişkenler adlı bölümün olması doğal olmasına doğal da değişkenler sanki C, Basic ve Pascal programlama dillerindeki değişken kullanımı gözetilerek anlatılmaktadır. Bu derslerde değişkenler Class bağlamında kısaca anlatılacaktır.

Yukarıda belirtildiği gibi Class'lar metotları barındırabilmektedir. Ayrıca C# projelerinde Main() metodunun bulunması zorunludur. Yukarıda verdiğim en kısıtlı C# programı içinde hazırladığım Class'ta 2. bir metot hazırladım. Herhangi bir satır içermeyen bu metot bu hali ile herhangi bir işlem yapmaz. Bu metodu da hem static hem de void olarak işaret ettiğimi fark etmiş olmalısınız.


class Deneme

 {

   static void Main(string[] args)

    {

    int yil;

    }

  static void Mesaj()

   { 

   }

}



Daha önce C#, C++, Delphi gibi bir programlama dili ile program geliştirmiş iseniz bu derste anlatılanlar size basit gelecektir. Programcılıkta tecrübeli arkadaşlara bir önerim var; sizler bu yazıda ne anlatıldığı ile değil, nasıl anlatıldığı ile ilgilenebilirsiniz. Belki bir üniversitenin öğretim görevlisisiniz, belki bir Microsoft eğitim merkezinde eğitmensiniz. Bu yazıdaki amacım C# gibi bir programlama dilinin nasıl kolay öğrenilebileceği konusunda deneme yapmaktır.

Şimdi yukarıda verdiğim basit C# kod dosyası içinde Mesaj() adını verdiğim metodu işleteceğim. Hazırladığım metot aynı sınıfın içinde olduğu için herhangi bir hazırlık yapmadan direk adıyla çağırıp işletmek mümkündür.


class Deneme

 {

   static void Main(string[] args)

    {

        int yil;

        Mesaj();

    }

  static void Mesaj()

    { 

    } 

 }



Bu hali ile bu C# programı veya CS uzantılı dosya DOS penceresinde derlenip EXE hazırlanıp çalıştırılırsa Main() metodu otomatik olarak işletilir. Çünkü yukarıda söylendiği gibi C# programları Main() metodundan itibaren çalışmaya başlarlar.

Bu programı aşağıdaki gibi düzenlemiş olsaydım değişen bir şey olmazdı. Bu kısa örnekte 'yil' adını verdiğim değişkeni hiç kullanmadığım için C# derleyicisi derleme sırasında uyarı mesajı verir.


class Deneme

 {

   static void Mesaj()

     { 

     } 

   static void Main(string[] args)

     {

        int yil;

        Mesaj();

    }

}



Şimdi bu Mesaj() adını verdiğim metoda müdahale edip işletildiği zaman ekrana bilgi yazılmasını sağlayacağım. Konsolda yani DOS penceresinde çalışan C# projelerinde ekrana bilgi yazma işlemleri .NET Framework ile gelen Console sınıfında tanımlı olan Write() veya WriteLine() metotları ile yapılmaktadır.



Tam bu noktada elime fırsat geçmişken biraz kendimi savunmak istiyorum. Yıllardır Memik YANIK aleyhine konuşanların en genel geçer suçlaması şuydu: 'Memik YANIK kitaplarını ekran görüntüleri ile doldurup kitapları şişiriyor'. Gördüğünüz gibi yukarıda Not Defteri ile hazırladığım toplam 12 satırdan meydana gelen kodun kendisini vermek yerine kodu yazmış olduğum Not Defteri penceresinin ekran görüntüsünü verdim. Bu metni kitap için yazmış olsaydım ekran görüntüsünü belli bir oranda küçültüp kitapta daha az yer kalmasını sağlardım.

Aşağıda ise bu ekran görüntüsünü verdiğim Not Defteri penceresine yazmış olduğum kodun kendisi var. Sizce kitap metni içinde hangisi çok yer kaplar, ekran görüntüsü mü yoksa kodun kendisi mi? Seçilen puntoya bağlı olarak değişse bile aralarında önemsenecek bir farkın olmadığını söyleyebilirim. Ne ki ekran görüntüsü halinde verilen kısa kodları incelemek bazen daha kolaydır. Neden mi bazen? Çünkü kitap metni içinde kullanılmak istenen kod 15-20 satır kadarsa kodun kendisi yerine kodu yazıldığı ekran görüntüsü verilebilir. Ancak kod uzunsa ekran görüntüsü yerine kodun kendisini vermek gerekir.


class Deneme

 {

   static void Main(string[] args)

    {

        int yil;

        Mesaj();

    }

  static void Mesaj()

    { 

     System.Console.WriteLine("Fenerbahçe");

    } 

 }



Bu şekilde düzenlenen C# uygulaması DOS penceresinde derlenip çalıştırıldığında ekrana 'Fenerbahçe' yazdırılır. Mesaj() metoduna yazdığım satır hakkında biraz konuşmak gerekirse; 'System.Console.WriteLine("Fenerbahçe");' satırındaki System bir namespace'tir. Şimdi diyeceksiniz Namespace nedir? Cevabım hazır: Lütfen merakınızı sonraya saklayın; halk dili ile söylemek gerekirse 'üzümü ye bağını sorma'.

Kısaca anlatmak gerekirse Class'lar Namespace'lerin içine yerleştirilmektedir. System adlı Namespace .NET Framework ile gelen en önemli Namespace'tir ve çok sayıda Class'ı barındırmaktadır. DOS penceresine veya konsola bilgi yazmak üzere hazırladığım satırdaki Console bir Class'tır. Çok sayıda metoda sahip olan bu Class'ın sayesinde konsol yani DOS penceresi ile ilgili istenen işlemler yapılabilmektedir. Bu satırdaki WriteLine() ise Console sınıfının bir metodudur.

Bu konuyu bir okulda, bir dershanede veya seminerde anlatıyor olsaydım C# hakkında biraz bilgisi olanlar 'Memik bey WriteLine() static bir metot değil mi?' diye sorabilirlerdi. Soruyu soranlara cevabım 'evet, WriteLine() metodu statik bir metottur'. Tabii dersi veya semineri izleyenlerin bazıları 'statik olanla olmayan metot arasında ne fark vardır' diye soru soracaklardı, bazıları ise keşke bu konuşulanları anlasaydım diye iç geçireceklerdi. Fırsat bu fırsat deyip hemen statik olan ve olmayan metotlar hakkında uzun açıklamalar yapmayacağım. Arkadaşlar lütfen biraz sabır.

Programları Derlemek

Bazılarınız bu kısacak örneği bile hemen denemek, bu CS uzantılı dosyayı derleyip EXE dosya hazırlamak istiyor olabilir. Bu isteğe uyup CS uzantılı kod dosyasını derleyip EXE yapma üzerinde duracağım. Not Defteri ile hazırlayacağınız kod dosyalarını yerleştirmek üzere ayrı bir klasör hazırlamanızı öneririm. Bu klasör 'C:' sürücüsünün kök klasöründe olursa ulaşılması kolay olur.

C#'ın kurallarına uyarak yazdığınız programları derleyip EXE dosya hazırlayacak program dosya¬sı(CSC.EXE) Windows'un kurulu olduğu klasörün altında 'Microsoft.NETFramework' klasöründe yer almaktadır. .NET Framework'ün başka sürümünden yararlanıyorsanız bu klasörün adı farklı olabilir.



Hazırlayacağınız CS uzantılı dosyaları bu CSC.EXE dosyasının bulunduğu klasöre kaydetmeli veya Denetim Masasındaki Sistem seçeneği ile ekrana getirilen Sistem Özellikleri diyalog kutusunda Gelişmiş sekmesindeki Sistem Değişkenleri seçeneğinden yararlanmalısınız. Path seçeneğinin içeriğine aşağıda verdiğim satırlardan birisini ekleyip bilgisayarı yeniden başlatırsanız istediğiniz yerden CS uzantılı kod dosyalarını derleyebilirsiniz.


'C:WINDOWSMicrosoft.NETFrameworkv3.5;'

"C:WINDOWSMicrosoft.NETFrameworkv2.0.50727;"



Şimdi sıra geldi bu programı derlemeye. Bu amaçla bir DOS penceresi açıp komut satırına 'CSC ILK.CS' yazıp Enter tuşuna basınca C# programı derlenmeye başlandı. Yazdığım programda herhangi bir hata olmadığı için EXE dosya hazırlandı.



Yazdığım programda Main() metodu içinde 'yil' adında ve int tipinde bir değişken tanımlamış olmama rağmen bu değişkeni hiç kullanmadığım için derleyici uyarıda bulundu. Bu uyarı ILK.CS dosyasından yola çıkılıp ILK.EXE dosyasının hazırlanmasına engel değildir. Derleyici uyarı yerine hata mesajı vermek zorunda kalsaydı EXE dosya hazırlanmazdı.

Tekrarlamak gerekirse derleme işlemi sonucu CS uzantılı C# programı ile aynı ada sahip bir EXE dosyası hazırla¬nır. Aşağıda verdiğim ekran görüntüsünü bu EXE dosyayı çalıştırdıktan sonra aldım. Derleme sonucu hazırlanan EXE dosya ancak .NET Framework kurulu bilgisayarda çalışır. Bu EXE dosyayı alıp .NET Framework 2.0 kurulu olmayan başka bir bilgisayara götürdüğünüzde çalışmaz. Aşağıda verdiğim ekran görüntüsünü hazırladığım EXE dosyayı çalıştırdıktan sonra aldım.



Hazırlayıp derlediğim C# programı ekrana bu bilgiyi yazdıktan sonra yani Main()m metodunun sonuna gelindiğinde çalışması otomatik olarak sona erer. Şimdi bu örmekte öyle bir ayarlama yapalım ki programın veya EXE dosyanın çalışması Enter tuşuna basıncaya kadar devam etsin. Programın çalışmasının Enter tuşuna basıncaya kadar devam etmesini sağlamak üzere programa bazı eklemeler yaptım.


class Deneme

 {

   static void Main(string[] args)

    {

        int yil;

        Mesaj();

        System.Console.WriteLine();

        System.Console.Write("Çıkmak için Enter Tuşuna Basın");

        System.Console.Read();

     }

  static void Mesaj()

    { 

       System.Console.WriteLine("Şampiyon Fenerbahçe");

    } 

 }



Gördüğünüz Console sınıfının WriteLine() metodunu Mesaj() adını verdiğim metodun içinden başka bir de Main() metodu içinde kullandım. Bu örnekte Main() metodu içinde önce Mesaj() adını verdiğim metot çağrıldığı için ekrana önce 'Şampiyon Fenerbahçe' yazılır. Mesaj() metodunun çağrıldığı satırdan sonra yine WriteLine() metodu kullanılmaktadır. Bu kez WriteLine() metoduna ekrana yazılmak üzere bilgi parametre olarak verilmediği için ekranın o satırı boş kalır. Bir sonraki satırda ise WriteLine() yerine Write() metodunu kullandım.

WriteLine() metodu kendisine parametre olarak verilen bilgiyi ekrana yani DOS penceresine yazdıktan sonra imleci bir sonraki satırın başına alır. Write() metodu ise WriteLine() metodundan farklı olarak imleci bir sonraki satırın başına almaz. Burada programın çalışmasının kendiliğinden sona ermesini engelleyen metot ise Read(). Bu şekilde düzenlenen C# programı derlenip çalıştırıldığında aşağıdaki gibi bir sonuç alınır.



Console sınıfının Read() metodu gerçekte kullanıcının gireceği bilgileri programa veya bir değişkene aktarılırken işlevsel olmaktadır. Bu örnekte kullanıcının bilgi girmesini istemediğim için Read() metodundan önce herhangi bir değişken adı yazmadım. Diğer yandan yukarıda verdiğim örnekte asıl anlatmak istediğim şuydu: C# programları Class'lar şeklinde hazırlanmakta ve Class'larda kod blokları metot şeklinde düzenlenmektedir.

Bu düşünce ile hazırladığım kısacık örnekte Main() metodundan başka Mesaj() adında bir metot hazırlayıp Main() metodu dahilinde işlettim. Şimdi bu örnekte değişiklik yapıp Mesaj() adını verdiğim metodu silip çalışma anında 'yil' adını verdiğim değişkene bilgi aktarmaya çalışacağım.


class Deneme

 {

   static void Main(string[] args)

    {

       int yil;

       System.Console.Write("Hangi Yıldayız : ");

       yil = System.Console.Read();

    }

 }



Bu şekilde değiştirdiğim C# programında önce Console sınıfının Write() metodu ile kullanıcıya mesaj verdikten sonra bir sonraki satırda Read() metodu sayesinde kullanıcıdan istenen bilgiyi 'yil' adını verdiğim değişkene aktardım. Aşağıda verdiğim ekran görüntüsünü bu kısa programı derleyip çalıştırdıktan sonra aldım.



Ekrana mesaj yazarken Write() yerine WriteLine() metodunu kullansaydım imleç bilgi girişi için bir sonraki satırda beklerdi. Şimdi bu C# programına ekleme yapıp kullanıcıdan istenip 'yıl' adını verdiğim değişkenine aktarılan bilgiyi WriteLine() metodu ile tekrar ekrana yazacağım.


class Deneme

 {

   static void Main(string[] args)

    {

       int yil;

       System.Console.Write("Hangi Yıldayız : ");

       yil = System.Console.Read();

       System.Console.WriteLine();

       System.Console.Write("Girdiğiniz Yıl :");

       System.Console.WriteLine(yil);

    }

 }



Bu şekilde düzenlenen örnek derlenirken hata vermediği gibi çalıştırıldığında da hata vermez ama girilen yıl bilgisi ile sonradan Write() metodu ile ekrana yazılan yıl bilgisi birbirinden farklı olur. Aşağıda verdiğim ekran görüntüsünü bu C# programını derleyip çalıştırdıktan sonra aldım.



Yukarıda verilen koda dikkat ederseniz konsoldan bilgi okuma işlemi Read() metodu ile yapılmaktadır. Read() metodu konsoldan okuma yaparken girilen bilginin ilk karakterinin ASCII kodunu geriye göndermektedir. Bu program derlenip çalıştırılıp 'Hangi Yıldayız :' sorusuna 'A' ile cevap verilirse ekrana 65 yazılır. Çünkü 'A' hafinin ASCII kodu 65'dir.



Console sınıfının ReadLine() metodu ise farklı bir şekilde çalışmaktadır ve konsoldan yani DOS penceresinden okuduğu bilginin String tipte olduğunu varsaymaktadır. Bu nedenle yukarıda verdiğimde örnekte değişiklik yapıp okuma işlemini Read() yerine ReadLine() metodu ile yapmaya çalıştım.


class Deneme

 {

   static void Main(string[] args)

    {

      int yil;

      System.Console.Write("Hangi Yıldayız : ");

      yil = System.Console.ReadLine();

      System.Console.Write("Girdiğiniz Yıl :");

      System.Console.WriteLine(yil);

    }

 }



Bu şekilde değiştirdiğimiz C# programını derlemek istersek derleyici hata rapor eder. Çünkü ReadLine() metodu tarafından okunup geriye gönderilen bilgi String tipte olmasına rağmen burada int tipindeki değişkene aktarmaya çalışıyorum. Bu hatanın önüne geçmek için string tipte bir değişken tanımlayıp kullandım.


class Deneme

 {

   static void Main()

    {

      string str;

      System.Console.Write("Hangi Yıldayız : ");

      str = System.Console.ReadLine();

      System.Console.Write("Girdiğiniz Yıl :");

      System.Console.WriteLine(str);

    }

 }



Bu hali ile programımız istediğimiz sonucu verir. Bu örnekte konsoldan girilen 'yıl' bilgisi matematiksel işlemlerde kullanılmadığı için rakamlardan meydana gelse bile string yani karaktersel bilgi olarak değerlendirmenin bir sakıncası olmaz.

Bu Dersin Özeti

Birkaç cümle ile yukarıda yazılanları özetlemek gerekirse; Not Defteri ile yazdığımız ilk programda Class bloğuna yer verdik. Bildiğiniz gibi C# programlarında blok başı '{' ile ve blok sonu ise '}' ile işaret edilmektedir. C# programları çalışmaya Main() metodundan itibaren başladıkları için Class'ın sınırları içinde Main() metoduna yer verdim. Main() metodu içinde Console sınıfının WriteLine() metodu ile konsola yani DOS penceresine bilgi yazmayı denedik. Ayrıca .NET Framework ile gelen C# derleyicisi ile yani CSC.EXE dosyası ile CS uzantısı ile kaydettiğimiz C# programlarını derleyip EXE dosya hazırladık.

Yukarıda yazılanları okurken kafanızda bazı soruların belirdiğini tahmin etmek zor değil. Programcılık biraz da bisiklet sürmeyi öğrenmek gibidir: Önceler sık sık bisikletten düşersiniz, insanların 2 teker üzerinde nasıl düşmeden gittiklerine hayret edersiniz. Sonra 50 metre düşmediğinizde; bisiklet sürmesini öğrendiğinizi fark edersiniz. Birçok kişi programcılığa nereden başlayacağı konusunda tereddüde düşüyor. Bu soruların cevaplarını bu dersler boyunca birlikte araştıracağız.
  • Etiketler;
Memik Yanık
Hakkında bilgi yakın zamanda eklenecektir.
Yorum Yaz

Yorum yazabilmek için üye girişi yapmanız gerekiyor!

çok teşekkür ederim
includest yorumun için teşekkürler. Nedense sanalkursa eklediğim derslerde çift tırnaktan sonraki kapa parantezler her seferinde siliniyor. Bu makaleyi okuyan arkadaşların buna dikkat etmelerini istiyorum.
Herhangi bir kodalama dili hakkında yazılan yazılarda en nefret ettiğim şey kişinin kendince verdiği isimlerle (oldukça kafa karıştırıcı olabiliyor) ifade etmesidir komutlarda. Üstadım ellerinize sağlık sonunda adam akıllı anlayabileceğim bir c# yazı dizisi bulmayı başardım.
Memik Yanık'ın makalelerinde ve kitaplarında tek okunuşta anlaşılmayacak tek bir cümle yoktur.

Yukarı Git