Decisões repetições e acompanhamento da execução
Nesta aula
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.
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.
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.
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.
| Passagem | Registro lido | Comparação | Resultado acumulado |
|---|---|---|---|
| 1 | A | true === true | A |
| 2 | B | false === true | A |
| 3 | C | true === true | A 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
| Sintoma | Causa que deve ser investigada | Reparo correspondente |
|---|---|---|
| Todos aparecem | A condição foi removida ou sempre é verdadeira. | Reestabelecer a condição e verificar entrada ativa e inativa. |
| Só o último permanece | O resultado foi reinicializado dentro da repetição. | Criar a coleção antes do laço. |
| Ordem inesperada | Uma ordenação ou transformação foi introduzida. | Comparar a ordem recebida e a regra de saída acordada. |
| Nada acontece | O 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.
S18Tente 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.