Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

ElenaGC

[Resolvido] "programa"

Recommended Posts

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

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

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.