C# GoTo Nasıl Kullanılır?

C# GoTo Nasıl Kullanılır?

7 Şubat 2018 0 Yazar: Mustafa BÜKÜLMEZ
Toplam Görüntülenme : 174
Yaklaşık okuma süresi : 12 DK
C Sharp Nedir? C Sharp İle Neler Yapılabilir?
C# OpenFileDialog Nasıl Kullanılır?
C# GoTo Nasıl Kullanılır?
5 (100%) 1 Oy

C# GoTo Nasıl Kullanılır? dersimiz ile C# eğitimimize devam ediyoruz. C sharp goto komutu bir nevi döngü oluşturmamızı sağlar. Metodlar içerisinde bir etiket belirleriz. İşler istediğimiz gibi gitmezse kodları belirlediğimiz etiketten yeniden çalıştırırız. Yada bir for döngüsü gibi istediğimiz şart sağlanana kadar kendimize özgü bir döngü kurabiliriz. Daha iyi anlayabilmeniz için nasıl kullanacağımızı göstereyim.

C# hakkındaki diğer derslerim için tıklayabilirsiniz.

C Sharp GoTo Nasıl Kullanılır?

Goto kullanabilmemiz için metod içerisinde bir etiket tanımlamamız gerekiyor. Etiket tanımlama işlemini ise ( : ) iki nokta ile yapıyoruz.

c# go to kullanımı

C Sharp goto ile küçük bir sayı bulma oyunu yapalım. 🙂 Textbox’a girilen sayı sıfır ise doğru kabul edelim ve mesaj gösterip formu kapatalım.

        int GirilenSayi = 0;
        private void button1_Click(object sender, EventArgs e)
        {
            int Sayac = 0, Deneme = 0;
            GirilenSayi = Convert.ToInt16(textBox1.Text);
            Deneme++;

            Etiket:

            Sayac++;
            if (Sayac == Deneme)
            {
                if (GirilenSayi == 0)
                {
                    MessageBox.Show("Bildiniz");
                    Close();
                }
                else
                {
                    textBox1.Text = "";
                    MessageBox.Show("Yanlış");
                    goto Etiket;
                }
            }
        }

İşin aslı ilk yazdığım şekilde sonsuz döngüye girdiğinden kodları biraz değiştirdim ve bu hale geldi. 😀 Bu şekilde bir işlem muhtemelen olmayacağından saçma da olsa örnek olması amacı çalışır hale getirdim. Yazdığım kodları biraz açıklayayım.

Dediğim gibi kodların sonsuz döngüye girmesi yüzünden bu döngüyü kırmaz amacıyla Sayaç ve Deneme değişkenlerini de tanımladım.

Sayı yazılıp butona tıklandığında iki int değişken tanımlıyoruz. GirilenSayi değişkenine de textbox’a yazılan değeri alıyoruz. Deneme değişkenini butona tıklanma sayısı olarak düşünebilirsiniz. Gerçi bu örnekte bir hükmü yok sadece döngüyü kırmak için. Etiketimizi de tanımladıktan sonra sayaç değişkenimizi bir arttırıyoruz. Eğer sayaç değişkeni Deneme değişkenine eşit ise girilen sayının istediğimiz sayı olup olmadığını kontrol ediyoruz. Doğru değilse else bloğuna iniyor ve yanlış diye mesaj çıkartıp goto ile “Etiket” adlı etiketimize giderek altındaki kodlar tekrar işletiliyor. Burada  sayaç ve deneme değişkenleri aynı olmadığı için döngü kırılıyor. Buraya bu kontrolü koymasaydık sonsuz döngüye girecekti.

Saçma olduğu için bu örneği hiç yazmayacaktım ama hem istedikten sonra bir şekilde istediğimizi elde edebileceğimizi hemde “her zaman daha kısa yolu vardır” anlayışını göstermek için çalıştırıp yazmak istedim. Aşağıdaki örneğimiz de, ilk örneğimizde yapmak için uğraştığımız şeyin aynısını yapmaktadır. 😀  

Ayrıca Yazılıma Başlamak Mı İstiyorsunuz? Görmeniz Lazım! başlıklı yazıma da gönderme yapmak istedim. Bu yazımda yaşadığım bu durumdan linkeki yazımda uzun uzun bahsetmiştim. 😀 

C Sharp goto komutumuzu switch case içerisinde de kullanabiliriz.

            switch (GirilenSayi)
            {
                case 0:
                    MessageBox.Show("Cevabı Bildiniz");
                    Close();
                    break;
                case 1:
                    goto case 5;
                case 2:
                    goto case 5;
                case 3:
                    goto case 5;
                case 4:
                    goto case 5;
                case 5:
                    MessageBox.Show("Yanlış");
                    break;

 

Şimdi daha mantıklı bir örnek yapalım. 😀

Senaryomuz şöyle olsun. Uzun bir listemiz var diyelim. Bu listemizde aradığımız veri var mı? yok mu? onu kontrol edelim. Varsa A işlemini yapıp “Arama tamamlandı” mesajı verelim. Yoksa da “Aradığınız değer bulunmadı” mesajı gösterip ardına da “Arama Tamamlandı.” mesajı gösterelim. Kodlarım tüm açıklamalarını kod satırları arasında yazdım. ( Bulabildiğim en mantıklı örnek 😀 )

        List<int> IntList = new List<int>();
        // Listemizi tanımladık

        private void Form1_Load(object sender, EventArgs e)
        {
            Random rnd = new Random();
            // Random Sayı üretiyoruz
            for (int i = 0; i < 500; i++)
            {
                //0 ile 1000 arasında Random sayı üretip 500 tanesini de listeye alıyoruz
                IntList.Add(rnd.Next(0, 1000));
                // NOT: Aynı sayılar birden fazla olabilir. Örn 10 tane 123 olabilir.
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            // Listemizi taramaya başlıyoruz.
            for (int i = 0; i < IntList.Count; i++)
            {
                // IndexOf Metodu ile aradığımız değerin index'ini alıyoruz. 
                // Aradğımız değer eğer listede varsa index'i sıfırdan büyük olacaktır.
                if (IntList.IndexOf(Convert.ToInt32(textBox1.Text)) > 0)
                {
                    // Aradığımız değer listede varsa Islem_A etiketine gidecek
                    goto Islem_A;
                }
            }
            // Aradığımız değer listede yoksa buradan devam edecek.
            MessageBox.Show("Aradığınız Değer Bulunamadı.");
            // Aradığımız değer listede yoksa Tamamla etiketine gidecek
            goto Tamamla;
            // NOT: Tamamla etiketini koymasaydık yine de  A_Adli_Islem(); metodumuz işletilecekti.
            //  A_Adli_Islem(); metod işletilmesin diye metodun altındaki bir satıra gönderdik.

            Islem_A:
            // Aradığımız değer listede varsa buradan devam edecek.
            A_Adli_Islem();

            // Aradığımız değer listede yoksa buradan devam edecek.
            Tamamla:
            MessageBox.Show("Arama Tamamlandı");

        }

        void A_Adli_Islem()
        {
            MessageBox.Show("A işlemi çalıştı");
            // işlemler
        }

C# List<T> hakkındaki yazım için tıklayınız.

C# Random Metodu hakkındaki yazım için tıklayınız.

Microsoft’un sitesinden bulabildiğim bu son örneğe buradan ulaşabilirsiniz. Tabi ki birebir aynısı değildir. Kendime göre değiştirip yani WinForm Application olarak değiştirip çalıştırdım. 😉 Örnekte Console Application olarak verilmiş.

Ayrıca bu böyle bir örnek olsun. 😀

c-looping-basic

C# hakkındaki diğer derslerim için tıklayabilirsiniz.

C# GoTo Nasıl Kullanılır? dersimizde bu kadar dostlar. Diğer derslerimizde görüşmek üzere.

Sağlıcakla ve takipte kalın. 😉

Liseden, Ağ Sistemleri ve Yönetimi bölümünden mezun oldum. Üniversiteden (2 yıllık), Bilgisayar Programcılığı bölümünden mezun oldum. Şuanda da AÖF, Yönetim Bilişim Sistemleri bölümünde okumaktayım.

Uzmanlık alanlarım; Windows Sistemleri, HTML, CSS, C# ve SQL’dir.

Hobi olarak uğraştığım genel konular, Photoshop, After Affects, Corel Draw’dır.Film, YABANCI dizi, Anime izlemeyi ve Manga okumayı severim. Arkadaşlarımla yürüyüş yapmayı ve grup olarak aktivitelere gitmeyi severim. Geri kalan zamanlarımın tümü bilgisayar karşısında geçer.

C Sharp Nedir? C Sharp İle Neler Yapılabilir?
C# OpenFileDialog Nasıl Kullanılır?