Örnekler İle C# Geliştirme - Bölüm 4

Grimner

Adanmış Üye
28 Mar 2020
6,308
4,727
a3b2jeo.png


Giriş

Merhaba, C# uygulama geliştirme serimizin dördüncü yazısına hoş geldiniz.
Bu yazımızda bir Sezar Şifrelemesi yapan bir program yapacağız.

Serinin önceki yazılarını okumak isteyenler için
Örnekler İle C# Geliştirme - Bölüm 1
Örnekler İle C# Geliştirme - Bölüm 2
Örnekler İle C# Geliştirme - Bölüm 3

İyi okumalar dilerim!

Yapılış

30pejas.png


İlk önce projemizi oluşturmakla başlayalım.
Ben programın ismini "Sezar Şifreleyici" şeklinde koyuyorum, siz de kendinize göre isimlendirebilirsiniz.

1l544qc.png


Proje oluştuktan sonra formun ismini Özellikler > Text bölümünden 'Sezar Şifreleyici' değiştiriyorum.
Sonrasında Araç Kutusundan aşağıdaki araçları ekliyorum.​
3 adet Panel
2 adet Label
2 adet RichTextBox
1 adet NumericUpDown​

Not: Burada NumericUpDown yerine TextBox ve Button da kullanılabilirdi tabi ama bir farklılık yapayım dedim.
Ayrıca ikinci bir not: Bu programı gerçek zamanlı olarak çalışacak şekilde ayarlayacağız, yani hem RichTextBox içindeki değer değiştiğin de hem de NumericUpDown içindeki değer değiştiğinde şifrelenen değer de ona göre anlık olarak değişecek.

Bunun için öncelikle kodlara gidiyoruz ve Donustur() adında bir fonksiyon oluşturuyoruz.
Kodlara nasıl gidileceğini bilmeyenler için: F7 tuşuna basarak kod bölümünü açabilirsiniz.

e0gekic.png


Şimdi ise kodumuzun içeriğini inceleyelim.

C#:
string DuzMetin = richTextBox1.Text;
// Burada DuzMetin adında bir değişken oluşturuyoruz ve Şifrelemek istediğimiz değeri yazdığımız RichTextBox1 içindeki değeri aktarıyoruz.

string SifreliMetin = "";
// Burada ise şifrelenen değerleri depolayabileceğimiz bir değişken oluşturuyoruz.

for (int i = 0; i < DuzMetin.Length; i++) // Burada ise DuzMetin uzunluğu kadar çalışacak bir döngü oluşturduk. Yani 'Merhaba' yazıyorsa 7 kere çalışacak.
{
    char karakter = DuzMetin[i];
    /*
        Bu kısımda ise char değişkenimizin içine DuzMetin'den karakterleri atıyoruz.
        Burada ki index mantığına gelirsek.
        Az önceki örnekteki gibi değerimiz 'Merhaba' diyelim. i 5 desek karakter = 'b' oluyor.
       
        Daha detaylı şekilde anlatmak gerekirse aşağıdaki gibi olacak.
        [0] = M
        [1] = e
        [2] = r
        [3] = h
        [4] = a
        [5] = b
        [6] = a
    */
   
    if (char.IsLetter(karakter)) // Bu kodumuzda karakter değişkenimizin harf olup olmadığını kontrol ediyoruz.
    {
        char baslangic = char.IsUpper(karakter) ? 'A' : 'a';
        // Burada ise karakterimizin büyük olup olmadığını kontrol edeceğiz.
       
        int kaydirmaMiktari = (int)numericUpDown1.Value % 26;
        /*
            Burada ise verilen sayının modunu alıyoruz.
            Mesela 32 girildi ise bunu %26 modunu alıyor.
            Yani 32 => 6 oluyor.
        */
       
        if (kaydirmaMiktari < 0) // Burada ise sıfırdan büyük olup olmadığını kontrol ediyoruz.
            kaydirmaMiktari += 26; // Eğer sıfırdan küçükse değere +26 ekleniyor.

        karakter = (char)((karakter - baslangic + kaydirmaMiktari) % 26 + baslangic);
    }

    SifreliMetin += karakter;
    // Burada her tur oluşturduğumuz yeni değeri += ile SifreliMetin'e ekliyoruz.
}

richTextBox2.Text = SifreliMetin;
// Burada da işlem sonunda elde edilen değeri RichTextBox2 içine aktarıyoruz.

Evet, şifreleme kısmımız tamamlandı. Şimdi bu fonksiyonu anlık olarak çalıştırma kısmına geçelim.

owuqofc.png


Bunun için NumericUpDown ve RichTextBox1 üstüne iki kere tıklıyoruz ve açılan kod kısmına Donustur() fonksiyonunu giriyoruz.
Bunlarla birlikte genel olarak işlemimiz bitti. Tek kalan kısım NumericUpDown aracının eksi değer alabilmesini sağlamakta.

84lwy9p.png


Bunun için NumericUpDown üstüne basıyoruz ve Minumum değeri eksiltiyoruz. Ben 100 ve -100 arası olmasını istediğim için bu şekilde ayarladım.
Sizler aradaki farkın ne kadar olmasını istiyorsanız ayarlarsınız.

Bununla birlikte de programımız bitmiş bulunmakta.
Aşağıdan çalışma şeklini izleyebilirsiniz.

7ptw596.gif


Kapanış

Evet, bugünkü projemiz bitmiş bulunmakta.
Gelecekte ki derslerde görmek istediğiniz bir program olursa yazabilirsiniz.
Okuduğunuz için teşekkür ederim, iyi forumlar!​
 

'Ra

Ticaret Kategori Sorumlu Yardımcısı
21 Kas 2015
2,390
939
Ellerinize sağlık çok güzel bir konu olmuş hocam <3

Ama karşı tarafın gönderdiği mesajın 7 veya 8 kere kaydırıldığını nasıl anlayacağız onun için de bir program gelir mi ? :)
 

Grimner

Adanmış Üye
28 Mar 2020
6,308
4,727
Ü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.