30 Ocak 2016 Cumartesi

C# Giriş ve Uygulama

Merhabalar C# giriş niteliğindeki eğitimlerimize console uygulamaları ile giriş yaparak form application olarak devam edeceğiz.
C#, geliştiricilerin .NET Framework üzerinde çalışan, güvenli ve sağlam çeşitli uygulamalar oluşturmasına olanak tanıyan seçkin, tür kullanımı uyumlu, nesne yönelimli bir dildir.Windows istemci uygulamaları, XML Web Hizmetleri, dağıtılmış bileşenler, istemci-sunucu uygulamaları, veritabanı uygulamaları ve çok daha fazlasını oluşturmak için C# kullanabilirsiniz.Visual C#, C# dili ve .NET Framework tabanlı uygulamaları daha kolay hale getirmek için gelişmiş kod düzenleyici, uygun kullanıcı ara birimi tasarımcıları, tümleşik hata ayıklayıcı ve birçok diğer araç sağlar.Çok uzatmadan eğitimlere başlamak istiyorum.
Dediğimiz gibi giriş olarak console application ile çalışma yapıcaz.



ÖRNEK-1 ) 

Her uygulamada olduğu gibi bizimde ilk uygulamamız "MERHABA DÜNYA" ifadesini yazdırmak olsun . Kaynak kodu yazma ihtiyacı duymadım kod parçacığı kısa olduğu için.



Console.WriteLine();  Birçok yazdırma komutundan en çok tercih edilenidir. Satırın tamamını yazdırır.
Burada Console.ReadLine(); ifadesi siyah console ekranının kapanmasının her hangi bir tuşa basıldıktan sonra aktif olmasını ifade eder.


ÖRNEK-2 ) 

Şimdiki uygulamamız string ve int değerlerini yazdırmak olsun.



burada \n ifadesi bir alt satıra geç demek oluyor bu JAVA içinde aynı ifade şekliyle ifade edilir.



ÖRNEK-3 )

Adımız ve Soyadımızı klavyeden alarak yazdıralım.



burada klavyede girdiğimiz karakterleri Console.ReadLine(); ile string' ile adsoyad değişkenine atayıp Console.WriteLine(); ile yazdırdık.


ÖRNEK-4 )

Ufak bir aritmetik işlem yapalım.


işlem önceliği söz konusu olduğundan 15*5=75  , 75+3=78 olur.

ÖRNEK-5 )

string  int dönüşümü ile ilgili alıştırma yapalım. Bu arada klavyeden girilen her değer daima string olarak algılanır şayet girilen ifade değer ise biz bunu string > int, float vb ile dönüşümünü yaparız.





Convert.ToInt32(degisken); string bir ifadeyi integer ifadeye dönüşümünü sağlar.
degisken.ToString(); integer bir ifadeyi string bir ifadeye dönüştürür.


ÖRNEK-6 )

Klavyeden iki değer girelim ve değerlerin toplamını görelim.



console ekranından alınan değerler daima string şeklinde ifade edilmelidir. Şayet girmiş olduğumuz değer interger ise burada dönüşüm ifadesini uygulayarak işlemlerimizi gerçekleştireceğiz.
bu örnek için birincideger ve ikincideger bizim için geçici değişkenlerdir diyebiliriz. Çünkü bu değişkenleri biz integera dönüştürmek için veri tutma yeri olarak kullanıyoruz.


ÖRNEK-7 )

Programlama için en önemli kod parçacıklarından biri olan switch case kullanımı ile ilgili bir uygulama yapalım. Bu uygulamada kullanıcıya haftanın kaçıncı günü diye sorulduğunda girilen değere göre günü yazdıralım.


burada girilen değer 1 ile 7 dışında olursa Girilen Değeri Kontrol Ediniz diye uyarı çıkar.



KOD PARÇACIĞI:

int gun;
            string deger;
            Console.WriteLine("Haftanın Kaçıncı Gününü Söylememi İstersin...");
            deger = Console.ReadLine();

            gun = Convert.ToInt32(deger);

            switch (gun)
            {
                case 1: Console.WriteLine("Pazartesi");    break;
                case 2: Console.WriteLine("Salı");            break;
                case 3: Console.WriteLine("Çarşamba");  break;
                case 4: Console.WriteLine("Perşembe");  break;
                case 5: Console.WriteLine("Cuma");        break;
                case 6: Console.WriteLine("Cumartesi"); break;
                case 7: Console.WriteLine("Pazar");       break;
                default: Console.WriteLine("Girilen Değeri Kontrol Ediniz...");  break;
            }



            Console.ReadLine();



ÖRNEK-8 )

switch - case ile ilgili bir uygulama daha yapalım  bu uygulama 4 işlem olsun. console ile iki değer alalım ve verilen iki değerin toplanması, çıkarılması, çarpılması, bölünmesi hangisini istersiniz diye soralım ve verilen ifadeye göre istenilen işlemi switch - case ile  gerçekleştirelim.




KOD PARÇACIĞI :

            int sayi1,sayi2;
            string deger1,deger2;

            Console.WriteLine("İlk değeri giriniz");
            deger1 = Console.ReadLine();
            Console.WriteLine("İkinci değeri giriniz");
            deger2 = Console.ReadLine();

            sayi1 = Convert.ToInt32(deger1);
            sayi2 = Convert.ToInt32(deger2);

            Console.WriteLine("İşlem Seçimi Kodunu Giriniz. \n1-TOPLAMA\n
                                              2-ÇIKARMA\n3-          ÇARPMA\n4-BÖLME");
            string islemsecimi = Console.ReadLine();
            int islemkodu = Convert.ToInt32(islemsecimi);


            switch (islemkodu)
            {
                case 1: Console.WriteLine("TOPLAM = "+(sayi1 + sayi2));   break;
                case 2: Console.WriteLine("FARK = "+(sayi1-sayi2));        break;
                case 3: Console.WriteLine("ÇARPMA = "+(sayi1*sayi2));    break;
                case 4: Console.WriteLine("BÖLME = "+(sayi1/sayi2));    break;
           
                default: Console.WriteLine("Girilen Değeri Kontrol Ediniz...");  break;
            }



            Console.ReadLine();


ÖRNEK-9 )

C# Faktoriyel hesaplama yapalım. (  f(n) = f(n-1)*n  )

0 ! ve 1 ! in değerinin 1 olduğunu bilmemiz gerekiyor.





if içerisinde yer alan ||  karakter veya olarak ifade edilir. 0 veya 1 ise sonuc 1 'dir oluyor.




KOD PARÇAÇICI :

 Console.WriteLine("Faktoriyeli alınacak değeri giriniz...");
            string degerstring = Console.ReadLine();

            int deger = Convert.ToInt32(degerstring);//string i int e çevirdik

            int sonuc = 1;

            if (deger==1 || deger==0)
            {
                sonuc = 1;
                Console.WriteLine(deger+ " Faktoriyel Sonucumuz = "+ sonuc);
           
            }
            else
            {
                for (int i = 1; i <= deger; i++)
                {
                    sonuc = sonuc * i;
             
                }
                Console.WriteLine(deger + " Faktoriyel Sonucumuz = " + sonuc);
            }

            Console.ReadLine();


ÖRNEK-10 )

                                       *                                                             
                                       **
                                       ***
                                       ****
                                       *****  
şeklinde bir uygulama yazalım. Hatta biz alt tabanı sayısını kullanıcıdan alıp daha geniş bir uygulama yapalım.

burada  Console.Write("*");  ifadesinde WriteLine tercih etmememizin nedeni alt satıra atladığı içindşr.  Console.Write(); ifadesi yazılanları alta geçmeden yan yana yazdırır. 

KOD PARÇACIĞI:

Console.WriteLine("Alt tabandaki * kaç karakterden oluşsun...");
            string degerstring = Console.ReadLine();
            int deger = Convert.ToInt32(degerstring);

            for (int i = 1; i <= deger; i++)
            {
                for (int j = 1; j <= i; j++)
                {
                    Console.Write("*");
               
                }
                Console.WriteLine(" ");
            }

       

            Console.ReadLine();

ÖRNEK-11 ) 
Quicksort sıralaması hakkında örnek gösterelim.


static void Main(string[] args)
        {

            string[] harfler = { "g", "a", "f", "c", "e", "d", "b" };

            // sıralanmamış verileri yazdır
            Console.Write("Sıralanmamış Dizi  ");
            for (int i = 0; i < harfler.Length; i++)
            {
                Console.Write(harfler[i] + " ");
            }

            Console.WriteLine();

            // Diziyi sıralama
            Quicksort(harfler, 0, harfler.Length - 1);

            // Sıralanmış diziyi yazdır
            Console.Write("Sıralanmış Dizi    ");
            for (int i = 0; i < harfler.Length; i++)
            {
                Console.Write(harfler[i] + " ");
            }

            Console.WriteLine();

            Console.ReadLine();
        }

        public static void Quicksort(IComparable[] elements, int left, int right)
        {
            int i = left, j = right;
            IComparable pivot = elements[(left + right) / 2];

            while (i <= j)
            {
                while (elements[i].CompareTo(pivot) < 0)
                {
                    i++;
                }

                while (elements[j].CompareTo(pivot) > 0)
                {
                    j--;
                }

                if (i <= j)
                {
                    // değiştirmek
                    IComparable tmp = elements[i];
                    elements[i] = elements[j];
                    elements[j] = tmp;

                    i++;
                    j--;
                }
            }

            // Recursive aramalar
            if (left < j)
            {
                Quicksort(elements, left, j);
            }

            if (i < right)
            {
                Quicksort(elements, i, right);
            }

        }


Örnek 12 )
* karakterleri ile isim yazdıralım.




Buradaki mantık matris yapısı ile oluşturulan alanın hangi alana ne geleceği yazılır.yani Matris[i,j]
ile hangi alanlara hangi karakterlerin geleceğini belirleyip yazdıralım.


for (int a = 0; a < 50; a++)
            {
                if (a==2 ||a==5 ||a==7 ||a==9 ||a==10 ||a==11 ||a==13 ||a==14 ||a==15 ||a==17 ||a==19)
                {
                   
                    Console.Write("*");
                }
                else
                {
                    Console.Write(" ");
                }
            }

            Console.WriteLine(" ");

            for (int b = 0; b < 50; b++)
            {
                if (b == 1 || b == 3 || b == 5 || b == 6 || b == 10 || b == 13 || b == 15 || b == 17 || b == 19 )
                {

                    Console.Write("*");
                }
                else
                {
                    Console.Write(" ");
                }
            }

            Console.WriteLine(" ");


            for (int c = 0; c < 50; c++)
            {
                if (c == 1 || c == 3 || c == 5 || c == 10 || c == 14 || c == 13 || c == 15 || c == 18)
                {

                    Console.Write("*");
                }
                else
                {
                    Console.Write(" ");
                }
            }

            Console.WriteLine(" ");

            for (int d = 0; d < 50; d++)
            {
                if (d == 1 || d == 3 || d == 5 || d == 6 || d == 10 || d == 13 || d == 15 || d == 18)
                {

                    Console.Write("*");
                }
                else
                {
                    Console.Write(" ");
                }
            }

            Console.WriteLine(" ");


            for (int e = 0; e< 50; e++)
            {
                if (e == 2 || e == 5 || e== 7 || e == 10 || e == 13 || e== 15 || e == 18 )
                {

                    Console.Write("*");
                }
                else
                {
                    Console.Write(" ");
                }
            }

            Console.WriteLine(" ");






console uygulamaları için daha farklı ve aklınıza gelen örnekleri yapabilirsiniz. Şimdi Form uygulamalarına giriş yapalım.

New Project > C#>Windows> Windows Form Application

Şimdi form application örneklerine geçelim.


ÖRNEK-1 )

console application'da olduğu gibi buradaki ilk uygulamamızda butona basıldığında "MERHABA DÜNYA" yazısı olsun.


BUTTON 'nun Text ine BAS Name alanına ise btnbutton yazdık Form1 ekranından BAS buttonuna 2 kez tıklayarak .cs alanına yani arka plana kod alanına geçiş yapıyoruz.
burada button'a basıldığında ne olacak şeklindeki ifademiz yer alıyor . Biz MERHABA DÜNYA yazdıracağımız için bunun gösterilmesini istiyoruz.

MessageBox.Show(); çıktılarımız gösterilir.
Ekranımızın Sol üst tarafında Form1 yazısını ve daha bir çok alanı özellikler alanından düzenleyebiliriz. Bunları zamanla ihtiyaç doğrultusunda inceleyeceğiz.


ÖRNEK-2 )

2 değer alalım TexBox'lardan ve butona bastığımızda sayıların toplamını hesaplayalım.



textbox alanından alınan değer string ifadedir toplama için alınan string ifadeleri int a çevirip toplamını hesaplarız. Hesaplanılan toplam sonucunu MessageBox ile yazdırmak için bu ifadeyi string 'e dönüştürmemiz gerekiyor.
Bunların fark, çarpma,bölme gibi ifadeleri yine aynı mantıkla yapılabilir.



ÖRNEK-3 )

Kullanıcı Girişi ekranı yapmaya çalışalım. Şayet kullanıcı Adı ve şifre doğru değilse hata versin doğruysa HOŞGELDİNİZ... Yazsın.
Burada şifre alanının görünmemesi için texbox2 textinde passwordchar ı * ile doldurarak girilen karakterlerin * şeklinde görünmesini sağlayacağız.

Girişe iki defa tıklayarak .cs alanına geçelim .

kullanıcı adı ve şifre doğruysa if içerisinde belirtilenler yapılacaktır. Şartımız sağlandığı için if içerisindeki durum gerçekleşti.


ÖRNEK-4 )

Bu uygulamamız ise vize ve final notu belirtilerek öğrenci ortalamasının hesaplanması ve hangi harf notu ile geçtiğini hesaplayalım. (finalin %60 ı vizenin %40 alınacak ve öğrencinin geçebilmesi için final minimum 50 ve ortalama min 36 olması gerekiyor.)





KOD PARÇACIĞI:

        private void btnbutton_Click(object sender, EventArgs e)
        {
            string vizedeger = textBox1.Text;
            string finaldeger =textBox2.Text;

            int vize = Convert.ToInt32(vizedeger);
            int final = Convert.ToInt32(finaldeger);
            float ortalama=(((vize*4)+(final*6))/10) ;

            textBox3.Text = Convert.ToString(ortalama);

            if (final >=50 && ortalama>=36)
            {
                if (100>=ortalama && ortalama>84)
                {
                    MessageBox.Show("Tebrikler AA ile geçtiniz...");
                }
                else if (84 >= ortalama && ortalama > 69)
                {
                    MessageBox.Show("Tebrikler BB ile geçtiniz...");
                }
                else
                {
                    MessageBox.Show("GEÇTİNİZ...");
                }
            }

            else
            {
                MessageBox.Show("NE YAZIKKİ BU DERSTEN KALDINIZ...");
            }
       
        }


ÖRNEK-5 ) C# metot kullanımı ile ilgili basit bir örnek yapalım.



int.Parse yerine daha önceki örneklerdeki gibi convert.toint32 yide kullanabiliriz.


ÖRNEK-6 )

Şimdiki örneğimiz taban aritmetik olsun onluk tabanındaki bir değeri binary yani ikilik tabanına çevirelim.



KOD PARÇACIĞI :

            int sayi, kalan;
            string yaziKalan = "";
            sayi = Convert.ToInt32(textBox1.Text);
            while (sayi != 0)
            {
                kalan = sayi % 2;
                sayi = sayi / 2;
                yaziKalan = kalan.ToString() + yaziKalan;
            }
            textBox2.Text = yaziKalan;