Hola pues estoy aprendiendo programacion ( gml , javascript, phtyton ) , y me tiene me confundido cuando veo en tutoriales el acceso en un bucle for
asi [ i ] ; . No logro entender la parte para que sirve, en arrays si manejo indices
- , en listas[ |] , y mapas[?] .Pero no entiendo muy bien el acceso a la variable i ( condicional ) , en el bucle.GRACIAS
la variable i no es más que un estándar, puede usarse cualquier otro nombre. Se trata de una variable iterativa, que en cada ejecución del ciclo se modifica secuencialmente. Por ejemplo:
[gml]
for(var i = 0; i < 5; i++)
[/gml]
Básicamente, se le sumará 1 a i (que empieza en 0) mientras que i < 5. Por lo que este código:
[gml]
for(var i = 0; i < 5; i++)
show_message(i)[/gml]
Sería igual que escribir:
[gml]
i = 0;
show_message(i); //muestra 0
i++; //i = 1, el ciclo sigue.
show_message(i) //muestra 1
i++ //i = 2, el ciclo sigue
show_message(i) //muestra 2
i++ //i = 3, el ciclo sigue
show_message(i) //muestra 3
i++ //i = 4, el ciclo sigue
show_message(i) //muestra 4
i++ //i = 5, el ciclo se detiene[/gml]
Sucede lo mismo con los arreglos.
Como dice el buen "NiuWeb" es una variable a la que le puedes dar el nombre que mas te acomode, esto es útil para darle nombres a funciones y modificar valores a lo largo del juego, incluso puedes hacer que las funciones que estan en ingles se llamen de una forma mas corta, hasta puedes ponerlas en tu mismo idioma para facilitar aun mas la programación.
Por ejemplo, si haces un reloj o algún objeto que tenga tiempo, podrías llamar a las variables tiempo para empezar a contar, y a estas podría llamarlas a su vez hora, minuto, segundo por si quieres hacerlo mas profesional todavía.
Por ejemplo creo este sistema de partículas dándoles nombres en español a las funciones.
///Sistema de particula
//Creamos el sistema de particulas
nieve = part_system_create();
part_system_depth(nieve, 50); //Produndidad
//Creamos un nuevo tipo de particulas
particula_nieve = part_type_create();
part_type_shape(particula_nieve,pt_shape_snow); //La forma de la particula
part_type_orientation(particula_nieve,0,0,0,0,1); //La rotacion aleatoria de la particula
part_type_size(particula_nieve,0.05,0.25,0,0); //Tamaño aleatorio de la particula
part_type_speed(particula_nieve,1,1.5,0.05,0); //Velocidad de la particula
part_type_direction(particula_nieve,270,270,0,4); //Direccion de la particula
part_type_life(particula_nieve,180,210); //Duracion de la particula
//Creamos en el emisor
nieve_emisor = part_emitter_create(nieve);
//Establecer region de la habitacion donde se creara el emisor, el perfil y la forma de distribucion
part_emitter_region(nieve,nieve_emisor,0-100,room_width+100,-10,-5,ps_shape_ellipse,ps_distr_linear);
//Empezamos a emitir particulas cada 0.20 segundos
part_emitter_stream(nieve,nieve_emisor,particula_nieve,-5);
Aquí tengo nombres como: nieve, particula_nieve, nieve_emisor.
Podía simplemente llamarlo N, PN, NE, y al final funcionaria de todos modos, pero no puedo llamarlos a todos N porque los códigos entrarían en conflicto y no funcionaria como debe, el porque no lo abrevie fue simplemente porque tengo mas de 10.000 lineas de código en el juego, tantos objetos, sprite, eventos y habitaciones, lo importante es darle el nombre que mejor te ayude a programar, imagina que pasa 1 semana sin que programes, el día en que vuelvas no sabres donde empieza y menos donde termina.
(https://i.gyazo.com/df8559c273ad524dd096ca8720471788.gif)
Espero que te haya servido :-[.
Hola gracias por responder a los dos , no si me explique bien lo que no entiendo el por que del acceso [ ] en la i.De todas maneras ahora lo entiendo algo mejor.Gracias
Pues la verdad no entiendo a qué te refieres; pon el ejemplo en el que aparece eso que mencionas y explica qué parte no entiendes ???
Hola pues aqui tienes donde me atasco no entiendo muy bien el accesor [ i ] , se que es un array .En listas mapas como dije ya mas o si entiendo pero el acceso , me tiene confundido. GRACIAS
//Ejemplo 1: usar `string()` para concatenar un texto con la iteración de un ciclo
for(i = 0; i < 6; i++)
textos = "¡Esta es la iteración número " + string(i) + "!";
La i no es un array, es una variable común y corriente, como te dijo NiuWeb la variable i en un for contiene el iterador de bucle, el contador por llamarlo de otra forma, usando el ejemplo que pones:
[gml]//Ejemplo 1: usar `string()` para concatenar un texto con la iteración de un ciclo
for(i = 0; i < 6; i++)
textos = "¡Esta es la iteración número " + string(i) + "!";[/gml]
Ahora, probablemente ya sabes esto pero para estar seguros, un bucle for ejecuta su primera instrucción al principio, continua ejecutándose mientras su segunda instrucción sea verdadera y ejecuta su tercera instrucción al final de cada ciclo.
En otras palabras, la variable i empieza en 0 y se le suma 1 tras cada repetición mientras sea menor que 6, así que en la primera repetición se le asignara a textos el valor "¡Esta es la iteración número 0!"
Y así con cada ciclo se le asignara a textos el string con el valor i correspondiente:
"¡Esta es la iteración número 0!"
"¡Esta es la iteración número 1!"
"¡Esta es la iteración número 2!"
"¡Esta es la iteración número 3!"
"¡Esta es la iteración número 4!"
"¡Esta es la iteración número 5!"
En ocasiones veras que se usa la variable i para acceder arrays, esto es justamente porque la i cambia con cada repetición, entonces en lugar de manualmente acceder a cada posición de un array puedes hacer un for que lo recorra, por ejemplo, en lugar de poner:
[gml]Array[0] = 0
Array[1] = 10
Array[2] = 20
Array[3] = 30
Array[4] = 40
Array[5] = 50[/gml]
Puedes poner:
[gml]for(i = 0; i < 6; i++)
Array = i*10[/gml]
Hola muchas gracias por explicarmelo , ahora ya lo tengo mas claro.Podeis cerrar el tema