C# programlama dili temelleri :

Eylül 4, 2020 0 Yazar: alikperislam

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace csharpengindemirog
{
public partial class Form1 : Form
{
public Form1()
{

        InitializeComponent();
    }



    private void button1_Click(object sender, EventArgs e)
    {
        byte bit = 255; // 0-255 arasında değer tutar sadece.
        short sayi3 = 1234;// 16 bit yer kaplar.
        int sayi1 = 1712121212; // int 32 bit yer kaplar
        long sayi2 = 787987989879898889; // long 64 bit yer kaplar
        bool mantıksal = true; // true veya faglse değerlerini tutar.

        double ondalıklı = 10.454654654987986565465;
        decimal buyukondalıklı = 1.5m; // double dan daha çok ondalıklıdır ve sonuna m yazılmalıdır.
        float onda = 4f; // sonuna f koyulmalıdır ve ondalıklıdır doubledan daha küçüktür.
        // var değişkeni : bir değişkeni var'a atarsak o değişken başta int ise o her zaman int olacaktır pythondaki gibi.
        var isim = "bu bir isim değişkenidir."; // bundan sonra isim her zaman string olarak algılanacaktır.
        // int isim = 7; isim string olarak var'dan kabul gördüğü için asla int değer alamaz.


        char karakter = '/'; // karakterler tutmak için kullanılmaktadır.
        string kısametin = "Mustafa Kemal Atatürk"; // kısa metin olarak kullanılmaktadır. Yani karakterler dizisidir.

        MessageBox.Show("sayı 1 = "+sayi1);

        /*Console.WriteLine(gunler.cumartesi); // enum bu şekilde yazdırılabilir.
        Console.ReadLine();*/


    }

    private void button2_Click(object sender, EventArgs e)
    {
        // koşullu durumlar : 
        // koşullu durumlarda içeride çoklu şart kullanılabilmektedir bir sayı hem 0 dan büyük hem 100 den küçükse ve 17>9 ise gibi koşullar kullanılablmektedir.
        // ayrıca iç içe for döngüsü kurulabildiği gibi iç içe if koşullarıda kullanılabilmektedir.

        var number = 10;
        if (number == 10){
            MessageBox.Show("sayı 10'a eşittir.");
        }
        else if (number==11)
        {
            MessageBox.Show("sayı 11'e eşittir.");
        }
        else
        {
            MessageBox.Show("sayı 10 değildir.");
        }
    }

    private void button3_Click(object sender, EventArgs e)
    {
        // if else yerine switch case blokları da kullanılmaktadır. switch case'lerde her seferinde break; ile çıkış yapılması gerekmektedir.
        var number1 = 17;
        switch (number1)
        {
            case 10:
                MessageBox.Show("sayı 10.");
                break;

            case 17:
                MessageBox.Show("sayı 17.");
                break;

            default: // default aslında if else if lerdeki else anlamına gelmektedir.
                break;
        }


    }

    private void button4_Click(object sender, EventArgs e)
    {
        add(); // methodu çaırmak için sadece ismini yazıp parante açmak yeterlidir. çağırılmayan method çalıştırılmaz ve derlenilmez.
    }

    public static void add() // normal bir method bu şekilde tanımlanmaktadır.
    {
        MessageBox.Show("added...");
    }

    private void button5_Click(object sender, EventArgs e)
    {
        toplama(7,8); // parametreli methodlarda methodu çağırırken içerisine verilerin girilmesi gerekmektedir bu şekilde.
    }

    public static void toplama(int a, int b) // parametre vermiş oluyoruz methodun içerisine.
    {
        MessageBox.Show("a ve b'nin toplamı = "+(a+b));
    }

    private void button6_Click(object sender, EventArgs e)
    {
        var dondu = dondurenmethod(78,22); // veriler parametre olarak girildikten sonra döndürüldüğü için öncelikle yazdırılması gerekmektedir.
        // yazdırılması için yazdrıma operatörü içeirisine atılması gerekiyor return den dönen methodun.
        MessageBox.Show(dondu.ToString());
    }

    // default number method : methodun içeriisnde ki veriye eğer bir sayı ataması yapılırsa parametre içerisinde veri girilmediği sürece bu sayı
    //kullanılmaktadır. Eğer sayı girilirse bu sayı saf dışı kalır. örneğin aşağıda y=47 değerini girmemiz gibi...
    public static int dondurenmethod(int x, int y=47) // void döndürmeyen method anlamına gelmektedir. eğer return kullanılacaksa bu sefer void yerine döndürüşecek
        // değerin veri tipi girilmesi gerekmektedir bknz: static string method() gibi...
    {
        return x + y; // return içeriisnde işlem yapılmaktadır ve methoddan döndürmektedir.
    }

    private void button7_Click(object sender, EventArgs e)
    {
        MessageBox.Show(multi(4,7).ToString()); // multi methodunun sonucu budur.
        MessageBox.Show(multi(1,8,9).ToString()); // overload edilmiş olan multi methodunun sonucu da budur.
    }

    static int multi(int a, int b) // bu  parametreli değer döndüren bnir method.
    {
        return a + b ;
    }

    static int multi(int a,int b,int c) // bu ise multi methodu'nun overload edilmiş bir methodudur. yani methodlarda aşırı yükleme anlamına gelen
        //method overloading yapmış oluyoruz bu sayede. aynı method ismi ile aynı veri tipleriyle sadece yeni bir veya birkaç parametre eklemiş olduk methoda.
    {
        return a + b + c;
    }

    // params keyword ile methodlarda işleri kolaylaştıracağız. params ile aslında bir dizi veriyoruz ve numbers bu sefer bir dizi oluyor. içerisine sınırsız sonsuz
    // değerler alabilen bir dizi oluyor numbers bu sayede.
    private void button8_Click(object sender, EventArgs e)
    {
        MessageBox.Show(paramsmethod(1,4,78,5645,78,956,5,4,7,8,6,2).ToString()); // herhangi bir değer sayısına gerek kalmadan sonsuza kadar değer girebiliyoruz bu sefer methodumuza params ile.
    }

    static int paramsmethod(params int[] numbers) // methodun içerisine ''params veri tipi[] değer_ismi'' olarak yazıyoruz.
    {
        return numbers.Sum(); // numbers içerisindeki tüm sayıları toplama fonksiyonu olan sum() fonksiyonunu kullandık burada. burda da numbers. olarak bir fonksiyon kullanmamız gerekiyor tabii ki.

    }

    private void button9_Click(object sender, EventArgs e)
    {
        diziler1(); // dizilerin anlatıldığı ilk methodu çağırdık.

    }

    static void diziler1()
    {

        string[] dizi = new string[5] {"Mareşal", "Gazi", "Mustafa", "Kemal", "Atatürk"}; //bu şekilde değer giriyorsak [parantezin içeriisne sayı girmemize gerek olmuyuor ekstra olarak. ]// diiziler bu şekilde tanımlanmaktadır. süslü parantez içerisine değerler girilebilir.
        //veya
        // dizi[0] = "Mustafa Kemal Atatürk" ; olarakta teker teker indisler girilebilmektedir.


         foreach (var diziindis in dizi) // foreach döngüsü ile dizi içerisindeki tüm değerleri teker teker yazdırabilmeketyiz bu şekilde.
        {
             MessageBox.Show(diziindis);
        }    
    }

    private void button10_Click(object sender, EventArgs e)
    {

        string[,] matris0 = new string[5, 3]
        {
            {"istanbul","bursa","kocaeli" },
            {"antalya","mersin","ısparta" },
            {"ankara","konya","sivas" },
            {"erzurum","kars","ardahan" },
            {"izmir","muğla","aydın" }
        };

        // ayrıca matris tanımlanırken farklı bir şekilde de tanımlanabilmektedir.
        string[,] mat = new string[2,3];
        // ekleme yaparken ise :
        mat[0, 0] = "alikper";
        mat[0, 1] = "islam"; // bu şekilde ekleme yapabiliriz matrisin içerisine.


        // matrisi iç içe for döngüsü yardımı ile bu şekilde yazdırabiliyoruz.
        for (int i=0; i<=matris0.GetUpperBound(0); i++)
        {
            for (int j=0; i<=matris0.GetUpperBound(1); j++ )
            {
                MessageBox.Show(matris0[i,j]);

            }
        }


    }

    private void button11_Click(object sender, EventArgs e)
    {
        listeler();
    }

    static void listeler()
    {

        List<int> liste = new List<int>(); // integer değerler alabilen bnir liste tanımlamış olduk bu sayede.
        List<string> liste2 = new List<string>(); //string bir liste tanımlamış olduk bu sayede...

        // liste içerisine eleman ekleme:

        liste.Add(17); // sınırız sayıda eleman eklebiliriz listenin içeriisne fakat veri tipi hep aynı olmak zorundadır. farklı veri tipleri ile liste çalışmaz ve derlenmez.
        liste.Add(19);
        MessageBox.Show(liste.IndexOf(17).ToString());  // mesela indexof fonksiyonu ile girilen verinin indexinin kaç olduğunu verebiliyor bize.
        liste2.Add("alikper");// string listemize eleman eklemiş olduk.


    }

    private void button12_Click(object sender, EventArgs e)
    {
        // for döngüsü :
        // 1'den 100'e kadarki sayıların yazdırılması işlemi yapalım :
        for (int i=1; i<=100;i++)
        {
            MessageBox.Show(i.ToString());

        }


    }

    private void button13_Click(object sender, EventArgs e)
    {

        // while döngüsü:
        // while döngüüs döngü doğru olduğu sürece dönmeye devam eder döngüsü false olduğu anda kırılır ve durur.
        // bundan dolayı while döngüsünün kırılmasını sağlayacak koşulları döngü içeriisnd egirmemiz gerekmektedir bunlar if elif ile de olabilir sadece bir tanımlama ile de olabilir.

        int sayi = 0;
        while (sayi<100)
        {
            MessageBox.Show(sayi.ToString());
            sayi += 10;
        }
    }

    private void button14_Click(object sender, EventArgs e)
    {
        // foreach döngüsü :
        // bu döngü dizileri ve stringleri yazdırmak için kullanılmaktadır.
        string[] isimler ={"ahmet","mehmet","ali","veli" }; // bir dizi yapalım.
        foreach (var isim in isimler) // diziyi yazdrımak için foreach içerisinde dizinin ismindne referans alarak for döngüleri içerisind ekullandığımız referans"i"
            // değeri kullanıyoruz örneğin isim gibi. indislerin hjepsi teker teker isim'e eşit olacak ve messagebox ile yazdıracağız tek tek. 
        {
            MessageBox.Show(isim);

        }

    }

    private void button15_Click(object sender, EventArgs e)
    {
        // String veri tipi 
        // string aslında karakterler dizisidir yani string kendi içinde bir array'dir.
        string city = "Bursa şehri çok güzel"; //  bir string bu şekilde tanımlanabilir.
        string sehir;
        sehir = "İstanbul"; //bu şekilde de tanımlanabilir.
        var city2 = "Ankara"; // bu şekildede tanımlanabilir.

        MessageBox.Show(city); // böyle yazdırırsak tüm kısa metni yazdırmış oluruz.
        MessageBox.Show(city[2].ToString()); // fakat stringler birer dizi olduğu için bu şekilde tek karakter olarakta yazdırabiliyoruz.

        // arrayleri nasıl ki foreach ile yazdırabiliyorsak stringleride aynı şekilde yazdırma hakkımız bulunmaktadır.
        foreach (var item in city)
        {
            MessageBox.Show(item.ToString()); // bu şekilde yazdrımış olduk foreach döngüsü ile.
        }

        /////////////// string veri tipi için kullanışlı olan methodlar ::

        MessageBox.Show(city.Length.ToString()); // city stringinin uzunluğunu vermektedir.

        var result = city.Clone(); // city stringini klonlamış olduk başka bir stringe.
        MessageBox.Show(result.ToString());

        var result0 = city.EndsWith("sa"); // sonu sa ile mi bitiyor ? sorusuna cevap verir. true false döndürür.
        MessageBox.Show(result0.ToString());

        var result1 = city.StartsWith("B");// başlangıçta B ile mi başlıyor? sorusuna cevap verir . true veya false döndürür.
        MessageBox.Show(result1.ToString());

        var result2 = city.IndexOf("s"); // s karakteri kaçıncı indextedir veya s karakteri le başlayan karakterler zinciri kaçıncı index ile başlamıştır 
        // eğer öyle değilse -1 değerini döndürmektedir.
        MessageBox.Show(result2.ToString());

        var result3 = city.LastIndexOf("a"); // indexof aramaya baştan başlarken, lastindexof aramaya sondan başlamaktadır.
        MessageBox.Show(result3.ToString());

        var result4 = city.Insert(0,"hello, "); // metnin içerisine ekleme yapmak için kullanılmaktadır. 0. indise hello, yazdır dedik burda.
        MessageBox.Show(result4.ToString());

        /////////// ----------------------------- altta bulunan 2 method çok çok işe yarıyor ÖNEMLİ  !!!

        var result5 = city.ToLower(); // city stringinde ki tüm karakterleri küçültmeye yarar harfleri.
        MessageBox.Show(result5.ToString());

        var result6 = city.ToUpper(); // city stringinde ki tüm karakterleri büyültmeye yarar harfleri.
        MessageBox.Show(result6.ToString());

        var result7 = city.Replace("","-"); //.replace(); fonksiyonu bir karakter yerine başka karakterin kullanılmasını sağlar tüm hepsini değiştirir kaç tane bulunursa.
        MessageBox.Show(result7.ToString());

        var result8 = city.Remove(2); // 2. indisten sonrakilerin hepsini silmeye yarar. ,sayı koyarsak eger remove(2,3) n den sonra 3 kartakter sil demektir.
        MessageBox.Show(result8.ToString());


    }

    private void button16_Click(object sender, EventArgs e)
    {

    }
}



class müsteriislemleri // class tanımlama bu şekilde yapılmaktadır.
{

    public void ekle() // class içerisine bir adet method tanımlaldık.
    {
        MessageBox.Show("ekleme işlemi yapıldı...");
    }

}





enum gunler // enum aslında stringler ile yapılacak işlemleri daha kolay ve daha derli toplu bir biçimde yapmamıza olanak sağlar.
{
    pazartesi, salı, çarşamba, perşembe, cuma, cumartesi, pazar
}

}