K

KSTIGADR

Usuario (Uruguay)

Primer post: 13 feb 2012Último post: 14 feb 2012
2
Posts
7
Puntos totales
3
Comentarios
Programación: Entendiendo las matrices - ejemplos en C#
Programación: Entendiendo las matrices - ejemplos en C#
InfoporAnónimo2/14/2012

Segundo post y seguimos tratando de hacerle llegar datos sencillos de digerir al principiante . Con ustedes, las matrices. Enter the Matrix Imaginemos una matriz como una colección de espacios en memoria, todos contiguos, en donde se almacenan datos, los cuales pueden luego ser accedidos a traves de un índice colocado en esta misma colección. Los ejemplos en esta publicación van a ser desarrollados en C# a modo de ejemplo. Pongamos como ejemplo un instituto de enseñanza. Imaginemos una clase de Analisis de Sistemas que tiene 25 alumnos y necesitamos guardar las notas de los examenes para cada uno de ellos. Como el puntaje de dicho examen puede ser del 0 a 100, usaremos el tipo de dato "Byte". Ahora, lo primero que podríamos pensar es en crear una variable por separado para cada alumno de la siguiente manera: Byte PuntajeAlumno1; Byte PuntajeAlumno2; Byte PuntajeAlumno3; //Todo el resto de alumnos... Byte PuntajeAlumno25; Esto no sólo sería engorroso, difícil de leer y manter, sino que le llevaría mucho tiempo. Lo que necesitamos es una manera de acceder a todos esos datos desde un solo punto de entrada. Lo que precisamos es una matriz (ta-taan - música dramática). Esta matriz va a representar la colección de nuestras variables. Para esto, todas deben tener el mismo tipo de variable. También debemos especificar la capacidad que va a tener esta colección para coleccionar elementos, su tamaño. Veamos la declaración de nuestra matriz: Byte [] PuntajeAlumnos; Ahora, expliquemos lo siguiente: >> El identificador Byte nos dice que todos los elementos en la coleccion van a ser de tipo byte. >> Los corchetes indican que no vamos a crear una variable, sino una coleccion de las mismas. >> PuntajeAlumnos es el nombre que le vamos a dar a la matriz >> Por último cerramos la sentencia con un punto y coma. Lo que nos está faltando es indicar el tamaño que va a tener nuestra matriz, es decir, qué cantidad de elementos va a poder alojar. Para esto utilizaremos el operador new, el cual indica al compilador que quiere reservar memoria suficiente para guardar una colección de 25 variables en formato byte. byte [] PuntajeAlumnos; PuntajeAlumnos = new byte; Repasemos: New es el constructor que reserva o crea espacio para la matriz. Byte indica el tipo que van a tener las variables de la matriz. indica la cantidad de elementos que va a guardar nuestra matriz Importante: Debemos especificar el tipo de datos a utilizar al emplear el constructor new. No importa si ya se especificó cuando se declaro la matriz. Si lo escribimos de la siguiente manera: Byte [] PuntajeAlumnos; PuntajeAlumnos = new; Obtenendremos el siguiente error: "error CS1031: Se esperaba un tipo" Esto es porque no hay un tipo de variable que enlace la nueva palabra clave (PuntajeAlumnos) y la definición de su tamaño. Así mismo no hay que confundirse y usar un tipo distinto de dato al indicar el tamaño. Supongamos el siguiente caso: Byte [] PuntajeAlumnos; PuntajeAlumnos = new long; Este código causaría el siguiente error en compilación: "error CS0029: No se puede convertir implícitamente el tipo 'long[]' a 'byte[]'" Este tipo de matrices son conocidas como Matrices Unidimensionales. Estas tienen un factor que determinan su tamaño. En nuestro caso, ese factor está dado por la cantidad de alumnos. Recuerden que para valores enteros, como es nuestro caso, el índice es de 0. Esto quiere decir que el segundo elemento de nuestra matriz se va a alojar en el índice 1 y así hasta el elemento 25, que va a tener el índice 24. Lo que vamos a aprender a continuación es manipular un elemento individual dentro de nuestra matriz. Para obtener el valor de un elemento dentro de la matriz solo debemos llamarla a través de su nombre y su índice entre corchetes. Miremos el siguiente ejemplo: byte PrimerPuntaje; PrimerPuntaje = PuntajeAlumnos[0]; Este ejemplo primero creamos la variable PrimerPuntaje y luego le asignamos como valor el elemento que contiene el índice 0 en la matriz Puntaje alumnos. Sencillo verdad? Para guardar un valor volvemos a tomar la matriz y el indice en el que queremos guardar dicho valor, pero esta vez le asignamos algo: PuntajeAlumnos[0] = 100; En el ejemplo anterior guardamos el valor 100 en el índice 0 de la matriz PuntajeAlumnos. Aprovecho para recordar, cosa que nunca está de sobra, que utilizamos un índice de base 0. Si intentamos acceder a un índice inexistente dentro de la variable obtendremos un error. Ejecutemos el siguiente código: PuntajeAlumnos = 99; El código va a compilar sin problemas, pero al ejecutarse va a producir un error, ya que va a tratar de acceder al elemento 25 de una matriz que solo contiene 24 índices. Cuando la aplicación tenga que ejecutar éste código, el CLR (Entorno de Ejecución Común, por sus siglas en inglés) va a detener la aplicación y nos va a devolver el siguiente mensaje de error: Exception occurred: System.IndexOutOfRangeException: An exception of type System.IndexOutOfRangeException was thrown. IndexOutOfRangeException nos dice que la aplicación intentó acceder a un índice que no existe. Inicializando los valores dentro de la matriz Imaginemos que necesitamos una matriz de 5 números enteros. Se podría asignar por separado cada valor de la matriz de la siguiente manera: int [] MiArray; MiArray = new int ; MiArray[0] = 0; MiArray[1] = 1; MiArray[2] = 2; MiArray[3] = 3; MiArray[4] = 4; Pero esto sería un tanto engorroso y no sería útil si ya conocemos de antemano los valores que queremos cargar en cada índice. Lo ideal es asignar a la matriz todos los valores juntos, separados por comas y agrupados dentro de llaves. Todo esto se coloca en la misma línea en la que se declara la matriz, utilizando por lo tanto una sola línea para todo el código : int [] MiArray = {0, 1, 2, 3, 4}; De esta manera nos ahorraremos especificar un constructor new y el tamaño de la matriz ya que el compilador de C# calcula la cantidad de los elementos y por ende, el tamaño de la misma matriz. Eso es todo por el momento. No les pido que me llenen de puntos, solo un comentario para saber que a alguien le interesó

0
3
P
Problemas entendiendo las variables? Entrá :)
InfoporAnónimo2/13/2012

Hola, este es mi primer post después de mucho tiempo de ser partícipe de la página. La razón: al fin tengo un aporte que aporta algo Este post apunta a todo aquel que trata de iniciarse en el mundo de la programación y desea entender un poco mejor el entorno de las variables. La información es sacada de mi propio blog, el cual pueden visitar al final de la página. Aquí vamos. Variables: Cómo explicarlo mejor? Desde el principio Un concepto que a veces cuesta asimilar cuando uno se inicia en la programación, es el de variable, y aquellos conceptos que surgen de esta. Así que de manera concisa voy a poner un ejemplo para que quede bien claro. Imaginemos las variables como cajas en un bazar. El bazar va a representar a la memoria. Las cajas en el bazar son espacios reservados para alojar elementos. Así mismo, las variables son lugares en memoria reservados para guardar datos. Ahora, qué es toda esta confusión de bool, integer, byte, string, etc, etc? Si son lugares para guardar datos ¿por qué no reservar lugares todos del mismo tipo y nos ahorramos todas esas palabras raras? La respuesta es sencilla. Cuando hacemos la analogía con las cajas, pensamos en su forma física, real. Una caja de un televisor plasma de 60 pulgadas es grande y plana, mientras que una caja de dos pequeños parlantes es más pequeña y cúbica. Sep, sep... exacto, como cajas. Qué pasa si intentamos meter el plasma de 60 pulgadas en la caja de los parlantes? No entra, verdad? La caja está diseñada para guardar algo más pequeño. Y si por el contrario intentamos meter los parlantes en la caja del televisor? Aaah, tal vez entren sin problema. Entonces solo fabricaremos cajas enormes y pondremos cada objeto, grande o pequeño en una de esas cajas. Porque recordemos que solo podemos guardar un objecto por caja, para poder recuperarlo después a través del nombre de esa caja. Eso quiere decir que vamos a tener 1000 microprocesadores del tamaño un poquito mas grande que la tapita de una botella ocupando el lugar de 1000 cajas enormes en nuestro bazar... Eso no es aprovechar muy bien el espacio verdad? Cada variable tiene un tipo porque de esta manera reserva el espacio adecuado en memoria que va a necesitar y poder trabajar mejor con ella. Si vas a guardar el numero 2, para qué necesitas una variable que tenga capacidad para el valor 32.768 negativo ? Entonces tenemos que una variable es un espacio reservado en memoria, con un tipo específico que le provee de estructura (algunos lenguajes auto-asignan el tipo de la variable al darle un valor). Estos espacios reservados en memoria pueden alojar solo un elemento, para así poder recuperar el elemento eficientemente. Si volvemos al caso de las cajas, podemos decir que una caja pequeña sirve para guardar varios elementos pequeños. Un mouse, una taza, un candado, un celular, etc. Y tal vez ahora necesitemos guardar la taza, pero más adelante necesitemos guardar el celular. Esta es la función de la variable. Variar su contenido según nuestras necesidades. Matrices-Arrays Aunque parezca mucho más complicado, después de entender bien como funciona una variable, esta parte es sencilla. Sólo necesitamos imaginarnos una linea de cajas del mismo tamaño. Eso es todo. Una colección de variables del mismo tipo. Las matrices pueden constar de varias dimensiones, es decir, imaginemos que ponemos diez cajas del mismo tamaño en el piso de izquierda a derecha. Ahora imaginemos que junto a la primera caja de la izquierda sube hacia adelante otra fila de 10 cajas, formado algo parecido a una L. Listo, ya tenemos una matriz bidimensional. De la misma manera de pueden crear matrices de todas las dimensiones que se necesiten. Bueno, esto va a ser todo por el momento, espero poder ayudar a alguien principiante con esto. Pueden visitar esta misma nota y otras en mi blog http://ingenieriadeprogreso.blogspot.com. Pronto estaré hablando más profundamente sobre los tipos de variables, estados, matrices, bucles, diferentes lenguajes de programación como C#, Visual Basic, Java, JavaScript, Ruby, etc . Si quieren sugerir un tema del cual les gustaría que hable, comentenló, así también si les interesa ser invitados en el blog. Hasta pronto!

7
0
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.