[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