Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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
Em seu projeto do Visual Studio, selecione Windows Forms Designer.
Selecione o formulário Form1.
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.
Crie um objeto Random adicionando uma instrução
newperto da parte superior do código em Form1.cs ou Form1.vb.
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.
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.
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.
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.
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;
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.
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.
Adicione as duas instruções a seguir para que o manipulador de eventos inicie o teste.
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
Salve seu código.
Execute seu aplicativo e selecione Iniciar o questionário. Problemas matemáticos aleatórios aparecem, como mostra a captura de tela a seguir.
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.