14 Haziran 2013 Cuma

Geri Sayım Yaparken Rastgele Sayı Üretilip Listbox'a Sayılar Yazdırılıp Toplama -Csharp

Not: Bu uygulama geri sayım için timer kullanılacak. Rastgele sayı üretilip, listbox ve if yapısı kullanılacak.

Soru:
Kullanıcıdan alınan sayıdan itibaren geri sayım süresi başlayacak. Geri sayımın hızını kullanıcı seçebilecek. Geri sayım yapılırken 1 ile 50 arasından rastgele sayı üretilip listboxlara eklenecek. Geri sayım bittikten sonra üretilen rastgele sayılar toplanıp sonucu kullanıcıya gösterilecek bir program yazınız. 

 Windows Formu Hazırlama: Program için windows formun üzerine 1 textbox,buton,label,timer ve listbox eklenecek.

Çözümü:
 using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace uygulama3
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        int sure;
        private void button1_Click(object sender, EventArgs e)
        {
            sure = Convert.ToInt32(textBox1.Text);
            label1.Text = sure.ToString();
            timer1.Interval = System.Convert.ToInt32(comboBox1.Text);
            timer1.Start();
        }


        private void timer1_Tick(object sender, EventArgs e)
        {
           sure=sure-1;
            label1.Text = sure.ToString();
            Random rnd = new Random();
            int eklenecek_sayi=rnd.Next(1, 50);
            listBox1.Items.Add(eklenecek_sayi);
            if (sure == 0)
            {
                timer1.Stop();
                int toplam = 0;
                for (int i = 0; i < listBox1.Items.Count; i++)
                {
                    toplam += Convert.ToInt32(listBox1.Items[i]);
                }
                MessageBox.Show(toplam.ToString());
            }

        }
    }
}






Kodun Açıklaması: 

            sure = Convert.ToInt32(textBox1.Text);
            label1.Text = sure.ToString();
            timer1.Interval = System.Convert.ToInt32(comboBox1.Text);
            timer1.Start();

 Butona bastığımız zaman ilk önce textbox'ta bulunan sayıyı alıp convert metodu ile integer değişkeni olan sure değişkenine atıyoruz. Sonra bu girilen ve integere çevrilen değişkeni alıp label'a atıyoruz. Çünkü her bir süre azaldığında tekrar label'a yazılacağı için o değerin.Sonra combobox'ta yer alan değerlerden birini seçiyoruz. Bu değer timer'ın hangi aralıklarla tetikleneceğini belirliyor. Sonra timer çalışıyor. Timer, bize tetikleme işlemlerinde işimize yarayacak bir araçtır. Burada geri sayım yaparken birşey tarafından sürenin tetiklenmesi lazım buda timer ile yapıyoruz.

Peki, timer her tetiklendiğinde ne olacak, label'da olan süre 1 azalacak, 1-50 arasında rastgele sayı üretilip listbox'a atılacak. Süre 0 olduğunda ise sayı üretilmesi duracak ve listbox'ta olan sayılar toplacak. Şimdi bu işlemlere yapan kodlara bir göz atalım.

private void timer1_Tick(object sender, EventArgs e)
        {
           sure=sure-1;
            label1.Text = sure.ToString();
            Random rnd = new Random();
            int eklenecek_sayi=rnd.Next(1, 50);
            listBox1.Items.Add(eklenecek_sayi);
            if (sure == 0)
            {
                timer1.Stop();
                int toplam = 0;
                for (int i = 0; i < listBox1.Items.Count; i++)
                {
                    toplam += Convert.ToInt32(listBox1.Items[i]);
                }
                MessageBox.Show(toplam.ToString());
            }

        }

Timer her tetiklendiğinde süre=sure-1 kodu ile süre bir azalacak. Peki, timer hangi aralıklarda tetiklenecek. Yukarıda bahsetmiştik, combobox'tan seçilen değer timer'ın tetiklenme aralığını oluşturuyor.Timer.interval metodu ile. Sure bir azalır iken sure her seferinde label'a yeni değeri ile yeniden yazılıyor. Sonra random sınıfından rnd isimde bir rastgele nesnesi oluşturuyoruz. Bu rnd nesnesi 1-50 arasında değer uretecek. Bu değer bizim listbox'ımıza eklenecek değerimizdir. Bunu listbox1.Items.Add metodu ile listbox'ımıza ekliyoruz. Peki ne zamana kadar bu sayılar üretilip eklenecek sure==0 olana kadar. Süre 0 olduğunda ilk işimiz timer'ın çalışmasını durdurmak. Çünkü böylece timer tetiklenmeyinde süre azalmıyacak,rastgele sayılar üretilip listbox'a eklenmeyecek. Şimdi sıra listbox'a eklenen rastgele sayıların toplamını bulmaya. Bunun için bir for döngüsü oluşturuyoruz. Peki döngü ne kadar dönecek, listbox'taki itemlerin sayısı(count) kadar dönecek. Her seferinde Listbox'ın içinde bulunan i. item'ın değerini alacak bizim toplam diye değişkenimize atacak. Döngü bittiğinde ise bunu kullanıcıya messagebox metodu ile toplam sonucu bildiriyoruz.

Uygulamayı bu linkten indirebilirsiniz:  https://hotfile.com/dl/227592245/5a6517d/uygulama3.rar.html
 

Hiç yorum yok :

Yorum Gönder

Google PageRank Checker Powered by  MyPagerank.Net