14 Aralık 2011 Çarşamba

C#'a Giriş

Merhaba değerli Webkolog.net takipçileri, bugün sizlerle yazılım geliştirme dünyasına heyecan verici bir adım atacağız: Microsoft'un güçlü ve yaygın olarak kullanılan geliştirme platformu olan .NET Framework 4 ve bu platformun gözde dili C#. Özellikle IDE olarak Visual Studio 2010'u ele alarak, bu dünyaya ilk kez adım atacaklar için temel kavramları ve önemli bilgileri anlaşılır bir dilde aktarmaya çalışacağım.

C# dünyasına girerken bilmemiz gereken ilk şey, bu dilin küçük-büyük harf duyarlı olduğudur. Yani sayi ve Sayi program için farklı anlamlar ifade eder. Bu detaya dikkat etmek, ilerleyen süreçte karşılaşılabilecek olası hataların önüne geçmek açısından önemlidir.

Projemizin Kalbi: Program.cs ve Program Sınıfı

Visual Studio 2010'da yeni bir C# projesi oluşturduğumuzda, otomatik olarak Program.cs adında bir dosya karşımıza çıkar. Bu dosya, projemizin ilk başladığı ve ana yürütme mantığını içeren Program adında bir sınıfı barındırır. Bu sınıfın içinde yer alan Main metodu ise uygulamamızın başlangıç noktasıdır. Programımız çalışmaya başladığında ilk olarak bu Main metodu içerisindeki kodlar yürütülür.

// Program.cs içeriği (örnek)
class Program
{
    static void Main(string[] args)
    {
        System.Console.WriteLine("Merhaba .NET Dünyası!");
    }
}

Temel Teknik Terimler

Yazılım geliştirme sürecinde sıkça karşımıza çıkan ve anlamlarını bilmemizin önemli olduğu bazı teknik terimler bulunmaktadır:

  • Instance Almak: Bir sınıftan yeni bir nesne (object) oluşturma işlemidir. Sınıf, nesnelerin genel bir şablonu iken, instance o şablona göre bellekte oluşturulmuş somut bir örnektir.
  • Implicitly (Dolaylı) Çevirme: Bir veri tipinin, herhangi bir özel işlem yapmadan otomatik olarak daha geniş kapsamlı bir veri tipine dönüştürülmesidir. Örneğin, daha küçük bir bellek alanına sahip olan byte türündeki bir değer, daha büyük bir bellek alanına sahip olan int türüne doğrudan atanabilir. Buna örtülü dönüştürme de denir.
  • Explicitly (Açık) Çevirme (Casting): Bir veri tipinin, programcı tarafından belirtilerek başka bir veri tipine dönüştürülmesidir. Bu işlem genellikle veri kaybı riskini içerdiğinden bilinçli olarak yapılmalıdır. Parantez içinde hedef veri tipi belirtilerek gerçekleştirilir. Buna tür dönüştürme de denir.
double pi = 3.14;
int tamPi = (int)pi; // Açık çevirme (casting)
/*
Convert: Farklı veri tipleri arasında dönüşüm yapmak için kullanılan bir sınıftır (System.Convert).
Bu sınıf, çeşitli To...() metotları aracılığıyla güvenli ve kontrollü dönüşümler sağlar.
*/

string sayiStr = "123";
int sayiInt = System.Convert.ToInt32(sayiStr); // Convert sınıfı ile çevirme

 

  • CLR (Common Language Runtime): .NET Framework'ün temelini oluşturan bir ara katmandır. Java'daki JRE'ye benzer bir rol üstlenir. CLR, .NET uygulamalarının çalıştırılmasını yönetir, bellek yönetimi (garbage collection), güvenlik ve tip denetimi gibi hizmetleri sağlar.
  • CIL (Common Intermediate Language): .NET dilleri (C#, VB.NET vb.) tarafından derlendikten sonra oluşan ara koddur. MSIL (Microsoft Intermediate Language) olarak da bilinir. Bu ara kod, platformdan bağımsızdır.
  • JIT (Just In Time): CLR'nin bir parçası olan ve CIL kodunu uygulamanın çalıştığı sırada makine koduna (işlemcinin anlayacağı dile) çeviren derleyicidir. Bu sayede .NET uygulamaları farklı platformlarda (uygun bir CLR implementasyonu varsa) çalışabilir.
  • IDE (Integrated Development Environment): Yazılım geliştirmeyi kolaylaştıran, kod düzenleme, derleme, hata ayıklama gibi araçları tek bir ortamda sunan entegre geliştirme ortamıdır. Visual Studio 2010 da güçlü bir IDE örneğidir.
  • SDK (Software Development Kit): Belirli bir platform veya teknoloji için yazılım geliştirmek için gerekli araçları, kütüphaneleri, belgeleri ve örnek kodları içeren geliştirme kitidir. .NET Framework SDK da .NET uygulamaları geliştirmek için gereken her şeyi içerir.

Bir C# Uygulamasının Çalışma Süreci

Bir C# uygulaması yazdıktan sonra, bu kodun çalışabilir hale gelmesi için belirli adımlardan geçer:

  1. Kaynak Kod: Yazdığımız C# kodlarıdır (.cs uzantılı dosyalar).
  2. .NET Derleyici: C# derleyicisi (csc.exe), kaynak kodunu derleyerek MSIL (CIL) adı verilen ara koda ve meta verilere (meta data) çevirir. Bu çıktı genellikle bir DLL (dinamik bağlantı kitaplığı) veya EXE (çalıştırılabilir dosya) olarak kaydedilir.
  3. Common Language Runtime (CLR) ve Just in Time (JIT): Uygulama çalıştırıldığında, CLR devreye girer ve MSIL kodunu, uygulamanın çalıştığı makinenin işlemcisine uygun yerel makine koduna JIT derleyicisi aracılığıyla çevirir.
  4. Çıktı: Makine kodu çalıştırılarak uygulamanın istenen işlevi yerine getirilir.

.NET'te Geliştirilebilen Diller ve Platformlar

.NET Framework, birden fazla programlama dilini destekler. En popüler olanları arasında C#, VB.NET, Managed C++, Delphi.Net ve geçmişte J# yer alır.

Ayrıca, .NET ekosistemi farklı platformları hedefleyen çeşitli çatılara sahiptir:

  • Mono: Linux, iOS ve Android gibi platformları hedefleyen açık kaynaklı bir .NET implementasyonudur. Mono sayesinde .NET uygulamaları farklı işletim sistemlerinde çalıştırılabilir.
  • .NET Core: Linux ve macOS gibi platformlarda da çalışabilen, modern ve platformlar arası bir .NET sürümüdür (Visual Studio 2017 ve sonrası ile daha yaygın hale gelmiştir). Ancak, .NET Framework 4'te ASP.NET Core veya Xamarin desteği bulunmamaktadır.
  • ASP.NET Core: Web uygulamaları ve servisleri geliştirmek için kullanılan, platformlar arası bir çatıdır. WPF (Windows Presentation Foundation) gibi masaüstü teknolojilerini desteklemez.
  • Xamarin: Mobil uygulamalar geliştirmek için kullanılan bir .NET çatısıdır. Android ve iOS platformları için native uygulamalar geliştirmeye olanak tanır.

Karşılaşılabilecek Hata Türleri

Yazılım geliştirme sürecinde çeşitli hatalarla karşılaşmak kaçınılmazdır. Temel olarak üç tür hata bulunur:

  • Syntax Hataları: Kodun dilin kurallarına (söz dizimine) aykırı yazılmasından kaynaklanır. Derleme aşamasında tespit edilirler.
  • Mantıksal Hatalar: Kodun söz dizimi doğru olsa bile, programın istenen işlevi yanlış bir şekilde yerine getirmesine neden olan hatalardır. Çalışma zamanında fark edilebilirler.
  • Runtime Hataları (Çalışma Zamanı Hataları): Program çalışırken ortaya çıkan hatalardır. Örneğin, sıfıra bölme (DivideByZeroException), yanlış formatta bir veri dönüştürme (FormatException), veya bir sayısal değerin izin verilen aralığın dışına çıkması (OverflowException) gibi durumlar bu tür hatalara yol açabilir.

Namespace, Class ve Method Kavramları

C# kodunun temel yapı taşları namespace (isim alanı), class (sınıf) ve method (metot) kavramlarıdır. Namespace'ler, kodun düzenlenmesini ve isim çakışmalarının önlenmesini sağlar. Sınıflar, nesnelerin şablonlarıdır ve veri (alanlar/değişkenler) ile davranışları (metotlar/fonksiyonlar) bir arada tutar. Metotlar ise belirli bir işlevi gerçekleştiren kod bloklarıdır.

return ve throw İfadeleri

  • return: Bulunduğu metotun yürütülmesini o noktada durdurur ve eğer metot bir değer döndürmesi gerekiyorsa, bu değeri çağrıldığı yere iletir.
  • throw: Bir hata (exception) durumunu işaretlemek ve programın normal akışını bozarak hata işleme mekanizmasına geçmesini sağlamak için kullanılır.

Object Veri Tipi ve Boxing/Unboxing

object veri tipi, C#'taki tüm diğer veri tiplerinin temel sınıfıdır. Bu nedenle, herhangi bir türdeki değer bir object türündeki değişkene atanabilir. Değer tipindeki bir verinin object türüne dönüştürülmesine boxing (kutulama), object türündeki bir verinin tekrar kendi orijinal değer tipine dönüştürülmesine ise unboxing (kutudan çıkarma) denir. Boxing ve unboxing işlemleri performans açısından maliyetli olabileceği için dikkatli kullanılmalıdır.

Evet sevgili Webkolog.net okurları, C# .NET Framework 4 dünyasına yaptığımız bu ilk adımda, temel kavramları ve teknik terimleri Visual Studio 2010 özelinde ele almaya çalıştım. Umarım bu giriş yazısı, bu heyecan verici platforma olan ilginizi artırmış ve size yol göstermiştir. Bir sonraki yazımızda, C#'ta operatörlere değineceğineceğiz.

Webkolog'u takipte kalın!

Hepinize bol kodlu ve keyifli öğrenme süreçleri dilerim!

 

0 yorum:

Yorum Gönder