Jump to content


Photo

Escopo No For Next...


  • Faça o login para participar
9 replies to this topic

#1 webfmx

webfmx

    Normal

  • Usuários
  • 62 posts
  • Sexo:Não informado

Posted 22/11/2005, 14:47

Olá pessoal,

Gostaria que alguém me explicasse por que isso acontece no For Next. Vejam, a repetição deveria ser feita 9 vezes. Até ai, sem problemas.

<%
for i = 1 to 9
Response.Write i & "<br>"
next

Response.Write "O valor é" & i
%>

A dúvida surge quando apresento o valor da variável i fora do for next... por que o valor apresentado é 10 e não 9 ?

#2 Generation

Generation

    Super Veterano

  • Usuários
  • 1546 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR

Posted 22/11/2005, 15:45

È mais ou menos assim, o seu i fez o percurso correto ate 9, so que quando ele encontrou o next, ele adiciona mais 1 ou seja fica com 10, e com isso sai do for porque voce só pediu pra ele até 9 ;), o next tem a mesma finalidade que qdo vc cria um contador, assim:

contador = contador + 1
Favoritos : | OpenSuse | Opera | Firefox | NetBeans | GMail | Leia As Regras | Use a Busca | Como fazer Perguntas Inteligentes |
“Obstáculos são aquelas coisas medonhas que você vê quando tira seus olhos de seu objetivo” (Henry Ford)
“É impossível para um homem aprender aquilo que ele acha que já sabe.” (Epíteto)
“A única razão da existência do tempo é para que todas as coisas não aconteçam de uma vez.”(Albert Einstein)

#3 webfmx

webfmx

    Normal

  • Usuários
  • 62 posts
  • Sexo:Não informado

Posted 22/11/2005, 18:00

Entendi... faz sentido, e comprovei hehehe. Mas fiquei apenas com uma dúvida. Pensei que quando declaradas, as variaveis ficavam armazenadas em um "local" específicio da memória, assim, o encerramento do loop não interferiria em seu valor após o término. Em que local da aplicação as variáveis ficam armazenadas ?

#4 Luis Otávio

Luis Otávio

    Super Veterano

  • Usuários
  • 3113 posts
  • Sexo:Masculino
  • Localidade:Porto Alegre
  • Interesses:- Desenvolvimento de aplicações Web com linguagem server-side PHP.

    - Desenvolvimento de aplicações Web com linguagem cliente-side JavaScript, conhecedor e utilizador da biblioteca jQUERY e todas suas características.

    - Otimização de Desempenho aplicados a performance de banco de dados Mysql.

    - Otimização de Desempenho para servidores Web utilizando-se como Webserver NGINX em conjunto com Varnish.

    - Sólidos conhecimentos no CMS WordPress para novas implementações, manutenção, criação e otimização de Plugins.

    - Práticas de atendimento, relacionamento e suporte ao cliente. Trabalhando voltado ao público desde o lançamento da empresa iPORTO.COM, criando laços e vínculos com os mais de Mil clientes da empresa e os braços do grupo.

Posted 22/11/2005, 23:39

Eu não sei responder a duvida, para mim não tem explicação logica...

for i = 1 to 9
...

i = começa no 1 e vai até o 9...

i = 1
i = 2
i = 3
i = 4
i = 5
i = 6
i = 7
i = 8
i = 9

Acaba o for, era para o i ficar igual ao ultimo valor que ele recebeu.. hehe
e naum, ganhar mais um :wacko: vou até procurar.. hehe, fiquei encucado.. a explicação do generation foi boa... mas naum me convenceu... heheheheh, será que a microsoft explica, ou isso é de todas linguagens?



========================

Bem, fui para o JS, que é quem eu sei depois do ASP, e foi a mesma resposta.. hehehe... mesmo eu naum entendendo a logica, tem logica.. mas tb pode ser o sono e o vinho que naum me deixa entender... hehehe
ai vai em JS para comprovar... que a culpa naum é da microsoft, e sim eu que ja bebi de mais... heheheheeh


<script>
for (var i = 1; i < 10; i++){
document.write (i);
var x = i;
}
document.write ("<br />");
document.write ("O valor é: "+i);
</script>

* Otávio Nogueira
* Administração e Configuração de Servidores;
* Combinação Perfeita: NGINX + PHP + VARNISH + HAPROXY
* otavio*iporto.com ~ Tel: +55 51 3366 0177 | +55 51 4063 7343 |
* @iporto

#5 Generation

Generation

    Super Veterano

  • Usuários
  • 1546 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR

Posted 22/11/2005, 23:58

Detalhando...

i começou com 1..
i = 1
achou o Next (i = i+1)
i = 2
achou o Next (i = i+1)
i = 3
achou o Next (i = i+1)
i = 4
achou o Next (i = i+1)
i = 5
achou o Next (i = i+1)
i = 6
achou o Next (i = i+1)
i = 7
achou o Next (i = i+1)
i = 8
achou o Next (i = i+1)
i = 9
achou o Next (i = i+1)

Ops... i = 10 saimos do For..

Todas as Linguagens, se voce tivesse colocado assim :

<%
for i = 1 to 9 step 2 ' Modo de Incrementar, se ocultar ele por default, vai de 1 em 1
Response.Write i & "<br>"
next

Response.Write "O valor é" & i
%>


o seu Next seria de dois em dois, apesar de terminar no 9 o i iria exibir 11


PS..: Luis, vendo vc bebado vou te acompanhar, acabei de abrir uma latinha de Skol, so nao pergunte mais pq agora a cabeça ja era ..rs
Favoritos : | OpenSuse | Opera | Firefox | NetBeans | GMail | Leia As Regras | Use a Busca | Como fazer Perguntas Inteligentes |
“Obstáculos são aquelas coisas medonhas que você vê quando tira seus olhos de seu objetivo” (Henry Ford)
“É impossível para um homem aprender aquilo que ele acha que já sabe.” (Epíteto)
“A única razão da existência do tempo é para que todas as coisas não aconteçam de uma vez.”(Albert Einstein)

#6 Luis Otávio

Luis Otávio

    Super Veterano

  • Usuários
  • 3113 posts
  • Sexo:Masculino
  • Localidade:Porto Alegre
  • Interesses:- Desenvolvimento de aplicações Web com linguagem server-side PHP.

    - Desenvolvimento de aplicações Web com linguagem cliente-side JavaScript, conhecedor e utilizador da biblioteca jQUERY e todas suas características.

    - Otimização de Desempenho aplicados a performance de banco de dados Mysql.

    - Otimização de Desempenho para servidores Web utilizando-se como Webserver NGINX em conjunto com Varnish.

    - Sólidos conhecimentos no CMS WordPress para novas implementações, manutenção, criação e otimização de Plugins.

    - Práticas de atendimento, relacionamento e suporte ao cliente. Trabalhando voltado ao público desde o lançamento da empresa iPORTO.COM, criando laços e vínculos com os mais de Mil clientes da empresa e os braços do grupo.

Posted 23/11/2005, 00:03

Perfeita a explicação tio generation! (y)
* Otávio Nogueira
* Administração e Configuração de Servidores;
* Combinação Perfeita: NGINX + PHP + VARNISH + HAPROXY
* otavio*iporto.com ~ Tel: +55 51 3366 0177 | +55 51 4063 7343 |
* @iporto

#7 Generation

Generation

    Super Veterano

  • Usuários
  • 1546 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR

Posted 23/11/2005, 00:17

Ops, respondendo para o webfmx..

Pensei que  quando declaradas, as variaveis ficavam armazenadas em um "local" específicio da memória

Ficam sim, observe o exemplo que tentei explicar pro Luis Otavio (Antes de beber)

assim, o encerramento do loop não interferiria em seu valor após o término


o Looping não interferiu no valor correto, se ele nao fosse dessa maneira nunca iria sair do FOR, por isso ele soma + 1 ou a quantidade que voce quer que ele ande..
Favoritos : | OpenSuse | Opera | Firefox | NetBeans | GMail | Leia As Regras | Use a Busca | Como fazer Perguntas Inteligentes |
“Obstáculos são aquelas coisas medonhas que você vê quando tira seus olhos de seu objetivo” (Henry Ford)
“É impossível para um homem aprender aquilo que ele acha que já sabe.” (Epíteto)
“A única razão da existência do tempo é para que todas as coisas não aconteçam de uma vez.”(Albert Einstein)

#8 webfmx

webfmx

    Normal

  • Usuários
  • 62 posts
  • Sexo:Não informado

Posted 24/11/2005, 01:25

Entendi... Inclusive encontrei uma maneira de sair do Looping, o exit for
for x = 1 to 10

Response.Write "O de x usando for é " & x & "<br>"
if x = 10 then exit for
next

Isso é usado no VB e funciona aqui, para o meu alivio. Assim não preciso subtrair o valor final para ter o resultado desejado ! :D

#9 Generation

Generation

    Super Veterano

  • Usuários
  • 1546 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR

Posted 24/11/2005, 07:50

Perfeito, assim como tbem existe o Exit Do, Exit Sub, Exit Function....e tbem outros laços de repetição ai cabe a voce decidir qual e como usa-los se eu sei que vou usar o ultimo valor de i e não quero fazer comparações poderia tbem fazer assim:

<% 
do 
 i = i + 1
 response.write i & "<br>"
Loop While i < 9

Response.Write "<b>"& i &"</b>"
%>

[]'s
Favoritos : | OpenSuse | Opera | Firefox | NetBeans | GMail | Leia As Regras | Use a Busca | Como fazer Perguntas Inteligentes |
“Obstáculos são aquelas coisas medonhas que você vê quando tira seus olhos de seu objetivo” (Henry Ford)
“É impossível para um homem aprender aquilo que ele acha que já sabe.” (Epíteto)
“A única razão da existência do tempo é para que todas as coisas não aconteçam de uma vez.”(Albert Einstein)

#10 sowrever

sowrever

    Normal

  • Usuários
  • 75 posts
  • Sexo:Masculino
  • Localidade:jaraguá do sul / sc
  • Interesses:mulheres

Posted 24/11/2005, 09:33

sobro um gole do vinho ou da cerveja pra mim ?
:P
msn: mathe@diretoriow.com.br
icq: n lembro
e-mail: mathe@diretoriow.com.br




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq