Volver a la portadaFormación Tecnológica · noveno año · Cambiar asignatura
Empezar gratis
Apuntes

Ejercicios: Programación textual

Practica★☆☆
Explique qué es una variable con el símil de una caja con etiqueta y describa qué hace cada línea: puntos = 0, puntos = puntos + 1, print(puntos). ¿Qué valor aparece en…

Explique qué es una variable con el símil de una caja con etiqueta y describa qué hace cada línea: puntos = 0, puntos = puntos + 1, print(puntos). ¿Qué valor aparece en pantalla y por qué no es un error sumarle algo a una variable que «ya tenía» un valor?

Resolver
Practica★☆☆
Clasifique estos valores según su tipo de dato (entero, decimal, texto o booleano) y ponga un ejemplo de uso para cada tipo en un programa de una tienda: 13, 3,75,…

Clasifique estos valores según su tipo de dato (entero, decimal, texto o booleano) y ponga un ejemplo de uso para cada tipo en un programa de una tienda: 13, 3,75, "Ana", True.

Resolver
Practica★☆☆
Explique qué hacen las órdenes input() y print() en Python, qué diferencia hay entre ellas y escriba un programa de dos líneas que pregunte su nombre y lo salude…

Explique qué hacen las órdenes input() y print() en Python, qué diferencia hay entre ellas y escriba un programa de dos líneas que pregunte su nombre y lo salude usándolo.

Resolver
Practica★☆☆
La figura muestra un diagrama de flujo y, a su lado, el programa que hace lo mismo, pero con la condición tapada. Escriba la condición que falta en la línea del if (debe…

La figura muestra un diagrama de flujo y, a su lado, el programa que hace lo mismo, pero con la condición tapada.

inicio pedir la edad ¿edad ≥ 12? sí puede participar no le falta poco edad = int(input("Edad: ")) if ?: print("Puede") else: print("Aún no")

Escriba la condición que falta en la línea del if (debe comparar la variable edad con $12$), explique qué hace int(input("Edad: ")) y por qué las líneas dentro del if y del else van sangradas hacia la derecha.

Resolver
Practica★☆☆
Explique qué es un condicional con un ejemplo de su vida diaria (si llueve agarro el paraguas; si no, los lentes de sol) y escríbalo en tres líneas de pseudocódigo:…

Explique qué es un condicional con un ejemplo de su vida diaria (si llueve agarro el paraguas; si no, los lentes de sol) y escríbalo en tres líneas de pseudocódigo: condición, qué pasa si se cumple y qué pasa si no.

Resolver
Practica★☆☆
Explique la diferencia entre un bucle for (repetir un número conocido de veces) y un bucle while (repetir mientras se cumpla una condición), y ponga un ejemplo cotidiano…

Explique la diferencia entre un bucle for (repetir un número conocido de veces) y un bucle while (repetir mientras se cumpla una condición), y ponga un ejemplo cotidiano de cada uno: dar diez vueltas al patio frente a seguir remando hasta llegar a la orilla.

Resolver
Practica★☆☆
Explique qué es una función en un programa y qué ventaja tiene escribir una vez def saludar(): y poder llamarla muchas veces, en lugar de copiar las mismas líneas una y…

Explique qué es una función en un programa y qué ventaja tiene escribir una vez def saludar(): y poder llamarla muchas veces, en lugar de copiar las mismas líneas una y otra vez.

Resolver
Practica★☆☆
Este programa tiene tres errores típicos: nombre = input("Su nombre: ), if nombre = "Fátima", print("Hola"). Encuentre cada error (una comilla sin cerrar, un = que…

Este programa tiene tres errores típicos: nombre = input("Su nombre: ), if nombre = "Fátima", print("Hola"). Encuentre cada error (una comilla sin cerrar, un = que debería ser == y explique la diferencia), reescriba el programa corregido y diga qué mensaje de error daría la computadora en cada caso.

Resolver
Practica★★☆
Prediga la salida de este programa sin ejecutarlo, siguiendo el valor de las variables línea a línea: a = 4, b = 3, a = a + b, b = a - b, print(a), print(b). Escriba la…

Prediga la salida de este programa sin ejecutarlo, siguiendo el valor de las variables línea a línea: a = 4, b = 3, a = a + b, b = a - b, print(a), print(b). Escriba la traza completa (qué vale cada variable tras cada línea) y no solo el resultado.

Resolver
Practica★★☆
Escriba un programa de tres líneas que pida el nombre y la edad de una persona y escriba una frase completa usándolos (por ejemplo, «Mei tiene 14 años»). Explique qué…

Escriba un programa de tres líneas que pida el nombre y la edad de una persona y escriba una frase completa usándolos (por ejemplo, «Mei tiene 14 años»). Explique qué tipo de dato devuelve siempre input() y para qué sirve int() al pedir la edad.

Resolver
Practica★★☆
Escriba un programa que pida un número y diga si es positivo, negativo o cero. Indique qué estructura usa (un condicional con dos ramas o tres), qué comparaciones hace y…

Escriba un programa que pida un número y diga si es positivo, negativo o cero. Indique qué estructura usa (un condicional con dos ramas o tres), qué comparaciones hace y pruébelo mentalmente con los valores $7$, $-3$ y $0$.

Resolver
Practica★★☆
Un programa convierte la nota numérica en calificación: menos de $5$ es «aplazado», de $5$ a $6{,}9$ es «aprobado» y de $7$ en adelante es «notable». Escríbalo con if,…

Un programa convierte la nota numérica en calificación: menos de $5$ es «aplazado», de $5$ a $6{,}9$ es «aprobado» y de $7$ en adelante es «notable». Escríbalo con if, elif y else, explique por qué el orden de las condiciones importa y qué pasaría si la primera condición fuera nota > 5.

Resolver
Practica★★☆
Escriba un bucle for que muestre la tabla de multiplicar del $3$ (del $3 \cdot 1$ al $3 \cdot 10$), indique cuántas veces se repite el cuerpo del bucle y explique qué…

Escriba un bucle for que muestre la tabla de multiplicar del $3$ (del $3 \cdot 1$ al $3 \cdot 10$), indique cuántas veces se repite el cuerpo del bucle y explique qué cambiaría para mostrar la tabla del $7$ sin reescribir todo el programa.

Resolver
Practica★★☆
Lea este programa y explique qué hace: n = 5, while n > 0:, print(n), n = n - 1, y al final print("¡Ya!"). Escriba la salida completa en pantalla y razone qué pasaría si…

Lea este programa y explique qué hace: n = 5, while n > 0:, print(n), n = n - 1, y al final print("¡Ya!"). Escriba la salida completa en pantalla y razone qué pasaría si olvidamos la línea n = n - 1.

Resolver
Practica★★☆
Analice esta función: def area_cuadrado(lado): y dentro return lado * lado. Explique qué es el parámetro, qué es el valor que devuelve y qué escribiría en pantalla cada…

Analice esta función: def area_cuadrado(lado): y dentro return lado * lado. Explique qué es el parámetro, qué es el valor que devuelve y qué escribiría en pantalla cada llamada: print(area_cuadrado(5)), print(area_cuadrado(2{,}5)).

Resolver
Practica★★☆
Un compañero escribe un programa que pide contraseñas hasta acertar: clave = "", while clave != "sol":, y dentro solo print("incorrecta"). Explique por qué el programa…

Un compañero escribe un programa que pide contraseñas hasta acertar: clave = "", while clave != "sol":, y dentro solo print("incorrecta"). Explique por qué el programa no termina nunca, qué línea falta dentro del bucle (volver a pedir la clave) y la regla general sobre los bucles while: algo tiene que poder cambiar la condición.

Resolver
Practica★★★
Para seleccionar a los clasificados de un torneo de robótica, se leen cinco puntuaciones (del $0$ al $10$). Un compañero ha propuesto este código para contar cuántas son…

Para seleccionar a los clasificados de un torneo de robótica, se leen cinco puntuaciones (del $0$ al $10$). Un compañero ha propuesto este código para contar cuántas son iguales o superiores a $5{,}0$:

aprobados = 0

for i in range(5):

    nota = float(input("Introduce nota: "))

    if nota >= 5:

        aprobados = aprobados + 1

    else:

        aprobados = 0

print("Total de aprobados:", aprobados)
  1. a) Prediga qué mostrará por pantalla si la persona usuaria introduce sucesivamente las notas: $6{,}0$, $8{,}0$, $4{,}0$, $9{,}0$ y $7{,}0$. Justifique por qué el resultado final no es el esperado localizando el error de lógica en la estructura condicional.
  2. b) Corrija el código y modifíquelo para que descarte del recuento las notas erróneas (menores que $0$ o mayores que $10$), mostrando un mensaje de advertencia específico sin sumar ni reiniciar el contador.
Resolver
Practica★★★
Una tienda aplica la siguiente política: compras menores de $\text{₡}\ 30$ pagan $4{,}\text{₡}\ 50$ de envío; compras entre $\text{₡}\ 30$ y $\text{₡}\ 50$ tienen envío…

Una tienda aplica la siguiente política: compras menores de $\text{₡}\ 30$ pagan $4{,}\text{₡}\ 50$ de envío; compras entre $\text{₡}\ 30$ y $\text{₡}\ 50$ tienen envío gratis; compras superiores a $\text{₡}\ 50$ tienen envío gratis y un $10\ \%$ de descuento sobre el precio de la compra.

Un estudiante programó este código:

precio = float(input("Total compra: "))

if precio > 50:

    total = precio * 0.90

if precio >= 30:

    total = precio

else:

    total = precio + 4.50

print("Total a pagar:", total)
  1. a) Realice la traza con una compra de $60{,}\text{₡}\ 00$. ¿Qué precio final imprime el programa? Justifique por qué se produce ese fallo de lógica al encadenar los condicionales.
  2. b) Reescriba el programa de forma correcta utilizando una estructura condicional anidada o con elif, e incluya una validación que avise si se introduce un precio negativo o cero.
Resolver
Practica★★★
Observe el siguiente programa, cuyo objetivo es pedir la edad a la persona usuaria y determinar si tiene edad legal para votar (a partir de $18$ años cumplidos): a) Si…

Observe el siguiente programa, cuyo objetivo es pedir la edad a la persona usuaria y determinar si tiene edad legal para votar (a partir de $18$ años cumplidos):

if edad >= "18":

print("Puedes votar")

edad = input("Dime tu edad: ")

else:

    print("No puedes votar")
  1. a) Si intenta ejecutar el programa tal cual, ¿en qué línea se detendrá el intérprete de Python y por qué no llegará a ejecutar la línea del input?
  2. b) Identifique y clasifique todos los errores presentes, distinguiendo entre errores de sintaxis (que impiden compilar/interpretar) y errores de tipo o lógica durante la ejecución.
  3. c) Reescriba el código corregido e introduzca una comprobación para evitar que el programa se cuelgue si la persona usuaria introduce su edad con texto (por ejemplo, escribiendo «dieciocho»).
Resolver
Practica★★★
Para regular un cruce escolar se propone este algoritmo en pseudocódigo para un semáforo con pulsador peatonal: a) Detecte un grave fallo de seguridad vial en la…

Para regular un cruce escolar se propone este algoritmo en pseudocódigo para un semáforo con pulsador peatonal:

mientras verdadero:

    verde_coches = ON, rojo_peatones = ON

    si pulsador_activado == 1:

        esperar(5)

        verde_coches = OFF, ambar_coches = ON

        esperar(3)

        ambar_coches = OFF, rojo_coches = ON

        rojo_peatones = OFF, verde_peatones = ON

        esperar(10)

        verde_peatones = OFF, rojo_peatones = ON
  1. a) Detecte un grave fallo de seguridad vial en la transición de vuelta: cuando se apaga el verde de peatones, ¿qué ocurre inmediatamente con el tráfico vehicular en la siguiente iteración del bucle?
  2. b) Diseñe una mejora del algoritmo (en pseudocódigo o texto estructurado) que solucione ese fallo y que además impida el colapso del tráfico: si los peatones pulsan repetidamente el botón, el semáforo debe garantizar siempre un mínimo de $20$ segundos ininterrumpidos en verde para los carros entre ciclo y ciclo.
Resolver
Practica★★★
Un equipo desarrolla el software de una caja registradora usando funciones: a) Al ejecutar este código, Python produce el error: TypeError: unsupported operand type(s)…

Un equipo desarrolla el software de una caja registradora usando funciones:

def calcular_iva(precio):

    total = precio * 1.21

    pass  # El programador olvidó añadir la última línea de esta función

def aplicar_descuento(total, rebaja):

    resultado = total - rebaja

    return resultado

precio_base = 100.0

precio_con_iva = calcular_iva(precio_base)

precio_final = aplicar_descuento(precio_con_iva, 10.0)

print("Precio final:", precio_final)
  1. a) Al ejecutar este código, Python produce el error: TypeError: unsupported operand type(s) for -: 'NoneType' and 'float'. Interprete el mensaje y explique exactamente cómo viaja el valor None por las variables del programa.
  2. b) Un compañero sostiene: «Para arreglarlo basta cambiar la línea de la primera función por print(precio * 1.21)». Rebata su afirmación explicando la diferencia funcional entre mostrar un valor por pantalla y retornar un valor a la llamada principal.
  3. c) Corrija el código y añada una función es_valido(precio) que devuelva un valor booleano (True o False) para verificar que el importe base no sea negativo antes de procesarlo.
Resolver
Practica★★★
Diseñe el algoritmo para un terminal de recarga y cobro del comedor escolar cumpliendo los siguientes requisitos técnicos: La tarjeta parte de un saldo inicial de…

Diseñe el algoritmo para un terminal de recarga y cobro del comedor escolar cumpliendo los siguientes requisitos técnicos:

  • La tarjeta parte de un saldo inicial de $20{,}\text{₡}\ 00$ y cada menú cuesta $4{,}\text{₡}\ 50$.

  • En un bucle, el programa pregunta cuántos menús se desean consumir en el día.

  • Si el saldo disponible no alcanza para pagar la cantidad solicitada, la operación se cancela, se informa del importe que falta y el saldo no se modifica.

  • Si hay saldo suficiente, se descuenta el importe y se comprueba si el saldo restante es inferior a $5{,}\text{₡}\ 00$, mostrando en tal caso el aviso «Saldo bajo: recargue pronto».

  • El programa debe terminar automáticamente cuando el saldo restante sea menor que el precio de un menú individual ($4{,}\text{₡}\ 50$).

  • Justifique qué tipo de bucle ha utilizado y explique cómo evita que una persona usuaria introduzca un número negativo de menús para aumentar artificialmente su saldo.

Resolver
Practica★★★
Un sistema de calificación calcula la nota final aplicando los siguientes pesos: Trabajo cotidiano ($20\ \%$), Práctica de taller ($30\ \%$) y Examen teórico ($50\ \%$).…

Un sistema de calificación calcula la nota final aplicando los siguientes pesos: Trabajo cotidiano ($20\ \%$), Práctica de taller ($30\ \%$) y Examen teórico ($50\ \%$). El profesor programó la fórmula así:

trabajo = float(input("Nota trabajo: "))

taller = float(input("Nota taller: "))

examen = float(input("Nota examen: "))

nota_final = trabajo * 0.20 + taller * 0.30 + examen * 0.50 / 3

if nota_final > 5:

    print("Aprobado")

else:

    print("Reprobado")
  1. a) Prediga el resultado que mostrará el programa si el estudiante obtiene un $10{,}0$ en los tres apartados. Interprete la prioridad de operadores para justificar el valor numérico erróneo que almacena nota_final.
  2. b) Justifique por qué este error es de lógica y no de sintaxis, y argumente por qué los errores lógicos suponen un riesgo mucho mayor en programas de ingeniería o control que los de sintaxis.
  3. c) Detecte un segundo error lógico en la condición del if respecto al criterio oficial habitual de calificación (aprobar con $5{,}0$) y escriba la versión definitiva del programa corregido.
Resolver