Modularidad
Ejercicio 1
Tendrás tres archivos:
� [Link], operaciones.h y [Link].
� Archivo 1: operaciones.h
� Explicación línea por línea:
Línea Código Explicación
#ifndef Verifica si no se ha definido todavía el iden�ficador OPERACIONES_H.
1
OPERACIONES_H Esto evita incluir el mismo archivo más de una vez.
#define Define el iden�ficador OPERACIONES_H, marcando que este archivo
2
OPERACIONES_H ya fue incluido.
Declaración de la función sumar. Informa al compilador que existe
int sumar(int a, int
4 una función llamada sumar que recibe dos enteros y devuelve un
b);
entero.
6 #endif Cierra el bloque del “include guard” (protección de inclusión múl�ple).
� Este archivo no �ene código ejecutable, solo declara funciones para que otros archivos las
conozcan.
� Archivo 2: [Link]
� Explicación línea por línea:
Línea Código Explicación
#include Incluye el archivo de cabecera con la declaración de la función sumar.
1
"operaciones.h" Así, el compilador sabe que esta función pertenece a este módulo.
int sumar(int a, int
3 Aquí definimos la función sumar. Recibe dos números enteros a y b.
b) {
4 return a + b; Devuelve la suma de a y b. Esta es la lógica central de la función.
5 } Cierra la definición de la función.
� Este archivo implementa la lógica de la función.
Cada vez que [Link] llame a sumar(a, b), el programa ejecutará este código.
� Archivo 3: [Link]
� Explicación detallada:
Línea Código Explicación
1 #include <iostream> Permite usar entrada/salida estándar (cin, cout).
Importa la declaración de sumar() desde el
2 #include "operaciones.h"
archivo de cabecera.
3 using namespace std; Evita escribir std::cout o std::cin en cada línea.
5 int main() { Punto de inicio del programa.
Declara tres variables enteras para almacenar los
6 int a, b, resultado;
números y el resultado.
8 cout << "Ingrese el primer numero: "; Muestra un mensaje en pantalla.
Espera que el usuario escriba un número y lo
9 cin >> a;
guarda en a.
Línea Código Explicación
11 cout << "Ingrese el segundo numero: "; Pide el segundo número.
12 cin >> b; Guarda el segundo número en b.
Llama a la función sumar con los valores de a y b.
14 resultado = sumar(a, b);
El resultado se almacena en resultado.
cout << "La suma de " << a << " + " << b
16 Muestra el resultado de la suma.
<< " es: " << resultado << endl;
18 return 0; Indica que el programa terminó correctamente.
19 } Cierra el bloque principal.
� ¿Cómo funciona todo junto?
1. [Link] le pide al usuario dos números.
2. Llama a la función sumar(a, b) (que está definida en otro archivo).
3. [Link] realiza la suma y devuelve el resultado.
4. [Link] muestra el resultado por pantalla.
5. operaciones.h sirve como puente entre ambos archivos, para que el compilador sepa qué
funciones existen.
¿Quieres que te prepare la versión ampliada con un menú de operaciones (suma, resta,
mul�plicación, división) y te explique línea por línea igual que esto?
Ejercicio 2
Control de temperatura del motor
� Explicación línea por línea:
Línea Código Explicación
1 #include <iostream> Permite usar entrada/salida estándar.
2 #include "control.h" Incluye la declaración de la función.
void evaluarTemperatura(float
5 Define la función que analiza la temperatura.
temp)
6 if (temp < 70) Verifica si el motor está frío.
Muestra un mensaje en pantalla usando el espacio de
7 std::cout << ... << std::endl;
nombres explícito std::.
8–11 else if ... else Evalúa los otros dos casos (normal y sobrecalentado).
12 } Cierra la función.
� Explicación:
Línea Código Explicación
1 #include <iostream> Necesario para usar std::cout y std::cin.
Línea Código Explicación
2 #include "control.h" Conecta con el módulo de control.
4 int main() Inicia el programa.
5 float temperatura; Declara la variable para guardar el valor ingresado.
Muestra el mensaje solicitando la temperatura (sin
7 std::cout << ...
using namespace std;).
8 std::cin >> temperatura; Captura el valor ingresado.
10 evaluarTemperatura(temperatura); Llama a la función definida en otro archivo.
12 return 0; Finaliza correctamente el programa.
Ejemplo 3
Ejercicio: Control de mezcla aire–combus�ble (sensor O₂ + inyector)
Este ejemplo simula una pequeña parte del control del motor:
• El sensor de oxígeno (O₂) mide si la mezcla es rica o pobre.
• La ECU analiza ese valor.
• Y ajusta el tiempo de inyección (actuador inyector) para mantener una mezcla
ideal.
� Qué hace este programa paso a paso:
1. Lee el voltaje del sensor O₂ (0V → mezcla pobre, 1V → mezcla rica).
2. Calcula un valor de lambda (λ) para representar la mezcla:
o λ > 1 = mezcla pobre (falta combus�ble).
o λ < 1 = mezcla rica (sobra combus�ble).
o λ = 1 = mezcla ideal (estequiométrica).
3. La ECU (simulada en main) ajusta el �empo de inyección:
o Si la mezcla es pobre → agrega combus�ble (+0.2 ms).
o Si es rica → reduce combus�ble (–0.2 ms).
4. Imprime los resultados en consola.
� En una ECU real:
• El sensor O₂ manda un voltaje analógico que el microcontrolador lee con el ADC.
• La ECU calcula el valor de λ con una fórmula más precisa.
• Luego ajusta la duración del pulso de inyección controlando un MOSFET o transistor que
abre el inyector durante ese �empo.
• Todo esto ocurre en un bucle con�nuo, cada pocos milisegundos.
� Conceptos de C++ usados aquí:
Concepto Qué hace
Clases Definen los módulos: sensor y actuador.
Encapsulación Cada clase oculta sus detalles internos (solo expone funciones públicas).
Métodos Acciones de los objetos (leer, ajustar, calcular).
Objetos Instancias reales de las clases (sensorO2, inyector).
Arreglo y bucle for Simula varias lecturas del sensor O₂ en el �empo.