Foruma hoş geldin, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Turkz Grup

Ey Türk istikbalinin evladı!

İşte, bu ahval ve şerait içinde dahi vazifen, Türk istiklal ve cumhuriyetini kurtarmaktır. Muhtaç olduğun kudret, damarlarındaki asil kanda mevcuttur.

Mustafa Kemal ATATÜRK

C# Satır Satır İlk Program

C#

Hera

Ar-Ge Grup Lideri
Admin
106
T. Puanı
33
Puanları
2
Katılım
17 Eyl 2022
Mesajlar
60
Konum
Frigya
Uzmanlık Alanları:
  1. Tersine Mühendislik
  2. Masaüstü Programlama
  3. Bug Research
  4. Güvenlik Zaafiyetleri
C# - Satır Satır İlk Program

Bir önceki konumda tahmin ederseniz ki o programı yazmaktaki amacım elbette ki ekrana "Merhaba Turkz!" yazdırmak değildi. Amacım bir C# programının temel yapısını bir örnek üzerinde anlatmaktı. O hâlde ilk programımızı satır satır inceleyelim bu konuda. En detaylısında ilk önce örneğimizi bırakayım.
C#:
// ilkProgram1.cs
class turkz
{
    static void Main()
    {
        System.Console.WriteLine("Merhaba Turkz!");
    }
}

Eğer bir programlama dili ile ilk defa çalışıyorsanız muhtemelen yukarıdaki kodda anlamadığınız yerler olacak. Ama bu önemli değil; konularımı okudukça her şey sırası ile oturmaya başlayacağına eminim. C# dili ile yazılmış bir programdaki en temel yapıları sırasıyla örnek kodumuz üzerinden açıklık getirmeye başlayalım;
  1. Bildiğimiz üzere C# dili %100 nesne yönelimli bir dildir. C# dilinde yaptığımız her şey bir sınıf nesnesidir. (Sınıf nesnesinin şimdilik class anahtar sözcüğüne eşdeğer olduğunu bilmeniz yeterli olacaktır, sınıf kavramını ileri konularımda detaylı olarak anlatacağım) Nesne olmayan hiç bir şey yoktur. Programlamaya çoktan giriş yapmış olanlar bilir, main işlevi, (fonksiyonu) bir programın çalışmaya başladığı noktadır. C, C++ veya bazı benzer diller hiç bir zaman bir sınıf içerisinde olmamıştır. C# dilinde her şey sınıflarla temsil edildiği için main işlevi de bizim belirlediğimiz bir sınıfın işlevi olmak zorundadır. Bu yüzden C# programları yazarken kaynak kodu mutlaka bir sınıf bildiriminin içerisine almalıyız. En basit sınıf bildirimi aşağıdaki kod gibi olmaktadır;
    C#:
    // ilkProgram1.cs
    class turkz
    {
       
    }
  2. Bu ilk örneğimizde bildirdiğimiz sınıfın bir işlevi olan Main'in bir çok programlama dillerinde olduğu gibi özel bir anlamı vardır. Derleyiciler programın nereden çalışacağını bilmek isterler, aksi halde derleme aşamasında "programınızın başlama noktası (Entry Point) bulunamadı" hatası alırsınız. Bu yüzden Main işlevi bizim için ve diğer dillerde olduğu gibi programımızın başlangıç noktasıdır. Kısaca bağımsız çalışacak her program bir Main işlevi içermek zorundadır. Dolayısıyla, programda çalıştırılmasını istediğimiz kodları Main işlevi ya da Main işlevi içinden çağıracağımız diğer işlevler içinde yazmalısınız.
  3. C# dilinde kaynak koddaki hemen bütün satırlar ";" ile sonlandırılır. Çok az durumda ";" ile sonlandırılmaz. Bu istisnai durumları ilerleyen konularımda şahit olacaksınız.
  4. Sınıflar ve işlevler açılan ve kapanan küme parantezleri "{ }" arasına yazılır. Açılan parantez işlevin ya da sınıfın başlangıç noktasını, kapanan parantez ise sonlanma noktasını gösterir. İlk verdiğim ilk örnekte ise "Turkz" adlı sınıfın kapanış parantezi gelmeden Main işlevi başladığı için iç içe (nested) parantezler görebilirsiniz. İç içe parantezlerde diğer dillerde de olduğu gibi ilk açılan parantez her zaman en son kapanır.
  5. Yukarıda belirttiğim gibi C# dilinde her şey bir sınıftır. C# dilinde birçok kavram sınıf dediğimiz nesneler üzerine kurulmuştur. Her sınıfın iş yapan çeşitli elemanları vardır. İş yapan bu elemanlara metot ya da işlev denilmektedir. C# dili .NET platformu üzerinde yazılım geliştirmek için kullanılan araç olduğuna göre, .NET sınıf kütüphanesinden (Class Library) faydalanma imkanımız vardır. Zaten .NET'i ve C# dilini güçlü kılan özelliklerden biri de binlerce hazır sınıfın bulunduğu .NET sınıf kütüphanesidir. .NET sınıf kütüphanesi, öyle bir yapı sunmuş ki bütün sınıflara ulaşmak çok basit. Bu olağanüstü sınıf kütüphanesi hiyerarşik bir yapı içindedir. Sınıflar isim alanı (namespace) dediğimiz kavramla erişilmesi kolay hale getirilmiş. Mesela System adlı sınıf alanı .NET sınıf kütüphanesindeki ağacın en tepesindedir. System isim alanı altında diğer isim alanları ve bazı sınıflar mevcut. Örneğin, ilk örneğimizde Main işlevi içerisinde aşağıdaki gibi bir ifade mevcut;
    C#:
    System.Console.WriteLine("Merhaba Turkz!");
    Peki, bu ifade ile ne yapmaya çalışıyoruz? "WriteLine" ifadesinin Türkçe karşılığı "SatırYaz"dır. Yani System isim alanında bulunan Console sınıfının bir işlevi ile ekrana "Merhaba Turkz" yazdırıyoruz. WriteLine .NET sınıf kütüphanesinde bulunan Console sınıfının iş yapan bir elemanıdır. Bu eleman metot ya da işlev olarak adlandırılır. Console sınıfının şu anda bilmediğiniz buna benzer birçok iş yapan elemanı var. Bunları ilerleyen konularımda detaylı şekilde göreceksiniz. Bazıları için akıllara gelmesi kaçınılmaz bir ifade: Ekrana her defasında bir şey yazdırmak istediğimizde SYstem.Console.WriteLine("..."); gibi uzun bir ifadeyi mi yazacağız? Tabii ki hayır. Bunu anlatmak için şimdi ilk örneğimizin ikinci versiyonunu yazıp ilki ile karşılaştıralım.
Aşağıdaki programı "ilkProgram2.cs" adıyla kayıt edin ve ilk örnekte açıklamasını yaptığım gibi derleyin ve çalıştırın. Önceki konumda detaylıca anlattım. Sonuç olarak ekrana yine ilk örnekte olduğu gibi "Merhaba Turkz!" yazacak. Fakat örnek kodun ikinci versiyonunda yapılsal bir değişiklik yaptım. Bu değişiklik ise yukarıda son maddede anlattığım isim alanları ile ilgili.
C#:
// ilkProgram2.cs
using System;
class turkz_v2
{
    static void Main()
    {
        Console.WriteLine("Merhaba Turkz!");
    }
}

Dikkat ettiyseniz, örnek kodun ilk satırına
using System;
deyimini ekledim. Bu deyim ile C# derleyicisi bize System isim alanındaki bütün sınıflara doğrudan erişim hakkı vermiş olur. Yani;
System.Console.WriteLine("Merhaba Turkz!");
ifadesi yerine aşağıdaki ifadeyi yazabiliriz demek oluyor;
Console.WriteLine("Merhaba Turkz!");
Böylece her defasında System isim alanını kullanmak istediğimiz sınıfın önüne ekleme zorunluluğundan kurtulmuş olursunuz. Evet, C# ile programlamaya iki örnek ve kavramlarla güzel bir anlatım yaptığımı düşünüyorum. Şimdi de Console sınıfının yeni bir metodunu daha anlatıp ilk örneğimizin 3. versiyonunu yapalım.

Örnek: Yazacağımız program Konsol ekranına önce "Bir tuşa basın..." yazsın. Biz herhangi bir tuşa basana kadar öylece kalsın. Tuşa bastıktan sonra ekrana bu seferde "Bir tuşa bastınız." yazsın.

Ekrana yazdırma işi artık öğrenenler için çok kolay. Bu örnekte önemli olan ekrana "Bir tuşa basın..." yazdıktan sonra bir tuşa basana kadar ekranın aynı şekilde kalması ve sonrasında ekrana "Bir tuşa bastınız." yazmasıdır. Ekranı kullanıcıdan bir yazı girmesini isteyecek bir işlev biliyorsak bu sorunu çözebiliriz. İşte burada Console sınıfı imdadımıza yetişiyor. Console sınıfının bir üye elemanı olan ReaLine adlı metot bu işi yapar. Yani konsol ekranından bir yazı girilmesini ve enter tuşuna basılmasını bekler. Örneğimizin v3 hali şu şekilde olmalıdır;
C#:
// ilkProgram3.cs
using System;
class turkz_v3
{
    static void Main()
    {
        Console.WriteLine("Bir tuşa basın...");
        Console.ReadLine();
        Console.WriteLine("Bir tuşa bastınız.");
    }
}

iyi forumlar...
 

SE7EN

Teşkilat-ı Mahsusa Grup Lideri
87
T. Puanı
28
Puanları
4
Katılım
7 Eki 2022
Mesajlar
104
Uzmanlık Alanları:
  1. Siber İstihbarat
  2. Yazar / Editör
  3. Sosyal Mühendislik
Görev/Org:
İlgisi olan için hazine niteliğinde, teşekkürler.
 

FeLiXX

Lojistik Grup Lideri
Admin
150
T. Puanı
43
Puanları
4
Katılım
7 Eyl 2022
Mesajlar
114
Konum
EV
Uzmanlık Alanları:
  1. Web Hacking
  2. Bug Bounty
Görev/Org:
Eline sağlık üstad
 

S4tyric0n

"Ryuzaki"
Admin
223
T. Puanı
43
Puanları
8
Katılım
10 Eki 2016
Mesajlar
206
Konum
ddZ
Web sitesi
ryuzaki.in
Uzmanlık Alanları:
  1. Sosyal Mühendislik
  2. Güvenlik Zaafiyetleri
Görev/Org:
Emeğine sağlık kardeşim.
 

Forumdan daha fazla yararlanmak için giriş yapın yada üye olun!

Forumdan daha fazla yararlanmak için giriş yapın veya kayıt olun!

Kayıt ol

Forumda bir hesap oluşturmak tamamen ücretsizdir.

Şimdi kayıt ol
Giriş yap

Eğer bir hesabınız var ise lütfen giriş yapın

Giriş yap