[ Foro de Pascal ]
hola profesor nacho
tengo una duda inmensa espero me la puedas ayudar a resolver.
es que hago porejemplo
for j:=6 downto 1 do
begin
for i:=1 to 6 do
bueno y sigue
mi pregunta es biendo en ejecusion es como si me estuviera tomando la matriz como las j como filas y las columnas como i? porque puede ser esto?
6
5
4
3
2
1
1 2 3 4 5 6
y si inbierto porejemplo:
for i:=6 downto 1 do
begin
for j:=1 to 6 do
y sigue
el comportamiento es:
1
2
3
4
5
6
1 2 3 4 5 6
osea en este caso me toma las i como filas y j como columnas
no entiendo en el primer caso por que hace ese comportamiento, espero puedas sacarme de esta gran duda , estoy confundido.
Las variables son "mudas": da igual cómo se llamen, lo importante es su misión dentro del programa.
Por eso, cuando hay un doble "for" anidado que representa filas y columnas, es mejor que las variables no se llamen "i" y "j" sino "fila" y "columna":
for fila:=6 downto 1 do
begin
for columna:=1 to 6 do
...
ok, profesor nacho sin embargo aun quedo con la duda, respecto a lo siguiente:
si tengo:
for fila:=6 downto 1 do
begin
for columna:=1 to 6 do
M[i,j]:='$';
que diferencia existe en la impresion y por que si tuviera ahora:
for columna:=6 downto 1 do
begin
for fila:=1 to 6 do
M[i,j]:='$';
en que cambia en ambos casos la impresion en pantalla?
gracias y disculpa si te puede resultar algo evidente pero para mi es una gran duda, gracias
Tú lo has dicho: si cambia la lógica al rellenarlo, la forma de dibujarlo también cambiará, pero con sólo ese fragmento de programa no hay suficiente para ver los cambios.
Lo habitual es dibujar fila tras fila (a no ser que uses "gotoXY"), por lo que lo natural es que el "for" exterior recorra las filas y el "for" interior recorra todas las columnas que forman cada fila.
hola profesor, gracias por responderme
profesor ok lo que me dices lo comprendo, lo que no entiendo es porque si hago
for fila:=6 downto 1 do
begin
for columna:=1 to 6 do
M[i,j]:='$';
el inicia en la impresion por pantalla como si la primara fila para el fuera la 6,
fila6
fila5
fila4
..
fila1
col1 col2 ... col6
y si hago:
for fila:=1 to 6 do
begin
for columna:=1 to 6 do
M[i,j]:='$';
el inicia en la impresion por pantalla iniciando por fila 1
fila1
fila2
fila3
...
fila6
col1 col2 ... col6
es decir lo que no entiendo es la forma en que pascal invierte para impresion los lugares de las filas y columnas segun sea incremental o decremental el recorrido,pues cuando hago un for con downto la impresion se toma como si la primera fila en impresion fuera la 6 acaso esa fila para pascal no deberia ser siempre la fila1 y la fila 6 quedar abajo? disculpame si te pido me hagas comprender mejor esto y muchas gracias.
No es que Pascal invierta la impresión. Es que hace caso a tu "for". Si tú haces
for fila:=6 downto 1 do
La variable "fila" empieza en el valor 6 y va disminuyendo hasta 1. Así es como funciona un "for" con un "downto", mientras que si haces
for fila:=1 to 6 do
la variable "fila" empieza en 1 y aumenta ("to") hasta llegar a 6.
Tienes el uso de "for" aquí:
http://www.aprendeaprogramar.com//mod/resource/view.php?id=116
Te he preparado un par de ejemplos básicos del uso de "for" para recorrer un array de forma creciente aquí:
http://www.aprendeaprogramar.com/fuentes/view.php?t=1
y de forma decreciente aquí:
http://www.aprendeaprogramar.com/fuentes/view.php?t=2
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)