Partilhar via


Tutorial: Adicionar problemas de matemática a um aplicativo WinForms de questionário de matemática

Nesta série de quatro tutoriais, você criará um questionário de matemática. O teste contém quatro problemas matemáticos aleatórios que um participante do questionário tenta responder dentro de um tempo especificado.

Os controles usam código C# ou Visual Basic. Neste segundo tutorial, você torna o teste desafiador adicionando código para problemas matemáticos baseados em números aleatórios. Você também cria um método chamado StartTheQuiz() para resolver os problemas.

Neste segundo tutorial, você aprenderá a:

  • Escreva código para criar objetos aleatórios para usar em problemas de matemática.
  • Adicione um manipulador de eventos para o botão Iniciar.
  • Escreva o código para iniciar o questionário.

Pré-requisitos

Este tutorial baseia-se num tutorial anterior, Criar uma aplicação WinForms de teste de matemática. Se você ainda não concluiu esse tutorial, analise-o primeiro.

Criar um problema de adição aleatória

  1. Em seu projeto do Visual Studio, selecione Windows Forms Designer.

  2. Selecione o formulário Form1.

  3. Na barra de menus, selecione Exibir>Código. Form1.cs ou Form1.vb aparece, dependendo da linguagem de programação que você está usando, para que você possa visualizar o código por trás do formulário.

  4. Crie um objeto Random adicionando uma instrução new perto da parte superior do código em Form1.cs ou Form1.vb.

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

Você pode usar new instruções como esta para criar botões, rótulos, painéis, OpenFileDialogs, ColorDialogs, SoundPlayers, Randoms e até formulários. Esses itens são chamados de objetos .

Quando você executa o programa, o formulário é iniciado. O código por trás dele cria um objeto aleatório e o nomeia randomizador.

Seu teste precisa de variáveis para armazenar os números aleatórios que ele cria para cada problema. Antes de usar variáveis, você as declara, o que significa listar seus nomes e tipos de dados.

  1. Adicione duas variáveis inteiras ao formulário e nomeie-as addend1 e addend2 em Form1.cs ou Form1.vb.

    Observação

    Uma variável inteira é conhecida como um int em C# ou um Integer no Visual Basic. Este tipo de variável armazena um número positivo ou negativo de -2147483648 a 2147483647 e pode armazenar apenas números inteiros, não decimais.

    Você usa sintaxe semelhante para adicionar uma variável inteira como fez para adicionar o objeto Random , como mostra o código a seguir.

    // 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. Adicione um método chamado StartTheQuiz()Form1.cs ou Form1.vb. Esse método usa o método Next() do objeto Random para gerar números aleatórios para os rótulos. StartTheQuiz() acabará por preencher todos os problemas e, em seguida, iniciar o temporizador, por isso adicione esta informação ao comentário de resumo. A função deve se parecer com o código a seguir.

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

Quando você usa o método Next() com um objeto Random, como quando você chama randomizer.Next(51), você obtém um número aleatório menor que 51 ou entre 0 e 50. Este código chama randomizer.Next(51) para que a soma dos dois números aleatórios resulte em uma resposta entre 0 e 100.

Dê uma olhada mais de perto nessas declarações.

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

Essas instruções definem as propriedades de Text de plusLeftLabel e plusRightLabel para exibirem os dois números aleatórios. Os controles de rótulo exibem valores em formato de texto e, na programação, as cadeias de caracteres mantêm o texto. O método ToString() de cada inteiro transforma o inteiro em texto para exibição num rótulo.

Crie problemas aleatórios de subtração, multiplicação e divisão

O próximo passo é declarar variáveis e fornecer valores aleatórios para os outros problemas matemáticos.

  1. Adicione variáveis inteiras para os problemas matemáticos restantes ao seu formulário, após as variáveis de problema de adição. O código em Form1.cs ou Form1.vb deve se parecer com o exemplo a seguir.

    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. Modifique o método StartTheQuiz() em Form1.cs ou Form1.vb adicionando o código a seguir, começando com o comentário "Preencher o problema de subtração".

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

Esse código usa o método Next() da classe Random de uma forma um pouco diferente do que é feito no problema de adição. Quando você dá ao método Next() dois valores, ele escolhe um número aleatório que é maior ou igual ao primeiro valor e menor que o segundo.

Usando o método Next() com dois argumentos, você pode garantir que o problema de subtração tenha uma resposta positiva, a resposta de multiplicação seja no máximo 100 e a resposta de divisão não seja uma fração.

Adicionar um manipulador de eventos ao botão Iniciar

Nesta seção, você adiciona código para iniciar o teste quando o botão Iniciar é selecionado. O código que é executado em reação a um evento como uma seleção de botão é chamado de manipulador de eventos.

  1. No Windows Forms Designer, clique duas vezes no botão Iniciar o teste ou selecione-o e selecione Enter. O código do formulário é exibido e um novo método é visível.

    Essas ações adicionam um manipulador de eventos Click ao botão Iniciar. Quando um participante do questionário seleciona esse botão, o aplicativo executa o código que você adicionará a esse novo método.

  2. Adicione as duas instruções a seguir para que o manipulador de eventos inicie o teste.

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

A primeira declaração chama o novo método StartTheQuiz(). A segunda instrução define a propriedade Enabled do controlo startButton como false para que o participante do quiz não possa selecionar o botão durante um teste.

Executar seu aplicativo

  1. Salve seu código.

  2. Execute seu aplicativo e selecione Iniciar o questionário. Problemas matemáticos aleatórios aparecem, como mostra a captura de tela a seguir.

    Captura de tela que mostra valores aleatórios em todos os quatro problemas matemáticos. O botão Iniciar o questionário aparece esmaecido.

Próximos passos

Avance para o próximo tutorial para adicionar um temporizador ao seu questionário de matemática e verificar as respostas do usuário.