Etiketler

3 Haziran 2014 Salı

C# Kullanıcıdan Girdi Almak

Herkese merhaba! Bu yazımda sizlerle c# kullanarak - konsol programlamayla - kullanıcıdan girdi alacağız. Kısaca kullanıcıdan ismini, cinsiyetini ve sisteme giriş yapabilmesi için şifresini isteyeceğiz. Zaten oldukça basit bir şey programlayacağız, yinede her satırı elimden geldiğince en iyi şekilde açıklayacağım.


using System;

namespace uygulamamiz
{
    class Program
    {
        static void Main()
        {
            string isim, cinsiyet;
            int sifre;
            do
            {
                Console.WriteLine("Isminiz?: ");
                isim = Console.ReadLine();

                Console.WriteLine("Cinsiyetiniz: e/k");
                cinsiyet = Console.ReadLine();
                if (cinsiyet == "e")
                    cinsiyet = "bey";
                if (cinsiyet == "k")
                    cinsiyet = "hanim";
                Console.WriteLine("merhaba {0} {1}sifrenizi 
                                  giriniz.", isim, cinsiyet 
                                  + " programa hosgeldiniz");
                sifre = Convert.ToInt16(Console.ReadLine());
            } while (sifre != 123);
            Console.WriteLine("Sisteme giris yaptiniz.");
            Console.ReadLine();
        }
    }
}

Kodumuz kısaca yukarıdaki gibidir.:) Öncelikle isim, cinsiyet ve sifre olmak üzere üç adet değişken tanımlıyoruz. Ardından programımız do-while döngüsüne giriyor.Birazcık bundan bahsetmem gerekirse


do - while döngüsü

Öncelikle bu döngüyü daha rahat anlayabilmek için bu anahtar kelimelerimizi Türkçeye çevirerek düşünebiliriz. Do = Yap, While = İken(bkz. Tencere doluyken) Şimdi daha önceden biliyorsanız while döngüsü ile do-while döngüsünü kıyaslamak gerekirse, while da ilk başta bir şart vardır yani 
while(sınavı geçtiyse) ekrana "oğluma her yıl ekran kartı alıcam" yazdır; Görüldüğü gibi while döngüsünün içine girilmesi için illaki şartın gerçekleşmesi gerekiyor ancak do-while da durum farklı. Kısaca yine örneklendirmek gerekirse. Ne olursa olsun..
do{ ekrana "oğluma her yıl ekran kartı alıcam" yazdır; } while(sınavda başarısız olursa daha almam);
Yukarıda açıkladığım iki örnekle durumun gayet net anlaşılacağını düşünüyorum.

do-while döngümüzü anladığımıza göre kodu incelemeye devam edelim. do anahtar kelimesiyle birlikte döngünün içine girmiş bulunduk. Sonrasında ekrana Isminiz? yazdırdık. Bir alt satırda ise isim = Console.ReadLine(); karşılaşıyoruz.Peki bunu açıklamadan önce açıklamak istediğim programlamada noktasal syntax diye birşey var hadi biraz bundan bahsedelim.

dot syntax -nokta kuralı-

Peki bu programlamada nokta kuralı dediğimiz şey nedir ve neden size açıklamaya çalışıyorum? Çünkü isim = Console.ReadLine(); satırında nokta kuralını kullandık ve aslında çok basit bir şey olduğu için değinmeden geçmek istemedim. Şimdi hiç programlama düşünmeyelim, bunun yerine hayatımızı düşünelim.

Evren.Dünya.Türkiye.Ankara.Meclis.Meclisin_icindeki_dolap


Yukarıda sanırım noktalama kuralımız gayet açık gözüküyor. Kısaca büyük olan ve büyük olup diğerini içinde barındıran şey sol tarafa yazılıyor ve gittikçe küçülüyor.

Bu yapımızıda anladıktan sonra kodumuzu açıklamaya devam edelim. Programlamada eşittir işareti konduğu zaman sol taraftaki değişkenimiz, eşittirden sonraki yani sağ taraftaki değişkenimize eşit oluyor. Yani x=sekiz dediğimiz zaman x değişkenimiz sekize eşit olmuş oluyor ve ekrana x 'i yazdırırsak ekrana sekiz yazıldığını görürsünüz.
isim = Console.ReadLine();satırımızda isim değişkenimiz kullanıcıdan girdi alacak fonksiyonumuza eşit oluyor. Yani isim değişkenimiz bizim yazdığımıza göre değişiyor.
Hemen altındaki satır Console.WriteLine("Cinsiyetiniz: e/k"); bize cinsiyetimizi soruyor. Burada eğer "e" ' ye veya "k" ya hangisine bastıysak, hangi bilgiyi girdiysek hemen altındaki if komutlarımız işliyor. Yani bunuda programlama bilmeden düşünmemiz gerekirse if in anlamı Türkçe eğer demek. if(sınavı kazanırise) şunlar olsun; gibi düşünebiliriz. Bizim kullandığımız if lerde ise kullanıcıdan aldığımız bilgiye bakıyoruz. Eğer kullanıcı "e" ye bastıyca değikenimiz cinsiyet = erkek aksi halde hanim.

Daha sonraki satıırımız ise biraz ilginç bir satır.
Console.WriteLine("merhaba {0} {1}sifrenizi giriniz.", isim, cinsiyet + " programa hosgeldiniz");
Burada biraz değişik bir şeyler olduğunu fark etmişsinizdir .:) İlk olarak küme parantezlerinin içinde sıfır ve bir var bunların anlamını virgülden sonraki kısımlara bakarak anlayabilirsiniz. Zaten renklerini değiştirip bold yaptım. Kısaca sıfır, isim değikenine.Bir ise cinsiyet değişkenine denk gelmektedir. Ancak dikkatinizi çeken başka bir şey oldu mu? Hadi kafamızda canlandıralım ekrana yazdırılacak yazıyı. merhaba berkay bey şifrenizi giriniz programa hoşgeldiniz böyle mi? Hayırr!
Öncelikle merhaba berkay bey yazdırıyor ancak ardından dikkat ederseniz değişkenlerden sonra derleyicimiz dümdüz okumaya devam edeceği için programa hoşgeldiniz yazısını okuyor, en son şifrenizi giriniz yazıyor.
Sonraki satırda ise yine daha önceden yaptığımız gibi kullanıcıdan bilgi alacağız ancak bu sefer farklı bilgi alacağız. Daha önceden yazı(string) olarak bilgi alıyorduk. Bu sefer tam sayı tipinde(integer) olarak alacağız(çünkü şifreyi 123 olarak ayarladım).Yazı tipindeki bilgileri C# console.readline() yazdığımız zaman alabiliyor ancak tam sayı tipini bu şekilde almıyor. Yani tipi int ' e dönüştüreceğiz. İngilizce dönüştür demek convert, daha öncedende noktalama kuralını anlatmıştım. Yani convert in içinde çeşitli değişken türleri var. Biz bir tam sayı olmasını istiyoruz öyleyse Convert.ToInt yazıyoruz.(16 bit)
Daha sonraki satırımız ise bir while döngüsü zaten bu do-while ın while 'ı.Bu while (sifre != 123); şu demek.Ne zamanki sifre değişkeni 123 'e eşit değil o zaman tekrardan şifre iste.Taa ki doğruyu buluncaya kadar. Doğruyu bulduğu zaman ise döngüden tamamen çıkmış olur.
Döngüden çıktığı zaman ise bizi bir yazı karşılar.Sisteme giriş yaptınız. En sondaki readline 'ı güvenlik olarak koydum yani program kapanmasın bizi beklesin diye. Eğer bir şey yazıp enter 'a basarsanız program kapanır.