Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Sugestão] Mudança da correção dos exercícios de lógica

Na primeira aula do curso "Lógica de Programação: praticando com desafios", temos uma lista de exercícios não obrigatórios na hora da prática. Os exercícios seriam: Ex. 1: No projeto Alugames, implemente uma confirmação de devolução. Ex. 3: Crie um programa que verifica se uma palavra ou frase é um palíndromo. Ex. 4: Crie um programa com uma função que receba três números como argumentos e os retorne em ordem crescente. Exiba os números ordenados.

Até aí, tudo bem! É sempre importante praticar o conteúdo com os exercícios de lógica, e esses particularmente fornecem desafios que realmente exigem pensamento crítico e planejamento em suas resoluções.

O problema começa na correção dos exercícios, clicando no botão "Opinião do Instrutor" logo após o fim da lista. Eis a resolução dos instrutores para os problemas de lógica acima: Ex. 1

function alterarStatus(id) {
    let gameClicado = document.getElementById(`game-${id}`);
    let imagem = gameClicado.querySelector('.dashboard__item__img');
    let botao = gameClicado.querySelector('.dashboard__item__button');
    let nomeJogo = gameClicado.querySelector('.dashboard__item__name');


    if (imagem.classList.contains('dashboard__item__img--rented')) {
        // Adiciona uma confirmação antes de devolver o jogo
        if (confirm(`Você tem certeza que deseja devolver o jogo ${nomeJogo.textContent}?`)) {
            imagem.classList.remove('dashboard__item__img--rented');
            botao.classList.remove('dashboard__item__button--return');
            botao.textContent = 'Alugar';
        }
    } else {
        imagem.classList.add('dashboard__item__img--rented');
        botao.classList.add('dashboard__item__button--return');
        botao.textContent = 'Devolver';
    }
}

Ex. 3

function estaPalavraEUmPalindromo(palavra) {
    let separandoPalavra = palavra.split("");
    let palavraInvertida = separandoPalavra.reverse("");
    palavraInvertida = palavraInvertida.join("");
    if (palavra == palavraInvertida) {
        console.log(`Esta palavra ${palavra} é um Palindromo`);
    } else {
        console.log(`Esta palavra ${palavra} não é um Palindromo`);
    }
    estaPalavraEUmPalindromo();
}

Ex. 4

function ordenarNumeros(a, b, c) {
    const numerosOrdenados = [a, b, c].sort((x, y) => x - y);
    console.log(`Números ordenados: ${numerosOrdenados.join(', ')}`);
}

// Exemplo de uso:
ordenarNumeros(3, 1, 5); // Deve exibir "Números ordenados: 1, 3, 5"

A Escola de Programação oferece exercícios de lógica de programação que são bons, mas as correções são avançadas demais para os alunos da primeira formação. Isso ocorre porque as correções usam arrow functions, que são um tópico de programação funcional, que não é abordado nas aulas.

Pontos principais:

As correções dos exercícios propostos pelos instrutores são avançadas demais para os alunos da primeira formação. Isso ocorre porque as correções usam arrow functions, que são um tópico de programação funcional, não abordado nas aulas e até considerado avançado no estudo de uma linguagem em geral.

Solução:

A Escola poderia oferecer duas resoluções para cada exercício: uma resolução básica, que use apenas conceitos ensinados nas aulas, e uma resolução mais avançada, que use conceitos mais avançados, como arrow functions. Ou mesmo só uma correção básica, que acompanhe o nível dos alunos e conceitos que, mesmo não ensinados nas aulas, sejam de fácil acesso através da documentação, como já fomos orientados a estudar.

Aqui minha resolução, muito mais simples e sem o uso de expressões lambda:

Ex. 1

function confirmarDevolucao(div, link) {
    let resposta = prompt('Tem certeza que deseja devolver o jogo? (SIM/NÃO)');
    if (resposta == 'NÃO') {
        div.classList.add('dashboard__item__img--rented');
        link.classList.add('dashboard__item__button--return');
        link.innerHTML = 'Devolver';
    } else {
        div.classList.remove('dashboard__item__img--rented');
        link.classList.remove('dashboard__item__button--return');
        link.innerHTML = 'Alugar';
    }
}

Ex. 2

// variável 'alugados' declarada no início do código, valendo 1 (pois a página começa com 1 jogo alugado) 
// é incrementada a cada clique no botão de 'alugar' ou 'devolver' 
function totalAlugados(alugados) {
    console.log(alugados);
}

Ex. 3

function palavraPalindromo(palavra) {
    let letras = palavra.split('');
    letras.reverse();
    if (letras.join('') == palavra) {
        alert('A palavra é um palíndromo!');
    } else {
        alert('A palavra não é um palíndromo!');
    }
}

Ex. 4

function ordemCrescente(n1, n2, n3) {
    let ordemNumeros = [n1, n2, n3];
    ordemNumeros.sort();
    
    for (i = 0; i < ordemNumeros.length; i++) {
        alert(ordemNumeros[i]);
    }
}

Obrigado pela atenção!

1 resposta
solução!

Oi Miguel, tudo bem?

Primeiramente, quero agradecer por compartilhar sua opinião e suas soluções alternativas. É muito importante para nós saber como podemos melhorar a experiência de aprendizado.

Entendo que as soluções propostas pelos instrutores possam parecer um pouco avançadas para quem está começando. A ideia de oferecer duas soluções, uma básica e uma avançada, é bastante interessante e pode ser útil para muitos estudantes.

As soluções que você propôs são muito boas e mostram que você entendeu bem os conceitos que foram ensinados. Parabéns!

Ao final do curso você pode escrever esse feedback que ele chegará nas pessoas responsáveis pelo curso. E também atribuir uma nota.

Um abraço e bons estudos.