en el CLR, por que?

Iniciado por PETTETE, 31 Marzo 2017, 08:03 AM

0 Miembros y 1 Visitante están viendo este tema.

PETTETE

Hola buenas,

Alguna vez ya he comentado que soy nuevo en esto del visual basic y de más; que me iba a poner a aprender y todo eso..

Empece mirando visual pero me cansé rapido. Y si, ahora he vuelto, y vengo para quedarme jajajaja
he empezado a mirar otra vez y esta vez me estoy enganchando poco a poco. Pero.....como soy nuevo tengo dudas y preguntas que apra los forofos del visual serán una tonteria.(que le vamos a hacer.. nadie nace sabiendo)

La pregunta de hoy us muy simple...

Primero os pongo el codigo y luego os comento.

Código (vb) [Seleccionar]
For i = 0 To a.Length - 1
Console.WriteLine("a(i)={0}, b(i)={1}", a(i), b(i))
Next

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

For i = 0 To a.Length step 1
Console.WriteLine("a(i)={0}, b(i)={1}", a(i), b(i))
Next


Bien, tenemos el mismo codigo cambiado por una palabra...

el de arriba : a.length -1
el de abajo : a.length step 1

los dos hacen lo mismo pero el de abajo da error en el CLR, por que?
se debe usar siempre el metodo de arriba?

Un saludo de vuestro vecino y amigo,
PETETE;)


· Los códigos deben ir en etiquetas GeSHi
· No se debe escribir en mayúsculas
· Lo títulos deben ser descriptivos
>aquí las reglas del foro
-Engel Lex
UN SALUDO DE VUESTRO AMIGO Y VECINO,
PETETE;)

pkj

#1
Step indica cuanto aumenta la variable i a cada vuelta.

For i = 0 To a.Length - 1
Hace un bucle desde 0 hasta el valor (a.length-1) de 1 en 1 porque por defecto se asume que step es 1
i vale 0, luego vale 1, luego 2, etc... hasta i=(a.length-1)

For i = 0 To a.Length step 1
Esto hace un bucle desde 0 hasta el valor (a.length) de 1 en 1 porque tu usas el comando step para asignarle valor 1
i vale 0, luego vale 1, luego 2, etc... hasta i=(a.length)

For i = 0 To a.Length step 2
Esto saltaria de 2 en 2
i valdria 0, luego 2, luego 4, etc... hasta el valor mas cercano a a.length sin superarlo.

Si quieres hacer un bucle al reves, donde el valor de i vaya desde a.length hasta 0, pondrias:
For i = a.Length to 0 step -1

For i = 0 To a.Length - 1
For i = 0 To a.Length - 1 step 1
Estas dos lineas hacen lo mismo.
En la primera se asume que step es 1.
En la segunda se obliga a que step sea 1 (algo que no es necesario).

Saludos

PETTETE

okeeey gracias!

pero el a.length-1 que valor sería? eso no lo entiendo..

de 0 hasta que valor contaría?
UN SALUDO DE VUESTRO AMIGO Y VECINO,
PETETE;)

pkj

En primer lugar esto parece ser .NET
Lenght equivale a la longitud.
La variable a puede ser una cadena de texto, una matriz (seguramente esto ultimo), o quien sabe.
Si es una cadena de texto con el bucle for next recorres sus caracteres.
Si es una matriz, recorres sus elementos.
a(i) irá asumiendo el valor adecuado a cada vuelta.
b es otra de lo mismo con la misma cantidad de elementos que a.

PETTETE

eso si entiendo, lo que no entiendo es porque se pone el -1.. no se podria poner 1? para que valla contando de 1 en 1?
UN SALUDO DE VUESTRO AMIGO Y VECINO,
PETETE;)

engel lex

#5
los array se dan por empezados en 0 y tienen tantas posiciones como indiques entonces un array de length 5 sería  internamente


|_|_|_|_|_| <- 5 elementos
0 1 2 3 4


cuando mueves tu apuntador hasta el 5 pasa que

|x|_|_|_|_|  <- apuntador en 0

|_|x|_|_|_|  <- apuntador en 1

|_|_|x|_|_|  <- apuntador en 2

|_|_|_|x|_|  <- apuntador en 3

|_|_|_|_|x|  <- apuntador en 4

|_|_|_|_|_|?  <- apuntador en 5




si que en
Código (vb) [Seleccionar]
For i = 0 To a.Length

cuando i es igual a a.Length, es decir para este caso 5, estarías como dicen en mi pueblo, "orinando fuera del perol"
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

PETTETE

entonces se pone -1 para que no se salga del limite ese?

o para que empiece a contar desde el 0?

a.length -1 = 0  1  2  3  4

a.length 1 = 1  2  3  4  5 ----ERROR

¿¿¿es eso?? por eso se pone el -1?

un saludo de vuestro amigo (el pesado) y vecino,
PETETE;)
UN SALUDO DE VUESTRO AMIGO Y VECINO,
PETETE;)

engel lex

Citarentonces se pone -1 para que no se salga del limite ese?

cuenta con los dedos empezando desde 0 hasta tu cantidad de dedos de la mano (5), empieza por el pulgar (0) y ve diciendolos en voz alta... mira que pasa cuando llegas a dedos.length-1 y a dedos.length

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

PETTETE

Eso es que si no?

no me has respondido. si, se que si se pasa del limite da error!

pero por eso se pone el -1? para que no salga del limite? o sea para que empiece a contar desde el 0 no?
y que no llegue al 5 sino que se quede en el 4????
UN SALUDO DE VUESTRO AMIGO Y VECINO,
PETETE;)

engel lex

#9
Citarpero por eso se pone el -1? para que no salga del limite? o sea para que empiece a contar desde el 0 no?
y que no llegue al 5 sino que se quede en el 4????

te estoy dando las herramientas para que lo razones tu mismo

tienes

Código (vb) [Seleccionar]
For i = 0 To a.Length
# Y
For i = 0 To a.Length -1


for tiene 2 argumentos

Código (vb) [Seleccionar]
For variable = primer_elemento To ultimo_elemento

Citarpero por eso se pone el -1? para que no salga del limite?
que efecto causa el -1 en "ultimo_elemento!? cambia las variables por numeros enteros y miralo

Citaro sea para que empiece a contar desde el 0 no?
que efecto causa el -1 en "primer_elemento!? cambia las variables por numeros enteros y miralo




y por qué te lo dejo para razonar? porque claramente si estás preguntando eso, no lo estás entendiendo, y conocimiento sin comprensión no tiene mucho sentido
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.