C#, Yeni Bir Soluk
Microsoft ''un Visual Studio.NET paketi ve .NET Framework teknolojisi ile
birlikte sunumunu yaptığı yeni programlama dili C# (Si şarp), çok
bilinmeyenli denklem görünümünden dolayı bu yeni teknolojinin en çok ilgi çeken
kısımlarından birisi oldu. Dile kolay; yepyeni bir programlama dilinden
bahsediyoruz. İsmiyle, sözdizimiyle ve genel yapısıyla C/C++ ''tan türetilmiş
olan C# atalarından daha modern olmakla kalmayıp daha yenilikçi olmayı ihmal
etmiyor. Tamamıyla nesne yönelimli..
.NET Framework ile sunulan dört
.NET programlama dilinden biri olan C#, aynı VB.NET gibi rahatlıkla ASP.NET
uygulamalarında kullanılabiliyor. Ayrıca ASP.NET kodu yazmak için C# kullanmayı
tercih eden web programcısı tüm Ana Sınıf Kütüphanesi''ni (Base Class Library)
elinin altında bulmaya devam ediyor. Yani C# ile VB.NET ASP.NET gözünde eşitler.
Herhangi birisine torpilli davranılmıyor veya kısıtlama getirilmiyor.
Bu
durumda bu yeni dili de öğrenip ASP.NET sayfalarımızda kullanmamamız için hiçbir
neden yok. Madem Microsoft ilk aşamada dört, ve sonradan +1( J# )
alternatif sunup "alın istediğinizi kullanın" demiş, fırsatı iyi değerlendirip
mümkün mertebe diğer dillere de göz atmalı, VBScript ''e olan göz
alışıklığımızdan dolayı bize daha kolay gelen VB.NET ile sınırlı kalmamalıyız.
Klasik ASP ''deki script dilli günleri geride bıraktık. Artık birden fazla
dilimiz ve renkli yayınımız var.
Peki, C# öğrenmeye nerden
başlayabiliriz ? Önce "programlama dili öğrenmek" kavramı konusuna açıklık
getirmek lazım bu noktada. Bir programlama dilini öğrenmekten tam olarak ne
kastedilir ? Herşeyiyle öğrenmek mi, yoksa sözdizimini öğrenip fonksiyonlar
yazabilecek, diziler kullanıp dolar kuru hesaplayabilecek programlama yapmayı
öğrenmek mi ?
Tüm programlama dillerinde öğrenci adayları için
öğrenilecek şey çok fazladır. 7 veya 21 günde dili öğretmeyi vaat eden
öğreticiler (tutorial) dile vakıf olmanızı değil sınırlı bir alanda özellikleri,
metodları kullanacak bilgiyi edinmenizi sağlar. Bizim bu ve ileriki makalelerde
öğrenmek istediklerimiz; C# ''ı ASP.NET sayfalarımızı programlamayabilecek kadar
öğrenip sıkıntı çekmeden istediğimiz yapabilecek bilgi olacak. Ayrıntıya
girmeden, kafa karıştırmadan C# ''ı en verimli şekilde kullanmaya çalışacak ve
bir nevi birlikte dalacağız bu yeni denize.
Kabul edersinizki geçmişi
olmayan bir insan ilk denemede çok derine dalarsa bu onun son dalışı olabilir.
İşte bu nedenle yavaş ilerleyecek ve önemli konuları x,y,z düzleminde
irdeleyeceğiz. Herşeyi hazmederek öğreneceğiz ki unutması zor olsun. Sanırım
giriş için bu kadar söz yeter, laf kalabalığı yapmadan artık C# ''a giriş
yapalım.
Daha önce de söylediğim gibi C# birçok açıdan C ve C++ '' benziyor. Bu nedenle bu iki dili görmüş, tanımış ve kullanmışlığı olan kişiler hiç yabancılık çekmeyeceklerdir. PHP, Java ve JavaScript kullanmış olanlar da sözdizimini, kontrol ve döngü deyimlerini ilk bakışta tanıyacaklardır. Şimdi temel senktaks özelliklerine özet bir bakış yapalım.
Şimdi kısa bir kod vererek 4 madde halinde verdiğim temel sözdizimi özelliklerine örnek veriyorum.
|
<%@ Page Language="C#" Debug="True"
%> <script runat="server"> void Page_Load(Object Source, EventArgs E) { int iDegiskeni; // Tek satır yorum /* Bu değişkeni kullanırken idegisken şeklinde çağırmak istersek hata alırız. */ for (iDegiskeni=0 ; iDegiskeni <= 5 ; iDegiskeni++) { // Response.Write deyimini nasıl yazdım ? Response.Write("sayı = " + iDegiskeni.ToString() + "<br>"); } } </script> |
Verdiğim bi C# kodu bazılarınız için çok tanıdık gelse bile bazılarınız içinse çok karmaşık ve yabancı geliyor olabilir. Kendi tecrübemden biliyorumki uzun süre Visual Basic ile ahbaplık etmiş (veya VBScript) bir insan C# sözdizimini (syntax) gördüğünde tam anlamıyla dumura uğrar. Bu durum C# öğrenmekten vazgeçmeye neden olabilir. Çünkü iki programlama dilinin sözdizimleri arasında gözle görülmeyi bırakın kendini gösterir farklar vardır.
C# sözdiziminin en çok dikkat çeken ve belki de en güzel özelliklerinden birisi (bence) işaretlerin ağırlıklı olması kelimelerin ise sadece deyimlerin anahtar kelimesi olarak yer almasıdır. 500 satırlık bir Visual Basic kodunun C# ile yazıldığında 300 satıra düşmesi işten bile değildir.
C# ''ın Ansi C ''den devraldığı ekstra özellikli operatörlerle tamsayılar için "artırma", "eksiltme" gibi işlemler hem daha az tuş basılarak yazılabilir. Hem de derleyici bu konu daha hızlı çalıştırır.
Yukarıdaki C# koduna bakıp sözdizimine yabancı olanlar ilk bakışta değişken bildirimlerini farketmişlerdir. Visual Basic ve VBScript ''tekinin aksine çok daha az kelime kullanarak yapılan bu değişken deklaresi hem iDegiskeni isimli integer (tamsayı) türlü değişkenin tanımlanmasında, hem de page_load rutininin parametrelerinin bildirilmesinde görülebilir.
C# ''da değişken bildirimleri değişken_tipi değişken_ismi; şeklinde yapılır. Aynı türde bildirimi yapılacak diğer değişkenlerde virgüllerle ayrılarak aynı satıra yazılabilir. Bir değişkene bildirimi sırasında değer atanmak istenirse değişken_tipi değişken_ismi = değer; sözdizimini kullanılır.
Rutinler ve fonksiyonların türleri fonksiyon başlıklarında belirtilir. Void kelimesinin anlamı "boş" ''tur. Rutinin değer döndürmeyeceği anlamına gelir. Program void bir rutin veya fonksiyondan değer beklemez. Ancak dikkat edilmesi gereken bir nokta olarak; bu anahtar kelimenin tamamı küçük harf olacak şekilde yazılması gerekir. Benim, cümlenin başında baş harfi büyük olarak yazdığım gibi yazılırsa compile-time (derleme-zamanı) hatası alınır.
C# ''ın case-sensitive olduğunu söylemiştim. Ancak bunun örneğini değişken isminde gösterip blamıştım. Verdiğim kodda case-sensitive olması açısından çok önemli bir yer daha var. Yorumda da belirttiğim gibi Response.Write deyiminin yazılışı.. Neden çok önemli ? Bu kodu ".aspx" uzantılı bir dosyaya kaydedin ve çalıştırın. Çalışacaktır. Şimdi Response.Write satırını response.write olarak değiştirin. Dosyayı tekrar çalıştırın. Compile-time hata alacaksınız. Neden ?
Case-sensitive olmayan bir ortama alışkın olanlar böyle bir hatayı bu makaleyi okumadan yaptıklarında sorunun içinden çıkmakta çok zorlanırlar ve belki de uzun bir zamanı monitörü parçalama isteğiyle harcarlar. Aslında çok küçük bir küçüklük-büyüklük hatası olan bu sorun uygulamanın çalışmasını engeller.
Nasıl değişkenlerin bildirildiklerindeki gibi yazılmaları gerekiyorsa, C# ''ın anahtar kelimelerinin de orjinal halleriyle yazılmaları gerekir. Response.write şeklinde bir kullanım sonucu Response nesnesinde write isimli bir tanımlama olmadığı hatası alınır.
Sanırım C# ''ın temel sözdizimi ile ilgili ipuçlarını yeterince açıklayabildim. İlk C# makalemde çok fazla ayrıntıya girmemek, ve temel konuları blamak için özen gösterdim. Belki for döngü deyimini kullandığım halde açıklamadım. Ama kodu renklendirecek bir ortamda bir süre incelerseniz birçok noktayı daha anlayabileceğinize inanıyorum. Benim verdiğim temel özellikleri hatırlayıp, birçok deyimin de bu şekilde yazılacağını unutmayın.
Daha ileri seviye C# makalelerinde görüşmek üzere..
