EuraStudy
Este tema reúne los fundamentos de la programación (variables, tipos, operadores, estructuras de control y funciones), el diseño y la depuración de algoritmos mediante diagramas de flujo y pseudocódigo, y la arquitectura del «internet de las cosas» (IoT): sensores, actuadores, microcontroladores y conectividad. Es contenido evaluable de Selectividad en Tecnología e Ingeniería: se pide razonar la salida o el coste de un algoritmo, trazar/corregir un programa, diseñar la lógica de un sistema con un microcontrolador y describir la cadena IoT extremo-a-extremo. Cierra el bloque de informática de la materia conectando la lógica del software con la electrónica de los proyectos tecnológicos.
4 secciones~25 min de lectura2 competenciasRevisado · 07/2026
nivel básico
Como materia de modalidad, todo el tema es de nivel de profundización; lo mínimo exigible es saber leer y trazar un algoritmo con las tres estructuras de control, expresarlo en pseudocódigo y diagrama de flujo, y describir la cadena IoT sensor → microcontrolador → conectividad → actuador.
nivel avanzado
El dominio pleno añade la depuración sistemática (clasificar y corregir errores de sintaxis, ejecución y lógica), el cálculo del coste de un bucle y el diseño completo de la lógica de control de un sistema IoT con condiciones de histéresis y temporización.
Profundidad de lectura: En profundidad
Tamaño de texto: Estándar · Interlineado: Compacto
Cargar siempre los medios: desactivado
4 secciones16 puntos clave3 fórmulas16 errores típicos
Anatomía de un programa: datos, operadores y control
Las tres estructuras de control y su sintaxis
Vocabulario
→ TarjetasAsignación (incremento)
El nuevo contenido de la variable x es su valor anterior más uno; la flecha (o el signo =) indica asignación, no igualdad matemática.
Operador módulo y paridad
El resto de dividir n entre 2 es cero exactamente cuando n es par; de forma análoga, d \mid n equivale a (n \bmod d = 0).
Dado el siguiente pseudocódigo, indica el valor final de la variable «suma». INICIO; suma ← 0; PARA i DESDE 1 HASTA 6 HACER: SI (i módulo 2 = 0) ENTONCES suma ← suma + i; FIN PARA; ESCRIBIR suma; FIN.
Antes del bucle, suma vale 0. El contador i recorrerá los valores 1, 2, 3, 4, 5, 6.
Solo se acumula i cuando i es par, es decir cuando (i mod 2) = 0.
i=1 (impar): no suma → 0. i=2 (par): suma ← 0+2 = 2. i=3 (impar): no suma → 2.
i=4 (par): suma ← 2+4 = 6. i=5 (impar): no suma → 6. i=6 (par): suma ← 6+6 = 12.
Se han sumado los pares de 1 a 6: 2 + 4 + 6, que efectivamente es 12.
Resultado: La variable «suma» vale 12 al finalizar: el programa acumula los números pares entre 1 y 6.
Errores frecuentes
Repaso activo
Escribe en pseudocódigo un programa que lea un número entero N y muestre cuántos de los números del 1 al N son múltiplos de 3. Indica qué tipo de dato usas para cada variable y razona qué estructura de control empleas.
Practicar con ejercicios afines8 preguntas de este tema
Recuerdo activo
Recuerda los puntos clave — luego revela.
Fuentes: Real Decreto 243/2022, de 5 de abril, por el que se establecen la ordenación y las enseñanzas mínimas del Bachillerato (Gobierno de España — Boletín Oficial del Estado (BOE)) · 4. Más herramientas para control de flujo (Python Software Foundation — Documentación de Python) · Estructuras de control: iteración (Universitat Politècnica de València — RiuNet)
Símbolos normalizados del diagrama de flujo (ISO 5807)
Diagrama de flujo: contar los pares de 1 a N
Vocabulario
→ TarjetasSe da el algoritmo en pseudocódigo: INICIO; LEER n; f ← 1; i ← 1; MIENTRAS (i <= n) HACER: f ← f * i; i ← i + 1; FIN MIENTRAS; ESCRIBIR f; FIN. Calcula la salida para n = 4 y describe los símbolos del diagrama de flujo equivalente.
Se lee n = 4. Se ponen el acumulador f ← 1 y el contador i ← 1. En el diagrama: un romboide LEER n y un rectángulo con las dos asignaciones.
El MIENTRAS (i <= n) se dibuja como un rombo de decisión; mientras es verdadero el flujo entra en el cuerpo, cuando es falso sale hacia ESCRIBIR.
i=1: f ← 1·1 = 1, i ← 2. i=2: f ← 1·2 = 2, i ← 3. i=3: f ← 2·3 = 6, i ← 4. i=4: f ← 6·4 = 24, i ← 5.
Con i = 5 la condición (5 <= 4) es falsa: el flujo sale del rombo y llega al romboide ESCRIBIR f.
Se imprime f = 24, que es el factorial de 4.
Resultado: Para n = 4 el algoritmo calcula 4! = 24; el diagrama tiene un terminal de inicio, un romboide de lectura, un rectángulo de inicialización, un rombo de decisión que cierra el bucle, un rectángulo de proceso (f·i, i+1), un romboide de salida y un terminal de fin.
Errores frecuentes
Repaso activo
Diseña el algoritmo que lee cinco números enteros y muestra el mayor de todos. Exprésalo primero en pseudocódigo y dibuja después su diagrama de flujo. Indica con qué valor inicializas la variable maximo y justifica que tu elección sigue siendo correcta aunque los cinco números introducidos sean negativos.
Practicar con ejercicios afines8 preguntas de este tema
Recuerdo activo
Recuerda los puntos clave — luego revela.
Fuentes: Algorítmica y Complejidad (2024) (Universidad de Cantabria — OpenCourseWare (OCW)) · Estructura de Datos y Algoritmos (Python) (Universidad Carlos III de Madrid — OpenCourseWare (OCW))
Ciclo de depuración y tipos de error
Vocabulario
→ TarjetasUn alumno escribe este código para sumar 1+2+...+10 y obtiene 45 en vez de 55: «s ← 0; PARA i DESDE 1 HASTA 9 HACER s ← s + i; ESCRIBIR s». Identifica el tipo de error, demuéstralo con la traza y corrígelo.
El programa compila y se ejecuta sin detenerse, pero da un resultado equivocado: es un error LÓGICO, en concreto un error «por uno» en el límite del bucle.
El PARA va de i=1 a i=9, así que acumula 1+2+3+4+5+6+7+8+9 y nunca añade el 10.
La suma de 1 a 9 es 45, exactamente el resultado erróneo que se observa.
El límite superior debe ser 10, no 9: «PARA i DESDE 1 HASTA 10 HACER s ← s + i». El cambio es de 9 a 10 (típico off-by-one).
Con i de 1 a 10 la suma es la correcta, lo que confirma la corrección.
Resultado: Es un error lógico «por uno»: el bucle llegaba hasta 9 y sumaba 45; cambiando el límite a 10 el programa suma correctamente 55.
Este bucle pretende sumar los números del 1 al 5. Compila, se ejecuta sin quejarse y devuelve un número equivocado. Vamos a cazarlo con lo único que nunca falla: una tabla de variables.
El fragmento bajo sospecha
La variable s es el acumulador de la suma (un entero) e i es el contador de la iteración (otro entero). La condición del bucle usa el operador menor que, no menor o igual: ahí está el punto que hay que vigilar.
Primero se anota el estado antes de entrar. La tabla tiene una columna por variable y una fila por vuelta; nada de ejecutarlo de cabeza.
Estado inicial de la traza
Antes de la primera comprobación, i vale 1 y s vale 0. Toda traza empieza escribiendo los valores de inicialización, porque un acumulador sin inicializar es la otra mitad de los fallos de esta sección.
Vuelta a vuelta. Se comprueba la condición, se ejecuta el cuerpo y se anota el resultado; nunca se salta una fila aunque parezca obvia.
Vueltas primera y segunda
Con i igual a 1 la condición 1 < 5 es cierta: s pasa de 0 a 1 e i pasa a 2. Con i igual a 2, s pasa de 1 a 3 e i pasa a 3. La columna de s guarda siempre el valor con el que el cuerpo termina.
Dos vueltas más y el acumulador ya lleva la suma de los cuatro primeros números.
Vueltas tercera y cuarta
Con i igual a 3, s pasa de 3 a 6; con i igual a 4, s pasa de 6 a 10. Al salir de esta cuarta vuelta el contador i vale ya 5.
Aquí está el instante decisivo. El contador vale 5, la condición se evalúa una vez más y el bucle se cierra antes de usar ese 5.
La condición se vuelve falsa con i = 5
La expresión 5 < 5 es falsa, de modo que el cuerpo no se ejecuta con i igual a 5 y el programa imprime 10. El programa no se ha detenido ni ha protestado: simplemente ha dejado un número fuera.
Contrastamos lo obtenido con lo pretendido. La diferencia es exactamente el último valor del rango, la firma inconfundible de un error por uno.
El diagnóstico: falta un término, no una operación
La suma calculada vale 10 y la buscada 15; la diferencia es 5, el término que el bucle nunca llegó a acumular. No hay ningún error de sintaxis ni de ejecución: es un error lógico en el límite de la iteración.
La corrección es un solo carácter, y se verifica volviendo a la tabla: una fila más y el resultado cuadra.
La corrección y su verificación
Al cambiar menor que por menor o igual se añade la vuelta con i igual a 5, que suma ese 5 pendiente y deja s en 15. La misma reparación se consigue escribiendo la condición como i < 6: lo que importa es que el último valor del rango entre en el bucle.
Errores frecuentes
Repaso activo
Un alumno escribe «s ← 0; PARA i DESDE 0 HASTA 9 HACER s ← s + i; ESCRIBIR s» convencido de que suma los números del 1 al 10. Haz la traza de escritorio en una tabla, di qué valor imprime realmente el programa, clasifica el error e indica las dos correcciones distintas del encabezado del PARA que dan el resultado buscado.
Practicar con ejercicios afines8 preguntas de este tema
Recuerdo activo
Recuerda los puntos clave — luego revela.
Fuentes: 8. Errores y excepciones (Python Software Foundation — Documentación de Python) · Ingeniería del Software II (2011) (Universidad de Cantabria — OpenCourseWare (OCW))
Lógica de control con histéresis (banda muerta del actuador)
Cadena IoT: del mundo físico a la nube y de vuelta
Vocabulario
→ TarjetasControl con histéresis
Con dos umbrales U_ON < U_OFF (aquí 30 y 60) y una banda muerta entre ellos, el actuador no conmuta cuando la lectura h oscila cerca de un único valor.
Un sistema IoT de climatización lee la temperatura T de una sala. La consigna es 21 °C. Para evitar arranques continuos del calefactor se usa histéresis: enciende si T baja de 20 °C y apaga si T sube de 22 °C. Escribe la lógica del bucle de control e indica el estado del calefactor si T pasa por 19, 21 y 23 °C estando inicialmente apagado.
Sensor: sonda de temperatura (entrada analógica → ADC). Actuador: calefactor mediante relé (salida digital). Microcontrolador: ejecuta el bucle.
Umbral de encendido U_ON = 20 °C y de apagado U_OFF = 22 °C; entre ambos hay una banda muerta de 2 °C alrededor de la consigna de 21 °C.
REPETIR: leer T; SI (T < 20) ENTONCES calefactor ← ON; SI (T > 22) ENTONCES calefactor ← OFF; (entre 20 y 22 se mantiene el estado anterior).
19 < 20, se cumple la condición de encendido: el calefactor pasa a ON.
21 no es < 20 ni > 22: cae en la banda muerta, así que el calefactor MANTIENE el estado anterior (sigue ON).
23 > 22, se cumple la condición de apagado: el calefactor pasa a OFF.
Resultado: Estados sucesivos: 19 °C → ON, 21 °C → sigue ON (banda muerta), 23 °C → OFF. La histéresis de 2 °C evita que el calefactor conmute sin parar cuando la temperatura ronda los 21 °C.
Errores frecuentes
Repaso activo
Un invernadero vigila el dióxido de carbono del aire con un sensor que entrega valores de 0 a 2000 ppm y abre una ventana motorizada cuando el aire se vicia. Escribe en pseudocódigo la lógica de control con histéresis, elige y justifica los dos umbrales, explica qué le ocurriría al motor de la ventana con un solo umbral y señala qué parte de la cadena IoT debe seguir operando si se pierde la conexión con la nube.
Practicar con ejercicios afines8 preguntas de este tema
Recuerdo activo
Recuerda los puntos clave — luego revela.
Fuentes: TemáTICas IoT (INCIBE — Instituto Nacional de Ciberseguridad)
Revisado · 07/2026Versión completa con el regulador de profundidad — mismo lugar, mismas anclas
Referencias y fuentes
Gobierno de España — Boletín Oficial del Estado (BOE)
Python Software Foundation — Documentación de Python
Universitat Politècnica de València — RiuNet
Universidad de Cantabria — OpenCourseWare (OCW)
Universidad Carlos III de Madrid — OpenCourseWare (OCW)
INCIBE — Instituto Nacional de Ciberseguridad
Véase también