Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Nesta série de quatro tutoriais, você criará um teste de matemática. O teste contém quatro problemas matemáticos aleatórios que um participante do teste 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 a serem usados em problemas matemáticos.
- Adicione um manipulador de eventos para o botão iniciar.
- Escreva o código para iniciar o teste.
Pré-requisitos
Este tutorial se baseia em um tutorial anterior, Criar um aplicativo WinForms de teste de matemática. Se você ainda não concluiu esse tutorial, passe por ele primeiro.
Criar um problema de adição aleatória
Em seu projeto do Visual Studio, selecione Designer de Formulários do Windows.
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 exibir o código por trás do formulário.
Crie um objeto Random adicionando uma instrução
new
perto da parte superior do código em Form1.cs ou Form1.vb.
Você pode usar instruções new
como esta para criar botões, rótulos, painéis, OpenFileDialogs, ColorDialogs, SoundPlayers, Randoms e até formulários. Os itens são chamados objetos.
Quando você executa seu 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 de inteiro ao formulário e nomeie-as addend1 e addend2 no Form1.cs ou Form1.vb.
Nota
Uma variável do tipo inteiro é conhecida como int em C# ou um Integer no Visual Basic. Esse tipo de variável armazena um número positivo ou negativo de -2147483648 até 2147483647 e pode armazenar apenas números inteiros, não decimais.
Você usa uma sintaxe semelhante para adicionar uma variável de inteiro 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 Aleatório para gerar números aleatórios para os rótulos.StartTheQuiz()
acabará preenchendo todos os problemas e, em seguida, iniciará o temporizador, portanto, adicione essas informações ao comentário resumido. A função deve ser semelhante ao 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; }
Ao usar 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. Esse código chama randomizer.Next(51)
para que os dois números aleatórios se adicionem a uma resposta que esteja entre 0 e 100.
Dê uma olhada mais de perto nessas declarações.
Essas instruções definem propriedades Text de plusLeftLabel e plusRightLabel de modo que elas exibam os dois números aleatórios. Os controles de rótulo exibem valores no formato de texto e, na programação, as cadeias de caracteres mantêm o texto. Cada método ToString()
de inteiro converte o inteiro em texto que um rótulo pode exibir.
Criar problemas aleatórios de subtração, multiplicação e divisão
A próxima etapa é 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 formulário, após as variáveis dos problemas de adição. O código em Form1.cs ou Form1.vb deve ser semelhante ao 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 forma um pouco diferente de como é usado no problema de adição. Quando você dá ao método Next()
dois valores, ele escolhe um número aleatório 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ê adicionará código para iniciar o teste quando o botão iniciar estiver selecionado. O código executado em reação a um evento como uma seleção de botão é chamado de manipulador de eventos.
No Designer de Formulários do Windows, clique duas vezes no botão Iniciar o teste ou selecione-o e pressione Enter. O código do formulário é exibido e um novo método é visível.
Essas ações adicionam um manipulador de eventos Clique ao botão iniciar. Quando um participante do teste 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 instrução chama o novo método StartTheQuiz()
. A segunda instrução define a propriedade Enabled do controle startButton para false
de modo que a pessoa realizando o teste não pode escolher o botão durante um teste.
Executar seu aplicativo
Salve seu código.
Execute seu aplicativo e selecione Iniciar o teste. Problemas matemáticos aleatórios aparecem, como mostra a captura de tela a seguir.
Próximas etapas
Avance para o próximo tutorial para adicionar um temporizador ao seu teste de matemática e verificar as respostas do usuário.