- 28 Mar 2020
- 6,308
- 4,729
Giriş
Merhaba, C# uygulama geliştirme serimizin altıncı yazısına hoş geldiniz.
Bu yazımızda verilen metni, morse koduna çeviren 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
Örnekler İle C# Geliştirme - Bölüm 4
Örnekler İle C# Geliştirme - Bölüm 5
İyi okumalar dilerim!
Yapılış
İlk önce projemizi oluşturmakla başlayalım.
Ben programın ismini "Morse Dönüştürücü" şeklinde koyuyorum, siz de kendinize göre isimlendirebilirsiniz.
Proje oluştuktan sonra formun ismini Özellikler > Text bölümünden 'Morse Dönüştürücü' değiştiriyorum.
Sonrasında Araç Kutusundan aşağıdaki araçları ekliyorum.
2 adet GroupBox
2 adet RichTextBox
1 adet Button
Tasarımımızdan sonra kod bölümümüze giriyoruz (F7) ve bir metot oluşturuyoruz.
Ben ismini MetniMorseCevir() koyuyorum, siz istediğiniz bir ismi koyabilirsiniz.
İçine de metin adında bir argüman oluşturdum, içine richTextBox1'den aldığımız veriyi koyacağız.
Şimdi de metodumuzun içindeki kodlarımızı inceleyelim.
Sözlük kullanımdan dolayı biraz kafa karıştırıcı gözükse de basit bir kod aslında.
C#:
Dictionary<char, string> morseSozlugu = new Dictionary<char, string>()
{
{'A', ".-"}, {'B', "-..."}, {'C', "-.-."}, {'D', "-.."},
{'E', "."}, {'F', "..-."}, {'G', "--."}, {'H', "...."},
{'I', ".."}, {'J', ".---"}, {'K', "-.-"}, {'L', ".-.."},
{'M', "--"}, {'N', "-."}, {'O', "---"}, {'P', ".--."},
{'Q', "--.-"}, {'R', ".-."}, {'S', "..."}, {'T', "-"},
{'U', "..-"}, {'V', "...-"}, {'W', ".--"}, {'X', "-..-"},
{'Y', "-.--"}, {'Z', "--.."},
{'0', "-----"}, {'1', ".----"}, {'2', "..---"}, {'3', "...--"},
{'4', "....-"}, {'5', "....."}, {'6', "-...."}, {'7', "--..."},
{'8', "---.."}, {'9', "----."}
};
// Burada bir sözlük oluşturuyoruz ve içine harflerin ne ile değişeceğini karşı değer olarak veriyoruz.
metin = metin.ToUpper();
// Burada richTextBox1 içinden aldığımız değerin tamamını büyütüyoruz.
// Yani "Merhaba" diye girildiyse "MERHABA" haline çeviriyoruz.
string morseKodu = "";
// Burada yeni değerimizi depolayacağımız bir değişken oluşturuyoruz.
foreach (char karakter in metin) // Burada ise bir 'metin' değişkenini uzunluğu kadar dönecek bir foreach döngüsü oluşturyoruz.
{
if (morseSozlugu.ContainsKey(karakter))
/*
Burada ise ContainsKey ile sözlüğümüzün içinde döngümüzdeki o an ki karakter var mı diye kontrol ediyor.
Örneğin ben metin içine "Pump" yazdım. Döngü de ilk turunda diyelim. O an ki karakter "P" oluyor.
Sözlükte "P" var ise koşulumuz true olacak.
*/
{
morseKodu += morseSozlugu[karakter] + " ";
// Burada da çıkan karakteri sözlükten buluyor ve karşılığını morseKodu adındaki değişkenimizi atıyor.
// Yani "P" çıktı diyelim. Değişkenin içine onun karşılığı olan ".--." değerini koyacak.
}
else
// Burası ise girilen değer sözlükte yoksa çalışır.
{
morseKodu += karakter;
// Belirlenemeyen değer direkt girildiği şekilde koyulur.
// Örnek belirlenmeyen karakterler: &/()[]?_^# tabi bunlar dışında daha pek çok şey olabilir.
}
}
return morseKodu.Trim();
// Son olarak ise morseKodu içindeki boşlukları Trim() fonksiyonu ile siliyor ve bunu geri döndürüyor.
Şimdi de tuşa bastığımızda çalışması ayarlayalım.
Bu kod ile MetniMorseCevir()'den dönen değeri richTextBox2 içine yazdırıyoruz.
C#:
richTextBox2.Text = MetniMorseCevir(richTextBox1.Text);
Son olarak da çıktı için kullanacağımız richTextBox2'yi sadece okunabilir hale getirelim.
Bu ayar sayesinde kullanıcı çıktı üzerinde herhangi bir değişiklik yapamayacak.
Bunun için richTextBox2'in üstüne tıklıyoruz ve Özellikler > ReadOnly kısmını True yapıyoruz.
Tabi bunu illa ara yüz üzerinden yapacaksınız diye bir şey yok.
İsteyenler aşağıdaki kodu kullanarak da bu işlemi gerçekleştirebilir.
C#:
richTextBox2.ReadOnly = true;
Evet, genel olarak projemiz tamamlandı.
Şimdi çalışma şeklini izleyelim.
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!
Son düzenleme: