Prévia do material em texto
1) Um professor de programação registrou as notas dos seus 25 alunos numa
coluna da planilha do Excel. Para calcular a média da turma, ele escreveu um
programa em VBA. Qual das alternativas abaixo apresenta a melhor réplica
desse algoritmo?
a) Sub CalcularMedia()
Dim soma, media As Double
soma = 0
For coluna = 1 To 25 Step 1
soma = soma + Cells(1, coluna)
Next linha
media = soma / 25
MsgBox (media)
End Sub
b) Sub CalcularMedia()
Dim soma, media As Double
soma = 0
For coluna = 1 To 25 Step 1
soma = soma + Cells(1, coluna)
Next linha
media = soma / 2
MsgBox (media)
End Sub
c) Sub CalcularMedia()
Dim soma, media As Double
soma = 0
For linha = 1 To 25 Step 1
soma = soma + Cells(linha, 1)
Next linha
media = soma / 25
MsgBox (media)
End Sub
d) Sub CalcularMedia()
Dim soma, media As Double
soma = 0
For linha = 1 To 25
soma = soma + Cells(linha, 1)
Next linha
media = soma / 2
MsgBox (media)
End Sub
e) Sub CalcularMedia()
Dim soma, media As String
soma = 0
For linha = 1 To 25
soma = soma + Cells(linha, 1)
Next linha
media = soma / 25
MsgBox (media)
End Sub
2) A dona de um mercadinho guardou, em duas colunas do Excel, os
valores gastos para comprar e os valores ganhos ao vender 10
produtos de seu estoque em um mês. Agora ela quer saber qual
foi seu lucro total nesse mês. Qual dos algoritmos abaixo resolve
esse problema?
a) Sub CalcularLucro()
Dim lucro As Double
lucro = 0
For linha = 1 To 10
lucro = lucro + (Cells(linha, 1) - Cells(linha, 2))
Next linha
MsgBox (lucro)
End Sub
b) Sub CalcularLucro()
Dim lucro As Double
lucro = 0
For linha = 1 To 10 Step 2
lucro = lucro + (Cells(linha, 1) - Cells(linha, 2))
Next linha
MsgBox (lucro)
End Sub
c) Sub CalcularLucro()
Dim lucro As Double
lucro = 0
For coluna = 1 To 10
lucro = lucro + (Cells(1, coluna) - Cells(2, coluna))
Next linha
MsgBox (lucro)
End Sub
d) Sub CalcularLucro()
Dim lucro As Integer
lucro = 0
For linha = 1 To 10
lucro = lucro + (Cells(linha, 1) + Cells(linha, 2))
Next linha
MsgBox (lucro)
End Sub
e) Sub CalcularLucro()
Dim lucro As Integer
lucro = 0
For coluna = 1 To 10
lucro = lucro + (Cells(1, coluna) - Cells(2, coluna))
Next linha
MsgBox (lucro)
End Sub
3) Um colega seu fez o seguinte programa em VBA:
Sub Programa()
Dim numero, contador As Integer
Dim resultado As Boolean
resultado = False
contador = 2
numero = InputBox("Digite um número")
Do While contador < numero
If numero Mod contador = 0 Then
resultado = True
Exit Do
End If
contador = contador + 1
Loop
If resultado = True Then
MsgBox ("mensagem 1")
Else
MsgBox ("mensagem 2")
End If
End Sub
Quais devem ser os textos das mensagens 1 e 2, respectivamente?
A) "O número é par" e "O número é ímpar".
B) "O número é primo" e "O número não é primo".
C) "O número é divisível por 2" e "O número não é divisível por 2".
D) "O número não é divisível por 2" e "O número é divisível por 2".
E) "O número não é primo" e "O número é primo".
4) Execute o algoritmo abaixo para os seguintes valores: 0, 5 e 7.
Sub programa()
Dim first, second, sum, fib, n As Integer
n = InputBox("Digite um número")
first = 0
second = 1
sum = 0
If n = 0 Then
fib = first
ElseIf n = 1 Then
fib = second
Else
For i = 2 To n
sum = first + second
first = second
second = sum
Next i
fib = sum
End If
MsgBox (fib)
End Sub
Qual alternativa contém os valores finais corretos para a variável fib?
A) 0, 5 e 13 B) 1, 6 e 14 C) 2, 5 e 13 D) 0, 6 e 12 E) 0, 5 e 14
5) O algoritmo abaixo pede números ao usuário, até que ele digite 0. Para cada
número digitado, o algoritmo imprime o número de divisores maiores do que
1 e menores do que o próprio número.
Sub Numeros()
Dim numero As Integer
Do
numero = InputBox("Digite um número")
MsgBox (QuantidadeDivisores(numero))
Loop While numero > 0
End Sub
Qual das alternativas abaixo contém a implementação correta da função Quantidade
Divisores?
A) Sub QuantidadeDivisores(ByVal numero As Integer)
For n = 2 To (numero - 1)
If numero Mod n = 0 Then
QuantidadeDivisores = QuantidadeDivisores + 1
End If
Next n
End Sub
B) Function QuantidadeDivisores(ByVal numero As Integer)
For n = 2 To (numero - 1)
If numero Mod n = 0 Then
QuantidadeDivisores = QuantidadeDivisores + 1
End If
Next n
End Function
C) Function QuantidadeDivisores(ByVal numero As Integer)
Dim quantidade As Integer
quantidade = 0
For n = 2 To (numero - 1)
If numero / n = 0 Then
quantidade = quantidade + 1
End If
Next n
QuantidadeDivisores = quantidade
End Function
D) Function QuantidadeDivisores(ByVal numero As Integer)
For n = 2 To (numero - 1)
If numero Mod n = 1 Then
QuantidadeDivisores = QuantidadeDivisores + 1
End If
Next n
End Function
E) Function QuantidadeDivisores(ByVal numero As Integer)
For n = 1 To numero
If numero Mod n = 0 Then
QuantidadeDivisores = QuantidadeDivisores + 1
End If
Next n
End Function