Fundamentos de Programación y Algoritmos Aplicados a la Agricultura

Clasificado en Otras materias

Escrito el en español con un tamaño de 7,46 KB

Cuestionario de Evaluación: Lógica de Programación en Entornos Agrícolas

1. Un sistema automatizado de invernadero activa el riego cuando la humedad baja del 40%, lo apaga cuando supera el 70%, y envía una alerta SMS si la temperatura supera los 35 °C. ¿Cuál es el PRIMER paso para diseñar el algoritmo?
Respuesta: B) Identificar entradas (humedad, temperatura), proceso (comparar umbrales) y salidas (riego on/off, alerta).

2. Para automatizar la fertilización de una parcela con 5 cultivos distintos, ¿qué subproblemas debe identificar el programador en primer lugar?
Respuesta: B) Leer datos del suelo → comparar con umbrales → calcular dosis → activar sistema.

3. Un agricultor quiere un programa que calcule el rendimiento esperado de la cosecha según: precipitación semanal (mm), temperatura media (°C) y días de cultivo transcurridos. ¿Cuántas variables de ENTRADA necesita el programa como mínimo?
Respuesta: C) 3.

4. En el diseño de un sistema de detección de plagas mediante imágenes de drones, ¿cuál es la SALIDA principal del algoritmo?
Respuesta: C) La clasificación de la plaga detectada y la recomendación de tratamiento.

5. Para predecir la producción de trigo, un modelo usa: temperatura media diaria, humedad del suelo, precipitación semanal, nombre del agricultor, variedad de trigo y coordenadas GPS. ¿Qué variable es IRRELEVANTE para el modelo predictivo de producción?
Respuesta: B) Nombre del agricultor.

6. Un programa controla el riego de 50 parcelas. En lugar de escribir 50 bloques de código distintos, el programador crea UNA función parametrizada reutilizable. ¿Qué principio aplica?
Respuesta: B) Abstracción mediante generalización.

7. Un sistema de alerta de heladas mide la temperatura cada minuto durante 24 horas (1440 lecturas). Para el algoritmo de alerta, ¿qué abstracción es más útil y eficiente?
Respuesta: B) Calcular la temperatura mínima del día y compararla con el umbral de helada.

8. ¿Cuál de estas es la representación más adecuada de un 'cultivo' en un programa Python de gestión agrícola?
Respuesta: B) Un diccionario con claves: nombre, fecha_siembra, rendimiento_kg_ha, estado.

9. ¿Qué imprime el siguiente código si temperatura = 28 y humedad = 65?
if temperatura > 30: estado = 'CALOR' elif temperatura > 25 and humedad > 60: estado = 'OPTIMO' else: estado = 'NORMAL' print(estado)
Respuesta: B) OPTIMO.

10. ¿Cuántas veces se ejecuta la instrucción print() en este bucle?
for semana in range(1, 9): if semana % 2 == 0: print(f'Semana par: {semana}')
Respuesta: B) 4.

11. ¿Cuál es el valor de 'resultado' tras ejecutar: resultado = 3 + 4 * 2 - 1?
Respuesta: B) 10.

12. ¿Qué imprime el siguiente código?
parcelas = [8500, 3200, 6700, 4100] total = 0 for r in parcelas: total = total + r print(total)
Respuesta: C) 22500.

13. ¿Qué tipo de error tiene el siguiente código?
rendimiento = input('Kg cosechados: ') ganancia = rendimiento * 2.5
Respuesta: C) Error de tipo (TypeError): input() devuelve str, no número.

14. ¿Cuál es el error en el siguiente código?
for i in range(5) print(i)
Respuesta: B) Faltan los dos puntos (:) al final de la línea for.

15. ¿Cuál es el ERROR LÓGICO en este código que calcula el promedio de rendimientos?
datos = [10, 20, 30, 40] promedio = sum(datos) / 3
Respuesta: B) Se divide entre 3 en lugar de entre len(datos), que es 4.

Desarrollo y Aplicación de Conceptos

16. Descomposición: Modelo Entrada-Proceso-Salida (IPO)

Descripción de un programa para calcular la ganancia neta de una cosecha:

  • Entrada: El programa requiere solicitar los datos de peso cosechado (kg), precio de venta por unidad de peso y los costes totales de producción.
  • Proceso:
    • Paso A: Calcular los ingresos brutos multiplicando los kilos cosechados por el precio por kilo.
    • Paso B: Calcular la ganancia neta restando los costes de producción a los ingresos brutos obtenidos en el paso anterior.
  • Salida: Se muestra al usuario el resultado final correspondiente a la Ganancia Neta (beneficio real).

17. Abstracción: Selección de Variables para Riesgo de Sequía

Para un modelo que prediga exclusivamente el riesgo de sequía, se realizaría la siguiente selección:

  • Variables elegidas: Humedad, lluvia, temperatura y tipo de suelo.
  • Justificación: La sequía es un fenómeno hídrico y térmico. La lluvia y la humedad miden la disponibilidad directa de agua; la temperatura influye en la tasa de evapotranspiración; y el tipo de suelo determina la capacidad de retención hídrica.
  • Descarte: Se omiten variables como "nombre del propietario", "ganancia" o "fecha_cosecha", ya que son datos administrativos o económicos sin relación física o biológica con el estrés hídrico de la planta.

18. Razonamiento Algorítmico: Pseudocódigo de Control Térmico

Algoritmo para contabilizar días de calor extremo en una semana:

Variables: lista_temperaturas, contador_calor = 0

Para cada dia en los 7 dias:
    Leer temperatura_del_dia
    Si temperatura_del_dia > 30:
        Incrementar contador_calor en 1

Mostrar "Días que superaron los 30 grados: " + contador_calor

19. Depuración: Cálculo del Índice de Desarrollo Térmico (IDT)

Identificación de errores:

  • Error 1 (Sintáctico): Falta el símbolo de dos puntos (:) al final de la definición de la función (def).
  • Error 2 (Lógico): Ausencia de paréntesis en la operación (tmax + tmin) / 2. Sin ellos, la jerarquía matemática prioriza la división de tmin, invalidando el cálculo del promedio.

Versión corregida:

def calcular_idt(tmax, tmin, tbase=10): idt = ((tmax + tmin) / 2) - tbase return idt

20. Evaluación: Análisis de Flujo y Manejo de Excepciones

Al llamar a alerta_sequia(25, 30), el programa falla porque la condición 25 > 30 es falsa, por lo que la variable estado nunca se define, provocando un Error de Tiempo de Ejecución (Runtime Error) al intentar imprimirla.

Corrección sugerida:

def alerta_sequia(parcela, umbral): if parcela > umbral: estado = 'SEQUIA' else: estado = 'NORMAL' # Se asegura que la variable siempre esté definida print(estado)alerta_sequia(25, 30)

Entradas relacionadas: