C# Kontrol Yapıları - Ders / 2 ~ #HeRTeS // #StajyerAsistanKulübü#

HeRTeS

Uzman üye
8 Eyl 2016
1,860
2
Mars
Evet geçen dersimizde sizlerle C# nedir ve nasıl değişken tanımlanır gibi belli başlı kavramları, türleri öğrenmiştik. Bugün ki dersimizde konumuz Giriş - ve çıkış işlemleridir. Kullanıcının bize verdiği değerler ile çeşitli işlemler yapmayı deneyeceğiz.

Öncelikle kullanıcımız ismini ve yaşını girsin programımızda ona verdiği isim hile hitap ederek merhaba desin. Hemen denemeye başlayalım :)



Öncelikle kullanıcıdan aldığımız ismini hafızada tutacağımız bir değişken tanımlıyoruz. Bu değişken sayesinde istediğimiz zaman bize verdiği bilgileri karşısına çıkarabiliriz. :)

Kod:
[CENTER]string ad ;[/CENTER]

Kullanıcının yaşını almak için bir de yaş değişkeni tanımlıyoruz.

Kod:
[CENTER]string yas;[/CENTER]

Bu yas değişkenini int tipinde yapmalıydık? diye sormanız gayet normal fakat string olarak tanımlayabiliriz. Çünkü bu yaş değişkeni ile aritmetik bir işlem yapmayacağız. Sadece bir depo açacağız ve yaşını burada bekleteceğiz. Yaşı ile bir işlem yapmadığımızdan dolayı string tanımlayabiliriz.

Kod:
[CENTER]Console.WriteLine("İsmini Giriniz:");[/CENTER]

9Q8yM9.png

vPzjYp.png

Bu kodumuz ile kullanıcımıza uyarı göndererek ismini vermesini istiyoruz.

Kod:
[CENTER]ad = Console.ReadLine();[/CENTER]

Console.ReadLine(); komutu kullanıcıdan değer alma veya çıktı alma komutudur. Bu komut sayesinde ismini giriniz yazısı çıktından sonra bastığı tuşları kaydeder. Yani ismini girmiş olacaktır. Ve en önemli husus soldaki değeri sağa atıyoruz. ad değişkeni başta olmalıdır. ad değişkenine kullanıcıdan aldığımız değeri atamak istediğimiz için bu şekilde olacaktır.

Kod:
[CENTER]Console.WriteLine("Yaşınızı Giriniz:");[/CENTER]

9Q8yM9.png

1EPJnb.png

Kullanıcının ekranına yaşını girmesini isteyen bir komut gönderiyoruz.

9Q8yM9.png

PD3lvb.png


Kod:
[CENTER]yas = Console.ReadLine();[/CENTER]

Kullanıcının girdiği değeri yas değişkenine atıyoruz.

NOT: Arkadaşlar burada önemli bir nokta aklıma geldi. Bilgilendirme yapma gereği duydum. Öncelikle programa girişte tanımladığınız yas değişkeni ile sonradan değişkenlerin isimleri aynı olmalıdır. Aksi taktirde hata verecektir. Çünkü biz üste yas adında bir değişken açmıştık. Bunu yas1 olarak yapsa idik yas1 değişkenini bulamadığı için hata verecekti.

Konumuza geri dönelim.


Kod:
[CENTER]Console.Clear();[/CENTER]

Bu komut ile ekranımızı temizliyoruz. Bir nevi cam sileceği gibidir :)

Evet arkadaşlar işin özüne gelelim. Şimdi üsten kullanıcıdan aldığımız değerleri kullanıcıya gösterme vakti. Bunu nasıl yapacağız?

Öncelikle bunu yapmak için Console.WriteLine(); komutunu kesinlikle kullanacağız. Çünkü kullanıcının bize verdiği değerleri ekrana yazdırmak istiyoruz.

Console.WriteLine(); yaptık peki ya sonra?

Kullanıcının verdikleri değerlerinin hepsini bir değişkene atadığımız için gönlümüz rahat olsun. Bu değişkenlerdeki verileri çekerek kullanıcıyı bilgilendireceğiz.

Kod:
[CENTER]Console.WriteLine("Hoşgeldiniz + " " " +  ad);[/CENTER]

9Q8yM9.png

BzXLRG.png

Çift Tırnak ("") atarak string türünde yani karakter olarak ekrana yazdırma imkanı verir. Araya bir + işareti ile çift tırnak ekleyerek alanın daha düzgün görünmesini sağlıyoruz. ve ayrıca ad değişkenini direkt + ile bağlayarak ad değişkeninin içindeki değerin ekranda Hoşgeldiniz ile birlikte gözükmesini sağladık.



Try-Catch-Finally​
qbLzAq.png

Evet arkadaşlar sıradaki bir diğer konumuz ise blok konusudur. Bu blok kodlamasında oluşabilecek hataları ve çıkabilecek olumsuz durumlara yer vermemek için erkenden tedbir almak ve kullanıcıyı sıkmamak için çalışmalardır.

Hata oluşma riski olan kod satırları try bloğunun içine yazılır. Eğer try bloğunun içinde bir hata oluşur ise Catch bloğuna direkt geçer. Çünkü program adım adım çalışır.


Yazdığımız programda hata oluşmasını hiç birimiz istemez. Bu yüzden bu blok kullanılır. Kullanıcının memnuniyetini düşünülerek yazdığımız programda bu kodu kullanmak programımızın kullanılabilirlik ilkesini ve kullanıcı dostu olması olarak bir adım önde başlar.

try{}: Hatanın çıkmasının tahmin edildiği ve yüksek olasılık bulunan kod bloğudur.

catch{}: Oluşan hatanın debugger tarafından bulunup, tespit edilip kullanıcının bilgilendirilmesi bloğudur.

finally{}: Genellikle isteğe bağlı olarak eklenir. Try bloğunun içinde hata olsun veya olmasın yine de çalışan kod bloklarıdır.

Kod:
double x, y;
            Console.Write("1. Sayıyı Giriniz: ");
            x = Convert.ToInt16(Console.ReadLine());
            Console.Write("2. Sayıyı Giriniz: ");
            y = Convert.ToInt16(Console.ReadLine());
            Console.Clear();

            try
            {
                Console.WriteLine("Toplam = {0} + {1} = {2}", x, y, x + y);
                Console.WriteLine("Farkı = {0} - {1} = {2}", x, y, x - y);
                Console.WriteLine("Çarpım = {0} * {1} = {2}", x, y, x * y);
                Console.WriteLine("Bölüm = {0} / {1} = {2}", x, y, x / y);
            }
            catch (
            Exception hata)
            {
                Console.WriteLine("Hata Oluştu : {0}", hata);
            }
            finally
            {
                Console.WriteLine("TurkHackTeam & Stajyer # HeRTeS");
            }
                Console.ReadKey();



9Q8yM9.png

nlPlma.png





Kontrol Deyimleri
qbLzAq.png

Kontrol deyimleri adı üstünde bir olayı kontrol ve olasılıkları hesaplamamıza yardımcı olur. Çeşitli olasılıkları veya ihtimaller baz alınarak olaylara farklı bakış açılarıyla cevap verilir. Mantığı "Eğer" üzerine kuruludur.

If Else Deyimi
Switch-Case Deyimi


olarak ikiye ayrılır.

İf - Else Yapısı
qbLzAq.png


Öncelikle sizlere İf-Else yapısından bahsetmek isterim. İf İngilizceden de aşina olduğunuz bir kelimedir. Eğer anlamına gelir. Bir veya birden fazla durum için koşul ve öneri sunmak içindir.

Bunları örneklerle daha iyi anlayacağınızı düşünüyorum.

Şimdi arkadaşlar kullanıcıdan aldığımız verilere göre kullanıcının yaşını, cinsiyetini ve askere gidip gidemeyeceğini konu alan bir program yazalım.

Hep birlikte inceleyelim.

9Q8yM9.png

DDXDm3.png


Kullanıcıdan bir değer aldık ve değişkenlere atadık.

Öncelikle ilk koşulumuz kişinin askere gidebilmesi için 20 veya 20 yaşında büyük olması bunun için if yazıp iki kere TAB tuşuna bastıktan sonra otomatik karar yapısı oluşturur. Bu yapıyı biraz daha geliştirecek olur isek yani cinsiyete göre seçim yapalım.


Cinsiyetine göre askere gidip gidemeyeceğine karar verelim. Ve yaşı 20'den küçük ise askere kaç yıl kaldığını bulalım.

Aşağıdaki videodan detaylı anlatımları izleyebilirsiniz.

Switch-Case Deyimi​
qbLzAq.png

Bu yapı daha çok olasılıklı yapılarda kullanılır. Aynı durumla İf-Else yapıları ile de yapılır fakat çok karışıklık gösterdiğinden daha çok bu yapı kullanılır.

Klavyeden girilen sayılara göre haftanın günlerini belirleyen bir program yazalım.

Kod:
int gun; // Gün Değişkeni tanımlıyoruz
            Console.WriteLine("Sayı Giriniz: (1-7)"); // Kullanıcıya uyarı veriyoruz.
            gun = Convert.ToInt16(Console.ReadLine()); // Kullanıcının verdiği değeri atıyoruz.


            switch (gun) // Kontrol yapısı açıyoruz
            {

                case 1 :
                    Console.WriteLine("Pazartesi"); // Eğer gün 1 ise Pazartesi yaz.
                    break;

                case 2:

                    Console.WriteLine("Salı"); // Eğer gün 2 ise Salı yaz.
                    break;

                case 3 :

                    Console.WriteLine("Çarşamba"); // Eğer gün 3 ise Çarşamba yaz.
                    break;

                case 4 :
                    Console.WriteLine("Perşembe"); // Eğer gün 4 ise Perşembe yaz.
                    break;

                case 5 :
                    Console.WriteLine("Cuma"); // Eğer gün 5 ise Cuma yaz.
                    break;

                case 6 :
                    Console.WriteLine("Cumartesi"); // Eğer gün 6 ise Cumartesi yaz.
                    break;

                    case 7 :
                    Console.WriteLine("Pazar"); // Eğer gün 7 ise Pazar yaz.
                    break;


                    default: Console.WriteLine("Yanlış bir rakam girdiniz. (1-7) arasında giriniz:");
                    break;

                    
            }

            Console.ReadKey();

break; komutu yazdığımız case bölümünü kırmak içindir. Yani onu aktifleştirmek içindir. Onu yazmaz isek hata verir.
default: Kısmı ise İf-Else yapısındaki else gibidir. Eğer anlamı taşır.

9Q8yM9.png

Y6PyyZ.png


9Q8yM9.png

8znOO7.png


[ame]https://www.youtube.com/watch?v=A9gxsKK2ZVY[/ame]​

 

Tepe Göz

Katılımcı Üye
14 Haz 2017
258
0
Anlıyorum
Bu tür konular neden göz önüne alınmaz anlamıyorum.
Şurada bi feys heçk konusu açılsa herkes doluşur!
Eline & gönlüne sağlık.
 

HeRTeS

Uzman üye
8 Eyl 2016
1,860
2
Mars
Bu tür konular neden göz önüne alınmaz anlamıyorum.
Şurada bi feys heçk konusu açılsa herkes doluşur!
Eline & gönlüne sağlık.

Güzel yorumunu için çok teşekkür ederim. :) Yazılım önemli bir konu aslında bildiklerimi anlatmaya çalışıyorum. Yararlı olduysa ne mutlu bana.
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.