2 Nisan 2013 Salı

59 - Goto... Pin Kodu Kontrolü



Aşağıdaki örneğimiz Goto ile farklı yerlere dallandığımız algoritması değişik olan bir program... Amacımız 3 hak vererek pin kodunun doğru girilmesini sağlamak... Pin kodu olarak 1234 ü belirledik... Random komutu kullanılarak farklı pin kodları verilebilir tabiiki...

Programın başında öncelikle pin kodunu girdiriyoruz... Ama hemen arkasından yanlış girişi mesajını da verdiriyoruz... Bu kısma tabiki kullanıcı yanlış girişi yaparsa gelinmesi lazım... Onun için bu satırı başlangıçta bir goto komutu kullanılarak atlatıyoruz... xyz etiketli goto komutunun amacı sadece programın ilk girişinde kullanıcıya hata mesajı verdirmemektir...

Pin kodunu bir if ile kontrol ettiriyoruz... Eğer kullanıcı yanlış girerse zaten başta hesapladığımız gibi giris etiketinin olduğu komut satırına geri gönderiyoruz... Tabii bunu yapmadan önce 3 hakkından bir tanesini indiriyoruz... Ama doğru girerse Pin kodu doğru deyip programı bitiriyoruz... Fark ettiyseniz pin kodunu doğru girdikten sonra aşağıda bir sürü kod satırı olmasına rağmen hiçbiri programın bitişine engel oluşturmuyor... 

Peki ya haklar dolarsa... Sonuçta sadece 3 hakkı var kullanıcının... Bu durumda da yine mesajı verdirip programı bitiriyoruz... 

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

namespace ConsoleApplication4
{
    class Program
    {
        static void Main(string[] args)
        {
            int hak = 3; // Pin kodu için 3 giriş hakkı veriyoruz... 
            Console.WriteLine("Pin kodunu giriniz =");
            goto xyz; // Aşağıdaki kodlar sadece yanlış olduğunda çalışabilmesi için burayı atlıyoruz... 
        giris:
            Console.WriteLine("Yanlış giriş. Tekrar giriniz.");
            xyz: // Yanlış kısmını atlayarak devam ediyoruz... 
            string x = Console.ReadLine();

            if (x == "1234") //Girilen pin kodu doğru ise mesajı verdirip programı bitiriyoruz... 
            {
                Console.WriteLine("Pin kodu doğru.");
                Console.ReadKey();
            }
            else
                { // Doğru değilse haklarından bir tanesini indiriyoruz... 
                hak = hak - 1;
                if (hak == 0)
                {
                    // Haklar bittiğinde programı bitiriyoruz... 
                    Console.WriteLine("3 kere yanlış girildi. Çıkış için Enter'e basınız.");
                    Console.ReadKey();
                }
                else // Haklar bitmedi ise giris etiketine geri dönderiyoruz... 
                    goto giris;
                }
        }
    }
}