La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

U3 Subprogramación 1 Probablemente el tema mas importante del curso ¡¡¡A por el reuso!!!

Presentaciones similares


Presentación del tema: "U3 Subprogramación 1 Probablemente el tema mas importante del curso ¡¡¡A por el reuso!!!"— Transcripción de la presentación:

1 U3 Subprogramación 1 Probablemente el tema mas importante del curso ¡¡¡A por el reuso!!!

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 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 3 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

4 Divide y vencerás 4 Descomposición funcional=Patrón de comportamiento =contrato  Parámetros formales/reales BENEFICIOS 1. reutilizar código o en el propio programa o en futuros programas 2. resolver problemas complejos (7±3) o pequeño cada vez o reparto de tareas (equipo) 3.mantenimiento o legibilidad o probar piezas independientes o evita redundancia matPrima EmpresarioRestaurante cocinero intendentemaître pinchelimpiador camarero listaCompra, tarjeta matPrima clientes, delicatesen delicatesen ingresos

5 Llamada a subprogramas del núcleo Función: : devuelve un valor Procedimiento : hace 5 nombre = input('introduzca nombre ') # en expresión print ('hola', nombre) # como una orden Prog. Estructurada Método: es el objeto el que lanza la acción Prog. OO >>> cad = 'Hola' >>> cad.upper() 'HOLA' Criterios para nombres

6 Llamada a subprogramas de bibliotecas Incorpora un subprograma a mi programa Déjame accesible toda la biblioteca 6 ¡¡Python es mucho Python!!: Nucleo + bibliotecas internas +¡¡¡ bibliotecas externas!!!! Biblioteca o módulo: Conjunto de subprogramas y constantes >>> import datetime hoy = datetime.date.today() >>> from math import pi, sqrt >>> pi 3.141592653589793 >>> sqrt(4) 2.0 >>> import math >>> sqrt(4.0) …Error: name 'sqrt' is not defined >>> math.sqrt(9.0) 3.0 Espacios de nombres Notación punto Módulos que contienen módulos: Ayuda de biblioteca: Ayuda de subprograma: >>> help math >>> sqrt(

7 Crea y usa tu propios subprogramas def nombre_subprograma (lista_argumentos): cuerpo Función: return expresión Argumentos: lista vacía, E; S;E/S Identificadores: Documentación: legibilidad (+ayuda en Python) Lo que entra  [lo que sale/nada] OBJ: PRE: si la hay Desarrollo incremental Probador deshabilita probador pero mantenlo Uso de tus subprogramas ¿Cómo funciona? Pythontutor 7 Legibilidad/mantenibilidad Robustez Mantenibilidad Legibilidad/mantenibilidad

8 ¿Cómo funciona un programa con subprogramas? 8 """*********************************************************************** * PROGRAMA: centrar * *OBJ: probar el subprograma que centra un rótulo en pantalla * ***********************************************************************""" nColum=76 #tamaño actual de la pantalla def centrarRotulo (rotulo): """string--> nada OBJ: centra rótulo, subrrayado con signos =, +linea encima y debajo PRE: tam(rotulo)<=tamaño de ventana """ tam=len(rotulo) lado=(nColum-tam)//2-1 print () print(' '*lado,rotulo) print(' '*lado,'='*tam) print() #Probador rotulo = 'El famoso hidalgo don Quijote de la Mancha'# mismo nombre centrarRotulo(rotulo) frase = 'Don Quijote de la Mancha' centrarRotulo(frase) # distinto nombre centrarRotulo('Cervantes') # constante http://www.pythontutor.com/visualize.html#mode=edit Aprovechamos para corregir un error frecuente: Nombre de arg formales y reales

9 Crea y usa tu propias bibliotecas Agrupa subprogramas y constantes Recuerda REUSOOOOOOO Organiza tu disco+copias de seguridad Criterio de agrupamiento: por tipo de datos (Ej:libFecha), por tipo de acciones (Ej: libEstadística) Nombre Documentación: ayuda Objetivo general Cabeceras de subprogramas y constantes 9

10 Ámbito, vigencia, visibilidad Ámbito Vigencia Visibilidad Consulta global: Aviso en PRE: Uso global “inadvertido” en otros lenguajes. Global en Python Parámetros formales son del subprograma Parámetros reales son del llamante Calidad: Cohesión alta: el nombre sale solo Acoplamiento bajo: independencia 10

11 Anidamiento de subprogramas 11 Jerarquía de llamadas

12 Resumen: Metodología de la subprogramación 12 1.Identifica si es necesario un subprograma 2.Define clara y concisamente la tarea ¿qué datos necesitas para realizarla? 3.Identifica el tipo de subprograma 4.Nombra el subprograma. 5.Documenta: 6.Diseña los casos de prueba 7.Localiza excepciones 8.Reutiliza 9.Codifica 10.Optimiza el código 11.Prueba 12.Organiza tus archivos..... Control de flujo e interfaz Subproblema 2flujo +interfazinterfaz funcionalidad.....

13 Pendiente de temas anteriores U1: Errores en tiempo de traducción/ejecución U2: Lenguajes con fuerte control de tipo/sin control 13


Descargar ppt "U3 Subprogramación 1 Probablemente el tema mas importante del curso ¡¡¡A por el reuso!!!"

Presentaciones similares


Anuncios Google