SlideShare una empresa de Scribd logo
Junio 2013
*
*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.
*
* 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.
*
*Objetivo general
*Objetivos particulares
*Introducción
*Definición
*Declaración de matrices
*Lectura, impresión y modificación de elementos de la
matriz
*Ejemplo “El cuadrado mágico”
*Pseudocódigo
*Conclusiones
*Bibliografía
*
*Utilizar arreglos bidimensionales para la
solución de problemas.
*
*Comprender el concepto de arreglo
bidimensional (matrices o tablas)
*Declarar e inicializar arreglos bidimensionales
*Utilizar ciclos anidados para leer, imprimir y
modificar arreglos bidimensionales
*
*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.
*
*“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).
*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).
*
*
*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.
*
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.
*
*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.
*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.
*
*
*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.
* 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
*
*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
*
Pseudocódigo Código en C
*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.
* 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
*
*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.
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
*
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.
*
Primera
fila
Columna
central
1
arriba
derecha
2
3
arriba
derecha
4
arriba
derecha ocupado
abajo
5
6
arriba
derecha
7
ocupado
abajo
8
9
*Un cuadrado mágico para n=3 se genera de la siguiente
forma:
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.
*
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; ii + 1)
Para (j  0; j < tam; j  j + 1)
mat[i][j]  0
Fin Para
Fin Para
Regresa
*
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
*
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
*
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
*
*
* 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
*
*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.
*
*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.
*
*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.
*
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.

Más contenido relacionado

La actualidad más candente

Lenguajes de programacion tema 2_compiladores e interpretes
Lenguajes de programacion tema 2_compiladores e interpretesLenguajes de programacion tema 2_compiladores e interpretes
Lenguajes de programacion tema 2_compiladores e interpretes
Israel Castillo Cruz
 
Arreglos vectores pseint
Arreglos vectores pseintArreglos vectores pseint
Arreglos vectores pseint
HEIVER CUESTA
 
Estructura de Datos - árboles y grafos
Estructura de Datos - árboles y grafosEstructura de Datos - árboles y grafos
Estructura de Datos - árboles y grafos
Miguel Rodríguez
 
Arboles En Estructura de Datos
Arboles En Estructura de DatosArboles En Estructura de Datos
Arboles En Estructura de Datos
DARKGIRL93
 
Colas en programacion
Colas en programacionColas en programacion
Colas en programacion
Luis Igoodbad
 
Arboles - estructura de datos
Arboles - estructura de datos Arboles - estructura de datos
Arboles - estructura de datos
Kaneki04
 
Estructura de Datos - Unidad 4 Estructuras no lineales
Estructura de Datos - Unidad 4 Estructuras no linealesEstructura de Datos - Unidad 4 Estructuras no lineales
Estructura de Datos - Unidad 4 Estructuras no lineales
José Antonio Sandoval Acosta
 
Listas de adyacencia
Listas de adyacenciaListas de adyacencia
Listas de adyacencialeidy2220
 
Notación infija postfija
Notación infija postfijaNotación infija postfija
Notación infija postfijaOmarzingm
 
Ejercicios propuesto 3
Ejercicios propuesto 3Ejercicios propuesto 3
Ejercicios propuesto 3jfranco_123
 
Ejercicios resueltos base ortonormal
Ejercicios resueltos base ortonormalEjercicios resueltos base ortonormal
Ejercicios resueltos base ortonormalalgebra
 
Reporte metodos de busqueda y ordenamiento
Reporte metodos de busqueda y ordenamientoReporte metodos de busqueda y ordenamiento
Reporte metodos de busqueda y ordenamiento
TAtiizz Villalobos
 
Programación 3: árboles binarios y ordenados
Programación 3: árboles binarios y ordenadosProgramación 3: árboles binarios y ordenados
Programación 3: árboles binarios y ordenados
Angel Vázquez Patiño
 
Estructuras en c++
Estructuras en c++Estructuras en c++
Estructuras en c++
Cesar Oswaldo Osorio Agualongo
 

La actualidad más candente (20)

Lenguajes de programacion tema 2_compiladores e interpretes
Lenguajes de programacion tema 2_compiladores e interpretesLenguajes de programacion tema 2_compiladores e interpretes
Lenguajes de programacion tema 2_compiladores e interpretes
 
Listas,pilas y colas Estructura de Datos
Listas,pilas y colas Estructura de DatosListas,pilas y colas Estructura de Datos
Listas,pilas y colas Estructura de Datos
 
Arreglos vectores pseint
Arreglos vectores pseintArreglos vectores pseint
Arreglos vectores pseint
 
Pilas y colas
Pilas y colasPilas y colas
Pilas y colas
 
Diagramas De Flujo
Diagramas De FlujoDiagramas De Flujo
Diagramas De Flujo
 
Estructura de Datos - árboles y grafos
Estructura de Datos - árboles y grafosEstructura de Datos - árboles y grafos
Estructura de Datos - árboles y grafos
 
Arboles En Estructura de Datos
Arboles En Estructura de DatosArboles En Estructura de Datos
Arboles En Estructura de Datos
 
Colas en programacion
Colas en programacionColas en programacion
Colas en programacion
 
Arboles - estructura de datos
Arboles - estructura de datos Arboles - estructura de datos
Arboles - estructura de datos
 
Arboles Binarios
Arboles BinariosArboles Binarios
Arboles Binarios
 
Pilas, colas, y listas estructura de datos
Pilas, colas, y listas estructura de datosPilas, colas, y listas estructura de datos
Pilas, colas, y listas estructura de datos
 
Estructura de Datos - Unidad 4 Estructuras no lineales
Estructura de Datos - Unidad 4 Estructuras no linealesEstructura de Datos - Unidad 4 Estructuras no lineales
Estructura de Datos - Unidad 4 Estructuras no lineales
 
Listas de adyacencia
Listas de adyacenciaListas de adyacencia
Listas de adyacencia
 
Arreglos
ArreglosArreglos
Arreglos
 
Notación infija postfija
Notación infija postfijaNotación infija postfija
Notación infija postfija
 
Ejercicios propuesto 3
Ejercicios propuesto 3Ejercicios propuesto 3
Ejercicios propuesto 3
 
Ejercicios resueltos base ortonormal
Ejercicios resueltos base ortonormalEjercicios resueltos base ortonormal
Ejercicios resueltos base ortonormal
 
Reporte metodos de busqueda y ordenamiento
Reporte metodos de busqueda y ordenamientoReporte metodos de busqueda y ordenamiento
Reporte metodos de busqueda y ordenamiento
 
Programación 3: árboles binarios y ordenados
Programación 3: árboles binarios y ordenadosProgramación 3: árboles binarios y ordenados
Programación 3: árboles binarios y ordenados
 
Estructuras en c++
Estructuras en c++Estructuras en c++
Estructuras en c++
 

Similar a Aplicación de arreglos bidimensionales

Matrices
MatricesMatrices
Matrices
Boris Salleg
 
Arreglos bidimensionales o matrices
Arreglos bidimensionales o matricesArreglos bidimensionales o matrices
Arreglos bidimensionales o matricesAriannaYadiraT
 
Arreglos y matrices
Arreglos y matricesArreglos y matrices
Arreglos y matrices
C.T.P DE PITAL
 
Fundamentos de Programacion - Unidad 5 arreglos (vectores)
Fundamentos de Programacion - Unidad 5 arreglos (vectores)Fundamentos de Programacion - Unidad 5 arreglos (vectores)
Fundamentos de Programacion - Unidad 5 arreglos (vectores)
José Antonio Sandoval Acosta
 
Curso matlab
Curso matlabCurso matlab
Curso matlab
CARLOSNIOBALTODANO
 
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (2)
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (2)3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (2)
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (2)luis freddy
 
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (5)
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (5)3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (5)
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (5)luis freddy
 
MATLAB 2010
MATLAB 2010MATLAB 2010
MATLAB 2010
Jose Cordova
 
Pres arreglosmat animacion
Pres arreglosmat animacionPres arreglosmat animacion
Pres arreglosmat animacionJLAntonio
 
Ing. Mecatronica Prog. Básica U4 Arreglos y estructuras
Ing. Mecatronica Prog. Básica U4 Arreglos y estructurasIng. Mecatronica Prog. Básica U4 Arreglos y estructuras
Ing. Mecatronica Prog. Básica U4 Arreglos y estructuras
José Antonio Sandoval Acosta
 
arreglos y matrices
arreglos  y matricesarreglos  y matrices
arreglos y matrices
Kathery Correa Quiroz
 
Fundamentos de Programación - Unidad IV: Arreglos (Vectores)
Fundamentos de Programación - Unidad IV: Arreglos (Vectores)Fundamentos de Programación - Unidad IV: Arreglos (Vectores)
Fundamentos de Programación - Unidad IV: Arreglos (Vectores)
José Antonio Sandoval Acosta
 

Similar a Aplicación de arreglos bidimensionales (20)

Matrices
MatricesMatrices
Matrices
 
Arreglos bidimensionales o matrices
Arreglos bidimensionales o matricesArreglos bidimensionales o matrices
Arreglos bidimensionales o matrices
 
Arreglos y matrices
Arreglos y matricesArreglos y matrices
Arreglos y matrices
 
Fundamentos de Programacion - Unidad 5 arreglos (vectores)
Fundamentos de Programacion - Unidad 5 arreglos (vectores)Fundamentos de Programacion - Unidad 5 arreglos (vectores)
Fundamentos de Programacion - Unidad 5 arreglos (vectores)
 
Curso matlab
Curso matlabCurso matlab
Curso matlab
 
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (2)
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (2)3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (2)
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (2)
 
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (5)
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (5)3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (5)
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (5)
 
MATLAB 2010
MATLAB 2010MATLAB 2010
MATLAB 2010
 
Pres arreglosmat animacion
Pres arreglosmat animacionPres arreglosmat animacion
Pres arreglosmat animacion
 
Luis Gamboa
Luis  GamboaLuis  Gamboa
Luis Gamboa
 
Ing. Mecatronica Prog. Básica U4 Arreglos y estructuras
Ing. Mecatronica Prog. Básica U4 Arreglos y estructurasIng. Mecatronica Prog. Básica U4 Arreglos y estructuras
Ing. Mecatronica Prog. Básica U4 Arreglos y estructuras
 
arreglos y matrices
arreglos  y matricesarreglos  y matrices
arreglos y matrices
 
Fundamentos de Programación - Unidad IV: Arreglos (Vectores)
Fundamentos de Programación - Unidad IV: Arreglos (Vectores)Fundamentos de Programación - Unidad IV: Arreglos (Vectores)
Fundamentos de Programación - Unidad IV: Arreglos (Vectores)
 
Matlab
MatlabMatlab
Matlab
 
Matlab
MatlabMatlab
Matlab
 
Matlab
MatlabMatlab
Matlab
 
Matlab
MatlabMatlab
Matlab
 
Matlab
MatlabMatlab
Matlab
 
Programacion
ProgramacionProgramacion
Programacion
 
Programacion
ProgramacionProgramacion
Programacion
 

Más de marigelcontreras

Estructuras de control selectivas
Estructuras de control selectivasEstructuras de control selectivas
Estructuras de control selectivasmarigelcontreras
 
Estructuras de control selectivas
Estructuras de control selectivasEstructuras de control selectivas
Estructuras de control selectivasmarigelcontreras
 
Apuntes programacion basica
Apuntes programacion basicaApuntes programacion basica
Apuntes programacion basicamarigelcontreras
 
Estructuras iterativas y ejemplos propuestos
Estructuras iterativas y ejemplos propuestosEstructuras iterativas y ejemplos propuestos
Estructuras iterativas y ejemplos propuestosmarigelcontreras
 
Estructuras iterativas y ejemplos propuestos
Estructuras iterativas y ejemplos propuestosEstructuras iterativas y ejemplos propuestos
Estructuras iterativas y ejemplos propuestosmarigelcontreras
 

Más de marigelcontreras (8)

Estructuras de control selectivas
Estructuras de control selectivasEstructuras de control selectivas
Estructuras de control selectivas
 
Estructuras de control selectivas
Estructuras de control selectivasEstructuras de control selectivas
Estructuras de control selectivas
 
Apuntes programacion basica
Apuntes programacion basicaApuntes programacion basica
Apuntes programacion basica
 
Estructuras iterativas
Estructuras iterativasEstructuras iterativas
Estructuras iterativas
 
Estructuras iterativas
Estructuras iterativasEstructuras iterativas
Estructuras iterativas
 
Estructuras iterativas y ejemplos propuestos
Estructuras iterativas y ejemplos propuestosEstructuras iterativas y ejemplos propuestos
Estructuras iterativas y ejemplos propuestos
 
Estructuras iterativas y ejemplos propuestos
Estructuras iterativas y ejemplos propuestosEstructuras iterativas y ejemplos propuestos
Estructuras iterativas y ejemplos propuestos
 
Arreglos unidimensionales
Arreglos unidimensionalesArreglos unidimensionales
Arreglos unidimensionales
 

Aplicación de arreglos bidimensionales

  • 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.
  • 4. * *Objetivo general *Objetivos particulares *Introducción *Definición *Declaración de matrices *Lectura, impresión y modificación de elementos de la matriz *Ejemplo “El cuadrado mágico” *Pseudocódigo *Conclusiones *Bibliografía
  • 5. * *Utilizar arreglos bidimensionales para la solución de problemas.
  • 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; ii + 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.