diff --git a/unidad6/fortran/clase1/1er/00_historia/00-hist.md b/unidad6/fortran/clase1/1er/00_historia/00-hist.md index 087aed7..132a0ed 100644 --- a/unidad6/fortran/clase1/1er/00_historia/00-hist.md +++ b/unidad6/fortran/clase1/1er/00_historia/00-hist.md @@ -1,6 +1,10 @@ ## Historia + - Lenguaje desarrollado por *IBM* en 1957 (65 años 🥳) + - Primer lenguaje de alto nivel + - Se desarrolló con enfoque en aplicaciones científicas e ingenieriles (muchos números) + - Destaca en eficiencia de cómputo en operaciones vectoriales diff --git a/unidad6/fortran/clase1/1er/00_historia/01-versions.md b/unidad6/fortran/clase1/1er/00_historia/01-versions.md index 4d52dcb..2b73bd3 100644 --- a/unidad6/fortran/clase1/1er/00_historia/01-versions.md +++ b/unidad6/fortran/clase1/1er/00_historia/01-versions.md @@ -1,5 +1,7 @@ ## Versiones + + ### Fortran "clásico" - FORTRAN I - FORTRAN II :+ funciones y subrutinas @@ -7,6 +9,8 @@ - FORTRAN 66 : ANSI estandariza lo anterior. - FORTRAN 77 :+ bloques, character, parameter y save. Una revisión agregó do while + + ### Fortran "moderno" - Fortran 90 :+ módulos, memoria dinámica, tipos de dato, mucho más - Fortran 95 :+ forall, where, deloación automática de variables. @@ -15,6 +19,12 @@ - Fortran 2018 : nada importante + + + + + + - Fortran 66: had IF … GOTO but no IF…THEN - Fortran 77: had IF..THEN..END IF and DO … END DO. - Fortran90: had MODULE so you didn’t have to use COMMON anymore. Also TYPE. Also INTERFACE, but that was of limited use. Also array notation. diff --git a/unidad6/fortran/clase1/1er/03_modules/02_modulo.f90 b/unidad6/fortran/clase1/1er/03_modules/02_modulo.f90 index b1d77f9..12af1f2 100644 --- a/unidad6/fortran/clase1/1er/03_modules/02_modulo.f90 +++ b/unidad6/fortran/clase1/1er/03_modules/02_modulo.f90 @@ -2,7 +2,6 @@ module mod1 implicit none ! Declara implicit none para TODO lo que esté en dentro. real :: x - end module mod1 subroutine sub(var) diff --git a/unidad6/fortran/clase1/1er/05_oop/01_oop.f90 b/unidad6/fortran/clase1/1er/05_oop/01_oop.f90 index fa5002c..62e7cba 100644 --- a/unidad6/fortran/clase1/1er/05_oop/01_oop.f90 +++ b/unidad6/fortran/clase1/1er/05_oop/01_oop.f90 @@ -9,5 +9,4 @@ module oop real :: x real :: y end type - end module diff --git a/unidad6/fortran/clase1/1er/05_oop/04_oop.f90 b/unidad6/fortran/clase1/1er/05_oop/04_oop.f90 index f3aa62a..6586b39 100644 --- a/unidad6/fortran/clase1/1er/05_oop/04_oop.f90 +++ b/unidad6/fortran/clase1/1er/05_oop/04_oop.f90 @@ -1,3 +1,4 @@ +! Herencia module oop implicit none @@ -11,7 +12,6 @@ module oop procedure :: dot end type - ! Herencia type, extends(vector) :: vector_3d real :: z end type diff --git a/unidad6/fortran/clase1/1er/05_oop/05_oop.f90 b/unidad6/fortran/clase1/1er/05_oop/05_oop.f90 index 82f4b85..de645ae 100644 --- a/unidad6/fortran/clase1/1er/05_oop/05_oop.f90 +++ b/unidad6/fortran/clase1/1er/05_oop/05_oop.f90 @@ -1,3 +1,4 @@ +! Overload de operadores module oop implicit none diff --git a/unidad6/fortran/clase1/1er/05_oop/06_oop.f90 b/unidad6/fortran/clase1/1er/05_oop/06_oop.f90 index b49c9cd..2824313 100644 --- a/unidad6/fortran/clase1/1er/05_oop/06_oop.f90 +++ b/unidad6/fortran/clase1/1er/05_oop/06_oop.f90 @@ -1,3 +1,4 @@ +! Nuevos operadores module oop implicit none @@ -9,7 +10,6 @@ module oop real :: y end type - ! Nuevos operadores interface operator(.dot.) module procedure :: dot end interface diff --git a/unidad6/fortran/clase1/1er/09_extra/02_pure.f90 b/unidad6/fortran/clase1/1er/09_extra/02_pure.f90 index 0c89b6c..c1cb094 100644 --- a/unidad6/fortran/clase1/1er/09_extra/02_pure.f90 +++ b/unidad6/fortran/clase1/1er/09_extra/02_pure.f90 @@ -4,7 +4,7 @@ pure function f(x) implicit none real(8), intent(in) :: x real(8) :: f - x = 3 - print *, "No puedo printear desde procedimientos puros" + ! x = 3 + ! print *, "No puedo printear desde procedimientos puros" f = 2*x end function f diff --git a/unidad6/fortran/clase1/1er/09_extra/03_elemental.f90 b/unidad6/fortran/clase1/1er/09_extra/03_elemental.f90 index ecf8c55..77b5fe0 100644 --- a/unidad6/fortran/clase1/1er/09_extra/03_elemental.f90 +++ b/unidad6/fortran/clase1/1er/09_extra/03_elemental.f90 @@ -1,9 +1,24 @@ -elemental function f(x) - ! Un procedimiento elemental significa que puede operarse en - ! vectores automaticamente (como numpy) - ! para ser elemental es requisito que sea puro +module efun +contains + elemental function f(x) + ! Un procedimiento elemental significa que puede operarse en + ! vectores automaticamente (como numpy) + ! para ser elemental es requisito que sea puro + implicit none + real(8), intent(in) :: x + real(8) :: f + f = 2*x + end function f +end module efun + +program main + use efun, only: f implicit none - real(8), intent(in) :: x - real(8) :: f - f = 2*x -end function f + real(8) :: x, x2(3) + + x = 5 + x2 = [1, 2, 3] + + print *, "Variable escalar: ", f(x) + print *, "Variable vectorial: ", f(x2) +end program main diff --git a/unidad6/fortran/clase1/1er/09_extra/04_pdt.f90 b/unidad6/fortran/clase1/1er/09_extra/04_pdt.f90 index ec78c96..75b2623 100644 --- a/unidad6/fortran/clase1/1er/09_extra/04_pdt.f90 +++ b/unidad6/fortran/clase1/1er/09_extra/04_pdt.f90 @@ -1,5 +1,4 @@ ! https://blog.hpc.qmul.ac.uk/fortran-parameterized-derived-types-1.html -! ! Tipos de datos parametrizados ! module parametrized @@ -21,4 +20,3 @@ program main t%a = [1, 2, 3, 4, 5] ! No lee del 4to en adelante print *, t%a end program -