&DUDFWHUtVWLFDV UHGXQGDQWHV FRQUHVSHFWRD )RUWUDQ +HUUDPLHQWDV\/HQJXDMHVGH3URJUDPDFLyQ )RUWUDQ Contenidos del Curso 1.- Introducción 2.- Código fuente, tipos y estructuras de control 3.- Procedimientos y Módulos 4.- Proceso de vectores 5.- Punteros 6.- Nuevas características de entrada/salida 7.- Procedimientos intrínsecos &DUDFWHUtVWLFDVUHGXQGDQWHV 9.- Desarrollos futuros +HUUDPLHQWDV\/HQJXDMHVGH3URJUDPDFLyQ )RUWUDQ &DUDFWHUtVWLFDVUHGXQGDQWHV ËQGLFH m m m m m 8.1 8.2 8.3 8.4 8.5 - Forma del código fuente Datos Control Procedimientos Entrada/ Salida +HUUDPLHQWDV\/HQJXDMHVGH3URJUDPDFLyQ )RUWUDQ Características Redundantes m Fortran90 incluye características redundantes (deprecated) que se pueden seguir usando puesto que no está previsto que desaparezcan en la siguiente revisión, pero se desaconseja su utilización en programas nuevos puesto que en el futuro sí es posible que desaparezcan m Estas características redundantes se clasifican dentro de 5 categorías: forma del código fuente, datos, control, procedimientos y E/ S +HUUDPLHQWDV\/HQJXDMHVGH3URJUDPDFLyQ )RUWUDQ Forma del código fuente m El formato fijo, que estaba basado en el aspecto de una tarjeta perforada ha sido sustituido por el formato libre y éste debería usarse en los programas nuevos. Es posible hacer modificaciones sencillas al formato fijo para producir código que es legal tanto en formato libre como fijo m Se recomienda la utilización de módulos en lugar de usar líneas INCLUDE. Esta directiva se utilizaba para incluir ficheros texto en un lugar específico +HUUDPLHQWDV\/HQJXDMHVGH3URJUDPDFLyQ )RUWUDQ Datos m Fortran 77 tiene dos formas de variables y constantes reales: real y double precision. Han sido sustituidas por el concepto de tipos de datos parametrizados que dan mayor portabilidad numérica. No debería usarse double precision en programas nuevos m El peligroso concepto de tipo implícito y la sentencia IMPLICIT no deberían usarse. Se aconseja el uso de implicit none m Se recomienda el uso de la nueva forma de declarar variables usando dos puntos (::) entre el tipo y la lista de variables. Asimismo se recomienda usar los atributos parameter, dimension, etc. en la declaración más que en forma de sentencias m Generalmente no se necesita la sentencia DATA puesto que las variables pueden ser inicializadas en una sentencia de declaración +HUUDPLHQWDV\/HQJXDMHVGH3URJUDPDFLyQ )RUWUDQ Datos m Los bloques COMMON y BLOCK DATA no deberían usarse puesto que el uso de módulos elimina la necesidad de su utilización. De forma análoga, la sentencia EQUIVALENCE ha dejado de ser necesaria por la introducción de los módulos, manejo dinámico de memoria, punteros y la función intrínseca transfer m Se recomienda no utilizar nunca el atributo SEQUENCE +HUUDPLHQWDV\/HQJXDMHVGH3URJUDPDFLyQ )RUWUDQ Control m Características obsoletas de F77 son: • Sentencia if aritmética • Terminación compartida de un do. Terminación de un do en una sentencia diferente de continue o end do • Variables do y de control de expresiones de tipo real o double precision • Sentencias assign y GO TO asignados • Saltos hacia un end if desde fuera de un bloque if • return alternado • Sentencia pause m m m Estas características no deberían usarse en códigos nuevos o revisados. Pueden reemplazarse por sentencias if, do, case, exit y cycle Con la introducción de modernas estructuras de control y de especificaciones de cadenas de caracteres la necesidad de etiquetas es redundante El constructo do y las sentencias exit y cycle sustituyen el uso de la sentencia continue al final de un bucle do +HUUDPLHQWDV\/HQJXDMHVGH3URJUDPDFLyQ )RUWUDQ Control m Las sentencias GO TO y GO TO calculados deberían sustituirse por los constructos if, do y case y las sentencias exit y cycle m Se puede utilizar el bucle do combinado con la sentencia exit como forma equivalente a los bucles do while +HUUDPLHQWDV\/HQJXDMHVGH3URJUDPDFLyQ )RUWUDQ Procedimientos m Las funciones intrínsecas con nombres específicos para diferentes tipos de datos se han sustituido por versiones genéricas. Aún se necesitan nombres específicos cuando una función intrínseca se utiliza como parámetro actual en una llamada m La sentencia ENTRY permite que un procedimiento tenga más de un punto de entrada. En F90 es innecesaria puesto que en un módulo cada punto de entrada se convierte en un procedimiento de módulo m La utilización de procedimientos de módulo y procedimientos internos hacen innecesarios los procedimientos externos. Los procedimientos externos y la sentencia external son redundantes en F90 +HUUDPLHQWDV\/HQJXDMHVGH3URJUDPDFLyQ )RUWUDQ Entrada / Salida m Los especificadores de formato asignados deberían sustituirse por especificaciones de cadenas de caracteres m Los especificadores end, EOR y ERR se utilizan cuando ocurren condiciones anómalas en entrada/salida. Se recomienda el uso de IOSTAT en lugar de éstos m La entrada/salida usando ‘Namelist’ es una característica mal diseñada y se desaconseja su utilización m Se desaconseja la utilización de 6 descriptores de edición: D, BN, BZ, P, G y X m El descriptor de edición D se sustituye por el E y los BN y BZ por el especificador BLANK +HUUDPLHQWDV\/HQJXDMHVGH3URJUDPDFLyQ )RUWUDQ Entrada / Salida m El descriptor de edición P permite que los datos numéricos se escalen tanto al hacer entrada o salida. Esto podría conducir a confusión y por tanto se desaconseja m El descriptor de edición G es un descriptor generalizado que se puede utilizar al leer o escribir valores de cualquier tipo intrínseco. Se aconseja la utilización de los descritptores I, E, EN, F, L o A puesto que a través de éstos se comprueba que los tipos de datos son los correctos m El descritptor de edición X tiene el mismo efecto que el TR y se recomienda el uso de este último +HUUDPLHQWDV\/HQJXDMHVGH3URJUDPDFLyQ )RUWUDQ