elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  variables en un Bucle
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: variables en un Bucle  (Leído 3,129 veces)
TheGhost(Z)

Desconectado Desconectado

Mensajes: 230



Ver Perfil
variables en un Bucle
« en: 22 Mayo 2010, 13:33 pm »

hola verán quería que me ayudaran como declarar correctamente una variable que se usara en un bucle For, en este caso la variable mensaje.
la variable mensaje lo he declarado siempre y cuando exista un 5 en el bucle para ahorrar memoria; ya que, tambien pude declararlo antes de inicar el bucle, pero en este último ya estaría metiendo a la memoria, la variable mensaje, sin saber si existe o no.

resulta que en este código funciona perfectamente tanto si la variable mensaje lo declaro antes de iniciar el bucle o como también en el momento en que se cumpla la condición.

Código:
Dim i As Long
Dim MostrarMensaje As Boolean

For i = 0 To 10
    If i = 5 Then
        Dim Mensaje As String
        Mensaje = "Sí, existe 5"
        MostrarMensaje = True
    Else
        MostrarMensaje = False
    End If
Next i

If MostrarMensaje = True Then
    MsgBox Mensaje, vbInformation
End If


PERO en este otro no funciona debido a que la variable es un contador. no se supone que cada ves que se declara una variable enpienza en null y el valor que se le asige será la variable inicial?

Código:
Dim i As Long

For i = 0 To 3
    If i > 0 Then
        Dim j As Long
        Dim suma As Long
        For j = 0 To i
            suma = suma + j
        Next j
    End If
    MsgBox "La suma desde (0) hasta (" & i & ") es: " & suma
Next i

lo correcto que mostraría el mensaje en cada (For i) sería:

Código:
(caso i=0) la suma desde (0) hasta (0) = 0
(caso i=1) la suma desde (0) hasta (1) = 1
(caso i=2) la suma desde (0) hasta (2) = 3 y NO ( 4)
(caso i=3) la suma desde (0) hasta (3) = 6 y NO (10)

el problema esta en que al cunplir la condicion y declarar la variable suma. ésta no incia con cero ya que suma lo que se obtuvo en el (For i) anterior.

Pues de aqui mi confusión. no se supone que se permite úncamente una variable en un procedimiento..? mi lógica es que cada ves que i > 0 destruye a la declaración y declara la misa variable.. o es que vasandose en que debe haher solo una variable con el mismo nombre en un procedimiento. una ves cunplida la condición al leer la linea de código "Dim suma As Long" verifica si se declaro en el For anterior, y si es así pasa por alto esa linea de código?

es esto cierto o que, ayuda?? :?


En línea

Shell Root
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.723


<3


Ver Perfil WWW
Re: variables en un Bucle
« Respuesta #1 en: 22 Mayo 2010, 17:26 pm »

No entendí  :huh:

Código
  1. Dim i As Long
  2. Dim j As Long
  3. Dim suma As Long
  4.  
  5. For i = 0 To 3
  6.   For j = 0 To i ' WTF! Esto para que?
  7.      suma = suma + j
  8.   Next
  9.   MsgBox "La suma desde (0) hasta (" & i & ") es: " & suma
  10. Next

Creo que debería ser así:
Código
  1. Dim i As Integer
  2. Dim valInicial, valFinal As Integer
  3. Dim suma As Long
  4.  
  5. valInicial = 0
  6. valFinal = 3
  7.  
  8. For i = valInicial To valFinal
  9.   suma = suma + i
  10.   MsgBox "La suma desde ("& valInicial &") hasta (" & valFinal & ") es: " & suma
  11. Next


« Última modificación: 22 Mayo 2010, 17:28 pm por Alex@ShellRoot » En línea

Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.
TheGhost(Z)

Desconectado Desconectado

Mensajes: 230



Ver Perfil
Re: variables en un Bucle
« Respuesta #2 en: 22 Mayo 2010, 19:08 pm »

Se corrige por:

Para sumar los valores desde 0 hasta i ( i esta vairando de 0 a 3)

Es procedimiento para solo entender el problema.
En línea

TGa.

Desconectado Desconectado

Mensajes: 43



Ver Perfil
Re: variables en un Bucle
« Respuesta #3 en: 22 Mayo 2010, 20:58 pm »

lo solucionas poniendo luego del msgbox, q la variable suma tome nuevamente el valor de 0
Código
  1. Dim i As Long
  2.  
  3. For i = 0 To 3
  4.    If i > 0 Then
  5.        Dim j As Long
  6.        Dim suma As Long
  7.        For j = 0 To i
  8.            suma = suma + j
  9.        Next j
  10.    End If
  11.    MsgBox "La suma desde (0) hasta (" & i & ") es: " & suma
  12.    suma = 0
  13. Next i
En línea

Shell Root
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.723


<3


Ver Perfil WWW
Re: variables en un Bucle
« Respuesta #4 en: 22 Mayo 2010, 21:06 pm »

Ponedlo mejor así.
Código
  1. Dim i As Long
  2. Dim j As Long
  3. Dim suma As Long
  4.  
  5. For i = 0 To 3
  6.   For j = 0 To i
  7.      suma = suma + j
  8.   Next
  9.   MsgBox "La suma desde (0) hasta (" & i & ") es: " & suma
  10.   suma = 0
  11. Next
En línea

Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.
TheGhost(Z)

Desconectado Desconectado

Mensajes: 230



Ver Perfil
Re: variables en un Bucle
« Respuesta #5 en: 24 Mayo 2010, 15:24 pm »

Sí. Y sabía que tenía que poner en cero para cada bucle. mi pregunta más bien se refería al funcionamiento de un bucle con variables de tipo contadores. Me refiero si como ética siempre a de inicializar una variable cada ves que inicie un nuevo proceso..
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
problema al asignar variables dentro un bucle
Scripting
wcordero 3 2,755 Último mensaje 19 Agosto 2013, 01:00 am
por Eleкtro
Suma de variables dentro de bucle for en .bat
Scripting
franfis 8 12,999 Último mensaje 9 Marzo 2014, 16:50 pm
por Eleкtro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines