Siguiendo esta serie sobre el lenguaje Oberon traemos más ejemplos y comparativas con otros lenguajes como Fortran y Pascal, sus lenguajes contemporáneos.
Ejemplo. Calcular el IMC (Índice de Masa Corporal). Siguiendo esta fórmula:
imc = peso / (talla* talla)
calculo_imc.obn
MODULE calculo_imc; IMPORT In, Out; VAR peso, talla, imc: REAL; cad: ARRAY 100 OF CHAR; BEGIN (* Solicitar el peso *) Out.String("Tu peso: "); In.Real(peso); (* Solicitar la talla *) Out.String("Tu talla: "); In.Real(talla); (* Calcular el IMC *) imc := peso / (talla * talla); (* Evaluar las categorías del IMC *) IF imc < 16.00 THEN cad := "Infrapeso: Delgadez Severa" ELSIF (imc >= 16.00) & (imc <= 16.99) THEN cad := "Infrapeso: Delgadez Moderada" ELSIF (imc >= 17.00) & (imc <= 18.49) THEN cad := "Infrapeso: Delgadez Aceptable" ELSIF (imc >= 18.50) & (imc <= 24.99) THEN cad := "Peso Normal" ELSIF (imc >= 25.00) & (imc <= 29.99) THEN cad := "Sobrepeso" ELSIF (imc >= 30.00) & (imc <= 34.99) THEN cad := "Obeso: Tipo I" ELSIF (imc >= 35.00) & (imc <= 40.00) THEN cad := "Obeso: Tipo II" ELSE cad := "No existe clasificación" END; (* Imprimir los resultados *) Out.String("Tu IMC es: "); Out.Real(imc, 2); (* Imprimir el IMC con 2 decimales *) Out.Ln; Out.String("Tu diagnóstico es: "); Out.String(cad); Out.Ln; END calculo_imc.
En Fortran quedaría de la siguiente forma:
imc_calculator.f90
program imc_calculator implicit none real :: peso, talla, imc character(len=50) :: cad ! Solicitar el peso print *, 'Tu peso: ' read *, peso ! Solicitar la talla print *, 'Tu talla: ' read *, talla ! Calcular el IMC imc = peso / (talla * talla) ! Evaluar las categorías del IMC if (imc < 16.0) then cad = 'Infrapeso: Delgadez Severa' else if (imc >= 16.0 .and. imc <= 16.99) then cad = 'Infrapeso: Delgadez Moderada' else if (imc >= 17.0 .and. imc <= 18.49) then cad = 'Infrapeso: Delgadez Aceptable' else if (imc >= 18.5 .and. imc <= 24.99) then cad = 'Peso Normal' else if (imc >= 25.0 .and. imc <= 29.99) then cad = 'Sobrepeso' else if (imc >= 30.0 .and. imc <= 34.99) then cad = 'Obeso: Tipo I' else if (imc >= 35.0 .and. imc <= 40.0) then cad = 'Obeso: Tipo II' else cad = 'No existe clasificación' end if ! Imprimir los resultados print *, 'Tu IMC es: ', imc print *, 'Tu diagnóstico es: ', trim(cad) end program imc_calculator
En Pascal sería así:
imc_calculator.pas
program IMC_Calculator; var peso, talla, imc: real; cad: string; begin (* Solicitar el peso *) writeln('Tu peso: '); readln(peso); (* Solicitar la talla *) writeln('Tu talla: '); readln(talla); (* Calcular el IMC *) imc := peso / (talla * talla); (* Evaluar las categorías del IMC *) if imc < 16.00 then cad := 'Infrapeso: Delgadez Severa' else if (imc >= 16.00) and (imc <= 16.99) then cad := 'Infrapeso: Delgadez Moderada' else if (imc >= 17.00) and (imc <= 18.49) then cad := 'Infrapeso: Delgadez Aceptable' else if (imc >= 18.50) and (imc <= 24.99) then cad := 'Peso Normal' else if (imc >= 25.00) and (imc <= 29.99) then cad := 'Sobrepeso' else if (imc >= 30.00) and (imc <= 34.99) then cad := 'Obeso: Tipo I' else if (imc >= 35.00) and (imc <= 40.00) then cad := 'Obeso: Tipo II' else cad := 'No existe clasificación'; (* Imprimir los resultados *) writeln('Tu IMC es: ', imc:0:2); (* Imprimir con 2 decimales *) writeln('Tu diagnóstico es: ', cad); end.
Viendo con detalle, los tres lenguajes lucen similares. Sobre todo Pascal y Fortran.
Para compilar y ejecutar el programa de Oberon:
obnc -o calculo_imc.exe -v -x calculo_imc..obn calculo_imc.exe
Para compilar y ejecutar el programa de Fortran:
gfortran imc_calculator.f90 -o imc_calculator.exe imc_calculator.exe
Para compilar y ejecutar el programa en Pascal:
fpc imc_calculator.pas imc_calculator.exe
Rendimiento por programa
Oberon | Fortran | Pascal 05.70ms | 04.49ms | 04.71ms
Para medir el tiempo se uso este BAT:
ejecucion.bat
@echo off echo %time% < nul AQUI DEBE IR EL PROGRAMA .EXE echo %time% < nul
Es todo por el momento. ¡Feliz código!
Enlaces:
https://fortran-lang.org/es/indexhttps://www.freepascal.org/
https://oberon.org/en
https://oberon-lang.github.io/
https://oberon07.com/compilers.xhtml
Comentarios
Publicar un comentario