23
Tablas

Tablas. Descripción general Introducción a las tablas Creación de tablas Uso de tablas

Embed Size (px)

Citation preview

Page 1: Tablas. Descripción general Introducción a las tablas Creación de tablas Uso de tablas

Tablas

Page 2: Tablas. Descripción general Introducción a las tablas Creación de tablas Uso de tablas

Descripción general

Introducción a las tablas

Creación de tablas

Uso de tablas

Page 3: Tablas. Descripción general Introducción a las tablas Creación de tablas Uso de tablas

Introducción a las tablas

¿Qué es una tabla?

Notación para tablas en C#

Rango de una tabla

Acceso a los elementos de una tabla

Comprobación de los límites de una tabla

Comparación de tablas y colecciones

Page 4: Tablas. Descripción general Introducción a las tablas Creación de tablas Uso de tablas

¿Qué es una tabla?

Una 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)

Page 5: Tablas. Descripción general Introducción a las tablas Creación de tablas Uso de tablas

Notación para tablas en C#

Una variable de tabla se declara especificando:

El tipo de elementos de la tabla

El rango de la tabla

El nombre de la variable

Especifica el rango de la tabla

Especifica el nombre de la variable de tabla

Especifica el tipo de elementos de la tabla

tipo[ ] nombre;tipo[ ] nombre;

Page 6: Tablas. Descripción general Introducción a las tablas Creación de tablas Uso de tablas

Rango de una tabla

El rango se conoce también como dimensión de la tabla

El número de índices asociados con cada elemento

Rango 1: UnidimensionalUn solo índice asociado con cada elemento long

Rango 2: BidimensionalDos índices asociados concada elemento int

long[ ] fila;long[ ] fila; int[,] cuadrícula;int[,] cuadrícula;

Page 7: Tablas. Descripción general Introducción a las tablas Creación de tablas Uso de tablas

Acceso a los elementos de una tabla

Se indica un índice entero para cada rango

Los índices se cuentan a partir de cero

33332222

1111

long[ ] fila;...fila[3];

long[ ] fila;...fila[3];

int[,] cuadrícula;...cuadrícula[1,2];

int[,] cuadrícula;...cuadrícula[1,2];

Page 8: Tablas. Descripción general Introducción a las tablas Creación de tablas Uso de tablas

Comprobación de los límites de una tabla

Se comprueban 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 Length y el método GetLength

filafila cuadrcuadr

fila.GetLength(0)==6fila.GetLength(0)==6

fila.Length==6fila.Length==6

cuadr.GetLength(0)==2cuadr.GetLength(0)==2

cuadr.GetLength(1)==4cuadr.GetLength(1)==4

cuadr.Length==2*4cuadr.Length==2*4

Page 9: Tablas. Descripción general Introducción a las tablas Creación de tablas Uso de tablas

Comparación de tablas y colecciones

Una tabla no puede cambiar su tamaño cuando está llena Una clase de colección, como ArrayList, puede cambiar su

tamaño Una tabla contiene elementos de un solo tipo

Una colección está diseñada para contener elementos de distintos tipos

Los elementos de una tabla no pueden ser de sólo lectura Una colección puede tener acceso de sólo lectura

En general, las tablas son más rápidas pero menos flexibles Las colecciones son algo más lentas pero más flexibles

Page 10: Tablas. Descripción general Introducción a las tablas Creación de tablas Uso de tablas

Creación de una tabla

Inicialización de los elementos de una tabla

Inicialización de los elementos de una tabla multidimensional

Creación de una tabla de tamaño calculado

Copia de variables de tabla

Creación de tablas

Page 11: Tablas. Descripción general Introducción a las tablas Creación de tablas Uso de tablas

Creación de una tabla

¡Declarar una variable de tabla no es lo mismo que crear 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

0 0 0 0

cuadrícula

0 0 00 0 0

Variable Tabla

long[ ] fila = new long[4];long[ ] fila = new long[4];

int[,] cuad = new int[2,3];int[,] cuad = new int[2,3];

Page 12: Tablas. Descripción general Introducción a las tablas Creación de tablas Uso de tablas

Inicialización de los elementos de una tabla

Es posible inicializar explícitamente los elementos de una tabla

Se puede utilizar una expresión abreviada

fila

0 1 2 3

Equivalentes

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};

Page 13: Tablas. Descripción general Introducción a las tablas Creación de tablas Uso de tablas

Inicialización de los elementos de una tabla multidimensional

También se pueden inicializar los elementos de una tabla multidimensional

Hay que especificar todos los elementos

cuadrícula

5 4 32 1 0

Nueva tabla int[2,3] implícita

int[,] cuadr = {{5, 4, 3},{2, 1, 0}

};

int[,] cuadr = {{5, 4, 3},{2, 1, 0}

};

int[,] cuadr = {{5, 4, 3},{2, 1 }

};

int[,] cuadr = {{5, 4, 3},{2, 1 }

};

Page 14: Tablas. Descripción general Introducción a las tablas Creación de tablas Uso de tablas

Creación de una tabla de tamaño calculado

No es necesario 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:

Tamaño de tabla especificado por valor entero de tiempo de ejecución:

long[ ] fila = new long[4];long[ ] fila = new long[4];

string s = Console.ReadLine();int tamano = int.Parse(s);long[ ] fila = new long[tamano];

string s = Console.ReadLine();int tamano = int.Parse(s);long[ ] fila = new long[tamano];

Page 15: Tablas. Descripción general Introducción a las tablas Creación de tablas Uso de tablas

Copia de variables de tablas

Al copiar una variable de tabla se copia sólo la variable de tabla

No se copia la tabla

Dos variables de tabla pueden apuntar a la misma tabla

copia

fila

0 0 0 0

Variable Tabla

long[ ] fila = new long[4];long[ ] copia = fila;...fila[0]++;long valor = copia[0];Console.WriteLine(valor);

long[ ] fila = new long[4];long[ ] copia = fila;...fila[0]++;long valor = copia[0];Console.WriteLine(valor);

Page 16: Tablas. Descripción general Introducción a las tablas Creación de tablas Uso de tablas

Propiedades de tablas

Métodos de tablas

Devolución de tablas desde métodos

Paso de tablas como parámetros

Argumentos de línea de comandos

Demostración: Argumentos para Main

Uso de tablas con foreach

Problema: ¿Dónde está el error?

Uso de tablas

Page 17: Tablas. Descripción general Introducción a las tablas Creación de tablas Uso de tablas

Propiedades de tablas

fila

0 0 0 0

cuadrícula

0 0 00 0 0

fila.Rankfila.Rank

fila.Lengthfila.Length

cuad.Rankcuad.Rank

cuad.Lengthcuad.Length

long[ ] fila = new long[4];long[ ] fila = new long[4];

int[,] cuad = new int[2,3];int[,] cuad = new int[2,3];2222

4444

1111

6666

Page 18: Tablas. Descripción general Introducción a las tablas Creación de tablas Uso de tablas

Métodos de tablas

Métodos utilizados frecuentemente

Sort: 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

GetLength: Devuelve la longitud de una dimensión dada

IndexOf: Devuelve el índice de la primera vez que aparece un valor

Page 19: Tablas. Descripción general Introducción a las tablas Creación de tablas Uso de tablas

Devolución de tablas desde métodos

Es posible declarar métodos para que devuelvan tablas

class Example { static void Main( ) { int[ ] array = CreateArray(42); ... } static int[ ] CreateArray(int tamano) { int[ ] creada = new int[tamano]; return creada; }}

class Example { static void Main( ) { int[ ] array = CreateArray(42); ... } static int[ ] CreateArray(int tamano) { int[ ] creada = new int[tamano]; return creada; }}

Page 20: Tablas. Descripción general Introducción a las tablas Creación de tablas Uso de tablas

Paso de tablas como parámetros

Un parámetro de tabla es una copia de la variable de tabla

No es una copia de la tabla

class Example2 { static void Main( ) { int[ ] arg = {10, 9, 8, 7}; Method(arg); System.Console.WriteLine(arg[0]); } static void Metodo(int[ ] parametro) { parametro[0]++; }}

class Example2 { static void Main( ) { int[ ] arg = {10, 9, 8, 7}; Method(arg); System.Console.WriteLine(arg[0]); } static void Metodo(int[ ] parametro) { parametro[0]++; }}

Este método modificarála tabla original creada en Main

Este método modificarála tabla original creada en Main

Page 21: Tablas. Descripción general Introducción a las tablas Creación de tablas Uso de tablas

Argumentos de línea de comandos

El runtime pasa argumentos de línea de comandos a Main

Main puede aceptar como parámetro una tabla de cadenas de caracteres

El nombre del programa no es un miembro de la tabla

class Example3 { static void Main(string[ ] args) { for (int i = 0; i < args.Length; i++) { System.Console.WriteLine(args[i]); } }}

class Example3 { static void Main(string[ ] args) { for (int i = 0; i < args.Length; i++) { System.Console.WriteLine(args[i]); } }}

Page 22: Tablas. Descripción general Introducción a las tablas Creación de tablas Uso de tablas

Uso de tablas con foreach

La instrucción foreach simplifica enormemente la manipulación de tablas

class Example4 { static void Main(string[ ] args) { foreach (string arg in args) { System.Console.WriteLine(arg); } }}

class Example4 { static void Main(string[ ] args) { foreach (string arg in args) { System.Console.WriteLine(arg); } }}

Page 23: Tablas. Descripción general Introducción a las tablas Creación de tablas Uso de tablas

Práctica – Creación y uso de tablas