Ders 3:İlk Program Ve Temel Kavramlar

Posted on

Evet geçen derslerde program yazmak için gerekli araçlardan ve nasıl basit bir şekilde program derleneceğinden bahsetmiş idik.Bu derste ise ilk program örneğimizi verip program üzerinden giderek temel kavramlardan bahsetmeye çalışacağım.İlk programımızın ismi “Merhaba Dünya”.Çok klişedir belki ama her şeyin temeli bana göre budur.Programımız komut istemi penceresine “Merhaba Dünya” yazdıracak.Dediğim gibi basit bir program ama dediğim gibi her şeyin temeli.

Neyse lafı uzatmadan program kodlarımızı veriyorum.Buyurun;

namespace ilk_isimuzayim
{
     class ilk_sinifim
{
          static void Main()
{
System.Console.WriteLine(“Merhaba Dünya”);
while (true) ;
}
}
}

Buda ekran görüntümüz;

hello_world_app

 

Programımızı ilk satırdan itibaren açıklamaya başlıyorum.C#’ta bir satırın sonunda illaki “;” (noktalı virgül) olmalıdır.Tabi bu  “{}”(süslü parantez)açılan deyimler için geçerli değildir.Neyse ilk satırda bizi “namespace” adlı kavram karşılıyor.

Namespace’ler

Namespace demek aslında isim uzayı demek.Aslında evet bunu bu şekilde açıklayabilirim.Aklımızın bir köşesinde “Namespace=Evren” olarak bulunsun.Bunu en son açıklarım.Namespace kod üzerinde bulunan class’larımızı paketleyen bir yapıdır.Şimdi “Class ne?” diyenleriniz olabilir,ama ona az var bekleyin :).Büyük uygulamalarda işimizi kolaylaştırır.Namespacelerin belirgin  bir özelliği yoktur tabi bu benim düşüncem ama bence işimiz kolaylaştırır.Buna örnek vermiyorum fakat ileride fark edeceksiniz.Namespace içinde namespace tanımlamak mümkündür.Mesela;

namespace isimuzayim_1
{
     namespace isimuzay_2
{…}
}

gibi.Namespacelere isim vermek “C” deki ile aynıdır.Mesela;Rakam ile başlamaz,küçük/büyük harfe duyarlıdır.Aynı namespace iki ayrı yerde tanımlanabilir.

Buraya kadar namespace ne demek onu anlatmaya çalıştım.Şimdi sırada 3. satırda bulunan class kavramı var.Süslü parantezleri geçiyorum.Onlar kavramın başladığını veya bittiğini derleyiciye anlatmak için kullanılıyor.Nasıl Basic’te “Sub-Endsub” varsa işte öyle.

Class’lar

Şunu belirtmeliyim ki C# ta en az bir adet class olmak zorunda ve tabi ki de onun içinde bir adet “Main()” metodu.Bu namespace’le için geçerli değil.Benzetmeye geçince bu kavramda aklımızda “class=galaksi” olarak bulunsun.Class’lar sayesinde farklı classlar içinde aynı isimli metodları oluşturabiliyoruz.Mesela “gonder()” adında metodlarımız olsun.Birisi seri porttan diğeri paralel porttan veri göndersin.Bunları;”Seriport.gonder()”ve “paralelport.gonder()” şeklinde çağırabiliriz.Bu arada namespace içinden class veya class içinden metod çağırır iken “.” (nokta) ile ayrım yapılır.Yada Gonder adında class’ımız olsun.İçinde fare ile sağ tıkladığımızdaki öğeler bulunabilir.Namespacelerde olduğu gibi classlarda iç içe tanımlanabilir.Adlandırma kurallarına gelince;

  • Harf ile başlamalıdır
  • İlk karakter rakam olmamalıdır
  • “_”(alt tire) haricinde boşluk yada sembol içeremez.

Burada ise class kavramını anlatmaya çalıştım.Şimdi ise Metodlardan Bahsedeceğim.Veya “C” kullananların dediği gibi Fonksiyonlar.

Metodlar(Fonksiyonlar)

Evet aklınızda tutun dediğim şeyleri birleştiriyoruz.Sonuçta”Namespace->Evren,class->Galaksi,metod->Gezegen” benzetmesini yapmış olduk.Yani “Evren.Galaksi.Gezegen_1()” Şeklinde Yorumlayabiliriz.Programda ana işleri metodlar yapar.Mesela kök hesaplar,üs alır,logoritma hesaplar.Metodlar tanımlanırken “Metodadi(degerler)” şeklinde tanımlanır.Classlardaki isim tanımlama kuralları yine geçerlidirMetodlar geriye değer dönebilir.Bu değer mantıksal işlem sonucu(evet-hayır/1-0),katar(string),sayı,karekter olabilir.”bool tusabasıldımı(){bool x;…return(x)}”Gibi.Eğer değer döndürülmeyecek ise bu “Void” deyimi ile belirtilir.”Void Yazdır(int x,int y,string){…}”Gibi.

Bana göre 3 temel kavramı,Anlatmaya çalıştım.Biraz sıkıcı gelebilir(ki evet sıkıcı) ama nedense açıklama gereği duydum.Şimdi programımıza geri dönelim.

static void Main(){…}

Her programda bu tanım olmak zorundadır.Program ilk Buradan çalışmaya başlar. Static türünden olmak zorundadır.

System.Console.WriteLine(“Merhaba Dünya”);

“Sytem” Adlı namespace’in,Console Adlı class’ın,WriteLine() Metodu.Bu metod komut istemi penceresinde yeni bir satırda,parantez içindekileri yazdırır.Burada Merhaba Dünya Yazdırmışız.

while(true);

Bunu o satıra yazdık çünkü,programın metni yazdırıp çıkmasını istemeyiz.Burada parantez içindeki işleç(yada her ne ise) doğru olduğu sürece bekler.C kullananlar “true” yerine “1” yazarlar.”while” özel bir deyimdir.Bu konulardan “C” derslerinde bahsedeceğim.Normalde:”while(işlem,x==2 gibi){.komutlar.}”şeklinde kullanılır.Ama buda bir alternatif.Mesela bir zamanlayıcı beklemesinde kullanılabilir.Yada:”while(System.Console.ReadLine()!=”exit”);”şeklinde bir kullanım olursa.Burada da,komut istemi penceresine “exit” yazılıp “enter” tuşuna basılana kadar bekler.

Evet programı da açıklama çalıştım düşünüyorum ki anlaşılabilirdir yazım.Dersler bir süre duracak çünkü,”C” dersleri başlayacak.Benim önerim C#’a yeni başlayanlar “C” derslerini takip etsinler.Orada işleçlerden,değişkenlerden,operatörlerden vs.. bahsedeceğim.Mesela dediğim gibi while,if,for gibi işleçler…Bu günlük bu kadar.

Yorum bırakın