2. *
*Este material ha sido desarrollado para
alumnos de la Licenciatura de Ingeniería en
Sistemas Energéticos y Sustentables que cursan
la asignatura de Programación Básica.
*Es importante resaltar que para la aplicación
de arreglos bidimensionales (matrices o
tablas), los alumnos deben tener claramente
comprendido el trabajo de las estructuras
repetitivas.
3. *
* Este trabajo ha sido desarrollado en su
totalidad con el uso de la estructura para
(pseudocódigo) o for (código en C), por ello
antes de iniciar con los ejercicios, se hace un
repaso de la misma.
*Se concluye con el análisis y desarrollo de un
cuadrado mágico utilizando funciones en
pseudocódigo y código en C.
6. *
*Comprender el concepto de arreglo
bidimensional (matrices o tablas)
*Declarar e inicializar arreglos bidimensionales
*Utilizar ciclos anidados para leer, imprimir y
modificar arreglos bidimensionales
7. *
*Los tipos de datos
simples sólo utilizan una
casilla de memoria y
pueden ser
principalmente números
enteros, reales o
caracteres.
*Los datos de tipo
estructurado utilizan un
nombre para referirse a un
grupo de casillas de
memoria, (almacenan
varios componentes). Los
datos estructurados más
conocidos son: los arreglos,
las cadenas de caracteres y
los registros.
Es importante recordar que los tipos de datos se
clasifican en simples y estructurados.
8. *
*“Un arreglo bidimensional es un conjunto de n
elementos del mismo tipo almacenados en
memoria contigua en una matriz o tabla. Para
hacer referencia a cada uno de sus elementos
es necesario utilizar dos índices, el primero
indica la fila y el segundo la columna” (Corona
N., 2011).
9. *Un arreglo bidimensional
tendrá almacenados m x n
elementos (donde m es el
número de filas o
renglones y n el número
de columnas).
*
10. *
*Consiste en reservar el espacio que ocupará el
arreglo en la memoria. Una vez que el arreglo
ha sido declarado, sus valores pueden ser
almacenados mediante asignaciones o cómo
ocurre frecuentemente en la práctica
utilizando ciclos anidados. (Cairó, 2006)
*En la figura 2 se muestra el pseudocódigo y
código en C con la información requerida para
la declaración una matriz.
11. *
tipo_dato ident_mat [N°filas][N°col]
donde:
tipo_dato: es el tipo de dato de todo el
arreglo
ident_mat : es el nombre del arreglo
N°filas: es el total de filas
N°col: es el total de columnas
tipo_dato ident_mat [N°filas][N°col];
int mat_1 [5][7];
Pseudocódigo Código en C
Figura 2. Pseudocódigo y código en C con los pasos requeridos para declarar un arreglo bidimensional.
12. *
*Algunos ejemplos de declaración de arreglos serían:
int A[5][5]; /* Declaración de un arreglo
bidimensional llamado A, de tipo
entero con 5 filas y 5 columnas, el
total de elementos almacenados
será de 25.
float mat1[4][5]; /* Declaración de un arreglo
bidimensional llamado mat1, de tipo
real con 4 filas y 5 columnas, el
total de elementos almacenados
será de 20.
13. *Como se puede observar en
la figura, los datos
almacenados son reales, se
tienen 4 filas x 5 columnas
por lo que el total de
elementos almacenados es
20.
*
14. *
*La lectura, impresión y modificación de
valores, son operaciones elementales que
pueden realizarse con una matriz.
*En la figura 4 se muestra un segmento de
programa que permite leer o almacenar datos
de tipo entero en un arreglo bidimensional
llamado mat con 3 filas y 4 columnas.
15. * Lectura
La computadora necesita de dos ciclos anidados (para
ubicar la fila y la columna) así como la instrucción
leer (scanf) para almacenar los valores en cada celda
de la tabla o matriz.
Figura 4.
Pseudocódigo y Código en C para leer datos de
tipo entero en un arreglo bidimensional
llamado mat, con 3 filas y 4 columnas.
Pseudocódigo Código en C
16. *
*Es la operación que permite mostrar los valores
almacenados en una matriz.
*En la figura 5 se tiene un segmento de programa
que imprime los datos de tipo entero almacenados
en la matriz llamada mat de 3 filas y 4 columnas
18. *Modificación de un
elemento de la matriz
*Los elementos de un arreglo bidimensional
pueden ser modificados en cualquier momento,
para realizar esta acción sólo es necesario
especificar el nombre de la matriz, la posición
tanto de la fila como de la columna y el nuevo
valor.
19. * En esta figura se presenta un ejemplo donde a
todos los elementos del tercer renglón del
arreglo A, se les asigna el valor de 10, el
subíndice que corresponde a la tercera fila es el
2, razón por la cual sólo variará el subíndice de
la columna.
*
entero A[4][4]
para (j 0, j< 4, j j+1)
A[2][j] 10
int A[4][4]
for (j=0; j<4; j++)
A[2][j]) = 10;
Pseudocódigo Código en C
20. *
*Realice un programa para generar un cuadrado
mágico de orden impar n, comprendido entre 3
y 11. Un cuadrado mágico se compone de los
números enteros comprendidos entre 1 y n. La
suma de los números que figuran en cada fila,
columna y diagonal son iguales.
21. 8 1 6
3 5 7
4 9 2
Por ejemplo, para n=3
Suma del
renglón cero
igual a15
Suma del
renglón uno
igual a15
Suma del
renglón dos
igual a15
Suma de la
columna
cero igual
a15
Suma de la
columna uno
igual a15
Suma de la
columna dos
igual a15
Suma de la
diagonal
igual a15
Suma de la
diagonal
igual a15
22. *
Un método de generación considera lo siguiente:
1°. Situar el número 1 en el centro de la primera fila.
2°. El siguiente número se sitúa en la casilla por
encima y a la derecha y así sucesivamente.
3°. El cuadrado es cíclico, es decir, la línea encima de
la primera es de hecho la última y la columna a la
derecha de la última es la primera.
4°. En caso de que el número generado caiga en una
casilla ocupada, se elige la casilla que se
encuentre debajo del número que acaba de ser
situado.
24. Para resolver el problema del cuadrado mágico, el pseudocódigo ha sido
desarrollado empleando 4 funciones que son explicadas y mostradas a
continuación:
1. Función llenarConCeros: Tiene como propósito inicializar la matriz con
ceros para limpiarla de basura.
2. Función resuelveCuadradoMágico: Se encarga de analizar la matriz para
ir acomodando los números en la posición correcta.
3. Función imprimeCuadradoMágico: Una vez que se ha generado el
cuadrado mágico, esta función se encarga de imprimir los resultados
4. Función Principal: Es la función encargada de solicitar y validar los datos
e invocar a las funciones.
*
25. Función llenarConCeros
DEFINIR TAM_MAX 11
llenarConCeros(Entero mat[TAM_MAX][TAM_MAX], Entero tam)
Inicio
Entero i, j
Para (i 0; i < tam; ii + 1)
Para (j 0; j < tam; j j + 1)
mat[i][j] 0
Fin Para
Fin Para
Regresa
*
26. Función resuelveCuadradoMágico
resuelveCuadradoMágico (Entero mat[TAM_MAX][TAM_MAX], Entero tam)
Inicio
Entero últimoNúmero tam * tam
Entero filaActual 0
Entero columnaActual tam / 2
Entero siguienteFila
Entero siguienteColumna
Entero númeroActual
mat[filaActual][columnaActual] 1
Para (númeroActual 2; númeroActual <= últimoNúmero; númeroActual númeroActual + 1 )
siguienteFila (filaActual + tam - 1) % tam
siguienteColumna (columnaActual + 1) % tam
Si (mat[siguienteFila][siguienteColumna]!=0)
filaActual filaActual + 1
Otro caso
filaActual siguienteFila
columnaActual siguienteColumna
Fin Si
mat[filaActual][columnaActual] númeroActual
Fin Para
Regresa
*
27. Función imprimeCuadradoMágico
imprimeCuadradoMágico (Entero mat[TAM_MAX][TAM_MAX], Entero tam)
Inicio
Entero i, j
Para (i 0; i < tam; i i + 1)
Para (j 0; j < tam; j j + 1)
Escribe (mat[i][j])
FinPara
Escribe ("n")
Fin Para
Regresa
*
28. Función Principal
Principal
Inicio
Entero cuadradoMágico[TAM_MAX][TAM_MAX]
Entero orden
Escribe ("Programa que calcula cuadrados mágicos de orden 3 a 11")
Escribe ("nIndique el orden del cuadrado mágico: ")
Leer (orden)
Si (orden < 3)
Escribe ("nEl orden mínimo es 3n")
Fin Si
Si (orden % 2 != 1 )
Escribe ("nEl orden debe ser imparn")
Fin Si
Si (orden > TAM_MAX)
Escribe ("nEl orden máximo es 11n")
Fin Si
Llamar llenarConCeros(cuadradoMágico, orden)
Llamar resolverCuadradoMágico(cuadradoMágico, orden)
Llamar CuadradoMágico(cuadradoMágico, orden)
Termina
*
29. *
* Realice una prueba de escritorio del pseudocódigo anterior
considerando un valor de n=3 en el formato anexo:
Itera
ción
TA
M_
MA
X
tam ultimoN
umero
filaAct
ual
columna
Actual
siguiente
Fila
siguienteCo
lumna
numeroA
ctual
mat[siguienteFila][sigui
enteColumna]
mat[filaActual][co
lumnaActual]
11
30. *
*Un arreglo bidimensional es un conjunto de n
elementos del mismo tipo almacenados en
memoria contigua.
*A estos arreglos también se les conoce como
matrices o tablas.
31. *
*La declaración de la matriz consiste en
reservar el espacio que ocupará en la memoria.
Se debe especificar en el siguiente orden:
El tipo de datos que serán empleados
(entero, real, carácter, etc), el nombre del
arreglo y entre corchetes primero el
número de filas y después el de columnas.
32. *
*Para hacer referencia a cada uno de sus
elementos es necesario utilizar dos índices, el
primero indica la fila y el segundo la columna,
por esta razón, es necesario utilizar ciclos
anidados.
*El ciclo externo controla las filas y el interno
las columnas.
*Las operaciones elementales que se pueden
realizar son: lectura, impresión y modificación
de elementos.
33. *
1. Cairó, O. (2006). Fundamentos de Programación
Piensa en C. México, Pearson.
2. Corona N., M. A. (2011). Diseño de Algoritmos y su
Codificación en Lenguaje C. México, McGraw-Hill.
3. Joyanes, Luis. Zahonero, I. (2010), Programación en
C, C++, Java y UML, McGrawHill, México.
4. Joyanes, Luis. (2008), Fundamentos de
Programación, 4a. Edición, McGrawHill, México.