Solucionado (ver solução)
Solucionado
(ver solução)
7
respostas

Convertendo texto em números

<meta charset= "UTF-8">
<script>
function pulaLinha(){
    document.write("<br>")
}
function mostra(escreve){
    document.write(escreve);
    pulaLinha();
}
//veja o resultado sem a função parseInt; 

function totalPontos(x,y){
    var nPontos=(v*2)+(e*2);
    return nPontos
}
var nPontos=(v*2)+(e*2);
var nome=prompt("Qual é o seu nome?")
var v=prompt("Qual o numero de vitorias do seu time.");
var e=prompt("Qual o numero de empates do seu time.");
var numeroDePontos=totalPontos(v,e);
mostra(nome+", O seu time tem "+numeroDePontos+" pontos.")
mostra(" Esse time tem "+totalPontos(v,e)+" pontos.")

//veja o resultado com o parseInt;
function calculaPontos(x,y){
    var pontos=nv*3+ne*2;
    return pontos
}
var pontos=nv*3+ne*2;
var nv=parseInt(prompt("Digite o numero de vitorias do seu time."));
var ne=parseInt(prompt("Digite o numero de empates do seu time."));
var np=calculaPontos(nv,ne);
mostra(" Seu time tem "+np+" pontos.")
mostra(" Seu time tem "+calculaPontos(nv,ne)+" pontos.")
</script>

Minha dúvida é; Quando chamamos a função parseInt ela funcionará para todo o código?

7 respostas

Quando você está usando o parseInt está transformando "convertendo" uma String de numeros para Inteiros de numeros e salvando na sua variavel.

var nv=parseInt(prompt("Digite o numero de vitorias do seu time."));
var ne=parseInt(prompt("Digite o numero de empates do seu time."));

as 2 variaveis sua estão com valor de inteiros.

certo, mas na primeira função que não tem o comando parseInt?

Rita você está falando dessa parte?

var v=prompt("Qual o numero de vitorias do seu time.");
var e=prompt("Qual o numero de empates do seu time.");

Isso aqui não é função, você está atribuindo valor a sua variavel mais se for isso, Repare que você está passando um numero de vitórias pro seu time, sem o metodo parseInt né? Sem a conversão do parseInt essas String iram se concatenar "JUNTAR" exemplo, Do jeito que está aqui, digamos que você execute o programa e digite que a quantidade de vitorias do seu time foi 4, e do empate foi 3.

var pontosDoTime = v + e;

Exemplo, você gravou na sua variavel de v 4 que foi a quantidade de vitórias e 3 que foi a quantidade de empate. O certo aqui era somar não era? mais não sem o parseInt as 2 variaveis irão se concatenar ficando o resuntado de 43. Não foi feita conta nenhuma, só junto "4" + "3";

Agora quando você usa o parseInt irá fazer o seguinte, digamos que você tem o mesmo resultado 4 para vitórias e 3 de empates correto?

var pontosDoTime = v + e;

Aqui não irá se concatenar e irá somar as contas tudo correto, quando se ganha um jogo se ganha 3 pontos, então aqui ira fazer 4 * 3 = 12, então se o seu time ganhou 4 jogos ira ter 12 pontos e ira ficar salvo 12 na sua variavel v, e empate é 3, e cada empate vale a 1 ponto, então sua variavel e tem valor de 3. Agora a soma do pontodDoTime ira fazer 12 + 3, e o valor dela sera de 15!

Sem o parseInt ele concatena achando que é string que você ta passando! ficou claro? E outra sempre em nome de variaveis não é aconselhavel a deixar com nome com abreviação, igual você fez, vitória coloco v, e empate coloco e, programa o mais legivel possivel.

Eu entendi tudo que você falou, e concordo em tudo. Só que eu fiz duas funções, uma sem o parseInt e uma com o parseInt. A primeira função SEM o parseInt não funciona, concorda? Mais quando eu fiz a segunda COM o parseInt no mesmo código a primeira passou a funcionar mesmo sem eu ter atribuído o parseInt, entende? Então a questão é, ao colocar (chamarmos) a função parseInt ela será atribuída para todo o código? Fazendo as funções que não tenha parseInt passarem a ter?

solução!

Oi Rita, é o seguinte o prompt ele realmente retorna uma string, então se você tivesse feito um método que somasse os números iam se juntar (concatenar). Mas quando você tem um método que é diferente do soma o javascript acaba parseando a string pra inteiro automaticamente. Mas mesmo assim é fundamental que você use sempre os parse pra transformar a variável no tipo que você quer, Aqui um exemplo de duas Strings que se tornam inteiro.

function pulaLinha(){
    document.write("<br>")
}
function mostra(escreve){
    document.write(escreve);
    pulaLinha();
}
var a = "6";
var b = "2";
var c = a*b;
var d = a/b;
var e = a-b;
var f = a+b;
var g = a%b;

mostra("multiplicando: " + c);
mostra("dividindo: " + d);
mostra("subtraindo: " + e);
mostra("somando: " + f);
mostra("modulo: " + g);
</script>

Rode o código e veja se você entende :D

Respondendo sua última pergunta Então a questão é, ao colocar (chamarmos) a função parseInt ela será atribuída para todo o código? Fazendo as funções que não tenha parseInt passarem a ter?

Não e não, o que acontece na verdade é isso que eu falei aí em cima.

Outras observações

1:

var nPontos=(v*2)+(e*2);
var pontos=nv*3+ne*2;

essas duas linhas não são usadas no seu código, você pode apaga-las. Seu cálculo é feito nas duas funções que voce chama no mostra. Elas são desnecessárias .

2:

function totalPontos(x,y){
    var nPontos=(v*2)+(e*2);
    return nPontos
}

function calculaPontos(x,y){
    var pontos=nv*3+ne*2;
    return pontos
}

repare que você criou as funções e passou x e y para elas, mas no corpo da função você usa outras variáveis. Isso tá errado, seu código só rodou porque em javaScript quando uma variável é criada fora de uma função ela serve para todo o código e quando você criou as variáveis de retorno dos prompts você colocou o mesmo nome que usou nas funções.

var v=prompt("Qual o numero de vitorias do seu time.");
var e=prompt("Qual o numero de empates do seu time.");

var nv=parseInt(prompt("Digite o numero de vitorias do seu time."));
var ne=parseInt(prompt("Digite o numero de empates do seu time."));

faça o teste e mude o nome dessas variáveis e você vai ver que a função não vai rodar.

<meta charset= "UTF-8">
<script>
function pulaLinha(){
    document.write("<br>")
}
function mostra(escreve){
    document.write(escreve);
    pulaLinha();
}
//veja o resultado sem a função parseInt;

function totalPontos(x,y){
    var nPontos=(v*2)+(e*2);
    return nPontos
}
var nome=prompt("Qual é o seu nome?")
var v2=prompt("Qual o numero de vitorias do seu time.");
var e2=prompt("Qual o numero de empates do seu time.");
var numeroDePontos=totalPontos(v2,e2);
mostra(nome+", O seu time tem "+numeroDePontos+" pontos.")
mostra(" Esse time tem "+totalPontos(v2,e2)+" pontos.")

//veja o resultado com o parseInt;
function calculaPontos(x,y){
    var pontos=nv*3+ne*2;
    return pontos
}
var nv2=parseInt(prompt("Digite o numero de vitorias do seu time."));
var ne2=parseInt(prompt("Digite o numero de empates do seu time."));
var np=calculaPontos(nv2,ne2);
mostra(" Seu time tem "+np+" pontos.")
mostra(" Seu time tem "+calculaPontos(nv2,ne2)+" pontos.")
</script>

Última coisa, quando você estiver fazendo os teste acompanhe os erros pelo o console do navegador, vai ser mais fácil de compreender :D