Académique Documents
Professionnel Documents
Culture Documents
Clive G. Page, Universidad de Leicester, UK 7 de junio de 2005 (Traducido por Mauricio J. Adonis C.)
Copyright (c)1988-2005 Clive G. Page ltima actualizacin/depuracin: 5 de junio de 2005
Se concede permiso para copiar, distribuir y/o modificar este documento bajo los trminos de la Licencia de Libre Documentacin, Versin 1.1 o cualquiera de las versiones posteriores publicada por la Free Software Foundation; sin secciones modificadas, sin textos preliminares, sin textos posteriores. Una copia de la licencia est incluida en la seccin titulada Licencia de Libre Documentacin GNU. Este archivo contiene el texto de Gua de Fortran77 Para Programadores Profesionales de Pitman de 1988. El libro ya no se imprime ms, as que me pareci sensato poner el texto a libre disposicin en Internet. El estndar ISO para Fortran77 es por supuesto ahora obsoleto desde que fuera reemplazado por Fortran90 y Fortran95. Yo recomiendo insistentemente usar Fortran95 debido a una multitud de funciones que han sido agregadas a Fortran, las cuales hacen que la programacin sea ms fcil y ms confiable. Uno de los atractivos de Fortran77 es que existe un buen compilador gratuito en la forma de Fortran GNU: g77. Hasta este momento yo no conozco ningn compilador gratuito para el Fortran95 completo, pero se puede descargar un compilador para un sublenguaje llamado F, lo cual parece ser una buena forma de aprender Fortran moderno. Lamentablemente este libro no ser de mucha ayuda con F o Fortran95. Posiblemente algn da me d el tiempo para revisarlo completamente. Para mayor informacin sobre Fortran (y F) visite estos sitios web, los cuales tienen links a muchos otros http://www.star.le.ac.uk/~cgp http://www.fortran.com/ http://www.ifremer.fr/ditigo/molagnon/fortran90/engfaq.html http://dsm.dsm.fordham.edu/~ftncheck Mi pgina personal Fortran Market y pgina de F Excelentes FAQ (preguntas) FTNCHECK analizador esttico
Ya sea que escriba sus propios programas en Fortran77, o meramente use cdigo escrito por otros, le recomiendo encarecidamente que use el analizador sintctico FTNCHECK para encontrar errores. Puede descargar versiones para muchas plataformas desde el sitio web listado arriba. Originalmente el libro lo escrib usando WordPerfect, pero posteriormente lo traduje a LATEX para hacer ms fcil producir versiones on-line en HTML y Postscrip. El texto aqu presentado es muy similar a la versin publicada aunque aprovech la oportunidad para corregir unos pocos errores y hacer algunas actualizaciones menores. Si usted encuentra errores, por favor hgame saberlos. El libro se mantuvo intencionalmente breve, tanto como fue posible, para que pudiera ser vendido a precio modesto, an as me las arregl para cubrir el entero lenguaje Fortran77 como ha sido definido en los estndares ANSI e ISO, incluyendo muchos tpicos que a menudo son omitidos por libros de texto mucho ms extensos porque son vistos como avanzados.
Para incentivar la escritura de cdigo claro, confiable, portable, robusto y estructurado, aparecen secciones cortas a lo largo del libro ofreciendo gua especfica en el uso prctico del Fortran. Las caractersticas obsoletas del lenguaje, principalmente aquellas que han sido retenidas por razones de compatibilidad con versiones tempranas de Fortran fueron omitidas del texto principal, pero son tratadas en la seccin 13. sta seccin nicamente ha sido provista como ayuda para aquellos que tienen que vrselas con programas existentes pobremente escritos, o con aquellos que datan de antes de Fortran77 estndar.
1 Qu es Fortran ? 1 Qu es Fortran ?
Fortran es el lenguaje de programacin ms ampliamente usado en el mbito de las aplicaciones numricas. Esta posicin la tiene ganada en parte por haber aparecido en escena ms tempranamente que muchos otros lenguajes principales y en parte porque, tal parece, gradualmente ha ido evolucionando las caractersticas que sus usuarios, especialmente cientficos e ingenieros encuentran ms tiles. Con el fin de mantener compatibilidad con los programas antiguos, Fortran ha progresado principalmente agregando nuevas caractersticas ms bien que removiendo antiguas. El resultado neto es, por supuesto, que algunas partes del lenguaje resultan para este tiempo un poco anticuadas; algunas se pueden evitar fcilmente, otras todava pueden ser una molestia.. Esta seccin presenta una breve historia del lenguaje, esboza sus perspectivas futuras y resume sus fortalezas y debilidades.
1.1
Desarrollo Temprano
Fortran fue inventado por un equipo de programadores que trabajaban para IBM, tempranamente en los aos cincuenta. Este grupo , dirigido por John Backus produjo el primer compilador para un computador IBM 704 en 1957. Ellos usaron el nombre Fortran porque uno de sus principales objetivos era la traduccin de frmulas [formula translation]. Pero Fortran fue de hecho uno de los primersimos lenguajes de alto nivel: lleg completamente con estructuras de control y medios de entrada/salida. Fortran se hizo popular muy rpidamente y pronto se produjeron compiladores para otras mquinas IBM. No mucho tiempo despus otros fabricantes se vieron forzados a disear compiladores Fortran para su propio hardware. Para 1963 todos los principales fabricantes se haban involucrado en ello y haba docenas de diferentes compiladores Fortran en existencia, muchos de ellos bastante ms poderosos que el original. Todo esto result en un caos de dialectos incompatibles. Algo de orden fue restaurado en 1966 cuando se defini un estndar nacional americano para Fortran. Esta fue la primera vez que tuvo de ser producido un estndar para un lenguaje de programacin. Aunque esto fue muy valioso, difcilmente control la proliferacin del lenguaje. Muy deliberadamente Fortran66 estndar slo especificaba una parte de las caractersticas del lenguaje, las cuales deberan estar presentes, no previno la integracin de otras caractersticas. As, con el paso del tiempo, estas extensiones fueron proliferando, llegando a poner de manifiesta la necesidad de aplicar mayor estandarizacin. Esto result en la presente versin del lenguaje: Fortran77.
1.2
Estandarizacin
Una de las principales caractersticas de Fortran es su portabilidad, o sea, la facilidad con que puede ser llevado de un sistema computacional a otro. Ahora en que cada generacin de hardware desplaza a la previa despus de unos pocos aos, mientras que el buen software perdura por mucho ms tiempo, ms y ms programas necesitan ser portables. El crecimiento en las redes de computadoras tambin est alentando el desarrollo de programas portables. El primer paso para lograr portabilidad es asegurar que una forma estndar del lenguaje de programacin sea aceptable en todas partes. Esta necesidad es ahora ampliamente reconocida y ha resultado en el desarrollo de estndares para todos los principales lenguajes de programacin. En la prctica, como sea, muchos de los nuevos estndares han sido ignorados y los sistemas estandarizados para lenguajes tales como Basic y Pascal son todava muy raros. Afortunadamente Fortran est en mucho mejor pie: casi la totalidad de los sistemas Fortran estn diseados para conformarse al estndar usualmente llamado Fortran77. Este fue producido en 1977 por un comit del Instituto Nacional Americano de Estndares [American National Standards Institute (ANSI)] y fue subsecuentemente adoptado por la Organizacin Internacional de Estndares [International Standards Organization (ISO)]. La definicin fue publicada como ANSI X3.9-1978 e ISO 1539-1980. Los trminos Fortran estndar sern usados en el resto de este libro para referirse principalmente a Fortran77 de acuerdo a esta definicin.
1 Qu es Fortran ?
Fortran es por hoy uno de los lenguajes de computadora ms ampliamente usado en el mundo, con compiladores disponibles para casi todos los tipos de computadores en el mercado. Desde Fortran77 es muy bueno para manejar cadenas de caracteres tanto como nmeros, tambin tiene un poderoso manejo de archivos y medios de entrada/salida, sirve para un rango mucho mayor de aplicaciones que antes.
Fortran90
El ISO estndar para Fortran90 ha reemplazado oficialmente a Fortran77. ste introduce una abundancia de nuevas caractersticas muchas de ellas ya en uso en otros lenguajes de alto nivel, las cuales permitirn programar ms fcilmente, facilitando la construccin de programas portables y robustos. La totalidad del Fortran77 estndar est incluido como un apropiado subconjunto, as los programas existentes (estandarizados) automticamente se conformarn tambin al nuevo estndar. Hasta que los mejor testeados compiladores para Fortran90 estn ampliamente disponibles, realmente, la mayora de los programadores estn todava usando Fortran77, con posiblemente unas menores extensiones.
1.3
Fortalezas y Debilidades
Fortran ha llegado a ser popular y ampliamente difundido debido a su nica combinacin de propiedades. Sus recursos numricos y de entrada/salida casi no tienen rival, mientras que sus recursos lgicos y de manejo de caracteres son tan buenos como en otros lenguajes. Fortran es suficientemente simple como para que usted no necesite ser un especialista para llegar a familiarizarse ms o menos rpido con l , an as tiene caractersticas tales como la compilacin de unidades de programas que permite usarlo en aplicaciones muy extensas. Los programas escritos en Fortran tambin son ms portables que aquellos en otros lenguajes mayores. La eficiencia del cdigo compilado tiende a ser tambin muy alta porque el lenguaje es justo y preciso al compilar y las tcnicas de manejo del Fortran han alcanzado un alto grado de refinacin. Finalmente la facilidad con que los procedimientos existentes pueden ser incorporados a nuevo software hace que sea especialmente fcil desarrollar nuevos programas en base a los antiguos. Sin embargo no puede negarse que Fortran tiene su buena porcin de debilidades e inconvenientes de suyo. Muchos de stos han existido en Fortran desde que fuera por primera vez inventado y debieran haber sido eliminados desde hace tiempo: los ejemplos incluyen la limitacin de nombres simblicos a 6 caracteres, la distribucin rgida de sentencias y la necesidad de usar etiquetas con las sentencias. Fortran tambin tiene reglas algo liberales y un extenso sistema de valores por defecto: mientras stos reducen el esfuerzo de programar, tambin hacen que sea ms difcil detectar errores de los programadores. En muchos otros lenguajes de programacin, por ejemplo, los tipos de datos de cada variable han de ser declarados por anticipado. Fortran no insiste en esto, pero consecuentemente, si usted comete un error de ortografa en el nombre de una variable el compilador parece que indica dos variables cuando usted slo intent usar una. Tales errores suelen ser serios, pero no siempre fciles de detectar. Fortran tambin carece de varias estructuras de control y estructuras de datos las cuales simplifican los lenguajes de programacin de diseo ms moderno. Estas limitaciones y otras son todas eliminadas con el advenimiento de Fortran90.
1 Qu es Fortran ?
1.4 Precauciones
Extensiones y Portabilidad
Los fabricantes de computadores tienen una tendencia natural a competir con los dems para hacerse de sistemas Fortran que sean mejores que antes, usualmente proveyndose de extensiones del lenguaje. Esto no est en conflicto con el Fortran estndar, previsto que los programas estandarizados todava son procesados correctamente. Verdaderamente, a la larga, los lenguajes avanzan por la absorcin de tales extensiones. An as, a corto plazo su uso se hace ms problemtico, desde que stas [extensiones] necesariamente hacen que los programas sean menos portables. Cuando el ltimo estndar de Fortran fue liberado en 1977, hubo bastante decepcin generalizada dado que ste no hizo el ms mnimo intento de eliminar algunas de las pesadas restricciones que haban persistido desde sus primeros das. El Departamento de Defensa de los Estados Unidos prepar una lista corta de extensiones para animar a los fabricantes a incorporarlas en sus sistemas Fortran77. De aquellas las ms importantes fueron las siguientes:
la sentencia END DO el bucle DO WHILE la sentencia INCLUDE las facilidades IMPLICIT NONE funciones intrnsecas para operaciones de bits en enteros
Muchos sistemas Fortran, especialmente aquellos producidos en los Estados Unidos, ahora dan soporte a esas extensiones, pero stas no son ni con mucho universales y no deberan ser usadas en programas portables. Una de las restricciones ms fastidiosas de Fortran77 es que los nombres simblicos no pueden tener ms de seis caracteres de longitud. Esto fuerza a los programadores a usar toda suerte de contracciones, abreviaciones y acrnimos en lugar de nombres significativos. Es muy tentador sacar ventaja de sistemas que relajan esta regla, aunque esto puede traer serias repercusiones. Considere un programa que usa dos variables llamadas TEMPERATURA y TEMPERACION. Muchos compiladores estaran muy felices con esto, pens un momento que se desecharan ambos nombres en base a su longitud. Desafortunadamente tambin hay uno o dos compiladores en existencia que simplemente ignorarn las letras despus de la sexta posicin, as ambos nombres sern tomados como referencias de la misma variable: TEMPER. Tal comportamiento, por deplorable que sea, est en completa concordancia con el estndar, que para compilar programas correctamente slo requiere sistemas que se ajusten a sus reglas. La nica forma de asegurarse de evitar problemas como stos es ignorando tales tentaciones completamente y slo usar Fortran estndar. Muchos compiladores proveen un switch u opciones que pueden ser configuradas para marcar toda sintaxis no estndar. Todo lo cubierto en este libro es parte del Fortran estndar, a menos que se indique claramente lo contrario.
Directivas
La programacin de computadores siempre requiere un alto nivel de cuidado y precisin si pretende tener xito. Esto es an ms vital cuando usamos Fortran que cuando usamos otros lenguajes, porque como ya se explic ms arriba, las reglas liberales de Fortran hacen ms difcil para el sistema detectar errores. Para programar exitosamente no es suficiente slo conformarse a las reglas del lenguaje, tambin es importante defenderse usted mismo contra las trampas conocidas.
DO 15 I = 1.100
cuando lo que debera haberse escrito era
DO 15 I = 1,100
pero de alguna manera el punto ha reemplazado a la coma. Debido a que Fortran ignora los espacios, esto fue visto por el compilador como:
DO15I = 1.100
lo cual es una asignacin perfectamente vlida a una variable llamada DO15I, pero no era lo que se intent hacer. Fortran77 permite una coma adicional para ser insertada despus de la etiqueta en una sentencia DO, as este cdigo podra ser escrito como:
DO 15,I = 1,100
lo cual tiene la gran ventaja de que ya no es ms una vulnerabilidad para algn fallo de punto flotante. Hay muchos peligros de esta misma laya en Fortran, pero el riesgo de caer vctima de ellos puede ser minimizado mediante adoptar las prcticas de programacin de los usuarios de mayor experiencia. Para ayudarle se han dado varias recomendaciones y directrices a lo largo de este libro. Algunas de las caractersticas de Fortran ms anticuadas e insatisfactorias no estn descritas del todo en el cuerpo principal del libro, pero han sido relegadas a la seccin 13. No hay lugar en un libro de este tamao para ir ms all dentro de las tcnicas de diseo de programas e ingeniera de software. Hasta donde fue posible todo lo recomendado aqu es consistente con los mtodos de diseo modular y programacin estructurada, pero usted debera estudiar estos tpicos con mayor detalle antes de embarcarse en cualquier proyecto de programacin de gran magnitud.
2.1 Sentencias
Para empezar, he aqu uno de los programas ms simples que pueden idearse:
de estas caractersticas, las primeras seis columnas de cada lnea se dejaron en blanco. La sentencia PROGRAM da un nombre a la unidad del programa y declara que este es la unidad principal del programa. Otros tipos de unidades de programa sern tratadas ms tarde. El programa puede ser llamado como
pago=
En esta frmula, tasa es el inters anual expresado como una fraccin. Ya que es ms convencional referirse a las tasas de inters como porcentajes, el programa har esta conversin para nosotros:
PROGRAM PRESTAMO WRITE(UNIT=*, FMT=*)Ingrese el monto, % inters, aos READ(UNIT=*, FMT=*) MONTO, PCTASA, ANOS TASA = PCTASA / 100.0 PAGO = TASA * MONTO / (1.0 - (1.0+TASA)**(-ANOS)) WRITE(UNIT=*, FMT=*)El pago anual es de $, PAGO END
Este ejemplo presenta dos nuevas formas de sentencias: las sentencias READ y las asignaciones; ambas pueden ser usadas para asignar nuevos valores a las variables.