Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá, queria colocar a quantidade de alunos num input html (não gosto de prompt) e em seguida dar a nota de cada um, e no fim mostrar na tela a maior e a menor nota de todas. Como faço o loop pra ir armazenando as notas até chegar a quantidade final de alunos que selecionei? E para imprimir depois? Estou até agora assim
<input placeholder = "Quantidade de alunos" id = "alunos"/>
<input placeholder = "Nota do aluno" id = "nota"/>
<button id= "gerar"> Ok</button> <div>
</div>
>
Citar
var alunos = document.GetElementById("alunos");
var nota = document.GetElementById("nota");
var maior;
var menor;
menor = maior;
function notas(){
for (var i = 0; i < n; i++) {
//nota = +prompt('Digite a nota do aluno');
if (nota > maior) {
maior = nota;
} else {
if (nota < menor) {
menor = nota;
}
}
}
alert("Maior nota: "+ maior);
alert("Menor nota: "+ menor);
document.getElementById("gerar").addEventListener("click", notas);já não me recordo bem de JS e neste momento não estou com muito tempo. Mas pesquise por arrays.
Terá que guardar os dados num array e depois ordenar da maneira que quiser esse array. A vantagem de ter num array é que consegue fazer o que quiser com os dados nele inseridos.
Após isso é fazer as chamadas via html/js para mostrar os dados que quiser tendo em conta os dados que estão armazenados no array.
Lembro que dessa maneira, quando o user fechar a aplicação vai perder toda a info. Talvez o que precise é de uma ligação a uma base de dados. mysql, por exemplo! Mas mesmo assim a solução pode passar por JS. Talvez comece a ponderar uma solução em php, caso tenha um servidor e queira disponibilizar a página via um servidor, por exemplo.
>
2 minutos atrás, codercss disse:
já não me recordo bem de JS e neste momento não estou com muito tempo. Mas pesquise por arrays.
Terá que guardar os dados num array e depois ordenar da maneira que quiser esse array. A vantagem de ter num array é que consegue fazer o que quiser com os dados nele inseridos.
Após isso é fazer as chamadas via html/js para mostrar os dados que quiser tendo em conta os dados que estão armazenados no array.
Lembro que dessa maneira, quando o user fechar a aplicação vai perder toda a info. Talvez o que precise é de uma ligação a uma base de dados. mysql, por exemplo! Mas mesmo assim a solução pode passar por JS. Talvez comece a ponderar uma solução em php, caso tenha um servidor e queira disponibilizar a página via um servidor, por exemplo.
à princípio isso é só um teste para mostrar na tela, não é necessário banco de dados. Eu só queria simplesmente dar uma quantidade de alunos, depois dar a nota de cada um e no final mostrar qual foi a maior e a menor nota.
Seguindo a lógica do codercss, vê se ajuda:
window.onload = function()
{
document.getElementById("gerar").onclick = notas;
}
function notas() var qtdAlunos = document.getElementById("alunos").value;
var notas = document.getElementById("nota").value.split(" ");
console.log(qtdAlunos, notas);
var maior = notas[0];
var menor = notas[0];
for (var i = 0; i < qtdAlunos; i++)
{
//nota = +prompt('Digite a nota do aluno');
if (parseInt(notas[i]) > maior)
{
maior = parseInt(notas[i]);
}
else if (parseInt(notas[i]) < menor)
{
menor = parseInt(notas[i]);
}
}
alert("Maior nota: " + maior);
alert("Menor nota: " + menor);
}
[Exemplo](https://jsfiddle.net/j0ux2gn8/2/).Peguei uma ideia do seu, @wootzor, mas resolvi ficar com o prompt mesmo. Só mais uma coisa, como ficaria se fosse adicionar parâmetros à função? Eu teria que tirar o prompt para poder chamar a função, certo? Prefiro que fique sem ele, como faço isso?
function notas() {
var notas;
var maior = notas[0];
var menor = notas[0];
menor = maior;
n = +prompt("Número de alunos:");
for (var i = 0; i < n; i++) {
nota = +prompt("Nota do aluno " + [i + 1]);
if (parseInt(notas[i]) > maior) {
maior = parseInt(notas[i]);
} else if (parseInt(notas[i]) < menor) {
menor = parseInt(notas[i]);
}
}
/* OU
menor = maior;
maior = nota;
nota = maior;
if (nota > maior) {
maior = nota;
} else {
if (nota < menor) {
menor = nota;
}
}*/
}
alert("Maior nota: " + maior);
alert("Menor nota: " + menor);??
Pera vou fazer um script fácil de entender
Eu fiz esse Script pelo celular espero não está errado.
<!DOCTYPE html>
<html>
<body>
<form name="form" onsubmit="return notas();">
<input type="text" placeholder="coloque o nome do aluno" name="alunos">
<input type="number" name="nota" placeholder="coloque a nota">
<input type="submit">
<div class="aluno">
<input type="text" name="aluno" >
</div>
</form>
<script>
function notas() {
if(form.nota.value >=11) {
alert("A nota maxima e 10");
form.nota.focus();
return false;
} else if(form.nota.value=="") {
alert("E necessario colocar a nota");
form.nota.focus();
return false;
}
if(form.alunos.value=="") {
alert("E obrigatorio colocar o nome");
form.alunos.focus();
return false;
}
if(form.nota.value >=7) {
alert("O aluno passou");
alert("nome do aluno");
alert(form.aluno.value = form.alunos.value);
form.aluno.style.display = "block";
return false;
return false;
} else {
alert("O aluno nao passou");
alert("nome do aluno");
alert(form.aluno.value = form.alunos.value);
form.aluno.style.display = "block";
return false;
}
}
</script>
<style>
.aluno {
display:none;
}
</style>
</body>
</html>>
Em 14/04/2017 at 20:02, AndréJs disse:
Eu fiz esse Script pelo celular espero não está errado.
<!DOCTYPE html>
<html>
<body>
<form name="form" onsubmit="return notas();">
<input type="text" placeholder="coloque o nome do aluno" name="alunos">
<input type="number" name="nota" placeholder="coloque a nota">
<input type="submit">
<div class="aluno">
<input type="text" name="aluno" >
</div>
</form>
<script>
function notas() {
if(form.nota.value >=11) {
alert("A nota maxima e 10");
form.nota.focus();
return false;
} else if(form.nota.value=="") {
alert("E necessario colocar a nota");
form.nota.focus();
return false;
}
if(form.alunos.value=="") {
alert("E obrigatorio colocar o nome");
form.alunos.focus();
return false;
}
if(form.nota.value >=7) {
alert("O aluno passou");
alert("nome do aluno");
alert(form.aluno.value = form.alunos.value);
form.aluno.style.display = "block";
return false;
return false;
} else {
alert("O aluno nao passou");
alert("nome do aluno");
alert(form.aluno.value = form.alunos.value);
form.aluno.style.display = "block";
return false;
}
}
</script>
<style>
.aluno {
display:none;
}
</style>
</body>
</html>
Amigo, eu até saquei o que você quis dizer mas a minha ideia era não usar html, queria somente uma função com parâmetros para mostrar as notas (já chamadas no codigo ou não) qual é a maior e a menor entre elas, não necessita de formulário ou dizer o nome do alunoEspero te Respondido a Sua pergunta com esse Script.
<!DOCTYPE HTML>
<html lang="pt-br">
<head>
<meta charset="utf-8">
</head>
<body>
<script>
function nota() {
var notaum = 7;
var notadois = 5;
if(notaum > notadois) {
document.write("A variavel notaum È maior do que a 'Variavel notadois.'" + "<br><br>");
}
if(notadois < notaum) {
document.write("A 'Variavel notadois' È menor do que a 'Variavel notaum.'" + "<br><br>");
}
document.write("Valor Da Variavel 'notaum è' " + " " + notaum + "<br><br>");
document.write("Valor Da Variavel 'notadois è' " + " " + notadois );
}
var notas =nota();
window.onload = notas;
</script>
</body>
</html>
Se não for assim foi mal eu sou meio leigo para entender as coisas.Ainda não é isso, amigo. Mas obrigado pela ajuda de qualquer forma
Alguém?
Como assim, "alguém"?
Penso que já foram colocadas aqui hipóteses suficientes para chegares a uma solução.
Tem jeito menos 'complicados' de se fazer isso.
Para 'imprimir depois' precisa de uma fonte de dados, nem que essa fonte seja um arquivo txt, csv ou json.
1 - Faça o formulário com o input da nota.
2 - Use um evento jQuery pra mandar uma requisição ajax para um arquivo php.
3 - Armazene na fonte de dados.
4 - Faça com o php que ele leia a fonte de dados, pegue as notas e calcule quais notas são a maior e a menor.
5 - Pegue esse retorno e exiba em uma elemento html.
>
10 horas atrás, AnthraxisBR disse:
Tem jeito menos 'complicados' de se fazer isso.
Para 'imprimir depois' precisa de uma fonte de dados, nem que essa fonte seja um arquivo txt, csv ou json.
1 - Faça o formulário com o input da nota.
2 - Use um evento jQuery pra mandar uma requisição ajax para um arquivo php.
3 - Armazene na fonte de dados.
4 - Faça com o php que ele leia a fonte de dados, pegue as notas e calcule quais notas são a maior e a menor.
5 - Pegue esse retorno e exiba em uma elemento html.
Sei que há várias outras formas de se fazer, amigo. Mas estou numa série de questões para aprender a utilizar parâmetros em javascript exclusivamente, e queria encontrar uma forma de fazer isso por enquanto somente através desse método. No momento não quero introduzir html, php ou outra linguagem além de js
>
8 horas atrás, vinitf disse:
No momento não quero introduzir html
Isso aqui é HTML meu amigo...
<input placeholder = "Quantidade de alunos" id = "alunos"/>
<input placeholder = "Nota do aluno" id = "nota"/>
<button id= "gerar"> Ok</button> <div>
</div>
Fiz um passo a passo para quem gostaria de entrar no mundo de JS
Da uma olhadinha:
[https://github.com/gabrieldarezzo/helpjs-ravi/blob/master/README.md#exercicios-em-javascript](https://github.com/gabrieldarezzo/helpjs-ravi/blob/master/README.md#exercicios-em-javascript)
Outra dica...
Fiz um exemplo bem parecido com a sua necessidade (apenas o uso de prompt)
[https://forum.imasters.com.br/topic/557622-resolvido-objetos-json/?do=findComment&comment=2225215](/topic/557622-resolvido-objetos-json/?do=findComment&comment=2225215)
Recomendo fortemente dar uma olhada nos videos do Rodrigo Branas:
https://www.youtube.com/watch?v=093dIOCNeIc&list=PLQCmSnNFVYnT1-oeDOSBnt164802rkegc>
16 minutos atrás, gabrieldarezzo disse:
Isso aqui é HTML meu amigo...
Sim, sei disso. Mas isso foi no início, me foi orientado depois que deveria fazer somente com javascript.
>
18 minutos atrás, gabrieldarezzo disse:
Outra dica...
Fiz um exemplo bem parecido com a sua necessidade (apenas o uso de prompt)
https://forum.imasters.com.br/topic/557622-resolvido-objetos-json/?do=findComment&comment=2225215
Já utilizei prompt e deu certo, mas assim como o colega desse tópico, eu estou precisando fazer por meio de funções, como me foi ordenado, para poder me aprofundar mais nesse método.
Acabei de colocar uma resposta lá extamente sobre funções
https://forum.imasters.com.br/topic/557622-resolvido-objetos-json/?do=findComment&comment=2225614
As dicas então valem pra ti tmb.
Eu to ficando meio puto já q ninguem abriu o canal do cara no youtube...
https://www.youtube.com/watch?v=OqR0hE-DQn4&list=PLQCmSnNFVYnT1-oeDOSBnt164802rkegc&index=7
Desculpe, eu estou no trabalho e aqui o youtube é bloqueado. Só em casa mesmo que vou poder ver. Realmente o problema dele é o mesmo que o meu, e coincidentemente também estou usando uma lista de objetos e é isso que estamos nos complicando. No momento estou assim:
var alunos = [{
Aluno: "Jamil",
Nota: 8
}, {
Aluno: "Joãozinho",
Nota: 5
}, {
Aluno: "Maria",
Nota: 7
}];
function vernotas(maior, menor) {
var notas = [];
var maior = 100;
var menor = 0;
var nota = 0;
menor = maior;
//var n = +prompt("Número de alunos:");
for (var i = 0; i < maior.length; i++) {
//var nota = +prompt("Nota do aluno:" + [i + 1]);
if (menor[i].Nota === maior) {
menor = maior;
maior = nota;
nota = maior;
notas.push(nota);
}
else if (nota > maior) {
notas.push(maior);
maior = nota;
} else if (nota < menor) {
notas.push(menor);
menor = nota;
}
}
console.log(vernotas(alunos("Maior nota: " + maior + "/ Menor nota: " + menor)));@gabrieldarezzo, estou indo certo? O que eu comentei pode ser aproveitado ? O que falta?
var alunos = [
{ Aluno: "Jamil",
Nota: 8},
{Aluno: "Joãozinho",
Nota: 5},
{Aluno: "Jeca",
Nota: 7},
{Aluno: "Joca",
Nota: 4}
];
function vernotas(notas) {
var maior = 100;
var menor = 0;
var nota = 0;
for (var i in notas) {
//for (var i = 0; i < notas.length; i++) {
menor = maior;
/*if (menor[i].Nota === maior) {
// menor = maior;
maior = nota;
//nota = maior;
nota = notas[i].Nota;
// notas.push(nota);
} else*/ if (nota > maior) {
//notas.push(maior);
maior = nota;
//maior = notas[i].Nota;
} else if (nota < menor) {
// notas.push(menor);
menor = nota;
menor = notas[i].Nota;
}
} return nota;
nota = vernotas(alunos);
alert("Maior nota: " + maior + "/ Menor nota: " + menor);
}O caminho é esse.
Só toma cuidado com funções, não sei se você pegou o conceito, da uma lida:
https://www.w3schools.com/js/js_functions.asp
https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Functions
>
2 horas atrás, vinitf disse:
menor = maior;
Eu não entendi o motivo disso.
Da uma olhada no exemplo abaixo, talvez pode clarear um pouco:
<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script type="text/javascript">
var alunosNotas = [
{
aluno: "Jamil",
nota: 8
},
{
aluno: "Joãozinho",
nota: 5
},
{
aluno: "Jeca",
nota: 7
},
{
aluno: "Joca",
nota: 4
}
];
/**
* Retorna a maior nota
*
* @param Array com Objetos de alunos e suas notas
* @return int nota
*/
function pegarMaiorNota(alunosNotas){
var maiorNota = 0;
//Percorre todos os alunos
for(x in alunosNotas){
//Verifica se a nota da iteração atual é maior do que a maiorNota
if(alunosNotas[x].nota > maiorNota){
//Caso seja, então grava como a maiorNota atual
maiorNota = alunosNotas[x].nota;
}
}
return maiorNota;
}
var maiorNotaDosAlunos = pegarMaiorNota(alunosNotas);
console.log(maiorNotaDosAlunos);// vai exibir 8 no console do JavaScrit ('Ctrl + J' no GoogleChrome)
/**
* Retorna o Aluno que tiver a maior nota
*
* @param Array com Objetos de alunos e suas notas
* @return Object aluno
*/
function pegarAlunoComMaiorNota(alunosNotas){
var maiorNota = 0;
var alunoComMaiorNota;
//Percorre todos os alunos
for(x in alunosNotas){
//Verifica se a nota da iteração atual é maior do que a maiorNota
if(alunosNotas[x].nota > maiorNota){
//Caso seja, então grava como a maiorNota atual
maiorNota = alunosNotas[x].nota;
//Armazena o proprio aluno retorna o mesmo
alunoComMaiorNota = alunosNotas[x];
}
}
return alunoComMaiorNota;
}
var alunoComMaiorNota = pegarAlunoComMaiorNota(alunosNotas);
console.log(alunoComMaiorNota);// vai exibir Object {aluno: "Jamil", nota: 8} no console do JavaScrit
console.log(alunoComMaiorNota.aluno);// vai exibir 'Jamil' no console do JavaScrit
console.log(alunoComMaiorNota.nota);// vai exibir '8' no console do JavaScrit
</script>
</body>
</html>
Alguns ajustes que eu fiz...
Estava me incomodando os maiúsculos no 'atributos' dos Objetos, ai transformei em minúsculo
var alunosNotas = [
{
aluno: "Jamil",
nota: 8
},
{
aluno: "Joãozinho",
nota: 5
},
{
aluno: "Jeca",
nota: 7
},
{
aluno: "Joca",
nota: 4
}
];
Nome de variáveis/funções devem expressar exatamente oq pretende só de ler entende?
'vernotas' significa oq?
**pegarMaiorNota **expressa exatamente oq faz.
Retorna a maior nota, já...
**pegarAlunoComMaiorNota **retorna o (Objeto) Aluno que tem a maior nota.
A tipagem no inicio dos estudos assusta mesmo, principalmente quem está lidando com linguagem de [fraca tipagem](https://pt.wikipedia.org/wiki/Linguagem_tipada#Linguagens_fracamente_tipadas), porem vai facilitar bastante estudar um pouco sobre [tipos de dados/tipos primitivos](https://pt.wikipedia.org/wiki/Tipo_de_dado)
Diferenciar um Objeto, de um array.
Bons estudos, lembrando que só dei um exemplo o script acima pode ser melhorado em diversos aspectosSua explicação abriu um pouco minha mente, ajudou bastante. Mas ainda estou tendo um probleminha: não estou conseguindo imprimir a menor nota, de forma que estivesse na mesma função
var alunosNotas = [
{
aluno: "Jamil",
nota: 8
},
{
aluno: "Joãozinho",
nota: 5
},
{
aluno: "Jeca",
nota: 7
},
{
aluno: "Joca",
nota: 3
}
];
function pegarMaiorNota(alunos) {
var maior = 0;
var menor = 0;
var nota = 0;
for (var x in alunos) {
if (alunos[x].nota > nota) {
maior = alunos[x].nota;
}
return maior;
}
if (alunos[x].nota < menor) {
menor = alunos[x].nota;
}
return menor;
}
maior = pegarMaiorNota(alunosNotas);
menor = pegarMaiorNota(alunosNotas);
alert("Maior nota: " + maior + " / Menor nota: " + menor);Seu erro é não ter lido os links.
https://www.w3schools.com/js/js_functions.asp
https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Functions
https://www.youtube.com/watch?v=OqR0hE-DQn4&list=PLQCmSnNFVYnT1-oeDOSBnt164802rkegc&index=7
Uma função tem um e APENAS um retorno. (no seu tem 2)
O funcionamento do loop tmb está sendo interrompido durante a primeira interação:
for (var x in alunos) {
if (alunos[x].nota > nota) {
maior = alunos[x].nota;
}
return maior;
}
Conhece o conceito de [teste de mesa](https://br.answers.yahoo.com/question/index?qid=20110322050844AAsagvt)?
Você tenta acompanhar com a mente/caneta oq vai ocorrer no algoritmo.
Ou pode ir testando com alert/console.log()
Roda esse exemplo no browser, talvez te ajuda entender:
<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script type="text/javascript">
var alunosNotas = [
{
aluno: "Jamil",
nota: 8
},
{
aluno: "Joãozinho",
nota: 5
},
{
aluno: "Jeca",
nota: 7
},
{
aluno: "Joca",
nota: 3
}
];
function exibirNotasPorAlert(alunosNotas){
for(x in alunosNotas){
alert(alunosNotas[x].nota);
}
return false;
}
function exibirNotasPorAlertBugado(alunosNotas){
for(x in alunosNotas){
alert(alunosNotas[x].nota);
return false;
}
}
alert('Iniciando função exibirNotasPorAlert');
exibirNotasPorAlert(alunosNotas);
alert('Iniciando função exibirNotasPorAlertBugado');
exibirNotasPorAlertBugado(alunosNotas); //só vai percorrer 1x
</script>
</body>
</html>
Se atente onde está o return false; de cada um.
Esse é o mesmo 'problema' do seu algoritmo.
Mas continua tentando ta bem melhor já o resultado, só ir assimilando msm esses conceitos novos que logo mais se ta escrevendo varias funções hehe
Bons estudos ;)o ideal em programação é separar conceitos.
uma função pega a maior, outra pega a menor.
Ninguém pode me ajudar? :(