[Utu-emt-prog2-info] clase 5 matrices - se aceptan sugerencias :-D

Federico Kouyoumdjian fedekp en autistici.org
Jue Jul 21 03:29:14 CEST 2011


fuente: 
http://www.etnassoft.com/biblioteca/introduccion-al-desarrollo-de-software/ 
y producción propia

Matrices

Las matrices son estructuras de datos homogéneas de tamaño fijo. Es 
decir, se representa siempre una información que emplea un número 
determinado de datos. También se llaman arreglos (una traducción 
bastante directa del término array en inglés), tablas (para las de una o 
dos dimensiones) o vectores (si son unidimensionales). En el caso 
particular de los vectores de caracteres, reciben el nombre de cadenas 
de caracteres o strings, en inglés.

Declaración

A continuación se muestran cuatro declaraciones de matrices distintas y 
un esquema de su distribución en la memoria del computador. El número de 
bytes de cada división depende del tipo de dato de cada matriz 
correspondiente. En el esquema ya se avanza el nombre de cada dato 
dentro de la matriz, en el que se distingue el nombre común de la matriz 
y una identificación particular del dato, que se corresponde con la 
posición del elemento en ella. Es muy importante tener presente que
las posiciones siempre se numeran desde 0, en C.

Memoria: vector[0] : vector[1] : vector[2] : vector[3] : cadena[0] : ... 
:cadena[19] : tabla[0] : … : tabla[9] : matriz[0][0] : matriz[0][1] : … 
: matriz[2][1] : matriz[2][2]

A continuación, se muestran las declaraciones de las variables que 
conducirían hasta la distribución en memoria que se ha visto:

int vector[4];
char cadena[20];
unsigned short tabla[10];
double matriz[3][3];

Como se ha comentado, las cadenas de caracteres son, realmente, matrices 
unidimensionales en C. Es decir, que tienen una longitud máxima fijada 
por el espacio reservado al vector que les corresponde. Aun así, las 
cadenas de caracteres pueden ser de longitud variable y, por tanto, se 
utiliza un marcador de final. En este caso, se trata del carácter NUL 
del código ASCII, cuyo valor numérico es 0. En el ejemplo anterior, la 
cadena puede ser cualquier texto de hasta 19 caracteres, pues es 
necesario prever que el último carácter es el de fin de cadena ('\0').

En todos los casos, especialmente cuando se trata de variables que hayan 
de contener valores constantes, se puede dar un valor inicial a cada uno 
de los elementos que contienen.

En los ejemplos siguientes, podemos observar distintas inicializaciones 
para las declaraciones de las variables anteriores.

int vector[4] = { 0, 1, 2, 3 };
char cadena[20] = { 'H', 'o', 'l', 'a', '\0' };
unsigned short tabla[10] = { 98, 76, 54, 32, 1, };
double matriz[3][3] = {{0.0, 0.1, 0.2}, {1.0, 1.1, 1.2}, {2.0, 2.1, 2.2} };

Para facilitar la inicialización de las cadenas de caracteres también es 
posible hacerlo de la manera siguiente: char cadena[20] = "Hola";

Si, además, la cadena no ha de cambiar de valor, es posible aprovechar 
que no es necesario especificar la dimensión, si ésta se puede calcular 
a través de la inicialización que se hace de la variable 
correspondiente: char cadena[] = "Hola";

En el caso de la tabla, se realiza una inicialización completa al 
indicar, con la última coma, que todos los elementos posteriores tendrán 
el mismo valor que el último dado.

Referencia

Para hacer referencia, en alguna expresión, a un elemento de una matriz, 
basta con indicar su nombre y la posición que ocupa dentro de ella:

matriz[i0][i1]...[in]

donde ik son expresiones el resultado de las cuales debe de ser un valor 
entero. Habitualmente, las expresiones suelen ser muy simples: una 
variable o una constante.

Ejercicios
1.Definir un arreglo con las notas de los escritos de un grupo e 
inicializar la mitad de los elementos con 12 y el resto con 7
2.Definir una matriz que represente el tablero del buscaminas e 
inicializarlo con valores (usar -1 para representar una bomba y -2 para 
representar el vacío)
3.Definir una estructura que reprensente los nombres y apellidos de un 
grupo de personas.
4.Recorrer el arreglo del ejercicio 1 imprimiendo todos los valores
5.Recorrer la matriz del ejercicio 2 imprimiendo todos los valores
6.Recorrer la estructura del ejercicio 3 imprimiendo todos los valores

Algunas teclas útiles del teclado:
1.Tab: tabula o avanza en los campos de un formulario de una página web
2.Shift + Taab: destabula o retrocede en los campos de un formulario de 
una pág. web
3.Inicio: va al principio de la línea
4.Fin: va al fin de la línea
5.Re. Pág: retroceder una página, sirve para ir más rápido al final de 
un documento
6.Av. Pág: avanzar una página, sirve para ir más rápido al inicio del 
documento

Recordatorios de programación 1
1.|| es or (verdadero cuando al menos uno de los operandos es verdadero)
2.&& es and (verdadero cuando ambos operandos son verdaderos)
3.== es igual (verdadero cuando ambos operandos son iguales)
4.!= es distinto (verdadero cuando ambos operandos son distintos)

Errores comunes
1.No se puede poner 0 <= i <= 9, en vez de eso hay que poner 0 <= i && 0 <=9
2.Call of non function … Problema: se declaró una variable con el mismo 
nombre que una función. Solución: cambiar el nombre de la variable o de 
la función.

Recordatorio de accesos directos en IDE Turbo C++:
1.Shift + F1 = topic search, permite buscar funciones, te dice la 
descripción, el cabezal y qué librerías se deben incluir
2.Alt gr + ° = \
3.alt +124 = |
4.Ctrl + Pause = detener la ejecución (sirve para cuando el programa 
entra en loop infinito)



Más información sobre la lista de distribución Utu-emt-prog2-info