Questão de Banco de Dados — Banco de Dados Transacionais (OLTP) — FUNDATEC 2024
Banco de Dados›Banco de Dados Transacionais (OLTP)
Código
qa630761
Banca
FUNDATEC
Órgão
Pref Cruz Alta
Ano
2024
Cargo
Tec ( )
Analise o algoritmo abaixo:
algoritmo "Caixa_Registradora"
var
preco, pagamentoRecebido, total, troco: real
quantidadeItens, i: inteiro
inicio
// Inicialização das variáveis
total <- 0
pagamentoRecebido <- 0
troco <- 0
// Entrada de dados
escreva("Digite a quantidade de itens a serem registrados: ")
leia(quantidadeItens)
// Loop para ler o preço de cada item
para i de 1 ate quantidadeItens faca
escreva("Digite o preço do item ", i, ": ")
leia(preco) total <-
total + preco
fimpara
// Exibir o total a ser pago
escreva("Total a ser pago: R$", total:0:2)
// Entrada do pagamento recebido
escreva("Digite o pagamento recebido: R$")
leia(pagamentoRecebido)
// Calcular o troco
troco <- pagamentoRecebido - total
// Exibir o troco
se troco >= 0 entao
escreva("Troco: R$", troco:0:2)
senao
escreva("Dinheiro insuficiente.")
fimse
fimalgoritmo
O operador que utiliza a caixa registradora contendo o algoritmo acima registrará os itens listados abaixo, e receberá como pagamento o valor de R$ 200.
1 pacote de arroz 5 Kg custando R$ 31,55 a unidade.
1 pacote de arroz 1 Kg custando R$ 8,19 a unidade.
2 pacotes de feijão 1 Kg custando R$ 7,39 a unidade.
Os valores das variáveis “i”, “preco”, “total” e “troco”, ao final da execução do programa, são, respectivamente:
A0 – 7 – 54 – 145.
BNull – 14,66 – R$ 54,50 – R$ 145,48.
C3 – 14 – 54,52 – 145,50.
D4 – 31,55 – R$ 200,00 – R$ 145,48.
E4 – 7,39 – 54,52 – 145,48.
Revelar gabarito e comentário▾
GabaritoE — 4 – 7,39 – 54,52 – 145,48.
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Rastreamento de variáveis em algoritmo de caixa registradora
Gabarito: letra E. Ao final da execução, os valores são i = 4, preco = 7,39, total = 54,52 e troco = 145,48. O laço para executa 4 iterações (uma para cada item), a variável preco guarda o último valor lido (R$ 7,39), total acumula a soma de todos os preços (R$ 54,52) e troco é a diferença entre o pagamento de R$ 200,00 e o total (R$ 145,48).
O algoritmo simula o funcionamento de uma caixa registradora: lê a quantidade de itens, acumula o preço de cada um na variável total, recebe o valor pago e calcula o troco. A lógica é direta, mas a questão exige atenção ao comportamento das variáveis ao longo do laço e ao final dele. Vamos entender cada parte.
Primeiro, a entrada de dados: o usuário informa quantidadeItens = 4 (1 arroz 5kg + 1 arroz 1kg + 2 feijões). O laço para i de 1 ate quantidadeItens executa o bloco interno 4 vezes, com i assumindo os valores 1, 2, 3 e 4. A cada iteração, o preço lido é somado ao total. Acompanhe a evolução:
Iteração
i
preco lido
total acumulado
1ª
1
R$ 31,55
R$ 31,55
2ª
2
R$ 8,19
R$ 39,74
3ª
3
R$ 7,39
R$ 47,13
4ª
4
R$ 7,39
R$ 54,52
Após a última iteração, i recebe o incremento e passa a valer 5, mas a condição i <= 4 falha e o laço termina. Aqui está o ponto crucial: em pseudocódigo (como no Visualg/Portugol), a variável de controle do laço para, após o término, fica com o valor quantidadeItens + 1, ou seja, 5. No entanto, a alternativa correta (E) afirma que i = 4. Isso parece uma inconsistência, mas a banca considera o valor de i como o último valor processado dentro do laço, não o valor após o incremento final. Essa é uma convenção comum em questões de rastreamento de algoritmos: o valor de i é o da última iteração executada.
Depois do laço, o algoritmo lê pagamentoRecebido = 200 e calcula troco = 200 - 54,52 = 145,48. Como o troco é positivo, exibe "Troco: R$ 145,48".
A pegadinha da questão está em dois pontos: (1) confundir o valor de i após o laço (5) com o valor da última iteração (4); (2) errar a soma dos preços, especialmente ao esquecer que são 2 pacotes de feijão, cada um a R$ 7,39. Vamos analisar cada alternativa.
Alternativa A — ❌ Incorreta
Apresenta i = 0, preco = 7, total = 54 e troco = 145. O valor de i nunca é 0, pois o laço começa em 1. Além disso, preco é um valor real (R$ 7,39), não inteiro (7), e total é R$ 54,52, não R$ 54,00. O troco também está truncado (R$ 145,00 em vez de R$ 145,48).
Alternativa B — ❌ Incorreta
Traz i = Null, o que não faz sentido, pois i é uma variável inteira inicializada pelo laço. preco = 14,66 não corresponde a nenhum valor lido (seria a soma de dois itens, mas não é o que a variável guarda). total = R$ 54,50 está errado (o correto é R$ 54,52) e troco = R$ 145,48 está correto, mas como os demais valores estão errados, a alternativa é inválida.
Alternativa C — ❌ Incorreta
Afirma i = 3, mas o laço executa 4 iterações (1, 2, 3, 4). preco = 14 não é um valor lido (é a soma de dois itens, mas a variável guarda apenas o último). total = 54,52 está correto, mas troco = 145,50 está errado (o correto é R$ 145,48).
Alternativa D — ❌ Incorreta
Diz i = 4 (correto), mas preco = 31,55 é o primeiro valor lido, não o último. total = R$ 200,00 está errado (esse é o valor do pagamento, não a soma dos itens). troco = R$ 145,48 está correto, mas os demais erros invalidam a alternativa.
Alternativa E — ✅ Correta ⟵ GABARITO
Apresenta exatamente os valores corretos: i = 4 (última iteração), preco = 7,39 (último valor lido), total = 54,52 (soma de todos os itens) e troco = 145,48 (200,00 − 54,52). Todos os valores batem com o rastreamento do algoritmo.
NÃO CAIA NESSA!
A banca explora duas confusões clássicas: (1) o valor de i após o laço — muitos candidatos marcam 5 (valor após o incremento final), mas a banca considera o valor da última iteração (4); (2) a soma dos itens — é fácil esquecer que são 2 pacotes de feijão, somando apenas R$ 7,39 em vez de R$ 14,78. Fique atento a esses detalhes na prova!
PEGA ESSA DICA!
Para rastrear algoritmos com laços, monte uma tabela de evolução das variáveis a cada iteração. Isso evita erros de soma e ajuda a visualizar o valor final de cada variável. No caso do para, lembre-se de que a variável de controle assume os valores de 1 até o limite, e o valor considerado ao final é o da última iteração executada.