ElenaGC 0 Denunciar post Postado Abril 4, 2011 Oi galera, tudo bem? Estou começando com php agora e estou com uma duvida em uma programa que meu prof pediu para fazer... É o seguinte ele pediu para fazer um programa com numeros de 1 a 20 e que o programa mostrasse a soma dos numeros impares somente... não estou conseguindo fazer... será que alguem pode me ajudar... Ficaria muito grata e desculpa a igonorancia. Compartilhar este post Link para o post Compartilhar em outros sites
nelsonsar 0 Denunciar post Postado Abril 4, 2011 Qual é o algoritmo que se usa para descobrir se um número é par ou ímpar? Compartilhar este post Link para o post Compartilhar em outros sites
Matheus Tavares 167 Denunciar post Postado Abril 4, 2011 1 - Você já tentou fazer o looping com números de 1 a 20? 2 - Já descobriu como saber se o número é par ou ímpar? Poste o que você fez até agora, e te ajudamos. Estude para aprender. :thumbsup: Compartilhar este post Link para o post Compartilhar em outros sites
ElenaGC 0 Denunciar post Postado Abril 4, 2011 Então Matheus, eu estou começando a aprender agora, não sei muita coisa, mas o looping fica assim n é : ($i=1;$i<=6;$i++) e meu prof falou alguma coisa sobre numeros impares que acho que é assim n%2=1. Estou tentando fazer aqui mas n consigo pq ele nem explicou direito sobre numeros impares e ja mandou esse exercicio... o que me complica tbm é essa soma só de numeros impares ;/. *($i=1;$i<=20;$i++) Digitei errado ali em cima, em vez de 20 coloquei 6! Compartilhar este post Link para o post Compartilhar em outros sites
Matheus Tavares 167 Denunciar post Postado Abril 4, 2011 Elena, agora que você nos apresentou o que sabes, vamos aos pontos: 1 - Existem diversas formas de se fazer um loop. A forma que você citou é utilizando a função for(). Um exemplo de uso seria: <?php for ($i=1; $i <= 20; $i++) { echo $i.' '; } Resultado: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Mas vamos entender essa sintaxe: $=1 -> isso quer dizer como começará nosso loop $i <= 20 -> isso é a condição para continuar o loop. significa: SE $i for MENOR OU IGUAL à 20 $i++ -> enquanto o parâmetro 2, de condição, for verdadeiro, acrescenta 1 à $i Até aí beleza, mas como vamos filtrar para números ímpares? Podemos usar o que seu professor disse, mas de uma forma melhorada. Vamos aos pontos: % -> esse operador retorna o resto de uma divisão Exemplo: 10/2 = 5 = resto 0 Exemplo: 8/3 = 2.666 = resto 2 (para zerar) Então podemos verificar da seguinte forma, no meio do loop: <?php for ($i=1; $i <= 20; $i++) { if (! ($i %2 == 0) ) { //se NÃO for par $soma += $i; } } echo $soma; Resultado: 100 O caractere de exclamação ! antes da comparação de igualdade torna o problema VERDADEIRO, se for FALSO, ou seja: se NÃO for par, executa a soma. Para reduzirmos o código, poderíamos utilizar operadores ternários, da seguinte forma: <?php $soma = 0; for ($i=1; $i <= 20; $i++) { $soma = (!($i %2 == 0)) ? $soma+$i : $soma; } echo $soma; Mais sobre operadores ternários aqui: http://www.arquivodecodigos.net/arquivo/tutoriais/php/curso_completo/parte_7/uso_do_operador_ternario_em_estruturas_condicionais.php Até mais :thumbsup: Compartilhar este post Link para o post Compartilhar em outros sites
ElenaGC 0 Denunciar post Postado Abril 4, 2011 Ok, muito obrigada, vai ser de grande ajuda para meus estudos futuros! Compartilhar este post Link para o post Compartilhar em outros sites
Matheus Tavares 167 Denunciar post Postado Abril 4, 2011 De nada, qualquer coisa poste. :joia: Compartilhar este post Link para o post Compartilhar em outros sites
ElenaGC 0 Denunciar post Postado Abril 4, 2011 Matheus só uma duvida... você colocou $i %2 == 0 pq você colocou a soma do par mais 1, para ser impar? Não entendi direito... n teria que ser $i%2==1? O programa deu certo mas fiquei com duvida nessa parte... desculpe te amolar de novo! Obrigada! Compartilhar este post Link para o post Compartilhar em outros sites
Matheus Tavares 167 Denunciar post Postado Abril 4, 2011 Elena, veja bem: <?php for ($i=1; $i <= 20; $i++) { if (! ($i %2 == 0) ) { //se NÃO for par $soma += $i; } } echo $soma; O "$i %2 == 0" significa: SE o RESTO da divisão de $i por 2 for igual a 0, torna verdadeiro. Acontece que para que isso ocorra, o número deve ser par. Qualquer número que você divida por 2 e não resta nada, é uma divisão exata, e portanto é par. Entendeu até aí? A soma ainda não foi feita. Isso é só um IF para verificar se essa comparação é verdadeira. O ponto de exclamação, como eu disse no post anterior, torna VERDADEIRO somente se o resultado do IF for FALSO, ou seja, o inverso. Isso significa que se for par, não faz nada, mas se for ímpar, faz o que tiver dentro das chaves { }. Então, se for ímpar, cria-se a variável $soma e acrescenta-se à ela o valor de $i. $soma = $soma+$i é a mesma coisa que $soma += $i Entendeu agora? Se restaram dúvidas, pode postar sem problemas :thumbsup: Compartilhar este post Link para o post Compartilhar em outros sites