Generación del algoritmo. Planteo del problema, desglose en subproblemas y solución de estos en terminos abstractos (pseudocódigo o diagramas de flujo).
Generación del código fuente (pueden ser más de uno para la generación de un único ejecutable). El programa fuente ( o código fuente) es una secuencia de sentencias escritas en la sintaxis del lenguaje que se ingresan utilizando un editor de textos.
Compilación a objeto. Este paso se lleva a cabo a través del uso de un compilador. Este se encarga de traducir el programa fuente en códigos que el computador pueda entender directamente (código de máquina, tambien llamado código objeto). En esta traducción se transforman todas sentencias en sintaxis de C a código de máquina, pero las llamadas a funciones externas o de biblioteca no quedan resueltas, por lo que todavia, el codigó objeto no puede ser ejecutado.
Ligar las llamadas a funciones no resueltas. Este paso se realiza a través de un ligador (linker), el que se encarga de: a partir de los códigos objeto y de las bibliotecas de rutinas (conjunto de códigos objetos de las funciones de biblioteca) generar un módulo ejecutable directamente por el computador (programa ejecutable).
Dependiendo del entorno de trabajo y de las herramientas de desarrollo que se esten utilizando para la generación de programas, algunos de los pasos anteriores pueden quedar ocultos a la vista del desarrollador.
Utilizaremos un entorno simple de programación.
Para escribir los programas utilizamos cualquier procesador de texto (nedit, gedit,kate, vi, openoffice, ...)
El código creado será compilado utilizando el programa de GNU: g77. Este programa toma como entrada código fuente y genera código objeto o directamente el ejectuable. La sintaxis general que utiliza este programa es:
g77 [opciones] entrada
donde entrada es el nombre de nuestro código fuente. Con este comando g77 creará un ejecutable llamado a.out. En distintas implementaciones de linux pueden aparecer otros compiladores de fortran, como el f77, pg77 (Portrand Graphics), ifc ó ifort (Intel), etc.
Existen muchas opciones para este programa, las más comunes son:
Para obtener más información sobre
el compilador g77 utilizar el comando:
También se puede hacer
g77
--help | less
En lenguajes de bajo nivel de abstracción, los datos y su manipulación involucra la interacción directa con el hardware, lo que hace a su manejo muy tedioso.
Los lenguajes de alto nivel, implementan una abstracción que facilita la manipulación de datos: la variable.
Esta abstracción define una relación entre un nombre simbólico y una porción de memoria
La manipulación del nombre de una variable involucra la manipulación de los datos almacenados en su memoria asociada.
Debido a que en la resolución de problemas nos encontramos con distintos tipos de datos (valores enteros, reales, palabras, caracteres, etc.), los lenguajes de programación soportan distintos tipos de variables.
En la tabla que sigue se presentan los principales tipos de
variables que soporta el lenguaje FORTRAN, como asi también
la
cantidad de memoria asociada a cada tipo (La cantidad de memoria
asociada depende de la plataforma que se utilice)
Tipo de variable | Memoria asociada en bytes | Memoria en bits |
character | 1 | 8 |
integer | 8 | 64 |
real | 4,8 | 32,64 |
complex | 4 | 128 |
logical | 1 | 8 |
program cent2fahr c ....Este programa convierte la temperatura c ....de centigrados a fahrenheit implicit none c c.....declaro las variables c real tc,tf c c.....pregunto la temperatura en centígrados c print*,"Cual es la temperatura en centígrados?" read *,tc c.....Convertimos a fahrenheit tf = 9/5*tc+32 c.....Imprimo el resultado print*,tc," C = ",tf," F" end |
Sabemos que la temperatura de ebullición del agua en CNPT es de 100 C=212 F. Cuál es el resultado que obtiene? Está bien? Qué está pasando?
Este es un ejemplo de un error muy común que lleva a innumerables horas de trabajo. Cuando la computadora realiza la conversión a Fahrenheit, primero divide 9 por 5. Cada una de estos números es representado como un número entero, y la división '/' que realiza es entera. Entonces: 9/5=1....
Esto es así porque el procesador realiza las operaciones de izquierda a derecha. Probemostf = 9*tc/5+32 |
tf = 9/5.0*tc+32 |