Bienvenido(a), Visitante. Por favor, ingresa o regístrate.

Ingresar con nombre de usuario, contraseña y duración de la sesión
 

Autor Hilo: Programando laberintos en Basic (Leído 732 veces)

jose365

  • T-70
  • Mensajes: 149
Por lo que he leído, lo que seguro que empeora el rendimiento es utilizar bucles de FOR anidados.
Es decir: leer una matriz de 1 dimension de 25 elementos es más eficiente que leer una de 2 dimensiones de 5x5 elementos.
El motivo está en que los bucles FOR-NEXT requieren que el intérprete del ZX busque la variable, asigne el valor, etc. y otra vel al hacer el NEXT. Por tanto cuantos más bucles peor.
Se recomienda la técnica de 'desenrollar bucles', que consiste en poner todas las instrucciones que hay en el bucle una detrás de otra. Se puede utilizar si hay pocas iteraciones

Por ejemplo, @jmpuk ha puesto este trozo de programa:
110 RESTORE 7010: FOR i=1 TO 9: FOR j=1 TO 8: READ m$(i,j): NEXT j: NEXT i
Pero sería más eficiente así usando la técnica de desenrollado de bucles:
110 RESTORE 7010: FOR i=1 TO 9: READ m$(i,1): READ m$(i,2): READ m$(i,3):   varias veces     :READ m$(i,8): NEXT i

Qué os parece?

He hecho los deberes...   mi oferta de colaboración sigue en pie!

jmpuk

  • T-90
  • Mensajes: 1 203
Totalmente de acuerdo : lo único que si eliminas los bucles pues gastas más memoria al escribir más instrucciones : esos bucles son para la carga del mapa que si es verdad que se lleva un rato, para que no se note mucho es lo primero que hace el juego y previamente pintare una pagina con la intro del juego para leer ...

Yo por mi parte si saco un rato para estructurar lo que tengo de donde vengo y a donde voy si que te puedo pedir ayuda ;-)

Zael

  • T-600
  • Mensajes: 6 554
  • El Caloret
Por lo que he leído, lo que seguro que empeora el rendimiento es utilizar bucles de FOR anidados.
Es decir: leer una matriz de 1 dimension de 25 elementos es más eficiente que leer una de 2 dimensiones de 5x5 elementos.
El motivo está en que los bucles FOR-NEXT requieren que el intérprete del ZX busque la variable, asigne el valor, etc. y otra vel al hacer el NEXT. Por tanto cuantos más bucles peor.
Se recomienda la técnica de 'desenrollar bucles', que consiste en poner todas las instrucciones que hay en el bucle una detrás de otra. Se puede utilizar si hay pocas iteraciones

Por ejemplo, @jmpuk ha puesto este trozo de programa:
110 RESTORE 7010: FOR i=1 TO 9: FOR j=1 TO 8: READ m$(i,j): NEXT j: NEXT i
Pero sería más eficiente así usando la técnica de desenrollado de bucles:
110 RESTORE 7010: FOR i=1 TO 9: READ m$(i,1): READ m$(i,2): READ m$(i,3):   varias veces     :READ m$(i,8): NEXT i

Qué os parece?

He hecho los deberes...   mi oferta de colaboración sigue en pie!


¡Barrilete cósmico, ¿de dónde viniiiiste?! Jugador de Salón Recreativo, Gradudado por la Universidad de Harvard en BASIC... ¡pero qué maravilla @jose365! Qué gusto da ver nuevos usuarios tan participativos, joer.

Pues yo como te digo tengo una idea medio embastada y me pueden venir de perlas tus conocimientos BASIC. Te comentaré por privado porque no estoy seguro de poder acabarla a tiempo para el concurso.

Por lo demás, sigo sin enterarme de la misa la mitad de todo lo que estáis poniendo en este hilo pero me encanta... ¡me eeeencaaanta esto!  :) :)





jose365

  • T-70
  • Mensajes: 149
Por lo que he leído, lo que seguro que empeora el rendimiento es utilizar bucles de FOR anidados.
Es decir: leer una matriz de 1 dimension de 25 elementos es más eficiente que leer una de 2 dimensiones de 5x5 elementos.
El motivo está en que los bucles FOR-NEXT requieren que el intérprete del ZX busque la variable, asigne el valor, etc. y otra vel al hacer el NEXT. Por tanto cuantos más bucles peor.
Se recomienda la técnica de 'desenrollar bucles', que consiste en poner todas las instrucciones que hay en el bucle una detrás de otra. Se puede utilizar si hay pocas iteraciones

Por ejemplo, @jmpuk ha puesto este trozo de programa:
110 RESTORE 7010: FOR i=1 TO 9: FOR j=1 TO 8: READ m$(i,j): NEXT j: NEXT i
Pero sería más eficiente así usando la técnica de desenrollado de bucles:
110 RESTORE 7010: FOR i=1 TO 9: READ m$(i,1): READ m$(i,2): READ m$(i,3):   varias veces     :READ m$(i,8): NEXT i

Qué os parece?

He hecho los deberes...   mi oferta de colaboración sigue en pie!


¡Barrilete cósmico, ¿de dónde viniiiiste?! Jugador de Salón Recreativo, Gradudado por la Universidad de Harvard en BASIC... ¡pero qué maravilla @jose365! Qué gusto da ver nuevos usuarios tan participativos, joer.

Pues yo como te digo tengo una idea medio embastada y me pueden venir de perlas tus conocimientos BASIC. Te comentaré por privado porque no estoy seguro de poder acabarla a tiempo para el concurso.

Por lo demás, sigo sin enterarme de la misa la mitad de todo lo que estáis poniendo en este hilo pero me encanta... ¡me eeeencaaanta esto!  :) :)

En realidad no soy experto en Basic ni nada, pero sí que he leído lo que he podido estos días, sobretodo para que podáis ver que lo tomo en serio.