Está en la página 1de 15

(Para comprender mejor este documento, debe haber visto el documento: 1_IntroMatrices.

ppt)

Recuerden que “PseInt” quiere decir Pseudo-Interpretador y que “PseInt” utiliza seudolenguaje y
que para el Curso, lo hemos configurado para trabajar con subíndices que se numeran desde 0.

Sobre el signo compuesto <- (un signo menor seguido de un menos).En las imágenes de los
siguientes programas ilustrados sobre matrices, ustedes encontrarán el siguiente signo compuesto
y nativo de “PseInt” <-. Dicho signo es equivalente al signo igual (=). Por ejemplo la siguiente
expresión “PseInt”: Para i <- 0 Hasta 2 con Paso 1 Hacer, es equivalente a la siguiente expresión:
Para i = 0 Hasta 2 con Paso 1 Hacer, tanto el signo = como <-, significa asignar a una variable, un
valor de una expresión.

Actividad: transcriba y ejecute cada programa que hay en las imágenes a continuación, en “PseInt”
y relaciónelos con el documento: 1_IntroMatrices.ppt
Realizar un programa que lea la dimensión de una matriz (número de filas y
número de columnas) y los datos de la matriz, e imprima la matriz en pantalla.

Taller:
Repetir el programa anterior utilizando la función “azar” para Filas: N (5<= N <= 15); para
Columnas: M (7<= M <=21); Elementos de la matriz: S [i,j] (-24.99 <= S[i,j] <= +24.99).
Resultados a presentar: N, M y la matriz S

Sobre cuadrados mágicos:

En las siguientes páginas encontrarán unos cuadrados mágicos (matrices cuadradas de 3 filas, por
3 columnas). En todos los casos al sumar por las filas, por las columnas o por las diagonales (por la
principal o por la secundaria), la suma da 15(quince). Cuando nos encontremos en el siguiente
“meeting” de “Google Met”, explicaré las condiciones y los mecanismos para hacerlo. Por ahora
observen y analicen las matrices cuadradas presentadas a continuación y traten de hallar el
mecanismo y las condiciones necesarias para crearlas. Así mismo quedan unos programas (para
ejecutarlos varias veces y observar sus resultados), junto con otras gráficas que “tratan” explicar
“algo”. Descubran para que sirven.

Sugerencia: Usen papel y lápiz y “formen” sus cuadrados mágicos siguiendo “algún” patrón

Grafica de Matriz cuadrada de N filas por M columnas, señalando la diagonal principal (P1) y la
diagonal secundaria (S1)
Cuadrados mágicos

8 1 6

3 5 7

4 9 2

6 1 8

7 5 3

2 9 4

2 9 4

7 5 3

6 1 8
4 9 2

3 5 7

8 1 6

3 5

4 2

1 6
3 5 7

4 9 2

8 1 6

5 3

2 4

6 1

7 5 3

2 9 4

6 1 8
Algoritmo Magico_0
Definir magico,i,j,k,n como entero
Dimension magico[11,11]
n=azar(8)+3;
Mientras n % 2=0 Hacer
n=n+1
FinMientras
Para i<-0 Hasta n-1 Con Paso 1 Hacer
Para j<-0 Hasta n-1 Con Paso 1 Hacer
magico[i,j]=0
Escribir Sin Saltar magico[i,j]," "
FinPara
Escribir " "
FinPara
Escribir " "
i=0
j=trunc(n/2)
k=1
magico[i,j]=k
Escribir " i j k : ",i," ",j," ",k
Para k<-2 Hasta n*n Con Paso 1 Hacer
i=i-1
j=j+1
Si i<0 Entonces
i=n-1
FinSi
Si j>n-1 Entonces
j=0
FinSi
Si magico[i,j]=0 Entonces
magico[i,j]=k
Sino
i=i+1
j=j-1
Si i>n-1 Entonces
i=0
FinSi
Si j<0 Entonces
j=n-1
FinSi
i=i+1
Escribir " i j k : ",i," ",j," ",k
magico[i,j]=k
FinSi
Escribir " i j k : ",i," ",j," ",k
FinPara
Escribir " "
Para i<-0 Hasta n-1 Con Paso 1 Hacer
Para j<-0 Hasta n-1 Con Paso 1 Hacer
Escribir Sin Saltar magico[i,j]," "
FinPara
Escribir " "
FinPara
FinAlgoritmo

Solución PYTHON 3.x


# Este codigo ha sido generado por el modulo psexport 20180802-w32 de PSeInt.
# Es posible que el codigo generado no sea completamente correcto. Si encuentra
# errores por favor reportelos en el foro (http://pseint.sourceforge.net).

from random import randint

if __name__ == '__main__':
magico = int()
i = int()
j = int()
k = int()
n = int()
magico = [[int() for ind0 in range(11)] for ind1 in range(11)]
n = randint(0,7)+3
while n%2==0:
n = n+1
for i in range(n):
for j in range(n):
magico[i][j] = 0
print(magico[i][j]," ", end="")
print(" ")
print(" ")
i=0
j = int(n/2)
k=1
magico[i][j] = k
print(" i j k : ",i," ",j," ",k)
for k in range(2,n*n+1):
i = i-1
j = j+1
if i<0:
i = n-1
if j>n-1:
j=0
if magico[i][j]==0:
magico[i][j] = k
else:
i = i+1
j = j-1
if i>n-1:
i=0
if j<0:
j = n-1
i = i+1
print(" i j k : ",i," ",j," ",k)
magico[i][j] = k
print(" i j k : ",i," ",j," ",k)
print(" ")
for i in range(n):
for j in range(n):
print(magico[i][j]," ", end="")
print(" ")

Cuadrados mágicos
Algoritmo Magico2
///
Definir magico,i,j,k,n como entero
Dimension magico[11,11]
n=azar(8)+3;
Mientras n % 2=0 Hacer
n=n+1
FinMientras
Para i=0 Hasta n-1 Con Paso 1 Hacer
Para j=0 Hasta n-1 Con Paso 1 Hacer
magico[i,j]=0
Escribir Sin Saltar magico[i,j]," "
FinPara
Escribir " "
FinPara
Escribir " "
i=0
j=trunc(n/2)
k=1
magico[i,j]=k
Escribir " i j k : ",i," ",j," ",k
Para k=2 Hasta n*n Con Paso 1 Hacer
i=i-1
j=j+1
Si i<0 Entonces
i=n-1
FinSi
Si j>n-1 Entonces
j=0
FinSi
Si magico[i,j]=0 Entonces
magico[i,j]=k
Sino
i=i+1
j=j-1
Si i>n-1 Entonces
i=0
FinSi
Si j<0 Entonces
j=n-1
FinSi
i=i+1
//Escribir " i j k : ",i," ",j," ",k
magico[i,j]=k
FinSi
Escribir " i j k : ",i," ",j," ",k
FinPara
Escribir " "
Escribir "N: ",n," ... ",n*n;
Escribir " "
Para i=0 Hasta n-1 Con Paso 1 Hacer
Para j=0 Hasta n-1 Con Paso 1 Hacer
Escribir Sin Saltar magico[i,j]," "
FinPara
Escribir " "
FinPara
FinAlgoritmo

Algoritmo Magico_Patron1
Definir magico,i,j,k,n como entero
Dimension magico[11,11]
n=Azar(11)+2; // Azar(11)+2
Si n % 2=0 entonces
n=n+1
FinSi
///n=3 /// Para probar inicialmente
Para i=0 Hasta n-1 Con Paso 1 Hacer
Para j=0 Hasta n-1 Con Paso 1 Hacer
magico[i,j]=0
Escribir Sin Saltar magico[i,j]," "
FinPara
Escribir " "
FinPara
Escribir " "
i=0;j=trunc(n/2) /// posición del 1 (uno) en la mitad de la primera fila
k=1;magico[i,j]=k /// colocando el 1 (uno) en la mitad de la primera fila
Escribir " i j k : ",i," ",j," ",k
Para k=2 Hasta n*n Con Paso 1 Hacer
i=i-1;j=j+1 /// subiendo de izquierda a derecha
Si i<0 Entonces
i=n-1
FinSi
Si j>n-1 Entonces
j=0
FinSi
Si magico[i,j]=0 Entonces
magico[i,j]=k
Sino
i=i+1;j=j-1 /// bajando de derecha a izquierda
Si i>n-1 Entonces
i=0
FinSi
Si j<0 Entonces
j=n-1
FinSi
i=i+1 /// haciendo la sierra (bajar en el sentido i)
magico[i,j]=k
FinSi
Escribir " i j k : ",i," ",j," ",k; /// fila, columna, contador
FinPara
Escribir " "
Escribir "N: ",n," ... ",n*n;
Escribir " "
Para i=0 Hasta n-1 Con Paso 1 Hacer
Para j=0 Hasta n-1 Con Paso 1 Hacer
Escribir Sin Saltar magico[i,j]," "
FinPara
Escribir " "
FinPara
FinAlgoritmo

También podría gustarte