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

Duvida na questao "Agora eu quero ver"

Bom, nao entendi muito bem como que esse programa funciona, alguem tem alguma ideia?

<meta charset="UTF-8">

<script>
    function pulaLinha() {

        document.write("<br>");
    }

    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);

</script>
1 resposta
solução!

Opa Daniel,

Esse código é um pouco mais complicado de acompanhar pois temos muitas funções chamando outras, dificultando o acompanhamento de parâmetros e valores de retorno.

Vamos por partes. A primeira coisa é guardar na variável resultado o retorno de c("Flávio", "Almeida")

Dentro de c, temos

function c(nome, sobrenome) {
    //nome = "Flávio"
    //sobrenome = "Almeida"
    return b(nome + " " + a(sobrenome));
}

Vamos retornar o valor de retorno da função b com o parâmetro nome + " " + a(sobrenome)), ou seja, "Flávio" + " " + a("Almeida"). Mas aqui temos outra função a no parâmetro, que será avaliada primeiro.

Chamamos a, na seguinte situação

function a(texto) {
    //texto = "Almeida"
    return "(" + texto + ")";
}

Portanto a devolve "(Almeida)". Voltamos agora a aplicação de b, que agora sabemos que será com o parâmetro "Flávio (Almeida)"

Em b, temos a seguinte situação

function b(texto) {
    //texto = "Flávio (Almeida)"
    return "@" + texto + "@";
}

Portanto b retorna "@Flávio (Almeida)@".

Recapitulando, a variável resultado é o retorno dec, que por sua vez retorna o valor de retorno de b (com um parâmetro que vem do retorno de a), que agora sabemos que é "@Flávio (Almeida)@".

No final, mostramos na tela o conteúdo da variável resultado, ou seja, @Flávio (Almeida)@.

Recomendo que você escreva num papel cada chamada de função com seus argumentos para fixar o raciocínio. É bem fácil se perder.