AULA 03 / 61 · ACESSO GRATUITO

Decisões repetições e acompanhamento da execução

Graciliano TolentinoEngenharia Caracol · Edição 2.0
Nesta aula
  1. Dar ao programa uma regra observável
  2. Percorrer vários registros
  3. Simular antes de pedir ajuda
  4. Falhas que este exercício permite perceber
  5. Exercício e solução comentada

Dar ao programa uma regra observável

O requisito de catálogo contém uma decisão: mostrar o registro quando ativo for true e omiti-lo quando for false. Uma condição representa essa escolha. if executa um bloco quando a condição é verdadeira; else permite tratar a outra situação. Antes de escrever o bloco, estabeleça resultados para entradas concretas. Isso fornece um critério para verificar a implementação.

javascript
const ativo = false;
if (ativo === true) {
  console.log('Publicar');
} else {
  console.log('Omitir');
}

A saída esperada é Omitir. As chaves delimitam os comandos de cada alternativa. A comparação === true deixa explícita a regra de exibição, mas não substitui a validação do tipo dos dados: uma string incorreta pode ser omitida sem que o problema do arquivo seja denunciado. No projeto completo, validar e selecionar são responsabilidades separadas.

A lista de entrada tem A ativo e B inativo. listarAtivos valida e seleciona. A saída pública contém somente A, com id, titulo e descricao.Ampliar diagrama
Selecionar ativos sem alterar a origem. Filtrar a saída não significa apagar o registro inativo da fonte. Ocultar um cartão depois de entregar o registro ao navegador não atende à mesma fronteira de publicação.

Percorrer vários registros

Repetição é a execução de um conjunto de instruções para mais de um item ou enquanto uma condição se mantém. for...of percorre os valores de uma coleção. Em cada passagem, o nome caso recebe o próximo registro. O array ids começa vazio e push acrescenta um identificador ao final. O código abaixo é o arquivo completo 03_decisoes.mjs.

javascript
const casos = [
  { id: 'A', ativo: true },
  { id: 'B', ativo: false },
  { id: 'C', ativo: true }
];
const ids = [];
for (const caso of casos) {
  if (caso.ativo === true) {
    ids.push(caso.id);
  }
}
console.log(ids);

O resultado esperado contém A e C, nessa ordem. Execute node 03_decisoes.mjs. Não é preciso decorar a forma gráfica exata com que o terminal imprime um array; verifique os valores e a ordem. Se B aparecer, a regra falhou. Se A e C aparecerem duas vezes, investigue onde a coleção de resultado é criada e quantas vezes o bloco está sendo executado.

PassagemRegistro lidoComparaçãoResultado acumulado
1Atrue === trueA
2Bfalse === trueA
3Ctrue === trueA e C

Simular antes de pedir ajuda

A tabela de acompanhamento é uma forma simples de depurar: observar como o estado evolui durante a execução. Escreva o valor de entrada, a condição calculada e a coleção após cada passagem. Quando o resultado difere do esperado, localize a primeira linha em que a diferença surgiu. Corrigir essa causa costuma ser mais útil do que alterar o último comando de exibição.

Um console.log dentro do bloco pode revelar o registro atual. Durante uma investigação, use somente dados fictícios ou informações que possam ser registradas. Apague mensagens temporárias desnecessárias depois de entender o defeito. Log não é um lugar apropriado para senhas, tokens ou dados pessoais completos.

Uma condição não precisa se reduzir a um campo. O operador && exige que as duas condições sejam verdadeiras; || aceita que pelo menos uma seja verdadeira. Use parênteses quando a combinação puder ser interpretada de mais de uma forma. Antes de escrever condições extensas, produza uma tabela dos casos que elas devem aceitar e rejeitar.

Falhas que este exercício permite perceber

SintomaCausa que deve ser investigadaReparo correspondente
Todos aparecemA condição foi removida ou sempre é verdadeira.Reestabelecer a condição e verificar entrada ativa e inativa.
Só o último permaneceO resultado foi reinicializado dentro da repetição.Criar a coleção antes do laço.
Ordem inesperadaUma ordenação ou transformação foi introduzida.Comparar a ordem recebida e a regra de saída acordada.
Nada aconteceO arquivo executado pode ser diferente do editado.Conferir caminho e salvar antes de executar.

Exercício e solução comentada

Use os registros A falso, B verdadeiro, C falso e D verdadeiro. Antes de executar, escreva quatro linhas da tabela de acompanhamento. Depois adapte somente a lista do arquivo e compare a previsão com a saída. Uma solução correta acumula vazio, B, B e B/D ao final das quatro passagens.

Variação: acrescente E com ativo "true". A seleção estrita não deve incluí-lo, mas uma implementação de catálogo confiável também deve sinalizar que ele viola o contrato de entrada. Essa diferença separa acertar um filtro de validar um conjunto de dados. Sua conclusão precisa mencionar as duas tarefas.

Você pode avançar quando consegue prever o estado após cada passagem, explicar por que a coleção de saída começa antes do laço e localizar uma primeira divergência entre previsão e execução. Repetir o código sem conseguir fazer a tabela ainda não demonstra compreensão da regra.

Fontes relacionadas

Consulte os limites e as seções de apoio de cada referência.

S18
Conseguiu explicar o que aprendeu?

Tente o exercício antes de consultar a solução. Marque a aula para organizar sua leitura.

A conclusão desta leitura não equivale a certificação ou aceite de um projeto real. Teste os exemplos no escopo indicado e registre as limitações.