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.
zorundadır. İki satıra taşmayan ifadeler söz konusu edilirse bu kuralı "tüm
satırlar" şeklinde de söyleyebiliriz. C# derleyicisi için beyaz alanlar
değersizdir. Enter, boşluk, tab gibi karakterler sevenleri ayıramaz. Derleyici
ifade sonunu görmek için noktalı virgül işaretini arar.
deyimleri olarak sayabileceğimiz kod bloklarının başlangıçlarını ve bitişlerini
diğer birçok dildekinin aksine kelimeler değil işaretler belirtir. Başlangıç
için class=CodeInText>{ (açılır süslü parantez) ve bitiş için class=CodeInText>} (kapanır süslü parantez) işaretleri kullanılır.
büyük-küçük harf dengesine çok önem verir. Bir değişken veya nesnenin ismi
deklare edilmesi sırasında nasıl yazılmışsa kullanılması veya çağırılması
sırasında da o şekilde yazılmalıdır.
menzilli yorum için class=CodeInText>// kullanılır. Kendisinden sonra gelen ve satır sonuna
kadar olan tüm karakterleri yorum yapar. Bir diğer yol ise, yorumu class=CodeInText>/* ile başlatıp class=CodeInText>*/ ile bitirmektir. Yorumun başlangıç ve bitişi
programcı tarafından belirleneceği için class=CodeInText>/* karakterlerinden sonra ve class=CodeInText>*/ karakterlerine kadar olan tüm karakterler (satırlarda
dahil) yorum olacaktır. Bu işaretleri ters yazmak, kapanış işaretini koymadan
"multi-line" (çok satır) yorum kullanmaya çalışmak hata verecektir.
Şimdi kısa bir kod vererek 4 madde halinde verdiğim temel sözdizimi
özelliklerine örnek veriyorum.
class=ASP_PageDirective><%@ Page Language="C#" Debug="True" %> < class=HTML_ElementName>script runat= class=HTML_AtributListValues>"server"> class=HTML_CodeInServerSideBlock> 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( class=cs_s>"sayı = " + iDegiskeni.ToString() + class=cs_s>"<br>"); } } class=HTML_Element></script class=HTML_AtributList>> |
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
class=CodeInText>iDegiskeni isimli class=CodeInText>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
class=CodeInText>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 class=CodeInText>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. class=CodeInText>Void kelimesinin anlamı "boş" ''tur. Rutinin değer
döndürmeyeceği anlamına gelir. Program class=CodeInText>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 class=CodeInText>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
class=CodeInText>Response.Write satırını class=CodeInText>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. class=CodeInText>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 class=CodeInText>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..