Tutoriel : Ajouter des problèmes mathématiques à une application WinForms de questionnaire mathématique

Dans cette série de quatre tutoriels, vous générez un questionnaire mathématique. Le questionnaire contient quatre problèmes mathématiques aléatoires auxquels le participant doit répondre dans un temps donné.

Les contrôles utilisent du code C# ou Visual Basic. Dans ce deuxième tutoriel, vous compliquez le questionnaire en ajoutant des problèmes mathématiques basés sur des nombres aléatoires. Vous créez également une méthode nommée StartTheQuiz() pour remplir les problèmes.

Dans ce deuxième tutoriel, vous apprenez à :

  • Écrire du code pour créer des objets aléatoires à utiliser dans des problèmes mathématiques.
  • Ajouter un gestionnaire d’événements pour le bouton Démarrer.
  • Écrire du code pour démarrer le questionnaire.

Prérequis

Ce tutoriel s’appuie sur un tutoriel précédent, Créer une application WinForms de questionnaire mathématique. Si vous n’avez pas suivi ce tutoriel, commencez par lui.

Créer un problème d’addition aléatoire

  1. Dans votre projet Visual Studio, sélectionnez Concepteur Windows Forms.

  2. Sélectionnez le formulaire, Form1.

  3. Dans la barre de menus, sélectionnez Affichage>Code. Form1.cs ou Form1.vb apparaît, en fonction du langage de programmation que vous utilisez, pour que vous puissiez afficher le code utilisé pour le formulaire.

  4. Créez un objet Random en ajoutant une instruction new au début du code.

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

Important

Utilisez le contrôle de langage de programmation en haut à droite de cette page pour voir l’extrait de code C# ou l’extrait de code Visual Basic.

Programming language control for Microsoft Learn

Vous pouvez utiliser des instructions new comme celle-ci pour créer des boutons, étiquettes, panneaux, OpenFileDialogs, ColorDialogs, SoundPlayers, Randoms, et même des formulaires. Ces éléments sont appelés objets.

Quand vous exécutez votre programme, le formulaire est démarré. Le code sous-jacent crée un objet Random et le nomme randomizer.

Votre questionnaire a besoin de variables pour stocker les nombres aléatoires qu’il crée pour chaque problème. Avant d’utiliser des variables, vous les déclarez, ce qui signifie lister leurs noms et leurs types de données.

  1. Ajoutez deux variables de type entier au formulaire et nommez-les addend1 et addend2.

    Notes

    Une variable de type entier est appelée int en C# ou Integer en Visual Basic. Ce type de variable stocke un nombre positif ou négatif compris entre -2 147 483 648 et 2 147 483 647, et ne peut stocker que des nombres entiers, pas de décimales.

    Utilisez une syntaxe similaire pour ajouter une variable de type entier comme vous avez ajouté l’objet Random quand le code suivant s'affiche.

    // 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. Ajoutez une méthode nommée StartTheQuiz(). Cette méthode utilise la méthode Next() de l’objet Random pour générer des nombres aléatoires pour les étiquettes. StartTheQuiz() remplit par la suite tous les problèmes et démarre le minuteur. Vous devez donc ajouter ces informations au commentaire récapitulatif. La fonction doit ressembler au code suivant.

    /// <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;
    }
    

Quand vous utilisez la méthode Next() avec un objet Random, comme quand vous appelez randomizer.Next(51), vous obtenez un nombre aléatoire inférieur à 51, ou compris entre 0 et 50. Ce code appelle randomizer.Next(51) pour que les deux nombres aléatoires donnent une réponse comprise entre 0 et 100.

Examinez attentivement ces instructions.

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

Ces instructions définissent les propriétés Text de plusLeftLabel et plusRightLabel pour qu’elles affichent les deux nombres aléatoires. Les contrôles d’étiquette affichent des valeurs au format texte et, en programmation, les chaînes contiennent du texte. La méthode ToString() de chaque entier convertit l’entier en texte pouvant être indiqué par une étiquette.

Créer des problèmes de soustraction, de multiplication et de division aléatoires

L’étape suivante est de déclarer des variables et de fournir des valeurs aléatoires pour les autres problèmes mathématiques.

  1. Ajoutez des variables entières pour le reste des problèmes mathématiques dans votre formulaire, après les variables de problème d’addition. Le code doit ressembler à l’exemple suivant.

    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. Modifiez la méthode StartTheQuiz() en ajoutant le code suivant, à partit du commentaire « Remplir le problème de soustraction ».

    /// <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;
    

Ce code utilise la méthode Next() de la classe Random un peu différemment du problème d’addition. Lorsque vous attribuez deux valeurs à la méthode Next(), elle choisit un nombre aléatoire qui est supérieur ou égal à la première valeur, mais inférieur à la deuxième.

En utilisant la méthode Next() avec deux arguments, vous pouvez faire en sorte que le problème de soustraction ait une réponse positive, que la réponse de multiplication soit 100 maximum et que la réponse de division ne soit pas une fraction.

Ajouter un gestionnaire d’événements au bouton Démarrer

Dans cette section, vous ajoutez du code pour démarrer le questionnaire quand le bouton Démarrer est sélectionné. Le code qui s’exécute en réaction à un événement comme une sélection de bouton est appelé gestionnaire d’événements.

  1. Dans le Concepteur Windows Forms, double-cliquez sur le bouton Démarrer le questionnaire, ou sélectionnez-le et appuyez sur Entrée. Le code du formulaire s’affiche et une nouvelle méthode est visible.

    Ces actions permettent d’ajouter un gestionnaire d’événements Click au bouton Démarrer. Quand la personne qui répond au questionnaire sélectionne ce bouton, l’application exécute le code que vous ajoutez à cette nouvelle méthode.

  2. Ajoutez les deux instructions suivantes pour que le gestionnaire d’événements démarre le questionnaire.

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

La première instruction appelle la nouvelle méthode StartTheQuiz(). La deuxième instruction définit la propriété Enabled du contrôle startButton sur false pour que la personne qui répond au questionnaire ne puisse pas sélectionner le bouton pendant le questionnaire.

Exécuter l’application

  1. Enregistrez votre code.

  2. Exécutez votre application, puis sélectionnez Démarrer le questionnaire. Des problèmes mathématiques aléatoires s’affichent, comme le montre la capture d’écran suivante.

    Screenshot that shows random values in all four math problems. The Start the quiz button appears dimmed.

Étapes suivantes

Passez au tutoriel suivant pour ajouter un minuteur à votre questionnaire mathématique et vérifier les réponses des utilisateurs.