Estructuras de datos, vectores y matrices

26
Estructuras de datos, vectores y matrices Introducción a la programación I semestre, 2016

Transcript of Estructuras de datos, vectores y matrices

Page 1: Estructuras de datos, vectores y matrices

Estructuras de datos,vectores y matrices

Introducción a la programación

I semestre, 2016

Page 2: Estructuras de datos, vectores y matrices

Estructuras de datos

Una estructura de datos es una forma de organizar conjuntos de datos con el objetivo de facilitar su manipulación.

Refrescando algunos conceptos:

● Datos: en Python asociados a un tipo...

● Básicos: números, letras, valores de verdad.

● Compuestos: secuencias, diccionarios.

● Conjuntos de datos: varios datos asociados o agrupados (o estructurados) según algún criterio.

● Manipulación: “…Un programador debe utilizar expresiones, funciones y métodos de forma combinada para obtener soluciones a problemas...”

Page 3: Estructuras de datos, vectores y matrices

Estructuras de datos

En otras palabras...

Las estructuras de datos son una manera de representación creada a partir de los datos, ubicándose un nivel por encima (abstracción de datos).

Nos permite representar “cosas” más complejas para resolver otro tipo de problemas de forma más sencilla o al menos sin preocuparnos por los detalles internos de representación.

Lego CC-BY-SA-2.0 davestone @ Flickr

Lego tower bridge CC-BY-NC-SA-2.0 ukslim @ Flickr

Page 4: Estructuras de datos, vectores y matrices

Estructuras de DatosEjemplos

listas, colas, pilas, árboles, matrices, arreglos, etc, etc...

Pueden ser

● Propias del lenguaje de programación utilizado.

● Definidas e implementadas por el programador a partir de otras estructuras o datos disponibles.

En concreto

Una estructura de datos para representar edades de personas, utilizando Python podría ser:

>>> edades = [23, 22, 20, 18] # ¿Una lista?

Dominio Público Lasindi @ Wikipedia

Page 5: Estructuras de datos, vectores y matrices

Vectores

Representan colecciones de n componentes (también llamados elementos)

● Son accedidos por medio de índices.

● Es un arreglo de números

Page 6: Estructuras de datos, vectores y matrices

Vectores

Las implementaciones varían según lenguaje de programación, en términos generales:

● Son homogéneos: componentes son todos del mismo tipo.

● Su tamaño es estático, se definen en tiempo de compilación. Contrario a lo que sucede con las listas (como estructura de datos) en las que su tamaño es dinámico.

● En Python se representan por medio de listas o utilizando el módulo array

>>> help( array )

Page 7: Estructuras de datos, vectores y matrices

Vectores

Algunas propiedades/operaciones

Igualdad de vectores

Dos vectores son iguales si tienen los mismos elementos en la misma posición.

Vector nulo

Un vector nulo es aquel en que todos sus elementos son igual a cero.

Page 8: Estructuras de datos, vectores y matrices

Vectores

Operaciones con Vectores

Suma o resta de vectores

● Se suman o restan los elementos en la misma posición y el resultado es un nuevo vector del mismo tamaño.

V = [ v0, v1, v2, ..., vn-1 ]

W = [ w0, w1, w2, ..., wn-1 ]

V + W = [v0 + w0, v1 + w1, v2 + w2, ..., vn-1 + wn-1 ]

Page 9: Estructuras de datos, vectores y matrices

Vectores

Operaciones con Vectores

Producto escalar

● Multiplicar todos los elementos de 1 vector por 1 número (escalar)

e = escalar

V = [ v0, v1, v2, ..., vn-1 ]

V * e = [ v0 * e, v1 * e, v2 * e ..., vn-1 * e]

Page 10: Estructuras de datos, vectores y matrices

Vectores

Operaciones con VectoresProducto de Vectores

● La multiplicación de vectores produce un único número como resultado

V = [ v0, v1, v2, ..., vn-1 ]

W = [ w0, w1, w2, ..., wn-1 ]

V * W = Σ vi * wi (desde i =0, hasta n - 1)

V * W = v0 * w0 + v1 * w1 + v2 * w2 + ... + vn-1 * wn-1

Page 11: Estructuras de datos, vectores y matrices

Ejercicios

Escribir de utilizando iteración las siguientes funciones con vectores:

Gätgens, hagalo dos veces!

Documente el código correctamente.

es_vector resta

vector_nulo producto_escalar

vectores_iguales producto_vectores

suma

Page 12: Estructuras de datos, vectores y matrices

Referencias y Lecturas Complementarias

Material suministrado por el profesor Jaime Gutiérrez, Instituto Tecnológico de Costa Rica. I semestre 2011.

● Material suministrado por el profesor Jeff Schmidt, Instituto Tecnológico de Costa Rica. I semestre 2011.

● J. Helo Guzmán, Introducción a la programación con Scheme, Segunda ed. Cartago: Editorial tecnológica, 2005.

● J. Solano, Introducción a la programación en Python, Primera ed. Cartago: Editorial tecnológica, 2011.

● En general: http://docs.python.org/3/

Page 13: Estructuras de datos, vectores y matrices

13

Las presentaciones para el curso IC-1800: "Introducción a la Programación" por Ing. En Computación Alajuela se distribuyen bajo una

Licencia Creative Commons Atribución-Compartir Igual 3.0 Costa Rica.

http://creativecommons.org/licenses/by-sa/3.0/cr/http://creativecommons.org/licenses/by-sa/3.0/cr/ *La licencia de la presentación no cubre las imágenes utilizadas*

Page 14: Estructuras de datos, vectores y matrices

Estructuras de datos,vectores y matrices

Introducción a la programación

I semestre, 2016

Page 15: Estructuras de datos, vectores y matrices

Estructuras de datos

Una estructura de datos es una forma de organizar conjuntos de datos con el objetivo de facilitar su manipulación.

Refrescando algunos conceptos:

● Datos: en Python asociados a un tipo...

● Básicos: números, letras, valores de verdad.

● Compuestos: secuencias, diccionarios.

● Conjuntos de datos: varios datos asociados o agrupados (o estructurados) según algún criterio.

● Manipulación: “…Un programador debe utilizar expresiones, funciones y métodos de forma combinada para obtener soluciones a problemas...”

Page 16: Estructuras de datos, vectores y matrices

Estructuras de datos

En otras palabras...

Las estructuras de datos son una manera de representación creada a partir de los datos, ubicándose un nivel por encima (abstracción de datos).

Nos permite representar “cosas” más complejas para resolver otro tipo de problemas de forma más sencilla o al menos sin preocuparnos por los detalles internos de representación.

Lego CC-BY-SA-2.0 davestone @ Flickr

Lego tower bridge CC-BY-NC-SA-2.0 ukslim @ Flickr

Page 17: Estructuras de datos, vectores y matrices

Estructuras de DatosEjemplos

listas, colas, pilas, árboles, matrices, arreglos, etc, etc...

Pueden ser

● Propias del lenguaje de programación utilizado.

● Definidas e implementadas por el programador a partir de otras estructuras o datos disponibles.

En concreto

Una estructura de datos para representar edades de personas, utilizando Python podría ser:

>>> edades = [23, 22, 20, 18] # ¿Una lista?

Dominio Público Lasindi @ Wikipedia

Page 18: Estructuras de datos, vectores y matrices

Vectores

Representan colecciones de n componentes (también llamados elementos)

● Son accedidos por medio de índices.

● Es un arreglo de números

Page 19: Estructuras de datos, vectores y matrices

Vectores

Las implementaciones varían según lenguaje de programación, en términos generales:

● Son homogéneos: componentes son todos del mismo tipo.

● Su tamaño es estático, se definen en tiempo de compilación. Contrario a lo que sucede con las listas (como estructura de datos) en las que su tamaño es dinámico.

● En Python se representan por medio de listas o utilizando el módulo array

>>> help( array )

Page 20: Estructuras de datos, vectores y matrices

Vectores

Algunas propiedades/operaciones

Igualdad de vectores

Dos vectores son iguales si tienen los mismos elementos en la misma posición.

Vector nulo

Un vector nulo es aquel en que todos sus elementos son igual a cero.

Page 21: Estructuras de datos, vectores y matrices

Vectores

Operaciones con Vectores

Suma o resta de vectores

● Se suman o restan los elementos en la misma posición y el resultado es un nuevo vector del mismo tamaño.

V = [ v0, v1, v2, ..., vn-1 ]

W = [ w0, w1, w2, ..., wn-1 ]

V + W = [v0 + w0, v1 + w1, v2 + w2, ..., vn-1 + wn-1 ]

Suma o resta de matrices: se opera sobre las mismas posiciones en ambas matrices y se crea una nueva con el mismo tamaño

Producto escalar: 1 vector por un número, multiplicada cada elementos del vector por un número.

Page 22: Estructuras de datos, vectores y matrices

Vectores

Operaciones con Vectores

Producto escalar

● Multiplicar todos los elementos de 1 vector por 1 número (escalar)

e = escalar

V = [ v0, v1, v2, ..., vn-1 ]

V * e = [ v0 * e, v1 * e, v2 * e ..., vn-1 * e]

Suma o resta de matrices: se opera sobre las mismas posiciones en ambas matrices y se crea una nueva con el mismo tamaño

Producto escalar: 1 vector por un número, multiplicada cada elementos del vector por un número.

Page 23: Estructuras de datos, vectores y matrices

Vectores

Operaciones con VectoresProducto de Vectores

● La multiplicación de vectores produce un único número como resultado

V = [ v0, v1, v2, ..., vn-1 ]

W = [ w0, w1, w2, ..., wn-1 ]

V * W = Σ vi * wi (desde i =0, hasta n - 1)

V * W = v0 * w0 + v1 * w1 + v2 * w2 + ... + vn-1 * wn-1

Producto de vectores: genera 1 número y se puede explicar como la suma de todas las multiplicaciones de los elementos en la misma posición de los vectores.

Page 24: Estructuras de datos, vectores y matrices

Ejercicios

Escribir de utilizando iteración las siguientes funciones con vectores:

Gätgens, hagalo dos veces!

Documente el código correctamente.

es_vector resta

vector_nulo producto_escalar

vectores_iguales producto_vectores

suma

Page 25: Estructuras de datos, vectores y matrices

Referencias y Lecturas Complementarias

Material suministrado por el profesor Jaime Gutiérrez, Instituto Tecnológico de Costa Rica. I semestre 2011.

● Material suministrado por el profesor Jeff Schmidt, Instituto Tecnológico de Costa Rica. I semestre 2011.

● J. Helo Guzmán, Introducción a la programación con Scheme, Segunda ed. Cartago: Editorial tecnológica, 2005.

● J. Solano, Introducción a la programación en Python, Primera ed. Cartago: Editorial tecnológica, 2011.

● En general: http://docs.python.org/3/

Page 26: Estructuras de datos, vectores y matrices

13

Las presentaciones para el curso IC-1800: "Introducción a la Programación" por Ing. En Computación Alajuela se distribuyen bajo una

Licencia Creative Commons Atribución-Compartir Igual 3.0 Costa Rica.

http://creativecommons.org/licenses/by-sa/3.0/cr/http://creativecommons.org/licenses/by-sa/3.0/cr/ *La licencia de la presentación no cubre las imágenes utilizadas*