Ejercicios Repaso C++ Examen Tecnología 4ESO
Ejercicios C++ Arduino
C++ · Arduino IDE
Estructuras Básicas de Programación
10 ejercicios progresivos para practicar secuencia, selección e iteración en el entorno de Arduino.
Secuencia
Ejercicios 1–2 · Estructura secuencial
01
Velocidad Media
Calcula la velocidad media a partir de distancia y tiempo
El usuario introduce la distancia (m) y el tiempo (s) a través del Monitor Serie. El programa calcula y muestra la velocidad media aplicando la fórmula de cinemática.
v = d / t (m/s)
Serial.parseInt()floatSerial.println()secuencia lineal
// Ejercicio 1 — Velocidad Media
// Fórmula: v = d / t
float distancia;
float tiempo;
float velocidad;
void setup() {
Serial.begin(9600);
Serial.println("=== Calculadora de Velocidad Media ===");
Serial.println("Introduce la distancia en metros:");
// Esperar hasta recibir el dato
while (Serial.available() == 0) {}
distancia = Serial.parseFloat();
Serial.println("Introduce el tiempo en segundos:");
while (Serial.available() == 0) {}
tiempo = Serial.parseFloat();
// Cálculo — estructura secuencial
velocidad = distancia / tiempo;
// Mostrar resultado
Serial.print("Velocidad media: ");
Serial.print(velocidad);
Serial.println(" m/s");
}
void loop() {
// Sin código repetitivo en este ejercicio
}
Monitor Serie — ejemplo de salida
=== Calculadora de Velocidad Media ===
Introduce la distancia en metros: 100
Introduce el tiempo en segundos: 9.58
Velocidad media: 10.44 m/s
02
Energía Cinética
Calcula la energía cinética a partir de masa y velocidad
Se introduce la masa (kg) y la velocidad (m/s). El programa calcula la energía cinética utilizando la fórmula fundamental de la mecánica clásica.
Ec = ½ · m · v²
Serial.parseFloat()operaciones aritméticasfloat
// Ejercicio 2 — Energía Cinética
// Fórmula: Ec = 0.5 * masa * velocidad^2
float masa;
float velocidad;
float energiaCinetica;
void setup() {
Serial.begin(9600);
Serial.println("=== Calculadora de Energía Cinética ===");
Serial.println("Introduce la masa en kilogramos:");
while (Serial.available() == 0) {}
masa = Serial.parseFloat();
Serial.println("Introduce la velocidad en m/s:");
while (Serial.available() == 0) {}
velocidad = Serial.parseFloat();
// Cálculo secuencial
energiaCinetica = 0.5 * masa * velocidad * velocidad;
Serial.print("Energía cinética: ");
Serial.print(energiaCinetica);
Serial.println(" Julios (J)");
}
void loop() {}
Monitor Serie — ejemplo de salida
=== Calculadora de Energía Cinética ===
Introduce la masa en kilogramos: 70
Introduce la velocidad en m/s: 5
Energía cinética: 875.00 Julios (J)
Selección
Ejercicios 3–6 · Estructura condicional
03
Par o Impar — if / else básico
Nivel 1 · Una condición, dos caminos
El ejemplo más simple de selección: el usuario introduce un número entero y el programa determina si es par o impar usando el operador módulo %.
if / elseoperador %intuna condición
// Ejercicio 3 — Par o Impar (if / else)
int numero;
void setup() {
Serial.begin(9600);
Serial.println("Introduce un número entero:");
while (Serial.available() == 0) {}
numero = Serial.parseInt();
// Selección simple: una condición, dos ramas
if (numero % 2 == 0) {
Serial.println("El número es PAR.");
} else {
Serial.println("El número es IMPAR.");
}
}
void loop() {}
04
Clasificación de Temperatura — if / else if / else
Nivel 2 · Tres rangos excluyentes
Se introduce una temperatura en grados Celsius. El programa clasifica el clima en frío (<10°C), templado (10–25°C) o caluroso (>25°C) encadenando tres condiciones.
if / else if / elseoperadores < >tres ramas
// Ejercicio 4 — Clasificar Temperatura (if / else if / else)
float temperatura;
void setup() {
Serial.begin(9600);
Serial.println("Introduce la temperatura en °C:");
while (Serial.available() == 0) {}
temperatura = Serial.parseFloat();
if (temperatura < 10) {
Serial.println("Clima FRIO. Abrígate bien.");
} else if (temperatura <= 25) {
Serial.println("Clima TEMPLADO. Temperatura agradable.");
} else {
Serial.println("Clima CALUROSO. Mantente hidratado.");
}
}
void loop() {}
05
Calificación Escolar — múltiples else if
Nivel 3 · Cinco tramos con operador &&
Se introduce una nota numérica (0–10). El programa asigna la calificación cualitativa usando cinco ramas encadenadas con else if.
if / else if / elseoperador &&cinco ramasvalidación
// Ejercicio 5 — Calificación Escolar (múltiples else if)
float nota;
void setup() {
Serial.begin(9600);
Serial.println("Introduce tu nota (0-10):");
while (Serial.available() == 0) {}
nota = Serial.parseFloat();
// Validar rango antes de clasificar
if (nota < 0 || nota > 10) {
Serial.println("Nota fuera de rango (0-10).");
} else if (nota >= 9) {
Serial.println("Sobresaliente. ¡Excelente trabajo!");
} else if (nota >= 7) {
Serial.println("Notable. Muy buen resultado.");
} else if (nota >= 5) {
Serial.println("Aprobado. Puedes mejorar.");
} else {
Serial.println("Suspenso. Hay que estudiar más.");
}
}
void loop() {}
06
Calculadora con Operador — condiciones compuestas
Nivel 4 · Selección sobre dos variables + operador &&
El usuario introduce dos números y un operador (+ - * /). El programa ejecuta la operación correcta mediante múltiples condiciones, incluyendo la gestión de la división por cero.
if / else if / elsecondición compuesta &&charvalidación de entrada
// Ejercicio 6 — Mini calculadora con selección compuesta
float num1, num2;
char operador;
void setup() {
Serial.begin(9600);
Serial.println("Primer número:");
while (Serial.available() == 0) {}
num1 = Serial.parseFloat();
Serial.println("Operador (+, -, *, /):");
while (Serial.available() == 0) {}
operador = Serial.read();
Serial.read(); // limpiar el '\n' del buffer
Serial.println("Segundo número:");
while (Serial.available() == 0) {}
num2 = Serial.parseFloat();
// Selección múltiple con condición compuesta en división
if (operador == '+') {
Serial.println(num1 + num2);
} else if (operador == '-') {
Serial.println(num1 - num2);
} else if (operador == '*') {
Serial.println(num1 * num2);
} else if (operador == '/' && num2 != 0) {
Serial.println(num1 / num2);
} else if (operador == '/' && num2 == 0) {
Serial.println("Error: division por cero.");
} else {
Serial.println("Operador no reconocido.");
}
}
void loop() {}
Monitor Serie — ejemplo
Primer número: 15
Operador: /
Segundo número: 0
Error: division por cero.
Iteración
Ejercicios 7–10 · Estructura repetitiva
07
Tabla de Multiplicar — bucle for
Iteración con for · número de repeticiones conocido
El usuario indica un número y el programa muestra su tabla de multiplicar completa (×1 hasta ×10) usando un bucle for. Ideal para comprender el inicio, condición y actualización del iterador.
for (init; cond; paso)variable de control i10 iteraciones
// Ejercicio 7 — Tabla de Multiplicar (bucle for)
int numero;
void setup() {
Serial.begin(9600);
Serial.println("¿De qué número quieres la tabla?");
while (Serial.available() == 0) {}
numero = Serial.parseInt();
Serial.print("--- Tabla del ");
Serial.print(numero);
Serial.println(" ---");
// Bucle for: i empieza en 1, sube hasta 10
for (int i = 1; i <= 10; i++) {
Serial.print(numero);
Serial.print(" x ");
Serial.print(i);
Serial.print(" = ");
Serial.println(numero * i);
}
}
void loop() {}
Monitor Serie — ejemplo (número: 7)
— Tabla del 7 —
7 x 1 = 7 | 7 x 2 = 14 | 7 x 3 = 21 | … | 7 x 10 = 70
08
Suma Acumulada 1…N — bucle for con acumulador
Iteración con for · variable acumuladora
El usuario introduce un número N. El programa calcula la suma de todos los enteros de 1 a N usando un for y una variable acumuladora. Concepto clave: la variable suma se inicializa a 0 antes del bucle.
foracumulador suma += ilong int
// Ejercicio 8 — Suma 1+2+...+N (for con acumulador)
int n;
long suma = 0; // acumulador, siempre iniciar a 0
void setup() {
Serial.begin(9600);
Serial.println("Introduce el valor de N:");
while (Serial.available() == 0) {}
n = Serial.parseInt();
// Bucle for: suma cada número de 1 a n
for (int i = 1; i <= n; i++) {
suma += i; // equivale a: suma = suma + i
}
Serial.print("La suma de 1 a ");
Serial.print(n);
Serial.print(" es: ");
Serial.println(suma);
}
void loop() {}
Monitor Serie — ejemplo (N = 100)
La suma de 1 a 100 es: 5050
09
Cuenta Atrás — bucle while
Iteración con while · condición de parada
El usuario introduce un número de inicio. El programa cuenta hacia atrás desde ese número hasta 0 mostrando cada valor, y termina con un mensaje de “¡Despegue!”. El while se detiene cuando la condición deja de cumplirse.
while (condición)decremento contador–condición de parada
// Ejercicio 9 — Cuenta Atrás (bucle while)
int contador;
void setup() {
Serial.begin(9600);
Serial.println("Inicio de la cuenta atrás desde:");
while (Serial.available() == 0) {}
contador = Serial.parseInt();
// Bucle while: se repite MIENTRAS contador sea mayor que 0
while (contador > 0) {
Serial.println(contador);
contador--; // actualización: decrementar
delay(500); // pequeña pausa de medio segundo
}
Serial.println("¡Despegue! 🚀");
}
void loop() {}
Monitor Serie — ejemplo (inicio: 5)
5 → 4 → 3 → 2 → 1 → ¡Despegue! 🚀
10
Adivina el Número — while + selección combinados
while + if / else · bucle de intento indefinido
El ejercicio más completo: combina while con if / else if / else. El programa elige un número fijo y el usuario intenta adivinarlo. En cada intento recibe una pista (más alto / más bajo) y el bucle solo termina cuando acierta. Aquí el while no tiene un número fijo de vueltas: depende del usuario.
whileif / else if / elseestructuras combinadasbool flag
// Ejercicio 10 — Adivina el Número (while + if/else combinados)
const int SECRETO = 42; // número a adivinar
int intento;
bool adivinado = false;
int intentos = 0;
void setup() {
Serial.begin(9600);
Serial.println("¡Adivina el número (1-100)!");
// El while continúa MIENTRAS no se haya adivinado
while (!adivinado) {
Serial.println("Introduce tu intento:");
while (Serial.available() == 0) {}
intento = Serial.parseInt();
intentos++;
// Selección dentro del bucle
if (intento == SECRETO) {
Serial.print("¡CORRECTO en ");
Serial.print(intentos);
Serial.println(" intentos!");
adivinado = true; // cambia la condición → salir del while
} else if (intento < SECRETO) {
Serial.println("Demasiado bajo. Prueba más alto.");
} else {
Serial.println("Demasiado alto. Prueba más bajo.");
}
}
}
void loop() {}
Monitor Serie — ejemplo de sesión
¡Adivina el número (1-100)!
Intento: 50 → Demasiado alto.
Intento: 25 → Demasiado bajo.
Intento: 42 → ¡CORRECTO en 3 intentos!
10 ejercicios · C++ Arduino IDE · Secuencia (1–2) · Selección (3–6) · Iteración (7–10)
Etiqueta:c++, PROGRAMACIÓN
