Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porJaime Chávez Cortés Modificado hace 8 años
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
Presentaciones similares
© 2024 SlidePlayer.es Inc.
All rights reserved.