İlginizi Çekebilir
  1. Ana Sayfa
  2. C Sharp

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

C# GoTo Nasıl Kullanılır?
C# GoTo Nasıl Kullanılır
+ - 14

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. :D 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. :D  

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. :D 

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. :D

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 :D )

        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. :D

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. Derslerime özel olarak hazırladığım Github Projeme buradan ulaşabilirsiniz…

Sağlıcakla ve takipte kalın. ;)

Bu yazıya tepkiniz ne oldu?

Yazar Hakkında

Lise Ağ Sistemleri ve Yönetimi bölümü, üniversite Bilgisayar Programcılığı bölümü Ön Lisans, Yönetim Bilişim Sistemleri Lisans öğrenimi aldım. Askerlik görevimi tamamladım. Uzmanlık alanım; C# ve SQL Programlama dilleri ile müşteri odaklı, kullanıcı dostu ERP ve CRM gibi sistemleri geliştirmektir. Ayrıca şuanda PHP ve MYSQL alanında projeler geliştirmekteyim. C++, Phyton, Xamarin, MVC gibi konuları öğrenmek ve kendimi geliştirme çabası içerisindeyim. Discord için: https://discord.gg/FBxZeHu9

Değerli yorumlarınızı bekliyorum. :)

Yorumlar (14)

Popüler Yorumlar
  1. Having read this I believed it was extremely informative.
    I appreciate you finding the time and effort to put this
    short article together. I once again find myself spending way too much
    time both reading and leaving comments. But so what, it was still worthwhile!

  2. Hello, Thanks for comment. :)
    I’m buy this theme. You can see follow this link.

  3. 3 sene önce

    I love your blog.. very nice colors & theme. Did you create this website yourself or did you hire someone to do it for you?
    Plz answer back as I’m looking to design my own blog
    and would like to find out where u got this from.
    many thanks

  4. It is the best time to make some plans for the future and it
    is time to be happy. I’ve read this post and if I could I desire to suggest you few interesting things
    or advice. Perhaps you can write next articles referring to this article.
    I want to read more things about it!

  5. Great blog! I ran across it although surfing around upon Yahoo Analyses. Many thanks

  6. Good day very nice blog!! Man .. Beautiful .. Amazing ..
    I’ll bookmark your blog and take the feeds additionally?
    I am satisfied to find so many helpful information right
    here within the post, we’d like develop extra techniques on this regard,
    thank you for sharing. . . . . .

  7. I couldn’t resist commenting. Very well written!

  8. Wow, awesome weblog structure! How long have you been running a blog for?
    you make running a blog look easy. The entire glance
    of your site is magnificent, let alone the content!

  9. Thanks for your nice comment.

  10. 2 sene önce

    I am really inspired with your writing abilities and also with the layout in your blog.
    Is that this a paid subject or did you customize it your self?
    Either way stay up the excellent quality writing,
    it is uncommon to see a nice weblog like this one today..

Yapılan Yorumlar
  1. Having read this I believed it was extremely informative.
    I appreciate you finding the time and effort to put this
    short article together. I once again find myself spending way too much
    time both reading and leaving comments. But so what, it was still worthwhile!

  2. It is the best time to make some plans for the future and it
    is time to be happy. I’ve read this post and if I could I desire to suggest you few interesting things
    or advice. Perhaps you can write next articles referring to this article.
    I want to read more things about it!

  3. 3 sene önce

    I love your blog.. very nice colors & theme. Did you create this website yourself or did you hire someone to do it for you?
    Plz answer back as I’m looking to design my own blog
    and would like to find out where u got this from.
    many thanks

  4. Great blog! I ran across it although surfing around upon Yahoo Analyses. Many thanks

  5. Good day very nice blog!! Man .. Beautiful .. Amazing ..
    I’ll bookmark your blog and take the feeds additionally?
    I am satisfied to find so many helpful information right
    here within the post, we’d like develop extra techniques on this regard,
    thank you for sharing. . . . . .

  6. Wow, awesome weblog structure! How long have you been running a blog for?
    you make running a blog look easy. The entire glance
    of your site is magnificent, let alone the content!

  7. I couldn’t resist commenting. Very well written!

  8. 2 sene önce

    I am really inspired with your writing abilities and also with the layout in your blog.
    Is that this a paid subject or did you customize it your self?
    Either way stay up the excellent quality writing,
    it is uncommon to see a nice weblog like this one today..

  9. It is really a great and useful piece of information. I am satisfied that you simply shared this useful info with us.

    Please keep us up to date like this. Thank you for sharing.

  10. Nice post.
    I was checking constantly this weblog and I’m inspired!
    Extremely helpful information specially the ultimate section :) I deal
    with such information much. I was looking for this particular info for a
    long time.
    Thank you and good luck.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.