UNIDAD 2. ANÁLISIS Y MODELADO DE SOLUCIONES COMPUTACIONALES

1. Introducción de la unidad

En la Unidad 1 el estudiante aprendió que programar no consiste solamente en escribir código. Antes de programar es necesario comprender el problema, analizarlo, determinar qué información se necesita y diseñar una solución lógica.

En esta segunda unidad se profundiza en esa etapa previa a la programación.

El estudiante aprenderá a representar un problema de manera organizada para comprender mejor cómo puede solucionarse mediante un programa.

En electrónica, esta capacidad es especialmente importante porque los sistemas suelen recibir información de sensores, realizar operaciones y tomar decisiones para controlar diferentes dispositivos.

Por ejemplo, un sistema de control de temperatura puede parecer sencillo:

Sensor → Controlador → Ventilador

Sin embargo, para convertir esta idea en un programa es necesario responder preguntas como:

  • ¿Qué información proporciona el sensor?
  • ¿Cómo se representa esa información?
  • ¿Qué valor debe analizar el programa?
  • ¿Qué operaciones deben realizarse?
  • ¿Cuál es la temperatura límite?
  • ¿Qué debe ocurrir cuando se supera?
  • ¿Qué debe ocurrir cuando la temperatura disminuye?
  • ¿Qué pasos debe seguir el programa?
  • ¿Cómo se comprobará que la solución funciona?

El modelado permite organizar estas respuestas antes de comenzar la codificación.

 

2. Propósito de la unidad

Desarrollar en el estudiante la capacidad de analizar, descomponer y modelar problemas técnicos, identificando datos, información, procesos, operaciones y secuencias necesarias para preparar una solución computacional antes de convertirla en código.

 

3. Resultados de aprendizaje

Al finalizar esta unidad, el estudiante será capaz de:

  1. Explicar qué significa modelar un problema.
  2. Representar problemas técnicos de manera estructurada.
  3. Descomponer problemas complejos en partes más sencillas.
  4. Aplicar la abstracción para identificar los elementos importantes de un problema.
  5. Diferenciar datos de información.
  6. Identificar procesos y operaciones.
  7. Organizar correctamente una secuencia de procesos.
  8. Relacionar un problema con una posible solución computacional.
  9. Explicar la relación entre solución y programa.
  10. Aplicar estrategias básicas de resolución de problemas.
  11. Analizar diferentes alternativas antes de seleccionar una solución.
  12. Preparar una solución mediante esquemas, algoritmos o pseudocódigo antes de programar.
  13. Analizar problemas relacionados con equipos y sistemas electrónicos.
  14. Presentar y defender una propuesta de solución durante una exposición presencial en el taller.

 

CONTENIDOS CONCEPTUALES

4. ¿Qué es el modelado de problemas?

El modelado de problemas consiste en representar una situación real de manera simplificada para poder comprenderla, analizarla y encontrar una solución.

Cuando un problema es complejo, puede resultar difícil trabajar directamente con todos sus detalles.

El modelado permite seleccionar los elementos importantes y establecer relaciones entre ellos.

Por ejemplo:

Problema real

Un sistema electrónico se sobrecalienta.

Podemos representar una parte importante del problema como:

Temperatura → Lectura → Comparación → Decisión → Ventilador

Este modelo permite comprender la lógica general sin necesidad de conocer todavía todos los detalles del circuito.

 

5. ¿Por qué es importante modelar?

El modelado ayuda a:

  • comprender mejor el problema;
  • organizar las ideas;
  • identificar información importante;
  • eliminar detalles innecesarios;
  • encontrar relaciones;
  • detectar errores antes de programar;
  • comparar diferentes soluciones;
  • facilitar la codificación;
  • facilitar las pruebas.

Un buen modelo puede evitar que el estudiante comience a programar sin comprender realmente lo que debe hacer.

 

6. Modelado aplicado a electrónica

En electrónica podemos modelar un sistema mediante tres elementos principales:

Entrada → Procesamiento → Salida

Por ejemplo:

Sistema automático de iluminación

Entrada: nivel de iluminación.

Procesamiento: comparar el nivel medido con un límite.

Salida: lámpara encendida o apagada.

Representación:

Sensor de luz

     ↓

Lectura del sensor

     ↓

Comparación

     ↓

Decisión

     ↓

Lámpara

Este modelo puede utilizarse posteriormente para desarrollar un algoritmo y finalmente un programa.

 

7. Descomposición de problemas

La descomposición consiste en dividir un problema grande en partes más pequeñas y fáciles de comprender.

Esta estrategia es fundamental en programación.

Ejemplo

Problema:

Diseñar un sistema automático para controlar un ventilador según la temperatura.

Podemos dividirlo en:

  1. Obtener la temperatura.
  2. Leer el sensor.
  3. Comparar el valor.
  4. Determinar si la temperatura es alta.
  5. Activar el ventilador.
  6. Determinar cuándo debe apagarse.
  7. Apagar el ventilador.
  8. Repetir el proceso.

Cada parte puede analizarse individualmente.

 

8. Ventajas de la descomposición

La descomposición permite:

  • reducir la complejidad;
  • organizar el trabajo;
  • identificar errores;
  • facilitar la programación;
  • facilitar las pruebas;
  • dividir tareas entre integrantes de un equipo;
  • comprender mejor el funcionamiento del sistema.

Un problema complejo puede convertirse en varios problemas pequeños.

Problema complejo → Problemas pequeños → Solución organizada

 

9. Abstracción

La abstracción consiste en concentrarse en los elementos importantes del problema y dejar de lado aquellos detalles que no son necesarios para desarrollar la solución.

Ejemplo

Supongamos que queremos programar el control de un ventilador.

No necesitamos conocer inicialmente:

  • el color del ventilador;
  • el material de la carcasa;
  • el fabricante;
  • el tamaño físico del equipo.

Lo importante para el programa puede ser:

  • temperatura;
  • temperatura límite;
  • estado del ventilador.

Por tanto:

Abstracción = concentrarse en lo necesario para resolver el problema.

 

10. Descomposición y abstracción juntas

Ambas estrategias trabajan de manera complementaria.

Descomposición

Divide el problema.

Abstracción

Selecciona la información importante.

Por ejemplo:

Problema: controlar la temperatura de un equipo.

Descomposición

  • medir temperatura;
  • comparar temperatura;
  • tomar decisión;
  • controlar ventilador.

Abstracción

Elementos principales:

  • temperatura;
  • límite;
  • ventilador.

Esto produce un modelo mucho más fácil de manejar.

 

11. Secuencia de procesos

Una computadora o sistema programable necesita recibir instrucciones organizadas.

La secuencia indica el orden en que deben ejecutarse los procesos.

Por ejemplo:

1. Leer temperatura.

2. Comparar temperatura.

3. Tomar decisión.

4. Encender ventilador.

No siempre se puede cambiar el orden.

Por ejemplo, no sería lógico comparar la temperatura antes de obtenerla.

Por eso:

Primero se obtiene el dato → después se procesa → finalmente se produce el resultado.

 

12. Importancia de la secuencia

Una secuencia incorrecta puede producir:

  • resultados incorrectos;
  • decisiones equivocadas;
  • errores de funcionamiento;
  • comportamiento inesperado del sistema.

Ejemplo

Incorrecto:

Comparar temperatura

Leer temperatura

Encender ventilador

Correcto:

Leer temperatura

Comparar temperatura

Tomar decisión

Encender ventilador

 

13. Datos e información

Aunque ambos conceptos están relacionados, dato e información no significan exactamente lo mismo.

Dato

Es un valor o elemento que representa algo.

Ejemplo:

32

Por sí solo puede no indicar qué representa.

Información

Es un dato interpretado dentro de un contexto.

Ejemplo:

Temperatura = 32 °C

Ahora sabemos qué representa el valor.

 

14. Ejemplo aplicado a electrónica

Supongamos que un sensor proporciona:

35

Ese valor es un dato.

Cuando sabemos que representa:

Temperatura = 35 °C

tenemos información que puede utilizar el programa.

El sistema puede entonces realizar una operación:

35 °C > 30 °C

Resultado:

Verdadero

Decisión:

Encender ventilador.

 

15. Datos de entrada

Los datos de entrada son los valores que recibe un sistema para poder realizar un proceso.

Pueden proceder de:

  • sensores;
  • botones;
  • interruptores;
  • teclados;
  • potenciómetros;
  • archivos;
  • usuarios;
  • otros dispositivos.

Ejemplo

Sistema de control de temperatura:

Entrada = temperatura medida

 

16. Procesos y operaciones

Una vez recibidos los datos, el sistema debe realizar determinadas operaciones.

Las operaciones pueden ser:

  • matemáticas;
  • lógicas;
  • comparaciones;
  • conversiones;
  • clasificación;
  • decisiones.

Operaciones matemáticas

Ejemplos:

Suma

Resta

Multiplicación

División

Operaciones de comparación

Ejemplos:

  • mayor que;
  • menor que;
  • igual a;
  • diferente de.

Ejemplo

Temperatura > 30

El programa determina si la condición es verdadera o falsa.

 

17. Operaciones lógicas

Las operaciones lógicas permiten combinar condiciones.

Por ejemplo:

Un sistema podría activar una alarma cuando:

Puerta abierta Y sistema activado.

También podría utilizar:

Movimiento detectado O puerta abierta.

Estas operaciones serán importantes posteriormente cuando el estudiante estudie estructuras de decisión.

 

18. Relaciones entre problema, solución y programa

Estos tres conceptos están directamente relacionados.

Problema

Es la situación que debe resolverse.

Solución

Es la propuesta para resolver el problema.

Programa

Es la implementación de esa solución mediante instrucciones que puede ejecutar un sistema.

La relación puede representarse:

Problema

↓

Análisis

↓

Diseño de solución

↓

Programa

↓

Ejecución

↓

Resultado

 

19. Ejemplo completo

Problema

Una lámpara de un taller permanece encendida durante todo el día.

Necesidad

Controlar automáticamente la iluminación.

Solución

Utilizar un sensor de luz y un sistema programable.

Modelo

Sensor de luz → Programa → Lámpara

Entrada

Nivel de iluminación.

Procesamiento

Comparar el nivel con un límite.

Salida

Encender o apagar la lámpara.

Programa

Posteriormente, esta lógica puede convertirse en instrucciones de un lenguaje de programación.

 

20. Estrategias de resolución de problemas

No todos los problemas deben resolverse de la misma manera.

Existen diferentes estrategias que pueden ayudar.

20.1. Comprender el problema

Antes de buscar una solución es necesario saber exactamente qué ocurre.

Preguntas importantes:

  • ¿Qué está sucediendo?
  • ¿Qué debería suceder?
  • ¿Cuál es la diferencia?
  • ¿Qué información tenemos?
  • ¿Qué información necesitamos?

 

21. Identificar entradas y salidas

Una estrategia sencilla consiste en preguntar:

¿Qué recibe el sistema?

y

¿Qué debe producir?

Por ejemplo:

Sistema de alarma

Entrada:

Sensor de movimiento.

Salida:

Alarma.

 

22. Dividir el problema

Si el problema es grande, se divide en partes.

Ejemplo:

Sistema de seguridad

Puede dividirse en:

  1. Leer sensor.
  2. Comprobar estado.
  3. Detectar evento.
  4. Activar alarma.
  5. Mostrar aviso.
  6. Registrar evento.

 

23. Buscar patrones

Si un problema es parecido a otro que ya conocemos, podemos utilizar conocimientos anteriores.

Por ejemplo:

Un sistema de control de temperatura y un sistema de iluminación automática pueden tener una estructura semejante:

Entrada → Comparación → Decisión → Salida

 

24. Probar diferentes alternativas

Una solución no siempre es la única posible.

Por ejemplo, para controlar un ventilador podemos utilizar:

  • interruptor manual;
  • temporizador;
  • sensor de temperatura;
  • sensor y microcontrolador.

El análisis permite seleccionar la alternativa más adecuada.

 

25. Verificar la solución

Una solución debe probarse antes de considerarse terminada.

Hay que preguntar:

  • ¿Funciona?
  • ¿Produce el resultado esperado?
  • ¿Qué ocurre con valores diferentes?
  • ¿Qué ocurre si el sensor falla?
  • ¿Qué ocurre en condiciones extremas?

Las pruebas permiten detectar problemas antes de utilizar el sistema.

 

26. Preparación de una solución antes de la codificación

Una de las ideas más importantes de esta unidad es:

No comenzar directamente a escribir código sin haber diseñado primero la solución.

Antes de programar es recomendable seguir una secuencia.

Paso 1. Comprender el problema

¿Qué se necesita resolver?

Paso 2. Identificar entradas

¿Qué información recibe el sistema?

Paso 3. Identificar salidas

¿Qué resultado debe producir?

Paso 4. Identificar procesos

¿Qué operaciones deben realizarse?

Paso 5. Establecer condiciones

¿Qué decisiones debe tomar el sistema?

Paso 6. Organizar la secuencia

¿En qué orden deben realizarse las acciones?

Paso 7. Representar la solución

Utilizar:

  • esquema;
  • algoritmo;
  • pseudocódigo;
  • diagrama de flujo.

Paso 8. Revisar

Comprobar si la solución tiene sentido.

Paso 9. Codificar

Convertir el diseño en un programa.

 

27. Algoritmo como preparación para programar

Un algoritmo permite describir la solución mediante pasos ordenados.

Ejemplo

Problema:

Controlar un ventilador mediante temperatura.

Algoritmo

INICIO

 

Leer temperatura

 

Si temperatura es mayor que 30 °C entonces

    Encender ventilador

Si no

    Apagar ventilador

 

FIN

El algoritmo todavía no depende de un lenguaje específico.

Por eso permite concentrarse primero en la lógica.

 

28. Pseudocódigo

El pseudocódigo es una forma de escribir la solución utilizando instrucciones similares al lenguaje humano, pero con una estructura lógica.

Ejemplo:

INICIO

 

    LEER temperatura

 

    SI temperatura > 30 ENTONCES

        ENCENDER ventilador

    SINO

        APAGAR ventilador

    FIN SI

 

FIN

El pseudocódigo facilita posteriormente la conversión a un lenguaje de programación.

 

29. Diagrama de flujo como modelo

Otra herramienta para representar una solución es el diagrama de flujo.

Una representación sencilla sería:

      INICIO

         ↓

  Leer temperatura

         ↓

 ¿Temperatura > 30?

      ↙       ↘

    Sí         No

    ↓           ↓

Encender      Apagar

ventilador    ventilador

      ↘       ↙

         ↓

        FIN

El estudiante aprenderá progresivamente a utilizar símbolos estandarizados para representar estas estructuras.

 

30. Modelo general para problemas electrónicos

Para muchos problemas de electrónica puede utilizarse el siguiente modelo:

         ENTRADA

            ↓

    Captura de datos

            ↓

       PROCESAMIENTO

            ↓

       Comparaciones

            ↓

        Decisiones

            ↓

          SALIDA

            ↓

      Acción del sistema

Por ejemplo:

Sensor de temperatura

          ↓

   Leer temperatura

          ↓

 Comparar con límite

          ↓

       Decisión

          ↓

     Ventilador