C#

C#

Windows Forms Solution

Windows Formda Solution’larla yani pencerelerle çalışmaya başlıyoruz. Öncelikle 1 tane form uygulaması açıyoruz nasıl açıldığını bir önceki konuda anlatmıştık. Öncelikle Visual Studiodaki kullanacağımız  pencerelerden bahsedelim;
Solution Explorer Penceresi: Bu Pencerede yaptığımız çalışmalar görüntülenir. Açtığımız uygulamalar, eklediğimiz referenceler ve uygulamaların diğer dosyaları bu pencere altında bulunur.
Toolbox Penceresi: Bu pencere ile uygulamamızda kullanacağımız nesneleri eklemek için kullanılır. Hazır kontrolleri bu pencere sayesinde kolayca yapabiliriz. Bu pencere Form uygulamamızın Design kısmında aktifleşir.
Properties Penceresi: Form uygulamamıza eklediğimiz Toolbox nesnelerinin kontrollerini bu pencerede yapabiliriz. Ayrıca tüm uygulamamızın özellikleri bu pencerede görünmektedir. Toolbox nesnelerini Form uygulamamıza ekledikten sonra eklediğimiz Toollbox nenesine tıklayıp Properties alanını açıp Yan sekmelerinden Events seçeneğine tıklayarak çıkan listede kullanmak istediğimiz metoda tıklayarak o toolbox nesnesi ile ilgili bir olay oluşturabiliriz. Aşağıda bazı events metotlarını kullanarak örnek yapacağız.

Properties penceresi ile Form uygulamamıza eklediğimiz bir toolbox nesnesinin Örneğin eklediğimiz butona tıklayıp properties penceresinden butonun yerini sabitlemek için Dock ayarımıza tıklayıp belirli seçenekleri seçebiliriz.

Dock

Yine properties penceresinden butonumuzun yerinin sabit kalması için Anchor  ayarımıza tıklayıp sağ, sol, üst, alt seçeneklerinden birisini veya birilerini seçebiliriz.

Anchor

Properties penceresinden Events sekmesine gelerek butonumuzun mouse enter metoduna çift tıklayarak gelen kod alanına mouse ile butonun üzerine gelince ne yapacağını kod satırlarına yazabiliriz. Yine aynı şekilde mouse leave metodu ile de butonun üzerinden mouse’u çektiğimizde çalışacak kodları çift tıklayarak çalışacak kodları yazabiliriz. mouse hover metodu ile mouse üzerine geldiği zaman gerçekleşir, mouse enter ile aynı işlemi yapar yalnız mouse enter daha hassastır.

Örnek

{private void Form1_Load(object sender, EventArgs e)
{
//buton1 tıklandığı anda bu metot çalışır.
}
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show("Merhaba Ziyaretçi...");
}
private void button1_MouseEnter(object sender, EventArgs e)
{
//button1'in Textini (üzerindeki yazıyı değiştirdik.)
button1.Text = "Geldin";
//button1'in arkaplan rengini siyah yaptık.
button1.BackColor = Color.Black;
//button1'in yazı rengini beyaz yaptık.
button1.ForeColor = Color.White;
}
private void button1_MouseLeave(object sender, EventArgs e)
{
button1.Text = "Çıktın";
button1.BackColor = Color.Bisque;
button1.ForeColor = Color.Violet;
}

C# Form Olusturma

Windows Form Application aslında arkada bir Console uygulaması dahilinde çalışır.  Yani biz normalde Visual Studio üzerinden File —> New —> Project —>Windows Forms Application seçerek Form uygulamamızı başlatıyoruz ama bu form uygulamamızın nasıl çalıştığı konusunda bilgimiz olması açısından 1 örnekle açıklığa kavuşturuyoruz.
Aşağıdaki örnekle daha iyi anlaşılacağını umuyorum.

static void Main(string[] args)
{
//Proje içerisinde References'a sağ tıklayıp System.Windows.Forms'u referans olarak ekliyoruz.
//Yeni Bir console application açıyoruz ve main metodu içerisinde yeni bir form çalıştırmasını söylüyoruz.
//References kısmından --> Add Reference kısmından Framework içinde System Windows Forms'u referencelarımıza ekleyip Windows formu system sınıfına ekleriz.
//Yeni bir Form oluşturulur Aşağıdaki kod ile.
Application.Run(new Form());

//Form ekranımızı kapattığımızda Console ekranımızda aşağıdaki mesaj görüntülenir.
Console.WriteLine("Form Penceresi Kapatıldı.");
Console.ReadKey();

}

C# Pin ve Puk Kodu İslemleri

Pin ve Puk Kodu İslemleri

int pin = 5757;
for (int pinhak = 3; pinhak > 0; pinhak--)
{
Console.WriteLine("Pin Kodunu Giriniz");
int pin1 = Convert.ToInt32(Console.ReadLine());

if (pin1 == pin)
{
Console.WriteLine("Telefonunuz Birazdan Açılacaktır.");
Console.ReadKey();
return;
}
if (pinhak == 1)
{
int puk = 0707;
Console.WriteLine("3 Kere Hatalı Pin Kodu Girdiniz Lütfen");
for (int pukhak = 2; pukhak >= 0; pukhak--)
{
Console.WriteLine("Puk Kodunu Giriniz");
int puk1 = Convert.ToInt32(Console.ReadLine());

if (puk==puk1)
{
Console.WriteLine("Puk Kodunu Bildiniz Hattınız Birazdan Açılacaktır");
Console.ReadKey();
return;
}
if (pukhak == 0)
{
Console.WriteLine("3 Kere Hatalı Puk Kodu Girdiniz Hattınız Kilitlenecektir.");
}
}
Console.ReadKey();

C# Dizi ve Metotla toplama islemi

Dizi ve metotla toplama işlemi

static void Main(string[] args)
{
int[]sayilar=new int [2];
Console.WriteLine("Bir Sayı Giriniz");
sayilar[0]=Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Bir Sayı Giriniz");
sayilar[1]=Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Sayıların Toplamı: {0}", SayılarıTopla(sayilar[0], sayilar[1]));
Console.ReadKey();
}
static int SayılarıTopla(int değer1, int değer2)
{
int toplam = 0;
toplam += değer1 + değer2;
return toplam;
}

C# Hesap Makinesi

C# Hesap Makinesi – Metotlarla Hesap Makinesi 

<span style="vertical-align: inherit;"><span style="vertical-align: inherit;">
static void Ana (string [] args)</span></span>
{
Console.WriteLine("Bir sayı girin");<span style="vertical-align: inherit;"><span style="vertical-align: inherit;">
int sayi1 = Convert.ToInt32 (Console.ReadLine ());</span></span>
Console.WriteLine("ikinci sayı girin");<span style="vertical-align: inherit;"><span style="vertical-align: inherit;">
int sayi2 = Convert.ToInt32 (Console.ReadLine ());</span></span>
Console.WriteLine("Sembol Gir ---&gt; +, -, *, / ");
char sembol=Convert.ToChar(Console.ReadLine());
switch (sembol)<span style="vertical-align: inherit;"><span style="vertical-align: inherit;">
{</span></span><span style="vertical-align: inherit;"><span style="vertical-align: inherit;">
davası '+':</span></span>
Console.WriteLine(toplama(sayi1, sayi2));<span style="vertical-align: inherit;"><span style="vertical-align: inherit;">
kırılma;</span></span><span style="vertical-align: inherit;"><span style="vertical-align: inherit;">
durum '-':</span></span><span style="vertical-align: inherit;"><span style="vertical-align: inherit;">
Console.WriteLine (cıkarma (sayi1, sayi2));</span></span><span style="vertical-align: inherit;"><span style="vertical-align: inherit;">
kırılma;</span></span><span style="vertical-align: inherit;"><span style="vertical-align: inherit;">
durum '*':</span></span><span style="vertical-align: inherit;"><span style="vertical-align: inherit;">
Console.WriteLine (karpma (sayi1, sayi2));</span></span><span style="vertical-align: inherit;"><span style="vertical-align: inherit;">
kırılma;</span></span><span style="vertical-align: inherit;"><span style="vertical-align: inherit;">
durum '/':</span></span>
Console.WriteLine(bölme(sayi1,sayi2));<span style="vertical-align: inherit;"><span style="vertical-align: inherit;">
kırılma;</span></span><span style="vertical-align: inherit;"><span style="vertical-align: inherit;">
varsayılan:</span></span>
Console.WriteLine("Lütfen Belirtilen Sembollerden Seçiniz");<span style="vertical-align: inherit;"><span style="vertical-align: inherit;">
kırılma;</span></span>
}<span style="vertical-align: inherit;"><span style="vertical-align: inherit;">
Console.ReadKey ();</span></span>
}
static int toplama (int sayi1,int sayi2)
{
int sonuc = 0;
sonuc = sayi1 + sayi2;
return sonuc;<span style="vertical-align: inherit;"><span style="vertical-align: inherit;">
}</span></span><span style="vertical-align: inherit;"><span style="vertical-align: inherit;">
static int cıkarma (int sayi1, int sayi2)</span></span><span style="vertical-align: inherit;"><span style="vertical-align: inherit;">
{</span></span><span style="vertical-align: inherit;"><span style="vertical-align: inherit;">
int sonuc = 0;</span></span>
sonuc = sayi1 - sayi2;<span style="vertical-align: inherit;"><span style="vertical-align: inherit;">
return sonuc;</span></span><span style="vertical-align: inherit;"><span style="vertical-align: inherit;">
}</span></span><span style="vertical-align: inherit;"><span style="vertical-align: inherit;">
static int carpma (int sayi1, int sayi2)</span></span><span style="vertical-align: inherit;"><span style="vertical-align: inherit;">
{</span></span>
int sonuc=0;
sonuc = sayi1 * sayi2;<span style="vertical-align: inherit;"><span style="vertical-align: inherit;">
return sonuc;</span></span><span style="vertical-align: inherit;"><span style="vertical-align: inherit;">
}</span></span>
static double bölme (double sayi1,double sayi2)<span style="vertical-align: inherit;"><span style="vertical-align: inherit;">
{</span></span>
double sonuc = 0;
sonuc = sayi1 / sayi2;<span style="vertical-align: inherit;"><span style="vertical-align: inherit;">
return sonuc;</span></span>
}

C# Dizilerle Toplama İslemi

Dizilerle Toplama İşlemi

int[] sayilar = { 1, 5, 5, 8, 9 };
Array.Resize(ref sayilar, sayilar.Length + 1);
sayilar[5] = 8;
int toplam = 0;
for (int sayac = 0; sayac &lt; sayilar.Length;sayac++ )
{
toplam+=sayilar[sayac];
Console.WriteLine(sayilar[sayac]);
}
Console.WriteLine("Sayıların Toplamı: {0}",toplam);
Console.ReadKey();

C# Metotlu toplama islemi

Metotlu toplama işlemi

static void Main(string[] args)
{
Console.WriteLine("Bir sayı girin");
int sayi1 = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("İkinci sayı girin");
int sayi2 = Convert.ToInt32(Console.ReadLine());
toplama(sayi1, sayi2);
Console.ReadKey();
}
static void toplama(int sayi1, int sayi2)
{
int sonuc = 0;
sonuc = sayi1 + sayi2;
Console.WriteLine("Toplam Sonuç:{0} ", sonuc);
}

C# sayi tahmin oyunu

3 haklı sayı tahmin oyunu

Random rastgele = new Random();
int sayi = rastgele.Next(1, 4);

for (int hak = 3; hak >0;hak-- )
{
Console.WriteLine("Bir Sayı Gir ve rastgele üretilen sayıyı tahmin et. {0} hakkın var", hak);
int sayi1 = Convert.ToInt32(Console.ReadLine());

if (sayi == sayi1)
{
Console.WriteLine("Tebrikler bildiniz. sayı {0}", sayi);
Console.ReadKey();
return;
}
if (hak == 1)
{
Console.WriteLine("Malesef hakkınız bitti sayimiz:{0}", sayi);
}
}

C# Metotlar

Metotlar tekrar tekrar kullanabileceğimiz kod satırlarıdır. Avantajları çok fazladır. daha sonra kullanabileceğimiz işlemler için tekrar tekrar aynı kod içeriğini yazmak yerine tek bir metot içinde tanımlayıp oradan çağırabiliriz. kodun okunabilirliği ve anlaşılırlığı için metotlar çok önemlidir.

Metot Tanımlama

Metotlar daima class içinde tanımlanır.

Erişimşekli(Private,Public,Static) –  dönüş-tipi (int,string vb) – metotadi (parametre listesi)

{

metotun içerisinde çalışacak kod satırları

}

Methotlar: Geriye değer döndürürler
VOID: Geriye değer döndürmezler

VOID’lerin içerisinde RETURN kullanılabilir. Ama sağında bir değer olamaz.
Methotların değer döndürenlerinde ise return zorunludur. ve return’ün sağında bir değer olmak zorundadır.

/// <summary>
///  Bu yapı methodun ne yaptığını açıklayıcı bir yazı içerir metodun üstünde /// yazarak alt satırlar çıkar.
/// </summary>

Örnek

static void Main(string[] args)
{
YaştanDoğumYılıHesapla();  --Main metodumuz içinde metodumuzu çağırıyoruz.
Console.ReadLine();
}

static void YaştanDoğumYılıHesapla() -- Geriye değer döndürmeyen yani VOID bir metot oluşturduk.
{
Console.WriteLine("Yaşınızı Giriniz"); --Yaşımızı metotumuz içinde girdik
int yas = Convert.ToInt32(Console.ReadLine()); -- ReadLine ile okuduk int türüne dönüştürüp yas adında bir değişkene atadık.
int dogumyili = DateTime.Now.Year - yas; --Sistem yılından girdiğimiz yaşı çıkarıp dogumyili adlı değişkene atadık.
Console.WriteLine("{0} yılında doğmuşsunuz.. ", dogumyili); --Ekrana doğum yılımızı yazdırdık.
}

Örnek

static void Main(string[] args)
{
Console.WriteLine("Adınızı Giriniz"); --Ekrana adımızı girip string tipinde bir değişkene atadık.
string isim = Console.ReadLine();

Console.WriteLine("Soyadınızı Giriniz"); --Ekrana soyadımız girip string tipinde bir değişkene atadık.
string soyad = Console.ReadLine();

string methottanGeriyeDönenDeğer= AdSoyadBirlestir(isim, soyad); --Geriye değer döndüren AdSoyadBirlestir metodunu main metodunda çağırıyoruz. Dönen değeri string tipinde&nbsp;methottanGeriyeDönenDeğer isimli değişkene atıyoruz.
Console.WriteLine(methottanGeriyeDönenDeğer); -- Dönen değeri ekrana yazdırıyoruz.

Console.ReadKey();
}

static string AdSoyadBirlestir(string ad, string soyad) --AdSoyadBirlestir adında string bir metot oluşturuyoruz ve bu metodumuz 2 tane string tipinde parametre alıyor ad ve soyad olarak
{
string sonuc = ad.Trim() + " " + soyad.Trim().ToUpper(); --Aldığı parametre değerlerini birleştiriyor ve soyadı büyük yazdırıyor. ve bu işlemleri string tipinde sonuc değişkenine atıyor.

return sonuc; --sonuc değişkeninde tutulan bilgileri bu metodu çağıran yerlere gönderiyor.

}

C# Hata Yakalama

.NET Framework ortamında hatalar try-catch bloğuyla yakalanır. try, hata oluşabilecek kod satırlarını içinde barındırdığı bloktur. catch ise try içindeki kod  satırlarında hata oluşursa catch kısmına düştüğü bloktur. Yani özetle TRY içerisinde bir hata olursa uygulamanın akşının ne olacağı CATCH bloğunda yazar.
Finally alanı ise kodun sorunsuz çalıştığı alandır. try ve catch bloğundaki işlemlerden sonra devreye girer isteğe bağlı olarak kullanılır.

try
<span style="line-height: 1.5;">{
</span><span style="line-height: 1.5;">   Hataya sebep olabilecek kodlar.
}
catch
{
Hata oluşması halinde çalışacak kod bloğu
}
finally
{
Hata olsada olmasada çalışacak kodlar
}

3 çeşit hata türü vardır.

Syntax hataları:  Yazılan kod bloğunda yanlış bir ifade kullanılmışsa bu kodun derlenmesine engel olacaktır o yüzden hata düzeltilip öyle çalıştırılabilir.

Runtime Hataları: Kodun çalışmasını engeller. Yanlış bir işlem akışının olduğunu belirtir TRY-CATCH ile bu tür hatalar giderilmeye çalışılır.Örn. String bir ifadenin int tipine dönüşemeyeceği için verilen “input string” hatası bir runtime hatasıdır. Bu durumda hatanın olcağı durumda try içine kodumuzu yazarız ve catch bloğunda mesaj verdirebilir “dönüşüm hatası” vb.

Mantık Hataları: Kodun çalışmasını engellemez yalnız bir çok hatalı işleme sebep olabilir bir sayısal işlem hatası en güzel örnektir bir kod satırında bölme işlemi yerine çarpma işlemi yaparsan bu bir zarar teşkil edeceğinden bu tarz hatalara mantık hataları denir.