4
respostas

Não entendi quase nada no Exercício 15

O código é esse...

function mostra(frase) {
        document.write(frase);
        pulaLinha();
    }

    function a(texto) {

        return "(" + texto + ")";
    }

    function b(texto) {

        return "@" + texto + "@";
    }

    function c(nome, sobrenome) {

        return b(nome + " " + a(sobrenome));

    }

    var resultado = c("Flávio", "Almeida");

    mostra(resultado);

Alguém pode me explicar pq o resultado sai @Flávio (Almeida)@ ?

4 respostas

bom dia amigo! tudo bem?

posso estar errado, ate porque nao estudo JavaScript nem html mais o pouco que entendi é que:

você atribuiu as variaveis (nome, sobrenome) o nome de Flavio Almeida e escolheu para a variavel resultado a função "C"

Acredito que o problema de ter saido diferente do que esperava é que a funcao C esta recebendo return b, entao a estrutura final ficou a funcao b + o que foi adicionado no return!

Espero ter ajudado em algo.

O exercício era pra escolher entre 3 opções e eu errei, peguei o código e o resultado correto é esse @Flávio (Almeida)@ só queria saber qual a lógica para chegar nesse resultado, no caso ficou confuso a leitura de como ele seguiu a execução desse código.

Eu acabei esse curso agora e nunca me atrevi a explicar nenhum código pra ninguém kkkkk, mas incentivado pelo CEO da Alura e porque também demorei muito a entender esse exercício, vou fazer um esforço aqui Willian:

Do final para o começo, vamos analisar o código. Nosso programa está exibindo a variável "resultado":

mostra(resultado);

O que seria "resultado"?

  var resultado = c("Flávio", "Almeida");

A variável "resultado" está executando a função "c" que recebe como parâmetros as palavras "Flávio e "Almeida". Então vamos subir um pouco mais e verificar do que se trata a função "c": ela recebe dois parâmetros conforme já vimos, que é o nome e o sobrenome, porém retorna "nome + espaço + a(sobrenome) de acordo com o código abaixo.

function c(nome, sobrenome) {

        return b(nome + " " + a(sobrenome));

Até o momento teremos portanto "return b(Flávio + " " + a(Almeida). Seguindo vamos ver o que faz essa função "b":

function b(texto) {

        return "@" + texto + "@";
    }

Dessa forma teremos @+texto+@, sendo texto = Flávio + espaço + a(Almeida), ficando @Flávio a(Almeida)@. Agora só nos resta executar a função "a":

function a(texto) {

        return "(" + texto + ")";
    }

Teremos então @Flávio (Almeida)@, pois substituiremos a palavra texto pela palavra Almeida, que é o parâmetro desejado. Apenas em torno do sobrenome, pois é onde a função "a" vai atuar.

Espero ter sido minimamente didático,

Abraço

Muito bom Leandro Souza da Silva, ficou bem detalhada e completa a sua explicacao. talvez eu nao tenha entendido a duvida do nosso amigo, mais o que importa é que pelo menos pra mim ficou bem explicado.

tentarei ser mais detalhista na proxima explicação