Aracılığıyla paylaş


Öğretici: Matematik testi WinForms uygulamasına matematik sorunları ekleme

Dört öğreticiden oluşan bu seride bir matematik testi oluşturacaksınız. Test, bir sınava girişenin belirli bir süre içinde yanıtlamaya çalıştığı dört rastgele matematik sorunu içerir.

Denetimler C# veya Visual Basic kodu kullanır. Bu ikinci öğreticide, rastgele sayıları temel alan matematik sorunları için kod ekleyerek testi zor hale getireceksiniz. Ayrıca sorunları doldurmak için StartTheQuiz() adlı bir yöntem de oluşturursunuz.

Bu ikinci öğreticide şunların nasıl yapılacağını öğreneceksiniz:

  • Matematik sorunlarında kullanılacak Rastgele nesneler oluşturmak için kod yazın.
  • Başlangıç düğmesi için bir olay işleyicisi ekleyin.
  • Testi başlatmak için kod yazın.

Önkoşullar

Bu öğretici, Matematik testi WinForms uygulaması oluşturmaadlı önceki bir öğreticiyi temel alır. Bu öğreticiyi tamamlamadıysanız önce bu öğreticiyi gözden geçirin.

Rastgele ekleme sorunu oluşturma

  1. Visual Studio projenizde Windows Forms Designeröğesini seçin.

  2. Formu seçin, Form1.

  3. Menü çubuğunda, Görünüm>Koduöğesini seçin. Form1.cs veya Form1.vb, kullandığınız programlama diline bağlı olarak görüntülenir; böylece formun arkasındaki kodu görüntüleyebilirsiniz.

  4. Form1.cs veya Form1.vbkodun üst kısmına bir new deyimi ekleyerek Random nesnesi oluşturun.

    public partial class Form1 : Form
    {
        // Create a Random object called randomizer 
        // to generate random numbers.
        Random randomizer = new Random();
    

Düğmeler, etiketler, paneller, OpenFileDialogs, ColorDialogs, SoundPlayers, Randoms ve hatta formlar oluşturmak için bunun gibi new deyimlerini kullanabilirsiniz. Bu öğeler nesneleriolarak adlandırılır.

Programınızı çalıştırdığınızda form başlatılır. Bu kod, bir Random nesnesi oluşturur ve rasgele jeneratörolarak adlandırır.

Testinizin her sorun için oluşturduğu rastgele sayıları depolamak için değişkenlere ihtiyacı var. Değişkenleri kullanmadan önce, bunları bildirirsiniz; bu da adlarını ve veri türlerini listelemek anlamına gelir.

  1. Forma iki tamsayı değişkeni ekleyin ve bunları addend1 ve addend2 olarak adlandırın, Form1.cs veya Form1.vbiçinde.

    Bir Not

    Tamsayı değişkeni, C# dilinde int veya Visual Basic'te Tamsayı olarak bilinir. Bu tür bir değişken, -2147483648 ile 2147483647 arasında pozitif veya negatif bir sayıyı depolar ve ondalıkları değil yalnızca tam sayıları depolayabilir.

    Aşağıdaki kodda gösterildiği gibi, Random nesnesini eklemek için yaptığınız gibi bir tamsayı değişkeni eklemek için benzer söz dizimi kullanırsınız.

    // Create a Random object called randomizer 
    // to generate random numbers.
    Random randomizer = new Random();
    
    // These integer variables store the numbers 
    // for the addition problem. 
    int addend1;
    int addend2;
    

  1. StartTheQuiz() Form1.cs veya Form1.vbadlı bir yöntem ekleyin. Bu yöntem, etiketler için rastgele sayılar oluşturmak üzere Random nesnesinin Next() yöntemini kullanır. StartTheQuiz() sonunda tüm sorunları doldurur ve zamanlayıcıyı başlatır, bu nedenle bu bilgileri özet açıklamaya ekleyin. işlevi aşağıdaki kod gibi görünmelidir.

    /// <summary>
    /// Start the quiz by filling in all of the problems
    /// and starting the timer.
    /// </summary>
    public void StartTheQuiz()
    {
        // Fill in the addition problem.
        // Generate two random numbers to add.
        // Store the values in the variables 'addend1' and 'addend2'.
        addend1 = randomizer.Next(51);
        addend2 = randomizer.Next(51);
    
        // Convert the two randomly generated numbers
        // into strings so that they can be displayed
        // in the label controls.
        plusLeftLabel.Text = addend1.ToString();
        plusRightLabel.Text = addend2.ToString();
    
        // 'sum' is the name of the NumericUpDown control.
        // This step makes sure its value is zero before
        // adding any values to it.
        sum.Value = 0;
    }
    

Next() yöntemini Random nesnesiyle kullandığınızda ( örneğin, randomizer.Next(51)çağırdığınızda) 51'den küçük veya 0 ile 50 arasında rastgele bir sayı alırsınız. Bu kod, iki rastgele sayının 0 ile 100 arasında bir yanıta eklenmesi için randomizer.Next(51) çağırır.

Bu ifadelere daha yakından bakın.

plusLeftLabel.Text = addend1.ToString();
plusRightLabel.Text = addend2.ToString();

Bu ifadeler, Text özelliklerini, plusLeftLabel ve plusRightLabel'in iki rastgele sayıyı gösterecek şekilde ayarlar. Etiket denetimleri değerleri metin biçiminde görüntüler ve programlamada dizeler metni tutar. Her tamsayının ToString() yöntemi, tamsayıyı bir etiketin görüntüleyebileceği metne dönüştürür.

Rastgele çıkarma, çarpma ve bölme sorunları oluşturma

Sonraki adım değişkenleri bildirmek ve diğer matematik sorunları için rastgele değerler sağlamaktır.

  1. Toplama sorunu değişkenlerinden sonra formunuza kalan matematik sorunları için tamsayı değişkenleri ekleyin. Form1.cs veya Form1.vb kodu aşağıdaki örneğe benzer olmalıdır.

    public partial class Form1 : Form
    {
        // Create a Random object called randomizer 
        // to generate random numbers.
        Random randomizer = new Random();
    
        // These integer variables store the numbers 
        // for the addition problem. 
        int addend1;
        int addend2;
    
        // These integer variables store the numbers 
        // for the subtraction problem. 
        int minuend;
        int subtrahend;
    
        // These integer variables store the numbers 
        // for the multiplication problem. 
        int multiplicand;
        int multiplier;
    
        // These integer variables store the numbers 
        // for the division problem. 
        int dividend;
        int divisor;
    

  1. Form1.cs veya Form1.vb içindeki StartTheQuiz() yöntemini değiştirmek için "Çıkarma sorununu doldur" açıklamasından başlayarak aşağıdaki kodu ekleyin.

    /// <summary>
    /// Start the quiz by filling in all of the problem 
    /// values and starting the timer. 
    /// </summary>
    public void StartTheQuiz()
    {
        // Fill in the addition problem.
        // Generate two random numbers to add.
        // Store the values in the variables 'addend1' and 'addend2'.
        addend1 = randomizer.Next(51);
        addend2 = randomizer.Next(51);
    
        // Convert the two randomly generated numbers
        // into strings so that they can be displayed
        // in the label controls.
        plusLeftLabel.Text = addend1.ToString();
        plusRightLabel.Text = addend2.ToString();
    
        // 'sum' is the name of the NumericUpDown control.
        // This step makes sure its value is zero before
        // adding any values to it.
        sum.Value = 0;
    
        // Fill in the subtraction problem.
        minuend = randomizer.Next(1, 101);
        subtrahend = randomizer.Next(1, minuend);
        minusLeftLabel.Text = minuend.ToString();
        minusRightLabel.Text = subtrahend.ToString();
        difference.Value = 0;
    
        // Fill in the multiplication problem.
        multiplicand = randomizer.Next(2, 11);
        multiplier = randomizer.Next(2, 11);
        timesLeftLabel.Text = multiplicand.ToString();
        timesRightLabel.Text = multiplier.ToString();
        product.Value = 0;
    
        // Fill in the division problem.
        divisor = randomizer.Next(2, 11);
        int temporaryQuotient = randomizer.Next(2, 11);
        dividend = divisor * temporaryQuotient;
        dividedLeftLabel.Text = dividend.ToString();
        dividedRightLabel.Text = divisor.ToString();
        quotient.Value = 0;
    

Bu kod, Random sınıfının Next() yöntemini ekleme sorunundan biraz farklı şekilde kullanır. Next() yöntemine iki değer verdiğinizde, ilk değere eşit veya ondan büyük ve ikincisinden küçük rastgele bir sayı seçer.

Next() yöntemini iki bağımsız değişkenle kullanarak çıkarma sorununun olumlu bir yanıtı olduğundan, çarpma yanıtının en fazla 100 olduğundan ve bölme yanıtının kesir olmadığından emin olabilirsiniz.

Başlangıç düğmesine olay işleyicisi ekleme

Bu bölümde, başlangıç düğmesi seçildiğinde testi başlatmak için kod ekleyebilirsiniz. Düğme seçimi gibi bir olaya tepki olarak çalışan koda olay işleyicisi adı verilir.

  1. Windows Forms Designer'nde, Testi başlat düğmesine çift tıklayın ya da önce onu seçip sonra Entertuşuna basın. Formun kodu görüntülenir ve yeni bir yöntem görünür.

    Bu eylemler başlangıç düğmesine olay işleyicisi ekler. Test alan kişi bu düğmeyi seçtiğinde, uygulama bu yeni yönteme ekleyeceğiniz kodu çalıştırır.

  2. Olay işleyicisinin testi başlatması için aşağıdaki iki deyimi ekleyin.

    private void startButton_Click(object sender, EventArgs e)
    {
        StartTheQuiz();
        startButton.Enabled = false;           
    }
    

İlk deyim yeni StartTheQuiz() yöntemini çağırır. İkinci ifade, startButton denetiminin Enabled özelliğini false olarak ayarlar, böylece bir test sırasında test alan düğmeyi seçemez.

Uygulamanızı çalıştırma

  1. Kodunuzu kaydedin.

  2. Uygulamanızı çalıştırın ve Testi Başlat'a tıklayın. Aşağıdaki ekran görüntüsünde gösterildiği gibi rastgele matematik sorunları görüntülenir.

    Dört matematik sorununun tamamında rastgele değerleri gösteren ekran görüntüsü. Testi başlat düğmesi soluk görünür.

Sonraki adımlar

Matematik testinize zamanlayıcı eklemek ve kullanıcı yanıtlarını kontrol etmek için sonraki öğreticiye ilerleyin.