Calcular la edad exacta con PSeInt: un ejercicio fundamental de lógica de programación
Calcular la edad exacta con PSeInt: un ejercicio fundamental de lógica de programación
alcular la edad exacta de una persona, es decir, determinar cuántos años, meses y días han transcurrido desde su fecha de nacimiento hasta una fecha actual, es uno de los ejercicios más completos y formativos dentro de la programación estructurada. Este problema implica trabajar con fechas, tomar decisiones utilizando condicionales múltiples y anidadas, manejar excepciones como los años bisiestos y aplicar el concepto de “préstamo” cuando los días o meses actuales no permiten una resta directa.
En este artículo te explico cómo resolver este ejercicio en PSeInt, un entorno ideal para aprender algoritmos y pseudocódigo. La solución presentada utiliza únicamente condicionales (Si, SinoSi, Sino y Segun), sin funciones ni estructuras repetitivas, lo que lo convierte en un excelente entrenamiento para fortalecer el razonamiento lógico.
1. Entrada de datos y formato de fechas
El usuario debe ingresar dos fechas en formato estándar DD/MM/AAAA:
-
Fecha de nacimiento
-
Fecha actual o fecha de hoy (ingresada manualmente)
A partir de estas cadenas, se separan los valores del día, mes y año utilizando la función Subcadena, lo cual permite trabajar con cada componente como un número independiente.
2. Comprender por qué no siempre se puede restar directamente
Restar dos fechas no es tan simple como restar números. Existen dos situaciones donde la resta directa no funciona:
a) El día actual es menor que el día de nacimiento
Ejemplo: 04 < 27
En estos casos, debemos “pedir prestado” un mes para completar los días.
Esto implica:
-
Sumar al día actual los días que tiene el mes anterior
-
Restar 1 al mes actual
Aquí surge otro reto: no todos los meses tienen la misma cantidad de días, y febrero varía según el año sea bisiesto o no.
3. Determinar los días del mes anterior sin funciones
Como no usamos funciones ni bucles, utilizamos una estructura Segun, que actúa como un condicional múltiple para decidir cuántos días tiene el mes anterior.
Los meses pueden tener:
-
31 días: enero, marzo, mayo, julio, agosto, octubre, diciembre
-
30 días: abril, junio, septiembre, noviembre
-
28 o 29 días: febrero
-
29 si el año es bisiesto
-
28 si no lo es
-
El algoritmo incorpora la regla gregoriana de años bisiestos usando solo condicionales.
4. Préstamo de meses cuando el mes actual es menor que el mes de nacimiento
Ejemplo: 2 < 7
Aquí tampoco se puede restar directamente.
La lógica es similar:
-
Se suman 12 meses al mes actual (equivalente a pedir prestado un año)
-
Se resta 1 al año actual
Después del ajuste, ya es posible restar los meses sin problema.
5. Resta final de años
Una vez resueltos los préstamos de días y meses, la resta de años es directa. Esta parte es sencilla porque toda la corrección necesaria ya se hizo en los pasos anteriores.
6. Resultado final: edad exacta
El algoritmo muestra el resultado como:
-
Años transcurridos
-
Meses transcurridos después del último año cumplido
-
Días transcurridos después del último mes cumplido
Esto permite obtener la edad exacta con precisión, tal como se haría manualmente.
7. Por qué este ejercicio es tan valioso
Este tipo de problema entrena múltiples habilidades esenciales para cualquier estudiante de programación:
-
Comprender el manejo de fechas
-
Aplicar condicionales anidadas
-
Resolver casos especiales (meses menores, días menores, bisiestos)
-
Pensar paso a paso, simulando el cálculo humano
-
Desarrollar un algoritmo robusto sin funciones ni ciclos
Además, es una práctica ideal para exámenes y trabajos académicos donde se exige el uso estricto de estructuras condicionales.
Conclusión
Calcular la edad exacta en PSeInt es un desafío muy completo que combina teoría y práctica. Este algoritmo no solo te ayuda a comprender cómo funcionan las fechas y los años bisiestos, sino que también fortalece tu capacidad para diseñar soluciones con lógica clara, estructurada y totalmente fundamentada en condicionales.
Si estás aprendiendo PSeInt, este ejercicio te dará una base sólida para avanzar hacia problemas más complejos, como validación de fechas, calendarios, operaciones con horas o incluso proyectos más grandes donde intervienen estructuras de datos y ciclos.