Achei muito confusa a questão. Não conseguir entender :(
Achei muito confusa a questão. Não conseguir entender :(
Olá Mara, tudo certo?
Esse foi feito para exigir um pouco mais de atenção mesmo. Se ta um pouco confuso, tenta escrever a cada passo pra seguir seu pensamento e assim não se perder. Também tive um pouco de dificuldade e escrever me ajudou a entender e ver os passos que estavam sendo feitos a cada retorno de função.
Vamos lá:
<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>
a 'função mostra()' mostrará a variável 'resultado' que recebe a 'função c()', com as strings "Flavio" e "Almeida" como parâmetros.
Subindo para a 'função c()', vimos que ela retornará a 'função b()' com os parâmetros 'nome + " " (concatenando aspas vazias, string com o caracter espaço) +' a 'função a()' com 'sobrenome' como parâmetro.
Subimos mais uma vez, vamos para a função b() e notamos que ela retorna a string ' "@" + texto + "@" ', concatenando '@' com o parâmetro informado nessa função b(), o parâmetro texto. Assim o retorno da 'função c()' manda o parâmetro 'nome + " " + a(sobrenome)' para o parametro da função b(), retornando '@ nome + " " + a(sobrenome) @' que é igual a '@ Flávio + espaço vazio + retorno da função a() @'.
Subimos para a 'função a(), seguindo o mesmo pensamento dos outros passos, o parâmetro da funcão a() 'texto' é o parâmetro do retorno da função c() 'a(sobrenome)'. Assim concatenando os parenteses '( )' ao Almeida fazendo (Almeida).
Somando tudo @Flavio (Almeida)@.
Ta confuso ainda, mas tenta seguir pra onde leva cada retorno de função e os parâmetros das funções e se puder escreve o que for entedendo pra não acabar se perdendo como eu fiz escrevendo tudo isso aqui pra você. rs
Espero que tenha ajudado, mas caso tenha dúvidas, responde aqui pra que mais alguém possa tentar ajudar.
Abraço.
Olá Danniel tudo bem ?
Obrigada por me ajudar.
Realmente estou sofrendo pra entender rsrs.
O que esta me confundindo são as aspas e o parênteses
Deixa eu ver se entendi.
A função mostra(), dá o resultado da variável que recebeu a função C. Na função C tem: (nome, sobrenome) e como o resultado da variavel é a função C então la fica (Flávio,Almeida), sendo assim retorna com os nomes Flávio e Almeida para função B com o texto + espaço. No caso o retorno da função B é o texto da função C dentro dos arrobas ?
E Almeida ficou entre parênteses, pois na função retornou pra A que é o retonrno com o texto entre parênteses ?
Então por mais que eu retorne da função C para B + A eu continuo utilizar o nome + sobrenome que foi o resultado da variavel C ?
Não sei se vai entender rsrsrs
Obrigada !
Oii.
Não entendi direito rs. Vamos ver se consigo esclarecer.
//vamos pelo final
mostra(resultado); // aqui a função mostra() é chamada com a variavel resultado como parâmetro
var resultado = c("Flávio", "Almeida"); //a variavel resultado recebe como valor a "chamada" da função c() com as strings Flavio e Almeida como parâmetros.
function c(nome, sobrenome) {
return b(nome + " " + a(sobrenome));
/* aqui a função c() tem os parâmetros nome e sobrenome, que são substituidos pelas strings Flavio e Almeida. A função c() retorna a "chamada" da função b(). Dentro da "chamada" da função b() 'nome + " " + a(sobrenome)' recebe as strings e fica desse modo: 'Flavio + " " + a(sobrenome)' . ************* A segunda parte do retorno da funcão c() é dentro da "chamada" da função b() que é a "chamada" da função a(). O parametro sobrenome é substituido e muda para Almeida. Ainda no retorno da função c() os parametros ficam: 'Flavio + " " + a(Almeida)' e vai para a função b() e como a função a() está sendo chamada dentro da função b() só vai mudar depois de irmos para a função a().*/
function b(texto) {
return "@" + texto + "@";
// 'Flavio + " " + a(Almeida)' substitui o parâmetro texto e muda ' "@" + texto + "@" ' para ' "@Flavio + " " + a(Almeida)@" '
function a(texto) {
return "(" + texto + ")";
// a função a() recebe Almeida e muda o parametro texto. No seu retorno é colocado parenteses e retorna "(Almeida)"
/* agora juntamos:
' "@Flavio + " " + a(Almeida)@" ' da função b() e "(Almeida)" da função a().
Ficando: @Flavio (Almeida)@
*/
Não sei se consegui esclarecer, mas faz um passo, entende o que ta acontecendo e passa pro próximo. Qualquer coisa é só chamar. To aprendendendo também, mas se eu puder ajudar, farei com prazer.
Abraços.
Obrigada !
Fica melhor escrevendo.
Acompanhe a execução da função "c" passo a passo:
return b(nome + " " + a(sobrenome));
//Substituindo os parâmetros: return b("Flávio" + " " + a("Almeida"));
//Substituindo a chamada da função "a" pelo seu retorno: return b("Flávio" + " " + "(Almeida)");
//Concatenando as strings de texto; return b("Flávio (Almeida)");
//Substituindo a chamada da função "b" pelo seu retorno: return "@Flávio (Almeida)@";
Pronto! A string "@Flávio (Almeida)@" será retornada pela função "c" e atribuída à variável "resultado" para ser mostrada pela função "mostra".
Espero ter facilitado o entendimento!
Li as explicações de todos e foram "massa" no raciocínio que levou a conclusão do exercío. Também gostaria de deixar a minha contribuição, de forma sucinta.
A meu ver o que fez a diferença para que eu chegasse a conclusão foi identificar que houve apenas uma chamada, a da função c, var resultado = c("Flávio", "Almeida");
, que foi atribuída a variável "resultado" e que a partir dessa chamada, em seu retorno,return b(nome + " " + a(sobrenome));
, houve a chamada da "função b" e dentro dela a chamada da "função a".
Olá pessoal,
Segue meu raciocínio:
passo1: b (Flávio aAlmeida)
passo2: b(Flávio (Almeida))
passo3: @Flávio (Almeida)@