Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...

Full Transcript

Introducción a la programación Decisión Índice Decisión......................................................................................................................................1 1 Decisión.................................................................................................

Introducción a la programación Decisión Índice Decisión......................................................................................................................................1 1 Decisión...............................................................................................................................3 2 La sentencia if......................................................................................................................3 3 Tablas de verdad..................................................................................................................5 4 If’s encadenados..................................................................................................................6 4.1 If’s anidados................................................................................................................7 5 Ejercicios resueltos..............................................................................................................8 6 Ejercicios propuestos.........................................................................................................10 Introducción a la programación Decisión- 2 Introducción a la programación 1 Decisión En Python solo hay disponible una instrucción que permita utilizar la decisión: if (el “si” condicional del inglés). Lo que acompaña siempre a if es una condición. Esta condición, en lugar de tratarse de un cálculo matemático como x * 2, es una expresión booleana, es decir, una expresión que retornará True o False. Las sentencias en el bloque directamente bajo el if se ejecutarán solo si la expresión devuelve True. En ocasiones, existe un bloque de instrucciones alternativo separado por la palabra clave else (“si no”, en inglés). Este bloque es el que se ejecuta cuando la expresión booleana devuelve False. 2 La sentencia if La sentencia if permite ejecutar un bloque de instrucciones solo en el caso de que se cumpla una determinada condición. Por ejemplo, que una variable x tenga un valor numérico más pequeño que 10. O que su valor sea mayor que cero. Para poder escribir este tipo de condiciones (expresiones booleanas que devuelven True o False), es necesario conocer los operadores booleanos, que aparecen en la tabla siguiente. Supongamos, para poder entender la tabla, que x guarda el valor dos (hemos ejecutado previamente x = 2). Operador Explicación Ejemplo Resultado < Menor que. x < 10 True > Mayor que. x > 5 False == Igual a. x == 2 True != Diferente de. x != 2 False >= Mayor o igual que. x >= 2 True 10: mensaje = f”No, {x:2d} se va fuera del rango [1, 10]” print(mensaje) Decisión- 4 Introducción a la programación Por supuesto, los bloques de instrucciones no tienen por qué contener una sola instrucción, pueden albergar tantas como sea necesario, como se ve en el siguiente programa. # Superficies del rectángulo o del círculo import math op = int(input(“Superficie\n1. Rectangulo\n2. Circulo\nSelecciona: ”) if op == 2: r = float(input(“Dame el radio: “)) resultado = math.pi * (r ** 2) else: base = float(input(“Dame la base: “)) altura = float(input(“Dame la altura: “)) resultado = base * altura print(f“Superficie: {resultado:5.2f}“) Como se puede ver en el programa anterior, los bloques pueden estar formados por cualquier número de instrucciones, al menos una. Se delimitan por los dos puntos (‘:’), y por el hecho de estar indentados1 hacia la derecha. Una vez que la indentación termina, el bloque se considera terminado. Por ejemplo, el bloque que se ejecuta cuando la variable op es dos, está delimitado por los dos puntos y el comienzo de la indentación, y el final de la indentación al encontrarse con el else. El bloque que se ejecuta cuando la variable op guarda cualquier otro valor, está delimitado por los dos puntos tras el else y el comienzo de la indentación, y el comienzo de la llamada a la función print(t) en una nivel de indentado menor (más a la izquierda). En cuanto al código ‘\n’ en el mensaje de input(t), simboliza el salto de línea, por lo que hace que ese mensaje, escrito en una sola línea, aparezca en realidad escrito en tres líneas. 3 Tablas de verdad Las tablas de verdad son un refuerzo para comprender cómo funcionan los conectores lógicos que hemos visto: and, or y not. En las tablas se explicita qué sucede cuando en una expresión booleana de dos miembros (op1 y op2), estos son verdaderos o falsos. En la primera tabla se explica not, en la siguiente and, y finalmente or. En la tabla siguiente se explica el resultado de aplicar not() a una expresión booleana. Por ejemplo, not(5 != 6) devolvería False, el contrario del valor devuelto por la expresión en sí. not op Resultado not True False not False True 1 La indentación se logra pulsando la tecla Tab. Decisión- 5 Introducción a la programación op1 and op2 Resultado True and True True False and True False True and False False False and False False op1 or op2 Resultado True or True True False or True True True or False True False or False False Las dos tablas de verdad anteriores muestran los resultados de aplicar and y or a dos expresiones booleanas. Por ejemplo, 5 == 6 and 6 > 4 devolvería False, mientras que 5 == 6 or 6 > 4 devolvería True. 4 If’s encadenados En ocasiones, es necesario comprobar varias condiciones. La forma de hacerlo con lo que conocemos hasta ahora sería combinar varios if y else, como se ve en el ejemplo: # Determina el divisor si se encuentra entre 2, 3 o 5. x = int(input(“Dame un número entero: “)) mensaje = “No es divisible por 2, 3 o 5.” if (x % 2) == 0: mensaje = “Es par.” else: if (x % 3) == 0: mensaje = “Es divisible por 3.” else: if (x % 5) == 0: mensaje = “Es divisible por 5.” print(mensaje) En realidad, esto es bastante confuso, además de que no es posible encadenar tres o cuatro condiciones, ya que la excesiva distancia desde el margen izquierdo haría imposible Decisión- 6 Introducción a la programación visualizar correctamente el programa. Python ofrece para estos casos elif, una palabra reservada que precisamente combina else: if. A pesar de utilizar elif, sigue siendo posible utilizar un bloque else al final de todos los if’s encadenados, de ser necesario. El programa anterior puede por tanto reescribirse como sigue: # Determina el divisor si se encuentra entre 2, 3 o 5. x = int(input(“Dame un número entero: “)) mensaje = “No es divisible por 2, 3 o 5.” if (x % 2) == 0: mensaje = “Es par.” elif (x % 3) == 0: mensaje = “Es divisible por 3.” elif (x % 5) == 0: mensaje = “Es divisible por 5.” print(mensaje) 4.1 If’s anidados Es posible que los bloques de instrucciones dentro de un if contengan a su vez otros if’s. Esto es perfectamente válido. # Para, impar o negativo x = int(input(“Dame un número entero: “)) if x >= 0: if (x % 2) == 0: print(“Es par.”) else: print(“Es impar.”) else: print(“Es negativo.”) Decisión- 7 Introducción a la programación 5 Ejercicios resueltos 1. Escribe un programa que determine si un número entero es múltiplo de cinco. # Es divisible por cinco x = int(input(“Dame un entero: “)) mensaje = “no es divisible por 5.” if x % 5 == 0: mensaje = “es divisible por 5.” print(x, mensaje) 2. Escribe un programa que decida si un número es cuadrado. Un valor entero es cuadrado si su raíz cuadrada es un número natural. # Decide si un número es cuadrado import math x = int(input(“Dame un valor entero: “)) raiz = int(math.sqrt(x)) mensaje = “no es cuadrado.” if x == raiz ** 2: mensaje = “es cuadrado.” print(x, mensaje) 3. Escribe un programa que calcule el porcentaje de IVA de un 21% aplicado a un precio final, si el precio es mayor o igual que EUR 500, y otro de 10% en otro caso. # Calcula distintos IVA por monto precio = float(input(“Dame un precio final: “)) iva = 0.10 if precio >= 500: iva = 0.21 print(f“IVA del precio: {precio * iva: 5.2f}”) Decisión- 8 Introducción a la programación 4. El sueldo de un empleado se calcula añadiendo un porcentaje del x% cuando sus horas de trabajo pasan de 160 horas mensuales, por aquellas horas de más. El programa debe pedir el número de horas, el porcentaje por horas extras, y el precio por hora. # Sueldo mensual de un empleado salario_hora = float(input(“Dame el sueldo por hora: “)) horas = float(input(“Dame las horas trabajadas en el mes: “)) porcentaje = float(input(“Dame el porcentaje por horas extras: %“)) sueldo = salario_hora * horas if horas > 160: sueldo = ((salario_hora * 160) + ((salario_hora * 1.05) * horas – 160)) print(f“El sueldo de {salario_hora:5.2f} “ \ f”para {horas:3d} horas: {sueldo:5.2f}“) 5. Una empresa de transportes calcula el precio de una mudanza según la distancia (EUR 100 por cada 50kms.), y los kilos de peso (EUR 50 por cada 100). Si se pasa de 500kgs., hace un descuento del 5%, y si se pasa de 1Tm., se hace un descuento del 10%. # Calcula la tarifa de una empresa de mudanzas distancia = int(input(“Dame la distancia en kms.: “)) peso = float(input(“Dame unos kilos: “)) if peso < 500: descuento = 0.0 elif peso < 1000: descuento = 0.05 else: descuento = 0.1 tarifa = (distancia // 50) * 100 # tarifa por distancia tarifa += (peso // 100) * 50 # tarifa por peso tarifa *= 1 + descuento # descuento aplicado print(“Tarifa:”, tarifa) Decisión- 9 Introducción a la programación 6 Ejercicios propuestos Los siguientes ejercicios son básicos y se pueden resolver conociendo el principio de secuencia, decisión, y los rudimentos del lenguaje de programación. Tras cada enunciado, se muestra un ejemplo de la entrada y salida por pantalla del programa a escribir para que sirva de guía. 1. Escriba un programa que lea un número por teclado y decida si se trata de un número par o impar. Dame el valor: 4 Es par. Dame el valor: 3 Es impar. 2. Los números múltiplos de 3 son aquellos que son divisibles de forma entero por 3. Dame el valor: 4 No es divisible por 3. Dame el valor: 9 Es divisible por 3. 3. Cree un programa que realice una operación introducida por teclado de dos números también leídos por teclado, y escriba el resultado. Dame el valor 1: 6 Dame el valor 2: 5 Dame el operador: * Suma: 30 4. Pide dos valores por teclado, y escribe el resultado de la división entera, además de “Resultado entero” sí el primero es divisible por el segundo, o “Resultado fraccionario”, además del resultado real de su división. Dame el valor: 4 Dame el valor: 2 Resultado: 2 Resultado entero. Dame el valor: 10 Dame el valor: 3 Resultado: 3 Resultado fraccionario (3.33). 5. Un año es bisiesto si es múltiplo de 4, exceptuando los múltiplos de 100, que sólo son bisiestos cuando son múltiplos además de 400, por ejemplo el año 1900 no fue bisiesto, pero el año 2000 si lo será. Hacer un organigrama que dado un año A nos diga si es o no bisiesto. Dame el valor: 2000 Es bisiesto. Dame el valor: 1999 No es bisiesto. Decisión- 10 Introducción a la programación 6. Un profesor imparte una asignatura en la que evalúa dos partes: la teórica, que supone un x% de la nota, y la práctica, con un (100-x)%. Escribe un programa que permita calcular la nota final (entre 0 y 10), para un alumno, mostrando el desglose de su cálculo. El programa debe aceptar el porcentaje del valor de la nota de teoría (0 a 100), y los valores de las notas (entre 0 y 10), para cada parte. Hay que tener en cuenta que es necesario obtener un 4 en cualquiera de las partes para poder hacer media. En caso de no poder hacer media, debe normalizarse la nota entre 0 y 4. Dame el valor de la parte de teoria: %60 Dame la nota de teoría: 6 Dame la nota de prácticas: 7 Nota final: 6 60% + 7 40% = 6.40 7. Lee un carácter por teclado y muestra si es un dígito o un carácter. Dame una letra o digito: hola Es una letra. Dame una letra o digito: 49 Es un dígito. 8. Escribe un programa que determine si el primer carácter de un texto es una vocal, una consonante o un dígito. Dame un texto: hola El primer car. es: consonante Dame un texto: Atila El primer car. es: vocal Dame un texto: 42 El primer car. es: dígito 9. Un juego infantil llamado “FizzBuzz” se juega entre varios niños que van recorriendo los números naturales con dos salvedades: los múltiplos de tres se sustituyen por “Fizz”, y los múltiplos de 5, por “Buzz”. Dame un entero: 1 1 Dame un entero: 3 Fizz Dame un entero: 5 Buzz Dame un entero: 15 FizzBuzz Dame un entero: 11 11 Decisión- 11 Introducción a la programación Decisión- 12

Use Quizgecko on...
Browser
Browser