CC 1002 Introduccin a la Programacin Condicionales Nelson

  • Slides: 24
Download presentation
CC 1002: Introducción a la Programación Condicionales Nelson Baloian, José A. Pino

CC 1002: Introducción a la Programación Condicionales Nelson Baloian, José A. Pino

Problema “Genera S. A. le paga $4. 500 por hora a todos sus ingenieros

Problema “Genera S. A. le paga $4. 500 por hora a todos sus ingenieros de procesos recién egresados. Un empleado típicamente trabaja entre 20 y 65 horas por semana. La gerencia de informática le pide desarrollar un programa que calcule el sueldo de un empleado a partir del número de horas trabajadas si este valor está dentro del rango apropiado, de lo contrario debe dar un aviso. ”

Condiciones simples en Python • Valores booleanos: True y False • Operadores condicionales •

Condiciones simples en Python • Valores booleanos: True y False • Operadores condicionales • • • x == y: “x es igual a y”; x < y: “x es estrictamente menor que y”; x > y: “x es estrictamente mayor que y”. x <= y : “x es menor o igual a y” x >= y: “x es mayor o igual a y” x != y: “x es distinto de y” • Ejemplos: • • >>> 4 < 5 -> True >>> 4 == 5 -> False

Condiciones compuestas en Python • Conectores and, or y not • Ejemplos: • x

Condiciones compuestas en Python • Conectores and, or y not • Ejemplos: • x == y and y < z • x == y or y < z • not x == y

Prioridad de conectores • Primera prioridad: not • Segunda prioridad: and • Tercera prioridad:

Prioridad de conectores • Primera prioridad: not • Segunda prioridad: and • Tercera prioridad: or • Ejemplo: • not x == y and y < z or x < z es equivalente a: • (((not x == y )) and (y < z) ) or (x < z)

La instrucción if en Python • Escribir una función que reciba dos enteros y

La instrucción if en Python • Escribir una función que reciba dos enteros y entregue el mayor de los dos # mayor : num, num -> num # retornar el mayor de dos números def mayor(x, y): if x > y : return x Forma General de la instrucción if : else: return y if condicion : assert mayor(3, 6) == 6 instrucción(es) else : intruccion(es)

Caso especial 1: cada instrucción puede ser otro if # mayor : num, num

Caso especial 1: cada instrucción puede ser otro if # mayor : num, num -> num # retornar el mayor de tres numeros def mayor(x, y, z): if x >= y : if x >= z : return x else: return z else: if y >= z : return y else: return z

Caso especial 2: else puede omitirse # mayor : num, num -> num #

Caso especial 2: else puede omitirse # mayor : num, num -> num # retornar el mayor de tres numeros def mayor(x, y, z): m=x if y > m: m=y if z > m: m=z return m con otra indentación (más compacto, igual resultado): def mayor(x, y, z): m=x if y > m: m=y if z > m: m=z return m

Con condiciones compuestas y elif # mayor : num, num -> num # retornar

Con condiciones compuestas y elif # mayor : num, num -> num # retornar el mayor de tres numeros def mayor(x, y, z): if x >= y and x >= z : return x elif y >= z : return y else: return z otra función: # medio: num, num -> num # retornar el valor intermedio de tres numeros def medio(x, y, z): if y<=x and x<=z or z<=x and x<=y: return x elif x<=y and y<=z or z<=y and y<=x: return y else: return z

elif ordena el código (pero no hace nada nuevo) if condicion 1 : instrucción(es)1

elif ordena el código (pero no hace nada nuevo) if condicion 1 : instrucción(es)1 else: if condicion 2 : instrucción(es)2 else : if condicion 3 : instrucción(es)3 else : if condicion 4 if condicion 1 : instrucción(es)1 elif condicion 2 : instrucción(es)2 elif condicion 3 : instrucción(es)3

Función que gana al cachipún

Función que gana al cachipún

Jugando al cachipún

Jugando al cachipún

Funciones condicionales • Una función puede retornar un valor True o False # es.

Funciones condicionales • Una función puede retornar un valor True o False # es. Igual. A 5 : num -> bool # determinar si n es igual a 5 def es. Igual. A 5 (n): return n == 5 # esta. Entre 5 y 6 : num -> bool # determinar si n esta entre 5 y 6 (sin incluirlos ) def esta. Entre 5 y 6 (n): return 5 < n and n < 6 numero = input(“Numero ? “) if es. Igual. A 5(numero) : print(“Es igual a 5”) elif esta. Entre 5 y 6(numero) : print(“Esta entre 5 y 6”) else : print(“Es menor a 5 o mayor o igual que 6”)

Diseño de Funciones Condicionales • Implementar una función que retorne el saludo correspondiente a

Diseño de Funciones Condicionales • Implementar una función que retorne el saludo correspondiente a la hora del día. Si son más de las 1 de la mañana y menos de las 12 de la tarde, el subprograma responderá ‘Buenos días!’; si menos de las 21 horas, el mensaje será ‘Buenas tardes!’; y si es más de las 21, entonces la función deseará las buenas noches. # saludo: int -> text # determinar el saludo adecuado a la hora del dia 1 <= h <= 24 def saludo (hora): . . .

Función saludo • Analizar el problema: podemos imaginarnos una recta separada en regiones con

Función saludo • Analizar el problema: podemos imaginarnos una recta separada en regiones con límites en 1, 12, 21 y 24 • Casos de prueba: los límites (1, 12, 21 y 24) y además uno dentro de cada región (por ejemplo, 8, 16 y 23) • Según el “contrato” del problema, llegan sólo números válidos (de 1 a 24)

Cuerpo de la función • Diseñar condiciones: se requiere una instrucción if que tiene

Cuerpo de la función • Diseñar condiciones: se requiere una instrucción if que tiene tantas cláusulas como situaciones diferentes

Formular condiciones • Las tres condiciones son hora entre [1 , 12), [12 ,

Formular condiciones • Las tres condiciones son hora entre [1 , 12), [12 , 21) y [21 , 24]

Dar respuesta adecuada • Retornar la salida adecuada

Dar respuesta adecuada • Retornar la salida adecuada

Simplificar las condiciones • Producir con print la salida adecuada

Simplificar las condiciones • Producir con print la salida adecuada

No hemos terminado!!! • Si hubiéramos puesto una prueba con las 12 horas ->

No hemos terminado!!! • Si hubiéramos puesto una prueba con las 12 horas -> respuesta incorrecta! • Recordar siempre de poner pruebas en los límites y valores “extraños”! • Podemos escribir una nueva versión, con error corregido y mejores condiciones:

Versión final # saludo: int -> str # Determinar saludo adecuado a hora del

Versión final # saludo: int -> str # Determinar saludo adecuado a hora del dia 1 <= h <= 24 # ejemplos: # saludo(11) debe devolver “Buenos dias!” # saludo(15) debe devolver “Buenas tardes!” def saludo_depurado(hora) if (hora < 12): return “Buenos dias!” elif (hora < 21): return “Buenas tardes!” else: return “Buenas noches!” # tests: proxima pagina

Versión final (cont. ) # tests: assert saludo_depurado(1) == “Buenos dias!” assert saludo_depurado(12) ==

Versión final (cont. ) # tests: assert saludo_depurado(1) == “Buenos dias!” assert saludo_depurado(12) == “Buenas tardes!” assert saludo_depurado(15) == “Buenas tardes!” assert saludo_depurado(21) == “Buenas noches!” assert saludo_depurado(23) == “Buenas noches!” assert saludo_depurado(24) == “Buenas noches!”

Mini-ejercicio Escriba la función bisiesto(a) que, dado un año a retorne True si a

Mini-ejercicio Escriba la función bisiesto(a) que, dado un año a retorne True si a es un año bisiesto y False en caso contrario. Un año es bisiesto si es divisible por 4. De esta regla, se exceptúan los años que son múltiplos de 100. Pero de esta última regla se exceptúan los que son múltiplos de 400. Por ejemplo, 1900 no fue bisiesto, porque es múltiplo de 100; pero el 2000 fue bisiesto, porque a pesar de ser múltiplo de 100, también es múltiplo de 400.

Para la próxima clase (jueves) Leer capítulo 6 del apunte!! Hacer nuevos ejercicios propuestos

Para la próxima clase (jueves) Leer capítulo 6 del apunte!! Hacer nuevos ejercicios propuestos