AlfredoSC 26-10-2021, 18:09
Hola a todos:

Hace muchos años me encontré un libro lamado "La Ciencia del Biorritmo" y lo leí con gran interés. Me di cuenta que realmente no es una ciencia, sino una buena teoría, quizá una buena hipótesis. Con muchas pruebas que el autor asegura haber realizado, encontró que la vida del ser humano se rige por 3 estados: Físico, Emocional e Intelectual.

Cada uno de esos estados tiene un periodo de días: 23 para el Físico, 28 para el Emocional y 33 para el Intelectual. El cálculo consiste en calcular el número de días totales vividos de una persona, hasta la fecha actual ( o la fecha de la que se quiera conocer el biorritomo), lo cual se hace multiplicando 365.25 por la edad y luego sumando o restando los días del mes o meses que falten por transcurrir o los transcurridos.

Con los días vividos (DV) calculados se procede a dividir esa cantidad por 23, por 28 y por 33 y los resultados obtenidos se descarta la parte entera, volviendo a multiplicar por 23, 28 o 33 las partes fraccionarias resultantes.

Estos resultados ofrecerán cantidades entre 0 y 23, entre 0 y 28 y entre 0 y 33. Según la teoría del Biorritmo, un 0 equivale a un día crítico, mientras que dias subsecuentes se consideran de recuperación, hasta que nuevamente se encuentra otro día 0.

La teoría se basa en que el autor tomó las fechas de nacimiento de varias celebridades, sobre todo aquellas que fallecieron por accidentes, enfermedades graves, etc. y que calculando su biorritmo al día de su muerte se comprobó que sucedió en uno, dos y hasta tres días críticos.

Aquí pongo un programa en Python que hace todos esos engorrosos cálculos, que además puede servir de ejemplo para quienes van incursionando en Python. (También lo he elabordo en Gambas3):

Saludos a todos:
Archivos adjuntos
.zip
biorritmo.zip (Tamaño: 1.88 KB Descargas: 8)
Shell 25-10-2021, 20:31
Buenas!.

Estoy realizando un ejercicio con JavaScript en el que se hace uso de este bucle.
Aunque Gambas carece de el, se puede emular con Do Loop Until

El problema que me encontraba es el planteamiento del ejercicio que puede llevar a confusión.
Por ejemplo, dice el enumciado.
Cita:Para solicitar el nombre: repite la petición y no continúa si se introduce un número.

Es que eso de no continua si se introduce un número me quede a cuadros.

En JavaScript es algo como esto:

Código:
<script>            
           var nombre;
            do {
                // La segunda cadena se mostrará dentro de la casilla donde se introduce los datos
                nombre = prompt('Ingrese su nombre','Escribir aquí su nombre');
            } while(!isNaN(nombre));
</script>

La instrucción isNaN, ¿ es número ?. Como está negada se cumpliría la condición cuando no lo sea, una cadena por ejemplo
De ahí al enunciado. Suena raro.

En Gambas es algo como esto:

Código:
Public Sub Ejemplo5()

  Dim nombre As Variant

  Do
    Print ("Ingrese su nombre")
    Input nombre
    'Cuando es un número. La función da True y not la invierte haciendola False
    'Cuando es un caracter o cadena de caracteres. La función da False y not la invierte haciendola True.
  Loop Until Not IsNumber(nombre) 'Cuando es True Termina el bucle

End

La idea es hacerlo con este tipo de bucle. Aprender a usar el bucle.

Otros ejemplos:

En este caso no se cumple
Código:
Public Sub EjemploBucle2()

  Dim x As Integer = 4

  Do
    Print "x vale " & x
    x += 1
  Loop Until Not (x <= 10)

End

En este si, con ayuda del NOT.

Código:
Public Sub EjemploBucle2()

  Dim x As Integer = 4

  Do
    Print "x vale " & x
    x += 1
  Loop Until Not (x <= 10)

End

Os propongo un ejercicio. ¿ Es posible en el "Until" sin un if (claro) hacer la comprobación de esta condición que incluyo en el cuerpo del bucle ?.

Código:
Public Sub EjemploBucle3()

  Dim edad As Variant
  Dim condicion As Boolean

  Do
    Print ("Ingrese su edad")
    Input edad
    'Debe ser un número y encontrarse entre 1 y 105 años
    If IsNumber(edad) And If (CInt(edad) >= 1 And CInt(edad) < 105) Then
      condicion = True
    Else
      condicion = False
    Endif

  Loop Until condicion

End

Creo que no. El problema es que Cint va a intentar convertir una cadena de letras, que eso no es posible.

Saludos
AlfredoSC 25-10-2021, 14:15
Existen varios vídeos muy interesantes sobre la evolución de Lenguajes de Programación a través de los años. He aquí uno de ellos:

https://www.youtube.com/watch?v=M0vBoBqqjr0
Páginas (553):    1 351 352 353 354 355 553   
Bienvenido, Invitado
Tienes que registrarte para poder participar en nuestro foro.
Recordarme?
Miembros: 280
Último miembro: herbert
Temas del foro: 1,707
Mensajes del foro: 8,854
Últimos temas
controlar el Activado/Des...
Foro: General
Último mensaje por: guizans, Hace 4 horas
Respuestas: 3 - Vistas: 93
Como conseguir poderes de...
Foro: Videotutoriales
Último mensaje por: Shordi, Ayer, 13:24
Respuestas: 0 - Vistas: 34
Cómo conseguir poderes de...
Foro: Videotutoriales
Último mensaje por: Shordi, Ayer, 13:21
Respuestas: 0 - Vistas: 27
Error de sistema "Demasia...
Foro: General
Último mensaje por: Shordi, 11-05-2025, 19:42
Respuestas: 3 - Vistas: 105
Powered By MyBB, © 2002-2025 MyBB Group.
Made with by Curves UI.