Questão de Algoritmos e Estrutura de Dados — Lógicas de Programação — FUNDATEC 2024
Algoritmos e Estrutura de Dados›Lógicas de Programação
Código
qg175633
Banca
FUNDATEC
Órgão
Prefeitura de Paulo Bento - RS
Ano
2024
Nível
Superior
Cargo
Assistente de Processamento de Dados
Analise o algoritmo abaixo, que foi escrito no software VisuAlg 3.0:algoritmo "cálculo_média"varqtd, cont, soma, media: inteiroiniciosoma <- 0leia(qtd)para cont de 1 ate qtd facasoma <- soma + contfimparamedia <- soma / contescreva(media)fimalgoritmoO que precisa ser corrigido no algoritmo acima para que ele seja executado sem erros?
AA atribuição da variável “media” deve ser movida para dentro do laço de repetição “para”.
BO tipo da variável “media” deve ser alterado para “real”.
CA instrução “escreva(media)” deve ser movida para cima da atribuição da variável “media”.
DA variável “cont” deve ser inicializada antes do laço de repetição “para”.
EO operador de divisão “/” (barra) deve ser alterado para “%” (percentual).
Revelar gabarito e comentário▾
GabaritoB — O tipo da variável “media” deve ser alterado para “real”.
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”.
Algoritmo – Correção de Tipo em VisuAlg
Gabarito: letra B. O erro principal é que a variável media é declarada como inteiro, mas a divisão soma / cont (onde cont vale qtd+1 após o laço) produz um resultado fracionário, exigindo o tipo real para evitar truncamento. As demais alternativas apontam correções desnecessárias ou incorretas.
O algoritmo lê um valor qtd, soma todos os números de 1 até qtd na variável soma, e depois calcula media <- soma / cont. Ao final do laço para, a variável cont terá o valor qtd+1, pois no VisuAlg o contador é incrementado ao final de cada iteração e, ao sair do laço, ultrapassa o limite. Esse valor é usado como divisor, o que está errado conceitualmente (o denominador deveria ser qtd), mas não causa erro de execução – apenas um resultado incorreto. O problema que impede a execução sem erros é o tipo da variável media.
No VisuAlg, ao atribuir um valor real a uma variável inteira, ocorre um erro de tipo (incompatibilidade), a menos que se use funções de conversão. A declaração media: inteiro não pode receber o resultado de uma divisão entre inteiros que resulte em número fracionário. A solução é declarar media como real.
Alternativa
Descrição da correção
Correta?
Motivo
A
Mover media <- soma / cont para dentro do laço
❌
Não resolve o erro de tipo; cont varia a cada iteração, e o cálculo não representaria a média final.
B
Alterar tipo da variável media para real
✅
A divisão soma / cont produz resultado fracionário; inteiro causa erro de incompatibilidade de tipo.
C
Mover escreva(media) para antes da atribuição de media
❌
Exibiria valor não calculado (lixo ou erro).
D
Inicializar cont antes do laço para
❌
No VisuAlg, o comando para gerencia automaticamente a variável de controle.
E
Trocar operador / por %
❌
% é operador de módulo (resto), não de divisão; alteraria o cálculo.
Alternativa A — ❌ Incorreta
Mover a atribuição de media para dentro do laço faria com que media fosse recalculada a cada iteração, mas isso não resolve o erro de tipo; além disso, o valor de cont variaria, e o cálculo não representaria a média final. O erro de tipo permaneceria.
Alternativa B — ✅ Correta ⟵ GABARITO
O tipo real permite armazenar valores fracionários. A divisão soma / cont (ou mesmo soma / qtd, se corrigido) produz um número real. Portanto, media deve ser declarada como real.
Alternativa C — ❌ Incorreta
Mover escreva(media) para antes da atribuição faria com que o programa tentasse exibir um valor ainda não calculado, gerando erro ou valor lixo. A ordem atual está correta: primeiro calcula, depois exibe.
Alternativa D — ❌ Incorreta
No VisuAlg, a variável cont é automaticamente inicializada e controlada pelo comando para. Não há necessidade de inicialização manual antes do laço; fazê-lo poderia gerar conflito.
Alternativa E — ❌ Incorreta
O operador % (percentual) não é um operador de divisão no VisuAlg; ele é usado para módulo (resto da divisão inteira). A divisão real usa /. Alterar o operador quebraria o cálculo.
PEGA ESSA DICA!
Em algoritmos, ao lidar com divisões que podem gerar frações, a variável de resultado deve ser declarada como real. Lembre-se que a divisão de dois inteiros em VisuAlg pode resultar em valor real, e a atribuição a uma variável inteira causa erro de tipo. Sempre verifique os tipos das variáveis.