LOE/LOMLOE (BOE)Tecnología e Ingeniería I1º de Bachillerato7 min de lectura

Programación y algorítmica aplicada

Un algoritmo se define como un conjunto ordenado y finito de operaciones que permite hallar la solución de un problema.

Lectura5 partesUn recorrido editorial y navegable.
Práctica12 preguntasTest y tarjetas de memoria para abrir después de leer.
Objetivo1º de BachilleratoFormato rápido para comprobar si el tema encaja.
Parte 1

Fundamentos de Algorítmica y Resolución de Problemas

Análisis y diseño de algoritmos

Un algoritmo se define como un conjunto ordenado y finito de operaciones que permite hallar la solución de un problema. En el contexto de la ingeniería, un buen algoritmo debe cumplir tres requisitos fundamentales:

  1. Precisión: Indicar el orden de realización de cada paso.
  2. Definición: Si se sigue dos veces, se debe obtener el mismo resultado.
  3. Finitud: Debe tener un número determinado de pasos.

El diseño de cualquier solución técnica sigue el esquema de Entrada → Proceso → Salida.

  • Entrada: Son los datos iniciales o variables que el sistema necesita (ej. la lectura de un sensor de temperatura).
  • Proceso: Son las operaciones lógicas y matemáticas que transforman los datos (ej. calcular si la temperatura supera un umbral).
  • Salida: Es el resultado final o la acción física (ej. activar un ventilador).

Representación gráfica de soluciones

Antes de codificar, es vital visualizar la lógica. Las dos herramientas principales son:

  • Diagramas de Flujo (Flowcharts): Utilizan simbología normalizada para representar el flujo de datos.
    • Óvalo: Inicio/Fin.
    • Rectángulo: Proceso o instrucción.
    • Rombo: Decisión (condicional).
    • Paralelogramo: Entrada/Salida de datos.
  • Pseudocódigo: Es un lenguaje intermedio entre el lenguaje humano y el de programación. No tiene una sintaxis rígida, pero mantiene una estructura lógica clara (ej. "SI temperatura > 25 ENTONCES encender ventilador").

Estructuras de control fundamentales

Las estructuras de control determinan el orden en que se ejecutan las instrucciones:

  1. Secuenciación: Las instrucciones se ejecutan una tras otra, de arriba hacia abajo.
  2. Estructuras condicionales (if/else): Permiten que el programa tome caminos distintos según se cumpla o no una condición lógica.
  3. Bucles e iteraciones:
    • For: Se usa cuando conocemos de antemano el número de repeticiones (ej. leer 10 sensores).
    • While: Se usa mientras se cumpla una condición (ej. mantener el motor encendido mientras el depósito no esté vacío).
Parte 2

Lenguajes de Programación y Entornos de Desarrollo

Tipología de lenguajes en ingeniería

En el ámbito técnico, los lenguajes se clasifican según su cercanía al hardware:

  • Bajo nivel (Ensamblador): Instrucciones directas para el procesador. Muy eficiente pero complejo.
  • Alto nivel (Python, C++, Java): Utilizan palabras cercanas al lenguaje humano. Son más fáciles de aprender y mantener.

Existen dos formas de ejecutar el código:

  • Compilación: El código se traduce por completo a lenguaje máquina antes de ejecutarse (ej. C++). Es más rápido en ejecución.
  • Interpretación: Un programa (intérprete) traduce y ejecuta el código línea a línea (ej. Python). Es ideal para prototipado rápido.

Configuración del entorno de trabajo

Para programar de forma profesional utilizamos los IDE (Integrated Development Environments), como Visual Studio Code o Arduino IDE. Estos entornos facilitan la gestión de proyectos y, sobre todo, la depuración (debugging). Depurar es el proceso de identificar y corregir errores de sintaxis (escritura) o de lógica (el programa funciona pero da resultados erróneos).

Variables y tipos de datos

Una variable es un espacio en la memoria del ordenador para almacenar un dato. En ingeniería, es crucial elegir el tipo de dato correcto para optimizar la memoria:

  • int: Números enteros.
  • float/double: Números con decimales (precisión).
  • bool: Valores lógicos (Verdadero/Falso).
  • char/string: Caracteres o cadenas de texto.

El ámbito de las variables define dónde se puede usar una variable. Una variable local solo existe dentro de una función, mientras que una global es accesible desde todo el programa.

Parte 3

Programación Modular y Estructuras de Datos

Funciones y modularidad

La ingeniería busca la eficiencia mediante la reutilización de código. Las funciones son bloques de código independientes que realizan una tarea específica.

  • Parámetros: Son los datos que enviamos a la función para que trabaje.
  • Retorno: Es el valor que la función devuelve tras procesar los datos.

f(x,y)=x+yf(x, y) = x + y En programación, esto se traduce en una función que recibe dos variables y devuelve su suma, evitando repetir la lógica de la suma en múltiples partes del proyecto.

Estructuras de datos lineales

A menudo necesitamos manejar grandes volúmenes de datos (ej. las últimas 100 lecturas de un sensor). Para ello usamos:

  • Arrays/Listas: Colecciones ordenadas de elementos. Se accede a ellos mediante un índice, empezando normalmente por el 0.
  • Cadenas de texto (Strings): Se tratan como listas de caracteres, permitiendo buscar palabras clave o formatear mensajes para pantallas LCD.

Bibliotecas y librerías externas

No es necesario "reinventar la rueda". Las librerías son conjuntos de funciones ya escritas por otros ingenieros. Por ejemplo, en Python, la librería math permite realizar cálculos trigonométricos complejos con una sola línea de código, o numpy para el manejo de grandes matrices de datos.

Parte 4

Programación Aplicada al Control de Sistemas

Interacción con el hardware

En Tecnología e Ingeniería I, la programación se conecta con el mundo físico mediante microcontroladores (como Arduino o ESP32).

  • Sensores digitales: Detectan dos estados (presencia/ausencia, pulsado/no pulsado).
  • Sensores analógicos: Detectan un rango de valores (voltaje de 0V a 5V) que el microcontrolador traduce a valores numéricos mediante un ADC (Conversor Analógico-Digital).
  • Actuadores: Motores, luces o relés que ejecutan la acción física.

Sistemas de control programado

El control puede ser de dos tipos:

  1. Lazo abierto (Todo/Nada): El sistema actúa sin mirar el resultado (ej. un riego automático por tiempo).
  2. Lazo cerrado (Realimentado): El sistema lee el sensor, compara con el valor deseado y ajusta la salida (ej. un termostato que mantiene la habitación a 21°C).

Desarrollo de interfaces sencillas

La comunicación entre la máquina y el usuario se realiza a través de la consola o terminal. Es fundamental diseñar programas que soliciten datos de forma clara ("Introduzca el valor de la resistencia:") y muestren resultados legibles, incluyendo las unidades de medida correspondientes.

Parte 5

Proyectos de Programación en Ingeniería

Metodología de desarrollo de software

Un proyecto de ingeniería sigue un ciclo de vida estructurado:

  1. Análisis de requisitos: ¿Qué debe hacer el programa exactamente?
  2. Diseño: Creación de diagramas de flujo.
  3. Codificación: Escritura del código en el lenguaje elegido.
  4. Pruebas unitarias: Probar cada parte del código por separado para asegurar que no hay fallos.

Documentación del código

Un código no documentado es un código inservible a largo plazo. Las buenas prácticas incluyen:

  • Comentarios: Explicaciones dentro del código precedidas por símbolos como # o //.
  • Nombres descriptivos: Usar velocidad_motor en lugar de una simple v.
  • Manual de usuario: Instrucciones sobre cómo instalar y operar el sistema.

Resolución de casos prácticos

La programación en ingeniería se aplica finalmente en:

  • Automatización: Sustituir tareas repetitivas por procesos autónomos.
  • Simulación: Predecir cómo se comportará un puente o un circuito antes de construirlo físicamente.
  • Optimización: Modificar el algoritmo para que consuma menos energía o sea más rápido, algo vital en sistemas embebidos con recursos limitados.
Después de leer

Pasa a la práctica con dos bloques bien visibles

Cuando hayas leído los apuntes, abre el test para comprobar lo que has entendido o las flashcards para memorizar las ideas importantes. Los dos se abren en una ventana propia.

Siguiente paso

¿Quieres ir más allá
del artículo?

Encuentra el mismo tema en Houki con el resto de preguntas, la repetición espaciada, las correcciones completas y un progreso seguido en el tiempo.