La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

U9 Estructuras: Agrupación de elementos de distinto tipo 1 Barajar complejidad.

Presentaciones similares


Presentación del tema: "U9 Estructuras: Agrupación de elementos de distinto tipo 1 Barajar complejidad."— Transcripción de la presentación:

1 U9 Estructuras: Agrupación de elementos de distinto tipo 1 Barajar complejidad

2 Datos problema simple enteroreal carácter booleano Ingeniero = Oreja+catalejo modelo ordenador solución asignación/ referencia Llamada procedimiento while for Do while if c: bloque1 [ else: bloque2] n bucles 0 o 1 alternativas 1 o n 0 o n iterativo n conocido recursivo n desconocido case gestión excepciones Subprogramación procedimiento barajar complejidad Proceso hacer función 2 Disponible en todos los lenguajes Frecuente en otros lenguajes y no disponible en Python Disponible en Python, no frecuente en otros lenguajes compuesto arreglo Lista/tupla Estructura tuplaNombre /record/clase fichero cadena 1 secuencias

3 STRUCT/STRUCTURE/RECORD Elementos todos del mismo tipo  acceso por orden: ARRAY ¿sin orden?  acceso por nombre: Tipos definidos por el usuario: Constructores de tipo. Listas y tuplas son tipos en Python. Pero ahora tengo que dar nombres. Necesito un constructor Alternativas en Python  namedTuple, la clase Record, “clases pobres” Nuestro interés diseño de la solución más que la forma de implementación en un lenguaje concreto 3

4 NamedTuples from collections import namedtuple La sintaxis de la declaración: nombreDelTipo= namedtuple(externo, [campo 1,…,campo n ]) Ejemplo: tPunto = namedtuple('Punto',['x','y']) Creación objeto y acceso a elementos : namedtuple especialización de tipo tupla ( vale todo lo que hacía con tuplas ) Convenio: Tipos creados x programador empiezan por t: tFecha, tAlumno 4 >>> p1 = tPunto(2.0,3.0) >>> p1.x #acceso notación punto 2.0 >>>p1[1] #acceso por posición 3.0

5 Recorrido de los elementos Modificación de elementos : Los elementos pueden ser de cualquier tipo 5 >>> p = tPunto(11.0,22.0) >>> p = tPunto(p.x,33.0) #mantengo el valor de x, cambio el de y >>> p Punto(x=11.0, y=33.0) >>>p = tPunto(33.0,44.0) >>>p = p._replace(x=2.0,y=3.0) # devuelve copia con valores cambiados >>>p Punto(x=2.0, y=3.0) NamedTuples for coordenada in p: print(coordenada) tSegmento = namedtuple('Segmento','pIni, pFin')

6 6 Haz un subprograma que calcule la distancia entre dos puntos. Calcula con el tamaño de un segmento pasándole los puntos que lo definen. En el lenguaje ordinario hablamos del tamaño de un segmento, no de la distancia entre sus extremos. Haz un subprograma que calcule el tamaño de un segmento. Apoyándote en el módulo punto, haz un programa que aproxime Π por el m étodo de Montecarlo, areaArco=Πr 2 /4 areaCuadrado=r*r puntos dentro/puntos totales= Πr2/4r2 ; despejando Π=4 *puntos dentro/puntos totales Incluye en el módulo punto una función que calcule si un punto (x,y) está inscrito en una circunferencia de radio r, con centro en el eje de coordenadas. Pista: teorema de Pitágoras. def puntoAleatorio(): """ nada --> tPunto OBJ: crea un punto aleatorio 0<=x,y<=1 """ from random import random x = random() y = random() return tPunto(x,y)

7 7


Descargar ppt "U9 Estructuras: Agrupación de elementos de distinto tipo 1 Barajar complejidad."

Presentaciones similares


Anuncios Google