Aplicación de arreglos bidimensionales

3,341 views

Published on

1 Comment
1 Like
Statistics
Notes
  • llenarConCeros(Entero mat[TAM_MAX][TAM_MAX], Entero tam) alguien podria explicarme que es exactamente lo que se esta haciendo en esa parte?
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total views
3,341
On SlideShare
0
From Embeds
0
Number of Embeds
81
Actions
Shares
0
Downloads
99
Comments
1
Likes
1
Embeds 0
No embeds

No notes for slide

Aplicación de arreglos bidimensionales

  1. 1. Junio 2013
  2. 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. 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. 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. 5. * *Utilizar arreglos bidimensionales para la solución de problemas.
  6. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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
  17. 17. * Pseudocódigo Código en C
  18. 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. 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. 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. 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. 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.
  23. 23. * 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:
  24. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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.

×