Menü

C#’da Gerçekleştirilmiş 40 Basamağa Kadar Sayı Okuyan Program

18 Ocak 2015 - Projeler

kapakresim

Meslek Yüksek Okulları, Mühendislik Fakültesi Öğrencileri, Bilişim alanında okuyan ve projeye ihtiyacı olanlara fikir olması açısından Kocaeli Üniversitesi’nde geliştridiğim sayı okuma programını yayınlıyorum.

ekran

Programın işlevi 40 basamağa kadar olan sayıları sesli olarak okumak. Ancak 40 basamağa kadar yaptıktan sonra bunu ileriye taşımak size kalmış çünkü mantık hep aynı sadece ses dosyasını değiştiriyorsunuz ilgili basamakla ilgili. Programın ana form görüntüsü aşağıdaki gibidir. Okunacak sayıyı textbox’a giriyoruz oku düğmesine bastığımızda listbox’a basamaklar halinde listelenmektedir. 40 basamaklı bir sayı girdiğinizde sayıların okunup bitmesini beklemekte ve bitene kadar size başka işlem şansı tanımamaktadır.

       Listbox’da görülen basamaklar ve sayılar aynı isimdeki ses dosyalarını çağırmaktadır. Ses dosyalarını da programın içindeki sayilar klasöründen çalmaktadır. Geliştirme aşamasında karşılaştığım bir problemden bahsedeyim. Ses çalmak için C#’da play komutunu kullanırsanız sayının birler basmaağını okuyup durmaktadır. Bunun nedeni play komutu tüm ses dosyalarını atlayıp en sondakini çalmaktadır. Bunu da playsync komutu ile hallettim. Listbox’dan gelen basamak değerine göre ses dosyalarını oynatması için aşağıdaki kod satırları yeterli olacaktır.

for (int okunan = 0; okunan < listBox1.Items.Count; okunan++)
{
SoundPlayer oynat = new SoundPlayer();

path = “VOICE\\” + listBox1.Items[okunan] + “.wav”;
oynat.SoundLocation = path;
oynat.PlaySync();

}

        Programın algoritmasından bahsedecek olursak text’e girilen sayının basamak değerini alıp switch case ile kontrol ettirerek şelale gibi akan bir durum olarak düşünülebilir. Örneğin sayı 5 basamaklıysa 5. basamaktan okumaya başlanır 4. basamak 3. basamak … 1. basamak. 5-4-3-2-1 şeklinde yapılır okuma işlemi bu yüzden her seferinde bir önceki case durumuna döndürerek kodluyoruz. Basamağın 0 olması durumunda da kontrol ettiriyoruz ve eğer son basamaktaysa bir önceki basamağı onluk ortada ise yüzlük olarak okunacaktır. Program bittikten sonra 100 101 1001 1101 gibi sayıları doğru okumasına dikkat etmelisiniz. Zira programın kırılabileceği sayılardan bir kaçı bunlardır.

case 1:
if (sayi.Substring(sayi.Length – i, 1) != “0”)
{
label2.Text += birler[int.Parse(sayi.Substring(sayi.Length – i, 1))].ToString();
listBox1.Items.Add(birler[int.Parse(sayi.Substring(sayi.Length – i, 1))].ToString());

}
else
{
if (karaktersayisi == 1)
{
label2.Text += “sıfır”;
listBox1.Items.Add(birler[0].ToString());

}

}
break;
case 2: if (sayi.Substring(sayi.Length – i, 1) != “0”)
{
label2.Text += onlar[int.Parse(sayi.Substring(sayi.Length – i, 1)) – 1].ToString();
listBox1.Items.Add(onlar[int.Parse(sayi.Substring(sayi.Length – i, 1)) – 1].ToString());

}
else { }
break;
case 3: if (sayi.Substring(sayi.Length – i, 1) != “0”)
{
if (int.Parse(sayi.Substring(sayi.Length – i, 1)) != 1)
{
label2.Text += birler[int.Parse(sayi.Substring(sayi.Length – i, 1))].ToString();
listBox1.Items.Add(birler[int.Parse(sayi.Substring(sayi.Length – i, 1))].ToString());
label2.Text += ustbasamaklar[0];
listBox1.Items.Add(ustbasamaklar[0]);
}
else
{
label2.Text += ustbasamaklar[0];
listBox1.Items.Add(ustbasamaklar[0]);
}
}
else { }
break;

3 basamağa kadar nasıl okuduğuna ilişkin kod parçası yukarıdadır. Gerisini geliştirmek, güzelleştirmek, görsellik katmak, işlevsel hale getirmek size kalmış. 🙂 Son olarak projemize hakkında kısmını ekliyoruz ve projemizi sonlandırıyoruz. İçerisinde güzel bir rapor ve ekran görüntüleriyle birlikte projemiz sunuma hazırdır.

hakında

 

Bir Cevap Yazın