Como usar o Visual Basic para criar um teste de múltipla escolha |
Por Laura Gittins Atualizado em 23 março, 2017 Traduzido por Ritaciro Cavalcante
Em um teste de múltipla escolha, cada questão é composta pela pergunta em si e diferentes respostas, das quais apenas uma é a correta. Você pode criar um teste de múltipla escolha no Visual Basic usando rótulos para mostrar as perguntas e botões "radio" para as respostas possíveis, além de controles de botão para navegar pelas diferentes questões. No código, use arrays para salvar as perguntas e respostas enviadas pelo usuário e mantenha uma variável de contador para poder saber em que questão o usuário se encontra. No final do teste, marque as respostas do usuário e mostre o resultado no formulário.
Use o Visual Basic para criar seu próprio show de perguntas e respostas (Ok, not ok image by ipal from Fotolia.com)
Abra um novo projeto do Visual Basic. Adicione dois rótulos, três botões "radio" e dois controles de botão ao formulário. Arraste os dois rótulos para o topo, com Label1 em cima de Label2. Arraste RadioButton1, RadioButton2 e RadioButton3 e alinhe-os verticalmente abaixo dos rótulos. Arraste os dois botões embaixo dos botões "radio" com Button1 na esquerda e Button2 à direita.
Pressione F7 para abrir a janela de código. Digite o código a seguir a nível de classe:
Dim perguntas(2, 4) As String Dim respostas(2) As String Dim NumPerg As Integer
A primeira linha cria um array bidimensional. A primeira dimensão é usada para cada pergunta e a segunda é para a pergunta em si, três escolhas de resposta e a resposta correta. A segunda linha cria um array para guardar as respostas do usuário. A terceira cria uma variável de contagem que confere em que pergunta o usuário está.
Private Sub GetPerguntas() perguntas = New String(,) {{"Quantas cores tem o arco-íris?", "5", "6", "7", "7"}, {"Quem estrelou em Piratas do Caribe?", "Johnny Depp", "John Malkovich", "John Cusack", "Johnny Depp"}, {"Qual é a capital da Flórida?", "Miami", "Tallahassee", "Jacksonville", "Tallahassee"}} End Sub
Essa subrotina simplesmente insere as três perguntas e respostas no array de perguntas. Você pode inserir mais perguntas ou mesmo importá-las de um arquivo de texto, mas lembre-se de mudar o tamanho dos arrays de pergunta e resposta para acomodar o número de questões.
Private Sub AvaliarTeste() Dim pontuacao As Integer = 0 For i = 0 To 2 If respostas(i) = perguntas(i, 4) Then pontuacao += 1 End If Next Label1.Text = "O teste acabou!" Label2.Text = "Você acertou" & grade & " das" & answers.Length & " perguntas!" RadioButton1.Enabled = False RadioButton2.Enabled = False RadioButton3.Enabled = False Button1.Enabled = False Button2.Enabled = False End Sub
A primeira linha declara uma subrotina que avalia o teste. Ela cria uma variável local para manter a pontuação e depois varre as perguntas no seu array e as respostas enviadas pelo usuário. Para cada resposta que confere, a pontuação sobe em 1. Finalmente, ela mostra a pontuação e desativa o resto dos controles.
Abra a rotina Form1_Load() e digite o código a seguir:
Me.Text = "Meu Teste de Múltipla Escolha!" GetPerguntas() NumPerg = 1 Label1.Text = "Pergunta " & quesNum & " de " & answers.Length Label2.Text = perguntas(0, 0) Button1.Text = "Anterior" Button2.Text = "Próxima" RadioButton1.Text = perguntas(0, 1) RadioButton2.Text = perguntas(0, 2) RadioButton3.Text = perguntas(0, 3)
A primeira linha determina o texto na barra de título. A próxima chama a subrotina getPerguntas(). A terceira inicializa o contador de perguntas. A quarta mostra em que questão o usuário está. A quinta mostra a primeira questão no rótulo. A sexta e a sétima mudam o texto para os dois botões. As últimas três linhas inserem as três escolhas como texto para os três botões "radio".
Abra a subrotina Button1_Click() e digite o código a seguir
If numPerg > 1 Then numPerg -= 1 Label1.Text = "Pergunta " & quesNum & " de 3" Label2.Text = perguntas(numPerg - 1, 0) RadioButton1.Text = perguntas(numPerg - 1, 1) RadioButton2.Text = perguntas(numPerg - 1, 2) RadioButton3.Text = perguntas(numPerg - 1, 3) If Button2.Text = "Enviar" Then Button2.Text = "Próximo" End If End If
Esse é o código para o botão "Anterior". Ele primeiro confere se o usuário pressionou o botão ainda durante a primeira questão. Se não, ele subtrai o contador de perguntas em 1 e muda o texto dos rótulos e botões "radio" para mostrar a pergunta anterior. Se o usuário estava na pergunta final, o texto em Button2 muda de "Enviar" para "Próxima".
Abra a subrotina Button2_Click() e digite o código a seguir:
If RadioButton1.Checked = True Then respostas(numPerg - 1) = RadioButton1.Text ElseIf RadioButton2.Checked = True Then respostas(numPerg - 1) = RadioButton2.Text ElseIf RadioButton3.Checked = True Then respostas(numPerg - 1) = RadioButton3.Text End If RadioButton1.Focus() If numPerg < 3 Then numPerg += 1 Label1.Text = "Pergunta " & quesNum & " de " & answers.Length Label2.Text = perguntas(numPerg - 1, 0) RadioButton1.Text = perguntas(numPerg - 1, 1) RadioButton2.Text = perguntas(numPerg - 1, 2) RadioButton3.Text = perguntas(numPerg - 1, 3) If numPerg = 3 Then Button2.Text = "Submit" End If Else AvaliarTeste() End If
Esse é o código para o botão "Próxima". As primeiras sete linhas conferem qual botão radio o usuário escolheu e salvam a resposta no array de respostas. A próxima linha muda o foco da seleção para o RadioButton1. A próxima linha confere se o usuário não está na última questão. Se não estiver, a subrotina aumenta o valor da variável de contador em um e preenche os rótulos e os botões radio com as informações da próxima questão. Se estiver, ele muda o texto do botão "Próxima" para "Enviar". Se o usuário já estiver na última questão e clicou em "Enviar", o programa chama a subrotina AvaliarTeste para obter a pontuação.