2 Nisan 2013 Salı

56 - Goto Komutu... Mevsimler Örneği...


Goto komutu dallanma komutudur... Normalde C# programında satırlar sıralı olarak çalıştırılır... Ama bazı yerlerde geri veya ileri dallanarak programın akışı değiştirilmelidir... Bunu etiketler ile yaparız... Goto komutu kendisinden sonra gelen etiketi bütün programda arar ve programı o satırdan itibaren devam ettirir... Tek sıkıntı doğru yerde kullanılmadığı takdirde program çıkmaza girebilir... 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication7
{
    class Program
    {
        static void Main(string[] args)
        {
        tekrar: // Program bir hata ile karşılaştığında veya tekrar girilmek istendiğinde döneceği yer bu etikettir...
            Console.Clear(); // Ekranı temizliyoruz... 
            Console.Write("Seçtiğiniz Ayı Giriniz...:"); // Ayı 1-12 arası sayı olarak gireceğiz...
            int ay = int.Parse(Console.ReadLine());

            // Aya göre mevsimleri buluyoruz... 
            if (ay <= 12 && ay >= 1)
            {
                if (ay >= 3 && ay <= 5)
                    Console.WriteLine("İLKBAHAR...");
                else if (ay >= 6 && ay <= 8)
                    Console.WriteLine("YAZ...");
                else if (ay <= 9 && ay >= 11)
                    Console.WriteLine("SONBAHAR...");
                else if (ay == 12 || ay == 1 || ay == 2)
                    Console.WriteLine("KIŞ...");
            }
            else
            {
                // Hata varsa tekrar etiketine geri dönderiyoruz... 
                Console.WriteLine("HATA... Tekrar Giriş Yapın...");
                goto tekrar;
            }

            // Eğer yeni bir ay girerek devam etmek istenilirse E veya e girilerek devam ettiriyoruz... 
            Console.Write("Yeni Bir Değer Girmek İstermisiniz...(E/H)");
            string sec = Console.ReadLine();
            if (sec == "E" || sec == "e")
                goto tekrar; // Bu satır ile beraber program tekrar etiketine geri dönüyor... 

            Console.ReadKey();
        }
    }
}