1 Sesión 12: Python (3) – Estructura Decisión
2 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad de Antioquia AGENDA 1 Introducción 2 Sentencia if 3 Sentencia if else 14 Sentencia if anidada 5 Ejemplos
3 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad de Antioquia Estructuras de Control Las estructuras de control, son aquellas que permiten controlar el flujo de ejecución de un programa Tres tipos de Estructuras: 1 Secuencial 2 Instrucción condicional. 3 Iteración (bucle de instrucciones)
4 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad de Antioquia Estructuras de Decisión Lógica Estas estructuras se usan para la toma de decisiones lógicas. Son usadas para elegir entre diferentes alternativas de acción.
5 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad de Antioquia Se utiliza para indicarle al computador que debe evaluar una condición y, a partir del resultado, ejecutar un bloque de instrucciones correspondiente. La forma más común está compuesta por una proposición (condición) que se evalúa dos bloques de instrucciones que se ejecutan: Operadores relacionales (, >=,==,!=) Estructura Condicional
6 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad de Antioquia Las proposiciones pueden ser sencillas o compuestas. Las proposiciones compuestas se forman con dos o más proposiciones sencillas unidas por los operadores lógicos (y, o, no). La estructura condicional tiene dos variantes: Selección doble. Selección múltiple. Estructura Condicional
7 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad de Antioquia Se quiere tener una acción por cada posible valor de una variable, mas de dos elecciones posibles. Estructura de selección múltiple
8 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad de Antioquia AGENDA 1 Introducción 2 Sentencia if 3 Sentencia if else 2 4 Sentencia if anidada 5 Ejemplos
9 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad de Antioquia Condición Código cuando condición es Verdadera Código cuando condición es Falsa Si No Sentencia if Es la estructura de control mas utilizada. if (condicion): instrucciones1 //cuando condicion es Verdadera else: instrucciones2 //cuando condición es Falsa Nota: las instrucciones que se encuentren detro de la condición deben tener una tabulacion. Estructura Condicional
10 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad de Antioquia Sentencia if Ejemplo: 1.Crear un programa en Python que lea dos números y que muestre en pantalla el mayor de los dos. if (condicion) : instrucciones If: una sola alternativa
11 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad de Antioquia Sentencia if If: de una sola condición #comparar número introducido por usuario print ("Introduzca un primer número: " ) num1=input () print ("Introduzca el segundo número: " ) num2=input () #comparar número if (num1 > num2): print (num1,"es mayor que ",num2) if (num2 > num1): print (num2,"es mayor que ",num1)
12 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad de Antioquia Sentencia if Ejemplo: 2.Programa que dice si al ingresar dos números enteros, uno es múltiplo del otro. if (condicion): instrucciones If: una sola alternativa
13 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad de Antioquia Sentencia if #Numero multiplo print ("Introduzca un primer número: " ) num1=int(input ()) print ("Introduzca el segundo número: " ) num2=int(input ()) #comparar número if (num1 % num2==0): print (num1,"es multiplo de",num2) If: una sola alternativa
14 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad de Antioquia AGENDA 1 Introducción 2 Sentencia if 3 Sentencia if else 3 4 Sentencia if anidada 5 Ejemplo
15 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad de Antioquia Sentencia if else If: de dos alternativas Ejemplo: 1.Realizar un programa que sabiendo la nota diga si un alumno perdió o ganó la materia de informática. if (condicion): Instrucciones1 else: Instrucciones2
16 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad de Antioquia Sentencia if else #comparar la nota introducida por usuario nota = float(input("Introduzca la nota: " )) if (nota>=3.0): print ("El estudiante Ganó la materia") else: print("El estudiante NO Ganó la materia"); If: de dos alternativas
17 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad de Antioquia Sentencia if else If: de dos alternativas Ejemplo: 2.Diseñe un programa que lea un entero y determine si es par o impar. if (condicion): Instrucciones1 else: Instrucciones2
18 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad de Antioquia AGENDA 1 Introducción 2 Sentencia if 3 Sentencia if else 4 Sentencia if múltiple 5 Ejemplos 4
19 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad de Antioquia Sentencia if anidada if (condicion1): Instrucciones1 elif (condicion2): Instrucciones2 elif (condicion3): Instrucciones3. elif (condicionN): InstruccionesN else: InstruccionesE Se utilizan cuando interesa realizar acciones que involucren mas de dos alternativas excluyentes If: de múltiples alternativas
20 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad de Antioquia Sentencia if anidada Ejemplo: 1.Realizar un programa que reciba un numero de 1 a 7 y que diga cual dia de la semana corresponde a este numero. 2.Diseñar un programa que lea tres números e imprima el mayor de los tres. If: de múltiples alternativas
21 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad de Antioquia Sentencia if anidada if (condicion1) : Instrucciones1 if (condicion1A): Instrucciones else: Instrucciones elif (condicion2): Instrucciones2 if (condicion2A): Instrucciones else: InstruccionesN... Se utilizan cuando interesa realizar acciones que involucren mas de dos alternativas relacionadas If: anidados
22 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad de Antioquia AGENDA 1 Introducción 2 Sentencia if 3 Sentencia if else 4 Sentencia if anidada 5 Ejemplos 5
23 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad de Antioquia Ejemplos Ejemplos: Codificar los siguientes enunciados en lenguaje Python: 1.Si semáforo esta en verde, cruzar la calle. Sino, esperar. 2.Si gasto hasta 100, pago con dinero en efectivo. Si gasto mas de 100 pero menos de 300, pago con tarjeta de debito. Sino, pago con tarjeta de credito. 3.Si la compra es mayor que 100, obtengo un descuento del 10 %. 23
24 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad de Antioquia Solucion 1.Si semáforo esta en verde, cruzar la calle. Sino, esperar. 2.Si la compra es mayor que 100, obtengo un descuento del 10 %. 24 semaforo = input("¿como se encuentra el semaforo peatonal?") if (semaforo =='verde'): print('Cruzar la calle') else: print('Esperar') total_compra= input("¿Cuánto fue el total de la compra?") total_a_pagar = total_compra if (total_compra >= 100): descuento = 0.1*total_compra total_a_pagar = total_compra – descuento print('Favor pagar total:', total_a_pagar)
25 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad de Antioquia Solucion 3.Si gasto hasta 100, pago con dinero en efectivo. Si gasto mas de 100 pero menos de 300, pago con tarjeta de debito. Sino, pago con tarjeta de credito. 25 compra= input("¿Cuánto compró?") if compra
26 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad de Antioquia Ejemplos Ejemplo 2: En una empresa le dan a los empleados un subsidio de transporte si el sueldo base de estos es menor que el salario mínimo, este subsidio es el 30% del sueldo base. Hacer un algoritmo que calcule el salario neto de un empleado (sueldo base mas prestaciones si el empleado tiene derecho a estas). Los datos de entrada son la cedula y el sueldo base. 26 IDsalBaseSubsalNeto “0000” “0001” 100000 1000000 30000 0 130000 1000000
27 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad de Antioquia Solucion 27 Solución online
28 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad de Antioquia Solucion 28 IDsalBaseSubsalNeto “0000” “0001” 100000 1000000 30000 0 130000 1000000
29 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad de Antioquia 29 Ejemplo 3: 1.En el bachillerato de Springfield las calificaciones se suelen calcular de acuerdo al siguiente cuadro: Grado numéricoGrado en letra Grado mayor o igual a 90A Grado menor que 90 pero mayor o igual a 80 B Grado menor que 80 pero mayor o igual a 70 C Grado menor que 70 pero mayor o igual a 60 D Grado menor que 60E Utilizando esta información, escribir un algoritmo que acepte una calificación numérica del estudiante [0,100], convierta esta calificación a su equivalente letra y visualice la calificación correspondiente en letra. Ejemplos
30 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad de Antioquia 30 Solucion
31 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad de Antioquia 31 notaNumnotaLetra 80 53 96 67 79 BEADCBEADC Solucion
32 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad de Antioquia 32 Nota
33 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad de Antioquia Ejemplos 33 Ejemplo 4: Se desea obtener la nomina semanal (salario neto) – de los empleados de una empresa cuyo trabajo se paga por horas y del siguiente modo: Las horas inferiores o iguales a 35 horas (normales) se pagan a una tarifa que se debe introducir por teclado igual que el numero de horas y el nombre del trabajador. Las horas superiores a 35 se pagaran como extra a un precio de 1.5 horas normales. Los impuestos a deducir a los trabajadores varían en función de su sueldo semanal: -Si sueldo
34 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad de Antioquia Ejemplos 34 horasValor horaSalario brutoimpuestosSalario neto 15 30 40 1000 15000 30000 42500 0 2000 5250 15000 28000 37250
35 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad de Antioquia Ejemplos 35
36 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad de Antioquia Ejemplos 36 horasValor horaSalario brutoimpuestosSalario neto 15 30 40 1000 15000 30000 42500 0 2000 5250 15000 28000 37250
37 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad de Antioquia Zona de Preguntas… Python 1. Diseñe un algoritmo que lea una terna (c1, c2, h) y determine si representa los lados de un triángulo rectángulo.
38 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad de Antioquia Zona de Preguntas… Python 1.Realizar una calculadora de dos variables usando un menú de selección.
39 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad de Antioquia Bibliografía Joyanes Aguilar, Luis. PROGRAMACIÓN EN C. Metodología, algoritmos y estructura de datos Capitulo3. H.M. Deitel, P.J. Deitel. Como programar en C y C++ Google
40 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática I Universidad de Antioquia