Tablas
D escr ipción gener al
I ntr oducción a las tablas
Cr eación de tablas
U so de tablas
I ntr oducción a las tablas
¿Qué es una tabla?
N otación par a tablas en C#
Rango de una tabla
Acceso a los elementos de una tabla
Compr obación de los límites de una tabla
Compar ación de tablas y colecciones
¿Qué es una tabla?
U na tabla es una secuencia de elementos
Todos los elementos de una tabla son del mismo tipo
Las estructuras pueden tener elementos de distintos tipos
Se accede a elementos individuales usando índices enteros
Índice entero 0 (cero)
Índice entero 4 (cuatro)
N otación par a tablas en C#
U na var iable de tabla se declar a especificando:
El tipo de elementos de la tabla
El rango de la tabla
El nombre de la variable tipo[ ] nombre; tipo[ ] nombre; Especifica el nombre de la variable de tabla Especifica el rango de la tabla Especifica el tipo de elementos de la tabla
Rango de una tabla
El r ango se conoce también como dimensión de la tabla
El númer o de índices asociados con cada elemento long[ ] fila; int[,] cuadrícula; long[ ] fila; int[,] cuadrícula; Rango 1: Unidimensional Un solo índice asociado con cada elemento long
Rango 2: Bidimensional Dos índices asociados con cada elemento int
Acceso a los elementos de una tabla
Se indica un índice enter o par a cada r ango
Los índices se cuentan a partir de cero
long[ ] fila; long[ ] fila; ... ... fila[3]; fila[3];
int[,] cuadrícula; int[,] cuadrícula; ... ... cuadrícula[1,2]; cuadrícula[1,2];
22 33 11
Compr obación de los límites de una tabla
Se compr ueban los límites cada vez que se intenta acceder a una tabla
Un índice erróneo lanza la excepción IndexOutOfRangeException
Se usan la propiedad L ength y el método GetL ength
fila fila
fila.GetLength(0)==6 fila.GetLength(0)==6 fila.Length==6 fila.Length==6
cuadr cuadr
cuadr.GetLength(0)==2 cuadr.GetLength(0)==2 cuadr.GetLength(1)==4 cuadr.GetLength(1)==4 cuadr.Length==2*4 cuadr.Length==2*4
Compar ación de tablas y colecciones
U na tabla no puede cambiar su tamaño cuando está llena Una clase de colección, como ArrayList, puede cambiar su tamaño
U na tabla contiene elementos de un solo tipo Una colección está diseñada para contener elementos de distintos tipos
L os elementos de una tabla no pueden ser de sólo lectur a Una colección puede tener acceso de sólo lectura
En gener al, las tablas son más r ápidas per o menos flexibles Las colecciones son algo más lentas pero más flexibles
Cr eación de tablas
Cr eación de una tabla
I nicialización de los elementos de una tabla
I nicialización de los elementos de una tabla multidimensional
Cr eación de una tabla de tamaño calculado
Copia de var iables de tabla
Cr eación de una tabla
¡D eclar ar una var iable de tabla no es lo mismo que cr ear una tabla! Para crear la tabla explícitamente hay que usar new El valor implícito por defecto de los elementos de una tabla es cero fila
long[ ] fila = new long[4]; long[ ] fila = new long[4]; Variable
int[,] cuad = new int[2,3]; int[,] cuad = new int[2,3]; cuadrícula
0 0 0 0 Tabla
0 0 0 0 0 0
I nicialización de los elementos de una tabla
Es posible inicializar explícitamente los elementos de una tabla
Se puede utilizar una expresión abreviada long[ ] fila = new long[4] {0, 1, 2, 3}; long[ ] fila = new long[4] {0, 1, 2, 3}; long[ ] fila = {0, 1, 2, 3}; long[ ] fila = {0, 1, 2, 3};
0 1 2 3 fila
Equivalente s
I nicialización de los elementos de una tabla multidimensional
T ambién se pueden inicializar los elementos de una tabla multidimensional
Hay que especificar todos los elementos
int[,] cuadr = { int[,] cuadr = { {5, 4, 3}, {5, 4, 3}, {2, 1, 0} {2, 1, 0} }; }; int[,] cuadr = { int[,] cuadr = { {5, 4, 3}, {5, 4, 3}, {2, 1 } {2, 1 } }; };
Nueva tabla int[2,3] implícita
cuadrícula
5 4 3 2 1 0
Cr eación de una tabla de tamaño calculado
N o es necesar io que el tamaño de una tabla sea una constante de tiempo de compilación Se puede usar cualquier expresión entera válida El acceso a los elementos es igualmente rápido en todos los casos Tamaño de tabla especificado por constante entera de tiempo de compilación: long[ ] fila = new long[4]; long[ ] fila = new long[4]; Tamaño de tabla especificado por valor entero de tiempo de ejecución: string s = Console.ReadLine(); string s = Console.ReadLine(); int tamano = int.Parse(s); int tamano = int.Parse(s); long[ ] fila = new long[tamano]; long[ ] fila = new long[tamano];
Copia de var iables de tablas
Al copiar una var iable de tabla se copia sólo la var iable de tabla
No se copia la tabla
Dos variables de tabla pueden apuntar a la misma tabla long[ ] fila = new long[4]; long[ ] fila = new long[4]; 0 0 0 0 long[ ] copia = fila; long[ ] copia = fila; ... ... fila[0]++; fila[0]++; long valor = copia[0]; long valor = copia[0]; Console.WriteLine(valor); Console.WriteLine(valor);
fila copia Variabl e
Tabla
U so de tablas
Pr opiedades de tablas
M étodos de tablas
D evolución de tablas desde métodos
Paso de tablas como par ámetr os
Ar gumentos de línea de comandos
D emostr ación: Ar gumentos par a M ain
U so de tablas con for each
Pr oblema: ¿D ónde está el er r or ?
Pr opiedades de tablas
long[ ] fila = new long[4]; long[ ] fila = new long[4];
0 0 0 0
fila.Rank fila.Rank fila.Length fila.Length
11 44
fila
int[,] cuad = new int[2,3]; int[,] cuad = new int[2,3];
cuadrícula
0 0 0 0 0 0
cuad.Rank cuad.Rank cuad.Length cuad.Length
22 66
M étodos de tablas
M étodos utilizados fr ecuentemente
Sor t: Ordena los elementos en una tabla de rango 1
Clear : Asigna el valor cero o null a un rango de elementos
Clone: Crea una copia de la tabla
GetL ength: Devuelve la longitud de una dimensión dada
I ndexOf: Devuelve el índice de la primera vez que aparece un valor
D evolución de tablas desde métodos
Es posible declar ar métodos par a que devuelvan tablas
class Example { class Example { static void Main( ) { static void Main( ) { int[ ] array = CreateArray(42); int[ ] array = CreateArray(42); ... ... } } static int[ ] CreateArray(int tamano) { static int[ ] CreateArray(int tamano) { int[ ] creada = new int[tamano]; int[ ] creada = new int[tamano]; return creada; return creada; } } }}
Paso de tablas como par ámetr os
U n par ámetr o de tabla es una copia de la var iable de tabla
No es una copia de la tabla
class Example2 { class Example2 { static void Main( ) { static void Main( ) { int[ ] arg = {10, 9, 8, 7}; int[ ] arg = {10, 9, 8, 7}; Method(arg); Method(arg); System.Console.WriteLine(arg[0]); System.Console.WriteLine(arg[0]); } } static void Metodo(int[ ] parametro) { static void Metodo(int[ ] parametro) { parametro[0]++; parametro[0]++; Este Este método método modificar modificaráá } } la la tabla tabla or original iginal }} cr creada eada en en M Main ain
Ar gumentos de línea de comandos
El r untime pasa ar gumentos de línea de comandos a M ain
M ain puede aceptar como parámetro una tabla de cadenas de caracteres
El nombre del programa no es un miembro de la class Example3 { class Example3 { tabla
static void Main(string[ ] args) { static void Main(string[ ] args) { for (int i = 0; i < args.Length; i++) { for (int i = 0; i < args.Length; i++) { System.Console.WriteLine(args[i]); System.Console.WriteLine(args[i]); } } } } }}
U so de tablas con for each
L a instr ucción for each simplifica enor memente la manipulación de tablas
class Example4 { class Example4 { static void Main(string[ ] args) { static void Main(string[ ] args) { foreach (string arg in args) { foreach (string arg in args) { System.Console.WriteLine(arg); System.Console.WriteLine(arg); } } } } }}
Pr áctica – Cr eación y uso de tablas