Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: DoPeY-BBS en 10 de Julio 2012, 23:50

Título: Visual Basic Arrays unidimensionales
Publicado por: DoPeY-BBS en 10 de Julio 2012, 23:50
Saludos

Al ejecutar el código (Ctrl+F5), sobre el formulario te aparecerá el mensaje "El número de coches en la hora cero fue 14". Modifica el programa introduciendo, debajo de Option Explicit, una línea con Option Base 1. Prueba a ejecutarlo y te aparecerá un mensaje del tipo: "Error en tiempo de ejecución. El subíndice está fuera del intervalo". Efectivamente, al poner Option Base 1 los valores que puedes usar en el código como localizador de una variable del array serán los comprendidos entre 1 y 24. Al estar usando la variable Numerodecoches(0), Visual Basic detecta la incoherencia y genera un error.

Código: [Seleccionar]
  Option Explicit
  Dim Numerodecoches(24) As Integer
 
  Private Sub Form_Load()
  Show
  Numerodecoches(0) = 14
  Print
  Print "El número de coches en la hora cero fue "; Numerodecoches(0)
  End Sub

Si yo coloco este otro código y le coloco 16 a la variable  Numerodecoches(16) = 14, esta no da error sin embargo si coloco 25, si ¿porque pasa este comportamiento?

Código: [Seleccionar]
Option Explicit
  Option Base 1
  Dim Numerodecoches(24) As Integer
 
  Private Sub Form_Load()
  Show
  Numerodecoches(16) = 14
  Print
  Print "El número de coches en la hora cero fue "; Numerodecoches(16)
  End Sub

Título: Re:Visual Basic Arrays unidimensionales
Publicado por: Mastermind en 11 de Julio 2012, 10:57
Hola dopey, cuando usas un array que has declarado como

Dim Numerodecoches(24) As Integer

no puedes usar un índice para la variable que a tí se te ocurra, sino solo dentro del rango que has declarado. Por ejemplo, para la declaración anterior puedes usar Numerodecoches(1), Numerodecoches(2), Numerodecoches(3), ... Numerodecoches(24)

pero si intentas usar Numerodecoches(25) te dará un error porque tú has dicho que los índices solo van a llegar hasta 24, entonces no puedes usar un índice 25 porque el ordenador no entiende qué significado tendría eso.

El ordenador cuenta desde cero (ó desde 1 si has puesto Option Base 1).

Por ejemplo si declaras

Option Base 1
Dim Numerodecoches(4) As Integer

Solo podrás usar Numerodecoches(1), Numerodecoches(2), Numerodecoches(3) y Numerodecoches(4) porque al declarar la variable has dicho que los índices van a estar entre 1 y 4. Si trataras de usar otro índice te dará un error.   
Título: Re:Visual Basic Arrays unidimensionales
Publicado por: DoPeY-BBS en 11 de Julio 2012, 20:24
Gracias por el dato
Título: Re:Visual Basic Arrays unidimensionales
Publicado por: petizalinda en 12 de Julio 2012, 11:25
Fíjate que el array lo que representa son los coches que han pasado cada hora del día y el día tiene 24 horas. Entonces coches(25) no tendría sentido porque significaría los coches que han pasado en la hora 25 y esto no tiene sentido  ;)