Prova 2 · Variáveis e instruções
Partes III e IV (cap. 10–19): variáveis, nomes, tipos de dados, globais, código em linha reta, condicionais, laços, recursão, tabelas, complexidade
Objetivas
0/20 respondidas1.
Uma variável é referenciada nas linhas 10, 12 e 95 de uma rotina. O que o capítulo 10 recomenda?
2.
Qual opção liga um valor mais tarde (binding time mais tardio)?
3.
Qual nome segue melhor as orientações do capítulo 11?
4.
if (!naoEncontrado) aparece no código. A melhor correção é:5.
Um sistema financeiro guarda valores em
float e as somas mensais estão erradas por centavos. A recomendação é:6.
O código tem
taxa = valor * 0.0725 em 15 lugares. O que o capítulo 12 sugere?7.
Qual uso de variável global o livro considera aceitável?
8.
Por que o livro prefere rotinas de acesso a ler e escrever um global diretamente?
9.
Qual forma deixa mais clara a dependência entre etapas que precisam ocorrer em ordem?
10.
Num
switch de status de pedido (novo, pago, enviado), o default deve:11.
"Acesso permitido para maiores de idade (18 anos ou mais)". Qual teste está correto?
12.
Qual é o maior problema de um laço
for cujo índice é alterado dentro do corpo para forçar a saída?13.
Um laço tem 4 níveis de aninhamento e 120 linhas. O que fazer?
14.
Qual uso de recursão é o mais adequado?
15.
Em C, sem exceções, uma rotina aloca três recursos e precisa liberá-los em qualquer saída de erro. Segundo o livro:
16.
Uma seguradora calcula o prêmio por idade (faixas de 10 anos), sexo e estado civil com 60 ifs. O livro sugere:
17.
Uma rotina tem 2
if, 2 for, 1 while e 3 ||. Qual a complexidade de McCabe e a ação indicada?18.
Qual expressão equivale a
!(cheio || bloqueado)?19.
Qual técnica não está entre as indicadas para reduzir aninhamento profundo?
20.
Dados de um arquivo de cabeçalho, seguidos de vários registros de detalhe e um rodapé, sugerem qual estrutura de controle?
Dissertativas
autoavaliação · não entram na notaD1.
Explique os conceitos de escopo, span e tempo de vida de variáveis, e por que reduzi-los melhora o código.
Ver resposta modelo
Escopo é onde a variável é visível; span é a distância entre referências; tempo de vida é o intervalo da primeira à última referência. Reduzi-los diminui o que o leitor precisa lembrar, a janela em que a variável pode ser alterada por engano e o risco de usar valores antigos. Técnicas: declarar e inicializar perto do uso, agrupar referências, preferir escopo local e tornar global só se necessário.
D2.
Compare os três métodos de acesso de tabelas (direto, indexado e em degraus), com um exemplo de uso para cada.
Ver resposta modelo
Direto: a chave é o índice (dias por mês, indexado pelo mês). Indexado: uma tabela pequena de índices aponta para a tabela principal, economizando espaço quando as chaves são esparsas (códigos de produto). Em degraus: cada entrada vale para uma faixa (notas A–D por pontuação, alíquotas por faixa de renda); exige cuidado com os limites e pode usar busca binária.
D3.
Descreva como calcular a complexidade de McCabe, o que os resultados indicam e cite três técnicas para reduzir complexidade e aninhamento.
Ver resposta modelo
Comece com 1 e some 1 para cada if, while, repeat, for, and, or e para cada caso de case. 0–5: bom; 6–10: comece a simplificar; mais de 10: quebre a rotina. Técnicas: extrair rotinas, usar cláusulas de guarda, converter if aninhados em cadeia if-else ou case, usar tabelas, usar polimorfismo, mover condições complexas para funções booleanas.