Instituto Politécnico Nacional
Unidad Profesional Interdisciplinaria en Ingeniería y Tecnologías Avanzadas
—————————————————————————————
Programación Avanzada
Profesor: Dra. Obdulia Pichardo Lagunas
Ingeniería en Energía
Grupo: 3EM1
Integrantes:
Desales Gonzales Aldo Fernando
Hernández Sánchez Luis Alberto
Pulido Santillanes Jehús
Tovar Jimenes Francisco Javier
Números de boleta:
2024640053
2024640147
2024640273
2024640048
Proyecto Final
Introducción:
El consumo energético, en particular el de la energía eléctrica, es un indicador
fundamental del desarrollo económico, social y tecnológico de un país. En el caso de
México, este consumo refleja la diversidad de su matriz energética y las variaciones en las
necesidades de los diferentes sectores y regiones del país. Este proyecto tiene como
objetivo principal desarrollar un programa en lenguaje C que permita analizar, procesar y
visualizar datos relacionados con el consumo de energía eléctrica en México durante los
últimos once años, proporcionando información clave para comprender su evolución
energética.
El análisis se enfoca en la energía eléctrica debido a su relevancia como motor principal
de actividades industriales, comerciales, residenciales y agrícolas. Además, este trabajo
considera las diferencias en el consumo entre las entidades federativas, permitiendo
identificar patrones regionales y detectar áreas con mayor o menor distribución
energética.
Por medio de este proyecto, se busca no solo abordar aspectos técnicos relacionados con
la programación avanzada, como el manejo de estructuras de datos, punteros y
generación de informes, sino también generar un conocimiento más profundo sobre el
panorama energético nacional. De esta manera, se contribuirá al entendimiento de los
desafíos y oportunidades para la optimización y sostenibilidad del consumo energético.
Antecedentes y objetivos:
La historia de la energía eléctrica en México se remonta a finales del siglo XIX. En 1879,
se instaló el primer sistema de iluminación pública en León, Guanajuato, utilizando
energía generada por turbinas hidráulicas. Este evento marcó el inicio del uso de la
electricidad en el país. Posteriormente, en 1881, la Ciudad de México introdujo un sistema
de iluminación eléctrica en la Plaza Mayor (hoy Zócalo), impulsando el desarrollo de
infraestructura eléctrica. Durante el siglo XX, el país experimentó un crecimiento sostenido
en la generación y distribución de energía eléctrica. Algunos hitos importantes incluyen: 1.
Nacionalización de la industria eléctrica (1960): En un esfuerzo por garantizar el acceso a
la energía para toda la población, el presidente Adolfo López Mateos nacionalizó las
empresas eléctricas privadas, creando la Comisión Federal. de Electricidad (CFE) como
un organismo público.
En resumen, el consumo de energía eléctrica en México ha evolucionado de un modelo
básico y urbano a uno diversificado y sostenible, impulsado por políticas públicas,
reformas estructurales y el avance de tecnologías energéticas.
Desarrollo:
Realizamos una investigación sobre el consumo de energía eléctrica en cada estado de la
República Mexicana durante los últimos 11 años. Una vez recopilados todos los datos,
desarrollaremos un programa en Visual Studio, utilizando el lenguaje de programación C.
Este programa organizará y procesará la información, generando un archivo en formato
TXT que será almacenado en la memoria del dispositivo, facilitando su análisis y consulta
posterior.
A continuación, se muestra todos los datos recolectados acerca del consumo de energía
eléctrica.
Consumo general del año 2012 al 2022 medido en MWh:
Consumo energético por identidad federativa del año 2012 al 2022 medido en GWh:
Estado 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022
Aguascalientes 2,468.5 2,428.5 2,628.6 2,709.4 2,752.0 1,438.2 1,990 2,290 2,630 2,930 18,749
Baja 9,681.5 9,426.2 9,815.6 10,011.8 10,457.7 4,721.3 3,320 3,500 4,240 6,000 16,914
California
Baja California 2,023.9 2,059.3 2,116.5 2,201.7 2,342.5 1,009.6 1,735 1,730 1,950 2,970 13,633
Sur
Campeche 1,223.3 1,258.4 1,299.3 1,340.8 1,388.2 642.9 1,330 1,570 1,820 1,900 13,053
Coahuila 10,190.0 10,455.7 10,551.6 10,462.9 10,211.9 4,873.7 5,950 6,600 8,200 9,500 12,380
Colima 1,663.0 1,735.6 1,759.6 10,462.9 1,842.1 947.6 1,730 1,630 1,820 1,920 11,877
Chiapas 2,771.6 2,824.6 2,912.4 3,054.6 3,256.5 1,539.6 2,900 2,600 2,650 2,850 11,519
Chihuahua 10,744.0 10,836.1 11,283.6 11,786.5 12,197.4 6,084.4 3,920 6,300 7,040 7,900 10,496
Ciudad de 14,129.2 14,563.0 14,300.6 14,464.3 14,500.0 6,873.9 4,900 4,880 6,600 7,120 9,928
México
Durango 2,912.5 2,918.6 3,041.2 3,059.6 3,300.2 1,545.1 2,060 1,980 2,000 2,000 9,453
Guanajuato 10,609.4 10,506.0 10,948.6 11,370.0 11,943.1 6,377.5 3,860 4,150 4,150 4,700 8,934
Guerrero 2,793.9 2,779.4 2,832.6 2,952.1 3,030.5 1,475.7 2,720 2,600 2,700 2,700 7,493
Hidalgo 3,682.0 3,663.0 3,554.3 3,848.7 3,983.1 1,937.5 2,970 2,820 2,820 2,700 7,216
Jalisco 12,276.1 12,265.8 12,288.1 12,886.3 13,370.6 6,763.3 5,640 6,200 5,600 8,000 5,462
Estado de 17,497.5 17,757.7 17,959.8 18,337.7 18,428.5 8,950.5 6,660 6,700 8,000 9,050 5,089
México
Michoacán 7,345.1 7,341.0 7,022.3 6,623.2 6,802.1 3,922.9 4,110 4,050 3,920 4,800 5,039
Morelos 2,561.2 2,597.3 2,636.6 2,566.1 2,725.9 1,429.1 1,510 2,200 2,620 1,950 4,991
Nayarit 1,354.3 1,388.5 1,439.1 1,534.1 1,582.2 716.7 1,345 1,420 1,620 1,850 3,813
Nuevo León 17,967.6 16,926.5 17,500.3 17,864.1 18,609.5 7,996.1 5,160 5,300 7,050 8,500 3,592
Oaxaca 2,544.2 2,516.8 2,572.7 2,653.8 2,698.9 1,331.0 2,050 2,450 2,630 3,000 3,548
Puebla 7,501.5 7,524.1 7,566.8 7,592.8 7,625.9 3,931.4 3,940 4,150 3,500 4,300 3,367
Querétaro 4,553.1 4,715.0 4,812.8 4,923.9 5,162.3 2,636.1 1,840 1,540 1,960 2,900 3,330
Quintana Roo 3,881.1 4,034.6 4,219.0 4,504.5 4,764.7 2,261.8 860 1,420 1,620 1,920 3,198
San Luis 5,790.5 5,774.6 5,848.8 5,799.9 6,297.4 2,902.4 1,630 2,700 3,680 3,400 3,011
Potosí
Sinaloa 5,903.1 6,001.4 6,370.0 6,556.8 6,836.4 2,661.9 2,990 4,250 3,400 4,220 2,859
Sonora 11,049.0 11,032.6 9,878.1 9,973.2 10,253.7 4,177.9 3,280 4,550 4,450 5,650 2,832
Tabasco 3,302.0 3,342.1 3,401.3 3,452.6 3,702.7 1,586.5 960 1,620 1,620 1,950 2,447
Tamaulipas 3,302.0 8,726.4 8,709.3 8,955.4 9,003.4 3,970.6 2,630 4,650 3,400 4,700 2,355
Tlaxcala 1,811.8 1,814.3 1,836.2 1,848.1 1,911.0 963.9 510 1,380 1,600 1,920 2,126
Veracruz 11,247.7 10,870.7 10,774.7 11,119.7 11,142.2 4,728.5 3,970 5,250 5,720 7,600 1,814
Yucatán 3,077.2 3,173.0 3,240.6 3,494.0 3,691.1 1,758.3 600 1,620 1,620 1,950 1,542
Zacatecas 3,017.3 2,873.2 2,893.9 2,465.1 2,258.6 1,206.8 1,255 2,180 2,360 2,400 1,366
Funcionamiento del programa:
El programa analiza datos de consumo energético de diferentes estados a lo largo
de 11 años (2012-2022) y genera un archivo de reporte con estadísticas clave. Está
diseñado para leer los datos desde un archivo de texto ([Link]),
procesarlos, y generar resultados útiles como promedios, máximos, mínimos,
incrementos, y estados con consumos extremos.
Flujo de ejecución:
• Inicio (main):
-Se declara un arreglo de estructuras llamado estados para almacenar los datos de
cada estado.
-Se inicializa un contador (totalEstados) para llevar el registro del número de
estados procesados.
-Se llama a la función leerArchivo para cargar los datos desde el archivo de entrada.
-Posteriormente, se llama a generarReporte para realizar los análisis y escribir los
resultados en un archivo de salida ([Link]).
• Lectura de Datos (leerArchivo):
El archivo de entrada se abre en modo lectura.
Cada línea del archivo, que sigue el formato "Estado: año1 año2 ... año5", se
procesa con la función scanf, extrayendo el nombre del estado y sus consumos
anuales.
Los datos válidos se almacenan en el arreglo estados. Si una línea no cumple el
formato, se muestra un error.
Si se alcanza el límite de estados definido (MAX_ESTADOS), la lectura se detiene.
• Cálculo de Estadísticas (calcularEstadisticas):
Para cada estado, se calculan:
Promedio de consumo: Sumando todos los valores y dividiendo entre el número de
años.
Consumo máximo y mínimo: Usando las funciones fmax y fmin.
• Identificación de Extremos (identificarMayorMenor):
Se calcula el consumo total de cada estado sumando sus valores anuales.
Se compara el consumo total de cada estado con los máximos y mínimos globales
para determinar los estados con mayor y menor consumo.
Los resultados se incluyen en el reporte.
• Cálculo de Incrementos (calcularIncrementos):
Se calcula la diferencia entre el consumo de 2022 (último año) y el de 2012 (primer
año) para cada estado.
Se indica si el consumo aumentó o disminuyó durante el período, y estos valores se
escriben en el reporte.
• Generación del Reporte (generarReporte):
Abre un archivo de salida ([Link]) en modo escritura.
Coordina las funciones anteriores (calcularEstadisticas, identificarMayorMenor,
calcularIncrementos) para generar un reporte completo con los resultados.
Cierra el archivo tras escribir todos los datos.
Ejemplo del funcionamiento del código:
Segundo código:
Estructura de Datos
struct ConsumoEnergia {
char tipo[50]; // Nombre del tipo de energía (Carbón, Solar, etc.)
double consumo[MAX_ANIOS]; // Valores de consumo para cada año};
Se define una estructura ConsumoEnergia para almacenar el tipo de energía y un arreglo
de 11 valores (uno por año).
El campo tipo almacena el nombre de la fuente de energía.
El campo consumo es un arreglo que contiene los datos numéricos de consumo
energético de los últimos 11 años.
Declaración de Constantes
#define MAX_TIPOS 20
#define MAX_ANIOS 11
MAX_TIPOS limita la cantidad máxima de tipos de energía que el programa puede
procesar. Esto evita problemas si el archivo tiene más datos de los que el programa
puede manejar.
MAX_ANIOS fija el número de años que se almacenarán para cada tipo de energía.
Apertura del Archivo
FILE *archivo = fopen(nombreArchivo, "r");
if (!archivo) {
printf("Error al abrir el archivo %s\n", nombreArchivo);
exit(1);
}
Se intenta abrir el archivo especificado en modo lectura ("r").
Si no se puede abrir, muestra un mensaje de error y termina el programa con exit(1).
Lectura Línea por Línea
while (fgets(linea, sizeof(linea), archivo)) {
lineaActual++;
Se lee el archivo línea por línea con fgets.
Cada línea leída se almacena en el arreglo linea.
El contador lineaActual ayuda a rastrear el número de línea actual para facilitar el manejo
de errores.
Validación
if (strstr(linea, ":")) {
Se verifica que la línea contenga el carácter :. Esto asegura que la línea esté en el
formato esperado (tipo : valor1 valor2 ... valor11).
Si falta :, se marca la línea como inválida.
Procesamiento de Datos
int valoresLeidos = sscanf(linea, "%[^:] : %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf",
tipos[*totalTipos].tipo,
&tipos[*totalTipos].consumo[0],
&tipos[*totalTipos].consumo[1],
&tipos[*totalTipos].consumo[2],
&tipos[*totalTipos].consumo[3],
&tipos[*totalTipos].consumo[4],
&tipos[*totalTipos].consumo[5],
&tipos[*totalTipos].consumo[6],
&tipos[*totalTipos].consumo[7],
&tipos[*totalTipos].consumo[8],
&tipos[*totalTipos].consumo[9],
&tipos[*totalTipos].consumo[10]);
sscanf:
Divide la línea en diferentes partes:
Lee todo el texto antes del carácter : y lo guarda en tipo.
Lee los siguientes 11 valores numéricos y los guarda en el arreglo consumo.
Formato de %[^:]: Esto indica "leer cualquier cosa excepto :".
Validación del Resultado
if (valoresLeidos == 12) {
(*totalTipos)++;
} else {
printf("Error en el formato de la línea %d: %s\n", lineaActual, linea);
}
Si sscanf no lee exactamente 12 valores indica un error en el formato de la línea.
Reporte de Errores
printf("Formato inválido en la línea %d (falta ':'): %s\n", lineaActual, linea);
Si una línea no contiene : o no tiene el formato esperado, se imprime un mensaje
indicando el número de línea y el contenido de la línea.
Finalización
fclose(archivo);
Se cierra el archivo después de leerlo para liberar recursos
Ejemplo del funcionamiento del código:
Referencias:
G. de México, (2014), Comparaciones Internacionales de Variables e Indicadores
Seleccionados - Emisiones de bióxido de carbono. México Prospero.
[Link]
prospero/resource/4334c349-7d80-42b9-8711-33a1857959ff?inner_span=True
G. de México, (2017), Estadísticas por identidad. México Prospero.
[Link]
prospero/resource/7fa178cf-b734-4a70-bbf9-26b96994e968?inner_span=True
G. de México, (2018), Fuentes de energía en México. SERMANAT.
[Link]
080/approot/dgeia_mce/html/RECUADROS_INT_GLOS/D2_ENERGIA/D2_R_ENERGIA0
1_01.htm
M. Jurídico, (2020), Reporte avance de energías limpias. SENER.
[Link]
_Marco_Juri_dico_Reporte_Avance_de_Energi_as_Limpias_WEB.pdf
G. de México, (2022), Planes y consumo de energía. CONAHCYT.
[Link]
S. IMCO, (2022), Se estanca el crecimiento de las energías eólica y solar fotovoltaica en
México. IMCO. [Link]
solar-fotovoltaica-en-mexico/