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

Slides:



Advertisements
Presentaciones similares
Programación de Computadores
Advertisements

UML DCU -DS Alvaro Garrido V..
Estrella 0 - Fundamentos de la Programación
Fundamentos de Diseño de Software INFT.1
FACHADA COMPOSITOR MEMENTO
Lenguaje PHP Capítulo 4.
PROCESO Y MODELOS EN LA INGENIERIA DE SOFTWARE
Programación Estructurada
Te presento a Python Qué es Python? Lenguaje interpretado
Metodología de la Programación
INSTITUTO TECNOLOGICO DE MINATITLAN
Funciones. Programación, Algoritmos y Estructuras de Datos.
Desarrollo de Aplicaciones para Internet
Concepto de programa. Directorio Concepto de programa. Analisis del problema. Resolucion del problema. Desarroollo de un programa. Partes constitutivas.
Tema 2: Lenguaje PHP básico
CONCEPTOS Y PRINCIPIOS DE DISEÑO
1.2 Sintaxis del lenguaje Java.
1.3 Programación modular. Subprogramas.
UNIVERSIDAD LATINA (UNILA) IV. IMPLANTACION DE ALGORITMOS.
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO
ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática
Preguntas tipo test (Tema I)
Ingeniería del Software
ESTRUCTURAS DE SECUENCIA
Objetivos Específicos de la Unidad
Tema 3. Optimización de Código
Funciones en lenguaje C
CI TEORIA semana 8 Subprogramas o funciones Definición de funciones.
IINTRODUCCION A LA CIENCIA DE LA COMPUTACION Y A LA PROGRAMACION
TRAMPAS EN EL DISEÑO DE LENGUAJES CON RELACIÓN A LOS NOMBRES - REGLAS DE ALCANCE - COMPILACIÓN POR SEPARADO CONTROL DE FLUJO - EVALUACIÓN DE EXPRESIONES.
Diccionario de datos en Análisis y Diseño Estructurado
Universidad de Tarapacá Fundamentos Lenguaje y Programación Rodrigo Cornejo Mejías Jonathan Cea Chávez Marcelo Gómez Gonzales.
Tema 4: Sentencias de control
Laura Patricia Pinto Prieto Ingeniera de sistemas.
Semana 5 Subprogramas..
PROCEDIMIENTOS FUNCIONES
Programación en Matlab
Descomposición Modular. Funciones
DISEÑO DE SOFTWARE 1ª. Parte
Ingenieria de software
Fundamentos de Programación
5.3 APROXIMACIONES AL DISEÑO
PROGRAMACIÓN PROCEDIMENTAL
Ingeniería del Software
Metodología para la construcción de programas
INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWARE
Curso de C # República Bolivariana de Venezuela Área de Computación
Objetivo Mostrar los fundamentos de la programación a través de ejemplos y prácticas utilizadas cotidianamente en el desarrollo de aplicaciones.
ELEMENTOS DE COMPUTACIÓN Profesor: Guillermo Figueroa
PEDRO ALBERTO ARIAS QUINTERO. El shell es un intérprete de órdenes, los intérpretes de órdenes de Linux son auténticos lenguajes de programación. Como.
ALGORITMOS Y ESTRUCTURAS DE DATOS Operaciones sobre cadenas de caracteres y Funciones LIA. Suei Chong Sol.
2008 Escuela de Informática y Telecomunicaciones, DuocUC Escuela de Informática y Telecomunicaciones Clase 9: Funciones, variables y arreglos en BASH Nombre.
Capítulo 2 “Subprogramas/Funciones - Arreglos”
Bases Metodológicas de la Programación
Proceso de desarrollo de Software
U6 Ejercicios ¡¡¡¡PREPARANDO LA PEC1!!!!. ERRORES FRECUENTES EN test de 8/10/2015 Nombre de la función no muy bueno : debe ser ImprimeNombreMes o ImprimeMesEnLetra.
U11: Recursividad Otra manera de hacer bucles Dicen algunos pedagogos que conceptualmente mas sencilla.
U8 Repetición controlada por expresión lógica y cadenas 1 Flexibilidad.
Resolución de problemas con Python
U2 Tipos de datos, referenciación y errores 1. Datos problema simple enteroreal carácter booleano Ingeniero = Oreja+catalejo modelo ordenador solución.
U9 Estructuras: Agrupación de elementos de distinto tipo 1 Barajar complejidad.
U10 ¡¡¡¡YA TENEMOS TODOS LOS RECURSOS!!!! ¡¡A JUGAR!!
U5 tipos de datos secuencias y bucle definido 1 ¡¡¡¡Abstracción!!!!
Modelo de procesos de software
Es una metodología ágil diseñada para el desarrollo de software, basada en la calidad y el monitoreo constante del proyecto. Consiste esencialmente en.
Tema 8: Programación estructurada Introducción La importancia del conocimiento de programación es mucho mayor de lo que se piensa. Aprender a programar.
La programación modular es un paradigma de programación que consiste en dividir un programa en módulos o subprogramas con el fin de hacerlo más legible.
ALUMNO ALUMNO: DIEGO URES LEGAJO LEGAJO: La prueba unitaria es la herramienta para la Calidad Presentación Trabajo Final de Grado.
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) IV. IMPLANTACION DE ALGORITMOS.
Transcripción de la presentación:

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

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

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

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

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

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

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

¿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 Aprovechamos para corregir un error frecuente: Nombre de arg formales y reales

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

Á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

Anidamiento de subprogramas 11 Jerarquía de llamadas

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

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