HOME

PRODUCTOS

PROYECTOS

TUTORIALES

VIDEOS

FREEWARE

PROGRAMAS

FUNCIONES C

EMPRESA

ENGLISH

                   

tutorial: manejo de arreglos bidimensionales en C18

 

Descripción:

En tutoriales previos, se explicó la forma  utilizar pointers ó apuntadores para el manejo de variables ó arreglos unidimensionales, y específicamente para transferir un arreglo como parámetro de una función.

En el proyecto Control de asistencia con tags RFID, se desarrolló una aplicación práctica del manejo de arreglos bidimensionales en C.

En este tutorial se verá la manera de manejar arreglos bidimensionales haciendo uso del lenguaje C. Los ejemplos mostrados fueron desarrollados con el compilador C18 v.3.40 y el software MPLAB IDE v.8.63.

Supongamos que se quiere crear una matríz con 35 datos, organizados en 5 renglones de 7 datos cada uno. Considerando el ejemplo de la tabla de abajo, en donde aparecen datos en formatos ASCII, decimal y hexadecimal, la matríz tomaría la siguiente forma:

matriz[i,j]

en donde i es el número de renglón y j el número de columna. Por ejemplo: matriz[4,1]=0XA4

i / j

0 1 2 3 4 5 6
0 'R' 59 'B' 6 0X2E 'T' -81
1 182 'M' -10 'T' 66 0X16 'S'
2 'C' 0XF 'R' 234 118 -30 0XB
3 -52 12 0X45 -101 'R' 0XE1 92
4 -87 0XA4 'Y' 'W' 0 81 0X20

Manejo de arreglos bidimensionales en C:

En C, es indispensable al manejo de apuntadores para poder referenciar a todos los elementos de la matríz. En la figura de abajo se muestra la estructura de datos para la matríz propuesta en el ejemplo anterior.

Los arreglos unidimensionales s0[ ]...s4[ ] contienen cada uno 7 valores que conforman finalmente la matríz de 35 elementos del ejemplo propuesto.

Existe un arreglo de apuntadores que en este ejemplo llamamos masterarray[ ]. La forma de definir este arreglo en el programa es la siguiente:

const rom char *masterarray[ ]={s0,s1,s2,s3,s4};

Los apuntadores S0...S4, son valores de 16 bits que se almacenan en localidades de memoria RAM. Pero su contenido señala a direcciones en memoria ROM (de código) que es en donde se encuentran los elementos de la matríz. Al realizar la simulación del programa de prueba, mostrado en la ventana de abajo, pueden observarse los valores de estas localidades en RAM.

El acceso a los elementos del arreglo, debe hacerse por referencia, es decir con subíndices que se suman al valor de los apuntadores.

PROGRAMA DE PRUEBA:

Con base en la estructura mostrada arriba, en el siguiente programa se definen primeramente  los datos de la matríz de 5 renglones y 7 columnas que se almacenan en memoria de código y más tarde se utiliza una función que recupera el elemento [4,1] de la matríz. La función utilizada en el programa para leer el elemento indicado es:

z=matriz(i,j);

En donde el valor del elemento se asigna a la variable z. Dicha función puede emplearse en cualquier otro programa para el manejo de matrices bidimensionales, ya que tiene como parámetros de entrada los valores [i,j] (renglón,columna) de la matríz.

El programa de prueba es el siguiente: C18-BOLT-ARREGLO-BIDIMENSIONAL-2.c

SIMULACIÓN DEL PROGRAMA EN MPLAB IDE:

Para familiarizarse con el manejo del simulador del MPLAB IDE, consulte primero el siguiente documento:

USO DEL SIMULADOR EN MPLAB IDE.PDF

Para hacer la simulación, debe primeramente compilar el programa, y asignar un breakpoint en la línea mostrada en la ventana de abajo (círculo rojo). Posteriormente dé reset al programa simulador y luego "run". La simulación se detendrá en el breakpoint (donde señala la flecha verde) y la variable z, así como los apuntadores S0...S4 pueden ser observados en las ventanas de variables y de la memoria RAM.

En este ejemplo de prueba, el valor de la variable z que contiene el valor del elemento matriz[4,1], es 0xA4.

PROGRAMAS DE PRUEBA

COMENTARIOS

C18-BOLT-ARREGLO-BIDIMENSIONAL-2.c Programa de prueba 1, para simulación en MPLAB IDE. Recupera el elemento [4,1] de la matríz de 35 elementos
C18-BOLT-ARREGLO-BIDIMENSIONAL-3.c Programa de prueba 2, para simulación en MPLAB IDE. Recupera uno a uno los 35 elementos de la matriz. Utilice breakpoints para observar en la simulación la lectura de cada elemento.
C18-BOLT-MANEJO-DE-POINTERS.c Programa de aplicación para sistema Bolt 18F2550, escribe en el LCD los nombres almacenados en una matríz bidimensional.
C18-BOLT-MANEJO-DE-POINTERS.hex Archivo ejecutable del programa anterior.