Heung 0 Denunciar post Postado Abril 7, 2011 $ast = 1; for ($i=1; $i<=3; $i++) { for ( $c=1; $c<=$ast; ++$c) { print "*"; } print "<br>"; $ast+=2; } print "$ast <> $i <> $c"; Alguem poderia me explicar essa expressão? ela forma algo semelhante * *** **** mais não consegui entender a logica alguem poderia me explicar Compartilhar este post Link para o post Compartilhar em outros sites
Matheus Tavares 167 Denunciar post Postado Abril 7, 2011 <?php $ast = 1; //variavel $ast = 1 for ($i=1; $i<=3; $i++) { //cria um looping que dará 3 voltas for ( $c=1; $c<=$ast; ++$c) {// cria outro looping.. esse vai parar quando $c (1) for menor/igual à $ast print '*'; //imprime um asterisco em cada volta do segundo looping } print '<br />'; //cada volta do primeiro loop imprimirá uma quebra de linha $ast+=2; //no final do primeiro looping, soma-se 2 à variável $ast.. começou com 1, fica 3, depois 5 } print "$ast <> $i <> $c";//imprime valores das variáveis do sistema. No final $ast terá 7, $i terá 4 e $c terá 6 Resultado (não alterei o código, somente o comentei): **** ***** 7 <> 4 <> 6 Explicando para humanos: looping de 3 voltas (vamos chamar de looping raiz) { looping de voltas variáveis (depende do valor de $ast, que aumenta 2 a cada volta do looping-raíz) { ASTERISCO } QUEBRA DE LINHA } ECHO COM VARIAVEIS Fiz meu melhor para deixar o mais simples possível. []'s Compartilhar este post Link para o post Compartilhar em outros sites
Thales Caricati 3 Denunciar post Postado Abril 7, 2011 FOR: for ($i=1; $i<=3; $i++){ } $i = 1 (isso significa que a váriavel $i receberá 1) $i <= 3 (verifica se a váriavel $i é menor ou igual a 3. Se $i não for < (menor) ou =(igual) a 3 ele continua no bloco que está entre as {} mas se for igual ou menor ele sai do laço) $i++ (ele vai incrementar o laço a para "rodada", se ele estiver no bloco ele vai incrementando, o que era $i = 1 vai ficar $i = 2 até a condição $i <= 3 seja verdadeira) No segundo for ele também usa a mesma lógica. Compartilhar este post Link para o post Compartilhar em outros sites
Heung 0 Denunciar post Postado Abril 7, 2011 certo Obrigado pelas Explicação mais por que no final o $i acaba valendo 4 ? sendo que o loop seria <=3? não entendi isso! =/ Compartilhar este post Link para o post Compartilhar em outros sites
romabeckman 0 Denunciar post Postado Abril 7, 2011 ao final do loop (for) o contador precisa verificar o novo valor da soma, ou seja, o $i é incrementado para ser comparado até o resultado da comparação seja um valor false ($i<=3), ate prq se isto não acontecer o loop será infinito. Veja: for($i = 0; $i<=5; $i++){ echo $i."<br />"; } $i precisa ser igual a 6 para ser menor ou igual a 5 e sair do laço. teste desta forma: for($i = 0; $i <= 5; $i--){ echo $i."<br />"; } neste caso entrará em loop infinito, pois $i sempre será menor que 5. Espero ter ajudado. Compartilhar este post Link para o post Compartilhar em outros sites
André Severino 3 Denunciar post Postado Abril 7, 2011 Se você não quizer o i=4, ou seja, o valor identico seria bom usar o do...while Compartilhar este post Link para o post Compartilhar em outros sites
Heung 0 Denunciar post Postado Abril 7, 2011 então isso so enquadra a só "for"? que apos o ultimo laço ele incrementa e verifica <= ? e isso? eu pensei por ser = ja sairia do loop Compartilhar este post Link para o post Compartilhar em outros sites
Matheus Tavares 167 Denunciar post Postado Abril 7, 2011 Cara, isso pode acontecer em qualquer tipo de laço. Entenda o seguinte: Na segunda volta, no final do laço, o $i ficará com 3, e dará outra volta. O operador de igualdade <= (menor/igual) vai permitir que ele passe, pois é IGUAL a 3, e ele vai executar de novo, ACRESCENTANDO À SEU VALOR, 1, E FICANDO COM 4. Ele, com $i=4, vai tentar passar pelo loop novamente, e não vai conseguir, continuando a execução do script... Não precisa ser FOR pra isso acontecer. É puramente uma questão de lógica e organização. []'s Compartilhar este post Link para o post Compartilhar em outros sites
Heung 0 Denunciar post Postado Abril 7, 2011 Cara, isso pode acontecer em qualquer tipo de laço. Entenda o seguinte: Na segunda volta, no final do laço, o $i ficará com 3, e dará outra volta. O operador de igualdade <= (menor/igual) vai permitir que ele passe, pois é IGUAL a 3, e ele vai executar de novo, ACRESCENTANDO À SEU VALOR, 1, E FICANDO COM 4. Não precisa ser FOR pra isso acontecer. É puramente uma questão de lógica e organização. []'s Eita Agora compriendi verdd tinha um "=" rsrs verdd se tive só o < ele iria parar quando chegase a 4 certo? agora entendi ^^ Obrigado pela Ajuda de todos! Compartilhar este post Link para o post Compartilhar em outros sites
André Severino 3 Denunciar post Postado Abril 7, 2011 ele iria parar qnd chegasse a 3. De qualquer jeito ele adiciona +1 no final. Compartilhar este post Link para o post Compartilhar em outros sites
Heung 0 Denunciar post Postado Abril 7, 2011 Ate ele mesmo sendo else ele add mais não continua expressão? Compartilhar este post Link para o post Compartilhar em outros sites