Resolución de problemas con Python

Slides:



Advertisements
Presentaciones similares
Capítulo 2 Algoritmos.
Advertisements

Estrella 0 - Fundamentos de la Programación
Lenguaje PHP Capítulo 4.
Pippy (Python para niños)‏ 1.
Prototipo de compilador didáctico del lenguaje LC99
Lenguajes de programación
Iteración La iteración permite modelar problemas en los cuales una secuencia de instrucciones debe ejecutarse varias veces. La cantidad de iteraciones.
Te presento a Python Qué es Python? Lenguaje interpretado
Resolución de Problemas Algoritmos y Programación
Metodología de la Programación
INSTITUTO TECNOLOGICO DE MINATITLAN
Estructuras de Control
Introducción a la Estadística Informática
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
Módulo 5: Estructuras de Decisión y Bucles
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO
Preguntas tipo test (I)
ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática
Preguntas tipo test (Tema I)
ANALISIS SINTACTICO DESCENDENTE
PARADIGMA Es un esquema de pensamiento que nos lleva a concebir las cosas de una manera determinada. el término paradigma puede indicar el concepto de esquema.
Tema 3. Optimización de Código
IINTRODUCCION A LA CIENCIA DE LA COMPUTACION Y A LA PROGRAMACION
Estructuras de Control Iterativas
SINTAXISYSEMANTICA. Tengo la impresión de que Java fue diseñado para hacer que fuera difícil escribir mal código, mientras que Python está diseñado para.
Programación de Computadores
FORMULACIÓN DE ALGORITMOS
Semana 5 Subprogramas..
Programación en Matlab
Herramienta para el aprendizaje adaptativo que permite a los profesores ocupar su tiempo en la educación de los estudiantes.
Introducción al análisis de algoritmos
PHP TODO SOBRE PHP.
Programación I Universidad Nacional de Luján
Informática Ingeniería en Electrónica y Automática Industrial
Teoría – Alejandro Gonzalez
Figure: Algoritmos Conceptos básicos. Programación: 1.Establecer una secuencia de acciones que: puedan ser ejecutadas por el procesador realicen una.
EXPRESIONES Y SENTENCIAS
Estructuras de Control.
Unidad 1: FUNDAMENTOS DE COMPUTACIÓN Y PSEUDOLENGUAJE
Sentencias de repetición
A continuación… Repaso Repaso Estructuras de Decisión Ejemplos
INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWARE
Sesión 12: Python (3) – Estructura Decisión. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática.
Conceptos Avanzados de Programación
Aun en problemas muy simples surge la necesidad de agrupar valores elementales de alguna manera. Cuando representamos una caja de ahorro bancaria definimos.
Objetivo Mostrar los fundamentos de la programación a través de ejemplos y prácticas utilizadas cotidianamente en el desarrollo de aplicaciones.
Sesión 14: Python (5) – Aplicaciones. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática.
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.
Sesión 13: Python (4) – Estructura Repetición. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática.
Otrogar el prestamo si El pedido es menor que 100 Para importes mayores de 100 se necesita que el cliente sea mayor de 18 y tenga trabajo Para importes.
¿Cuál es la solución de la ecuación x + 5 = 12 ?
Práctica Profesional PHP.
Programación de Sistemas
PROGRAMACIÓN Grupo de Modelamiento de Sistemas
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.
U2 Tipos de datos, referenciación y errores 1. Datos problema simple enteroreal carácter booleano Ingeniero = Oreja+catalejo modelo ordenador solución.
U3 Subprogramación 1 Probablemente el tema mas importante del curso ¡¡¡A por el reuso!!!
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!!!!
Programación Básica Bachillerato Ingeniería en Informática Lic. Carlos H. Gutiérrez León.
Este material ha sido desarrollado para alumnos que cursan la asignatura de Programación Básica impartida en el primer semestre en la Facultad de Ingeniería.
ESTRUCTURAS SELECTIVAS Elaborado por; Ing. Alberto Pérez.
Entrada y Salida en C++, Estructuras de Control Prof. Manuel B. Sánchez.
ALUMNO ALUMNO: DIEGO URES LEGAJO LEGAJO: La prueba unitaria es la herramienta para la Calidad Presentación Trabajo Final de Grado.
Ciclos condicionales y exactos Estructura de control de ciclos
Transcripción de la presentación:

Resolución de problemas con Python Características de software que guían este curso Herramientas Mantenibilidad Legibilidad Semántica (identificadores), documentación, subprogramación, diseño… Reusabilidad Subprogramación, diseño Robustez ≈eficacia Condicionales (Eficiencia) Diseño

U4 Condicionales y gestión de excepciones ¡¡¡¡A por la robustez!!!!

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

Como seguimos las instrucciones, hoy por hoy

Tipo de datos simple {dominio} Objeto dato definido sobre un dominio, y sus operaciones tipo objeto dominio operaciones mes 7 ={1,2,3,4….12} siguiente, anterior, número_días diaSemana martes {lunes,…domingo} siguiente, anterior, ¿laborable? sueldo 1275,43 salarioMinimo<=s<=80.000 +,-,*,%....¿cobrado?... ComponenteColor 145 0<=componenteColor<=255 +,-,maximizar, anular…

Asignación versus Referenciación otros lenguajes Python Implicaciones: Piensa en un “dato compuesto”, por ejemplo, y que se pueda modificar uno de sus componentes sin re-asignar/re-referenciar el “dato compuesto” Asignación: son posiciones independientes no afecta a b 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 8 a [1]=8 b = [1,2,3,4] a =b Referenciación: son 2 nombres para la misma posición b[1]=8 efecto lateral b a =b a 1 2 3 4 a [1]=8 b a 1 8 3 4 b = [1,2,3,4] 1 2 3 4 b Python llama mutables a los TD compuestos, para los que da servicio de modificar elementos individuales, sin re-referenciar el dato completo, les. Los tipos que sólo pueden cambiar su valor con referenciación los llama inmutables 6

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

Condicionales M40 R2-Alcalá A2-Alcala Barcelona Roma por Cádiz Roma por Santander Roma por Portugal Gasolinera Santander Cádiz SI condicion: ….ENTONCES SI condicion ENTONCES…. SINO CASO de que ordinal HAZ

Condicionales o alternativas 0-1 veces(el cuerpo) Hasta ahora: instrucciones secuenciales {referenciación + llamada a procedimientos} todas se hacían exactamente una vez Condicionales o alternativas 0-1 veces(el cuerpo) Diagrama de flujo Sintaxis if expresion_bool: cuerpo1 else: cuerpo2 año esBisiesto? 366 365

Diseño de casos de prueba

Diseño de casos de prueba Mayor de dos números, o iguales Prográmalo """********************************************* * PROGRAMA: MayorDe2numeros.py * * OBJ: pide 2 números e indica cual es el mayor, o si son iguales * *********************************************""" a = float(input('primer número: ')) b = float(input('segundo número: ')) if a>b:print ('el primero es mayor', a) else: if b>a: print ('el segundo es mayor',b) else:print ('son iguales:',b)

Diseño de casos de prueba Tipo triángulo a b c Salida 3.0 2.0 4.0 5.0 -2. X 1 1.0 6.0 [1] Probamos sólo un lado, porque en el capítulo siguiente aprenderemos a reusar el código que pide un lado. Si no es así, habrá que probar las tres entradas

Eficiencia ¿son manías? Tipo triángulo Si tu oficio fuera el transporte y existieran dos tipos de carburante, tales que con uno fueras de Madrid a Barcelona en 1 hora y en 8,4 horas con el otro, ¿cuál elegirías? Si tuvieras que contratar a un programador para tu empresa, y de los dos candidatos, uno que programa al estilo de v1 y otro al de la v4 ¿a cuál contratarías?

Gestión de excepciones N=int(imput(‘entero’) ax2+bx +c=0, """********************************************************************* * PROGRAMA: segundoGrado * *OBJ: raíces de ecuación ax**2+bx+c=0, a,b,c introducidos por usuario * *********************************************************************""" from math import sqrt try: a = float(input('a: ')) b = float(input('b: ')) c = float(input('c: ')) r = sqrt(b**2-4*a*c) x1 = (-b+r)/2.0/a x2 = (-b-r)/2.0/a print('x1 =',x1,' x2 = ',x2) except: print('estos datos dan problemas')

"""********************************************************************** * PROGRAMA: segundoGrado * *OBJ: raíces de ecuación ax**2+bx+c=0, a,b,c introducidos por usuario * **********************************************************************""" from math import sqrt try: a = float(input('a: ')) b = float(input('b: ')) c = float(input('c: ')) except ValueError: print('los valores han de ser numéricos') else: r = sqrt(b**2-4*a*c) x1 = (-b+r)/2.0/a x2 = (-b-r)/2.0/a print('x1 =',x1,' x2 = ',x2) except ZeroDivisionError: if b!=0: print('ecuación primer grado. x=', -c/b) elif c==0: print ('la ecuación tiene infinitas soluciones') else: print('la ecuación no tiene solución') print('no tiene raíces reales') except: print('estos datos dan problemas')

Evitar condicionales anidados """********************************************************************* * PROGRAMA: estacion.py * * Obj: estación del año correspondiente dia/mes dados por usuario * * OJO: no comprueba validez de la entrada * *********************************************************************""" def estacion (d,m): """devuelve la estación que corresponde a d/m (dia,mes) * * 20/03 al 19/06 Primavera * * 20/06 al 21/09 Verano * * 22/09 al 20/12 Otoño * * 21/12 al 19/03 Invierno PRE dia, mes formarían parte de una fecha válida """ plana=mes*100+dia #agrupo para comparar de una vez if plana<=319:estacion = 'invierno' elif plana<=619:estacion = 'primavera' elif plana<=921:estacion = 'verano' elif plana<=1221:estacion = 'otoño' else: estacion = 'invierno' return estacion #Probador dia = int(input('día: ')) mes = int(input('mes: ')) # aqui iría la validación de fecha print ('la estación de',dia,'/',mes,'es', estacion(dia,mes))

Bucle definido for e in s: cuerpo Rage es un generador de secuencias en un rango desde (incluido).. hasta (excluido) """ ************* Tabla de multiplicar del n ****************** """ n = int(input('introduzca el num de la tabla deseada, entre 0 y 10: ')) for i in range(1,10+1): print (n, '*','%2d'%i,'=', i*n)

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