viernes, 6 de septiembre de 2024

[Curso] Métodos modernos de programación en Fortran

Curso de posgrado dictado en la Facultad de Ciencias Astronómicas y Geofísicas de la Universidad Nacional de La Plata.
Al igual que un lenguaje humano cambia en el tiempo de acuerdo a sus necesidades, los lenguajes de programación adquieren nuevas características conforme la arquitectura y capacidad de las computadoras evolucionan. Fortran, siendo el primer lenguaje de programación de alto nivel, no está exento de ello y en el transcurso de más de sesenta años desde su creación, en cada revisión del lenguaje ha ido adquiriendo tales características, lo cual ha permitido que siga siendo uno de los lenguajes preferidos para la computación de alto rendimiento. En este curso introduciremos tales características, haciendo énfasis en una programación estructurada y modular e incorporando conceptos de la programación orientada a objetos y la programación en paralelo.

Unidad 1: Fortran en el siglo XXI


Lenguajes de programación compilados vs. interpretados. Historia y evolución del lenguaje Fortran. Compiladores. Sentencias obsoletas y refactorización. La comunidad de software abierto en el siglo XXI.


Unidad 2: Representación de los números en la computadora.


Unidades de medida de la memoria. Longitud de palabra. Representación binaria de complemento a 2 de enteros. Representación de números reales con el sistema de punto flotante. Aritmética en el sistema de punto flotante. Norma IEEE754 de precisión simple, doble y cuádruple. Precisión en Fortran. Portabilidad. Sistema de punto flotante extendido. Aritmética de no detención.


Unidad 3: Elementos básicos del lenguaje.


Tipos de datos simples: lógicos, caracteres, numéricos (enteros, reales, complejos). Constantes y variables, constantes con nombres. Asignaciones. Operaciones aritméticas, relacionales y lógicas. Funciones intrínsecas. Programación estructurada. Estructuras de control secuencial, de selección e iteración. Entrada y salida de datos. Archivos.


Unidad 4: Arreglos.


Declaración de arreglos. Asignación estática y dinámica de arreglos. Segmentation fault. Orden. Constructores. Manipulación de arreglos como un todo o en porciones. Funciones intrínsecas para arreglos. Entrada y salida de arreglos.


Unidad 5: Modularización.


Subprogramas en Fortran. Funciones y subrutinas. Subprogramas intrínsecos, externos, internos. Interfaz explícita vía módulos. Recursión. Pasando arreglos en subprogramas. Funciones que devuelven arreglos. Pasando subprogramas como argumentos de otro subprograma (callbacks). Interfaces abstractas. Argumentos opcionales. Creación de bibliotecas de subprogramas (librerías)


Unidad 6: Programación con tipos de datos derivados.


Tipo de datos derivados. Encapsulación. Subprogramas genéricos. Redefinición de operadores. Tipo de datos parametrizados.


Unidad 7: Programación orientada a objetos.


Conceptos generales de la programación orientada a objetos. Clases y métodos. Extensión de clases, herencia y polimorfismo.


Unidad 8: Programación en paralelo.


Conceptos generales de la programación en paralelo. OpenMP. Message Passing con MPI. Coarrays.


Bibliografía


  • Chapman, Stephen J., Fortran for Scientists and Engineers, Fourth Edition, 2018.
  • Metcalf, M., Reid J., Cohen, M., Modern Fortran explained, 2018.
  • Markus, Arjen, Modern Fortran in Practice, 2012.
  • Clerman, N., Spector W., Modern Fortran, Style and Usage, 2012.
  • Hanso, Richard J., Hopkins, Tim, Numerical Computing with Modern Fortran, 2013
  • Curcic, Milan, Modern Fortran, 2020.
  • Numrich, Robert W., Parallel Programming with Co-arrays, 2019.

lunes, 4 de mayo de 2020

Subrutinas en Fortran para la resolución de ecuaciones no lineales de una variable

En general, las raíces de una ecuación no lineal f (x) = 0 no pueden ser obtenidas por fórmulas explícitas cerradas, con lo que no es posible obtenerlas en forma exacta. De este modo, para resolver la ecuación nos vemos obligados a obtener soluciones aproximadas a través de algún método numérico.




sábado, 25 de abril de 2020

Representación de los números en la computadora

Estas notas tratan de dar a los estudiantes e investigadores que hace ciencia con computadoras, pero que no son informáticos, una explicación lo más completa posible de los aspectos a tener en cuenta sobre la representación de los números en la computadora con el fin de que puedan comprender (y evitar) por que suceden ciertas cosas al utilizar software ya sea programado por uno mismo o por terceros.


Representación de los números en la computadora

jueves, 23 de abril de 2020

Olde Fortran


Muchos de los guionistas de la serie animada Futurama tienen formación en diversas ramas de la ciencia y en matemáticas. Así que, en los capítulos de la serie, aparecen una gran variedad de chistes noños que podemos disfrutar, pues, los ñoños.

lunes, 6 de abril de 2020

[Curso] Análisis Numérico I

Curso desarrollado en el primer y segundo semestre de la materia Análisis Numérico I de la Facultad de Ciencias Astronómicas y Geofísicas de la Universidad Nacional de La Plata.