Você está na página 1de 43

Captulo III

Entrada / Salida / Procesos

Resultados Del Aprendizaje:

El alumno conocer y aplicar los pasos en la correcta programacin para la


solucin de problemas.
Tendr el conocimiento general histrica del lenguaje FORTRAN, conocer
su estructura y las fases del proceso.
Manejar los conceptos propios de FORTRAN 90-95 con relacin a
expresiones, funciones, operaciones, jerarqua y errores clsicos.

CONTENIDO:
1. Antecedentes / Normas / Estructuras del programa / estructuras de
entrada y salida
2. Secciones Declaracin Ejecucin Terminacin
3. Datos, Carcter, Constante,Variable, Instrucciones De Asignacin
4. Notacin Exponencial y Cientfica
5. Constantes, Cdigo ASCII, Caracter, Lgico
6. Variables Implcitas, Parmetros, Operadores Aritmticos
7. Reglas y pasos en programacin y con expresiones.
8. Operaciones Alfa Numricas
9. Comandos Write, Read
10. Funciones Abs, NINT, SQRT, LOG10, LOG, Exp, Mod
11. Funciones Trigonomtricas
12. Funciones Hiperblicas
13. Funciones Random, INT

Pregunta Gua
Qu se entiende por la estructura gua de un programa en Fortran 90-95?

23
Sesin Presencial:
FORTRAN (Formula Translation) FORTRAN es el lenguaje mayormente
utilizado en el mundo de sper computadoras y es el antecesor de los lenguajes
cientficos, se desarroll en 1954 y 1957 y desde entonces ha ido
evolucionando. Las versiones siguientes del FORTRAN como FORTRAN II, III,
IV, MASTER, USASI, 77, etc. mantienen caractersticas de versiones anteriores
para su compatibilidad con ellas, al igual stas versiones van captando
caractersticas obsoletas para procurar no usarse en nuevas versiones.
FORTRAN es un lenguaje con 86 smbolos y es insensible a maysculas y
minsculas. FORTRAN es un lenguaje que consta en dos tipos bsicos de
enunciados, los enunciados ejecutables y los no ejecutables. Los enunciados
ejecutables describen las acciones que el programa haga (suma,resta
multiplicacin, divisin).Mientras que los enunciados no ejecutables proveen
informacin necesaria para el funcionamiento del programa. FORTRAN 90/95
tiene entrada libre de enunciados por columna pero an tiene compatibilidad con
versiones anteriores. En la versin moderna un enunciado puede colocarse en
cualquier lugar de la columna, consta de 132 caracteres pero puede continuarse
al poner smbolo & al terminar la lnea. Un programa de FORTRAN se divide en
tres secciones.
Seccin de Declaracin: La cual tiene el nombre del programa, nmero y
tipo de variables. (Todos son enumerados enunciados no ejecutables).
Seccin de Ejecucin: Es uno o ms enunciados que describen las acciones
del programa.
Seccin de Terminacin: Enunciados que terminan la ejecucin del
programa.
Los comentarios pueden ser ingresados en cualquier lugar del programa,
antecedindoles el smbolo de admiracin ! Al programar hay constantes, las
cuales no cambia su valor durante el programa y tambin hay variables, Las
cuales pueden ser alfa numrica utilizando el guin bajo debe de comenzar con
una letra y tener hasta 31 caracteres. Tambin se debera de incluir un
diccionario de informacin al comienzo del programa para la definicin de
variables, aunque es ms conveniente nombrarlas con lo que represente y
apoyarse con los comentarios a travs del programa. FORTRAN tiene 5 tipos de
constantes y variables, de las cuales tres son numricas: Enteras, Real, y
Complejas, una Lgica y una de Caracteres. Cuando una variable empieza con
las letras I J K L M N, es definida el sistema automticamente las acomoda
como Enteras por declaracin las asignas como real. Algo recomendable es
ser consistente con las variables. Cuando se declara una variable como real,
constante, entera, etc. Durante el transcurso de nuestro proceso no cambiar su
forma, a menos que as se llegue a expresar por medio de un comando que una
vez ejecutado, el modo de la variable regresar a como fue declarada
inicialmente, (de esto se vern ejemplos captulos mas adelante). El orden de
operacin en algn problema se resuelve la base a la jerarqua de operaciones,
en modo real hay que usar un punto despus de la cifra para poder utilizar algn
signo de operacin. El modo mixto de operacin es una herramienta muy til ya

24
que cuando se requiere hacer una operacin entre enteras y reales es la nica
manera de lograrlo aunque esta forma puede llegar a dar resultados engaosos.
Hay dos tipos de operadores lgicos: los relacionales y los de
combinaciones. Dentro de los relacionales solo se puede hacer dentro del
mismo tipo de variables. Para hacer que los operadores de combinacin
funcionen se le debe ingresar como un valor lgico ya sea verdadero o falso, ya
que si se les ingresan valores numricos marcar error. Las variables de
caracteres pueden dividirse en sub. cadenas en las cuales se abre una nueva
variable y puede tomar el valor de solo algunas de las partes de una cadena
(string) las cuales pueden ser utilizados para manipular y modificar los anteriores
o bien para formar largas cadenas utilizando dos diagonales. Al utilizar variables
de tipo string en operaciones relacionales, los caracteres toman el valor que
tiene asignado en el teclado.
Dentro de los clculos matemticos FORTRAN ya tiene incluidas algunas
funciones que se utilizan comnmente, en dado caso de necesitarse algunas
otras ms complejas se les ingresar manualmente valores de entrada, se les
llama argumentos. Hay funciones genricas y funciones especficas. Las
genricas pueden usar ms de un tipo de informacin de entrada mientras los
especficos requieren cierto tipo de entrada y producen una salida especfica.
Las entradas con orientacin a lista es un elemento prctico ya que
despus de haber definido el tipo de variables al leerlas las ordena y las
categoriza a su vez. De igual manera las salidas orientadas a lista muestran los
resultados con el formato que tenan. Algo recomendable para la utilizacin de
variables es la de inicializarlas antes de su uso, esto se puede hacer
asignndole el valor ya sea al declararlas, durante el programa o bien leyndolas
al utilizarla el usuario, ya que de otra manera se le asigna un valor
arbitrariamente generar error.
El IMPLICIT NONE es una herramienta muy til que ayuda a localizar errores
en ves de obtener resultados errneos. Una de las partes ms importantes de
hacer un programa es la de eliminar los errores cuando se le conoce como the
bug (fallas). Hay tres tipos de errores el primero es el de sintaxis. Este error es
acusa de mala escritura y puntuacin. Otro error es el run-time (De tiempo de
ejecucin), ste es cuando se efecta una operacin matemtica ilegal, por
ejemplo cuando se divide entre cero. El otro tipo de error lgical error (error
lgico), ste sucede cuando el programa compila y ejecuta satisfactoriamente,
pero produce la respuesta incorrecta. El error ms comn es el error tipogrfico,
ste tipo de error comnmente errores de sintaxis que son capturados por el
Implicit None, Pero no captura aquellos en los que sustituye una variable legal
por otra variable no legal, la mayora de stos sucede cuando las variables son
de nombre parecido. Aqu cuando el programador debe hacer la revisin
manualmente.

25
Algunas ayudas que se dan para evitar errores son:
1. El dividir enunciados de asignacin muy largos en enunciado mas cortos
2. El uso correcto de parntesis.
( # parntesis abiertos = # parntesis cerrados)
3. La inicializacin de variables.
4. El uso de unidades correctas en las funciones
5. El uso correcto de operaciones entre diferentes tipos de variables.
6. Evitar el uso de la divisin entre cero, cuando se efecta la divisin entre
cero ya sea por que se asigna cero como denominador o que el clculo
llega a dar como denominador cero, entonces no se puede efectuar la
divisin y el equipo se inhiba (Congela el Proceso) enviando un mensaje
Divisin entre cero. (inhibir.- el equipo no acepta instrucciones ni realiza
ningn proceso).
Accin: reiniciar el equipo.

*Si aun continan habiendo errores hay que buscar en clculos


intermedios, y/o, puede solicitarle al asesor su apoyo para que verifique el
programa ya que el aprendiz, mentalmente, se encierra sin ver los errores. ....

Existen varios tipos de Errores en Programacin a Saber:


1) Ejecucin
2) Compilacin
3) Estructura de lenguaje
4) Sintaxis de lenguaje

Tambin pueden resumirse como errores)


A) Lgicos Del Usuario
B) De Gramtica Del Lenguaje
C) De Ejecucin

PASOS SUGERIDOS PARA UNA EXITOSA


PROGRAMACIN

1).-DEFINICIN DEL PROBLEMA. Se debe describir claramente que es lo que


se pretende con la solucin de nuestro problema, para ello es recomendable leer
bien el enunciado y extraer lo esencial del mismo a travs de tres pasos muy
sencillos:

1.1) Descripcin detallada y grfica de la salida. Dibuje en forma


diagramtico (haciendo uso de los smbolos de flujo descritos en el capitulo
anterior), y escribiendo dentro de ellos las variables o constantes que el
problema plantee. (Tal como deseamos ver nuestros resultados).

26
1.2) Despus definimos los clculos vamos a necesitar para llegar a esas
salidas, es decir el algoritmo las Frmulas (Algoritmo.- Formula(s)
condensada que indica una serie de operaciones repetitivas)
1.3) Por ltimo definimos que datos necesitamos en cada calculo, y si no
son generados por el programa los asignaremos como ENTRADA (S).

2).-Pseudo cdigo.- Es escribir la serie de instrucciones procedurales de


acuerdo al formato esquemtico del lenguaje ( Fortran), y en el idioma Natural
programador. (Pseudo cdigo.- Representacin escrita, en lenguaje comn, de
los pasos para resolver un problema), (Lenguaje Estructurado.- Aqul que se
resuelve por conjuntos de instrucciones que forman "bloques" parciales de la
solucin total de un problema).

3).-Diagramacin.- Reconocido el problema y decidido el camino para


resolverlo se elabora un diagrama de flujo estructurado para "visualizar" la
solucin total.
3.1Diagrama de flujo.- Representacin esquemtica de los pasos para resolver
un problema.
3.2Diagrama estructurado.- Aquel que representa en renglones grficos los
conjuntos de instrucciones que forman los "bloques" parciales de la solucin
total de un problema.

4).-Tabulacin.- Es esquematizar en una tabla en cuyas columnas se anotan


cada variable descrita en el programa, y se asignan valores prueba que se
seguirn de acuerdo al diagrama de flujo previamente diseado.

5).-Codificacin.- Representacin "escrita" de las instrucciones indicadas en un


diagrama de flujo en cualquier cdigo (lenguaje de computadora o sper
lenguaje), en nuestro caso ser el Fortran.
Ejemplo.-Con apoyo de su asesor, Escriba la codificacin en Fortran para
realizar las operaciones indicadas en el diagrama de flujo del final del captulo II.

6).-Depuracin.- Es capturar el programa en la computadora con las


instrucciones propias del lenguaje y procesarlo para que d los resultados en
su defecto genere los errores cometidos para poder corregirlos.

7).-Documentacin.- Es el proceso de agregarle comentarios a las


instrucciones de tal manera que indique para que fin fue creado el programa, por
quien, y que significa cada una de las variables utilizadas y frmulas dentro del
programa.

8).-Anlisis De Resultados.- Es corroborar en corridas (Procesos), llamados


Prueba, y con valores predeterminados, con la finalidad de ver que
efectivamente el programa est generando los resultados esperados.

27
9).- Produccin.- Es el proceso de procesar el (Los), programa (s) para generar
los resultados para cuyo fin fueron creados.

10).- Retro-Alimentacin.- Se llama al proceso de estar atento a los cambios


requeridos en los programas para que estn de acuerdo a las necesidades
dinmicas de las organizaciones, en cuyo caso de cambio, se deber seguir los
pasos desde el inicio, es decir Definicin..... etc.

ESTRUCTURA DE UN PROGRAMA FORTRAN


FORMA GENERAL SIGNIFICADO

1.- PROGRAM Gua (Se inicia el programa)


2.- IMPLICIT NONE instruccin de apoyo v/s errores
3.- SECCIN DE DECLARACIONES (Se indica que las variables son:)
REAL instrucciones REAL :: (Con punto decimal)
INTEGER instrucciones INTEGER ::(Entero, Sin punto decimal)
LOGICAL instrucciones LOGICAL :: Tipo lgica
CHARACTER instrucciones CHARACTER :: Tipo carcter
COMPLEX instrucciones COMPLEX :: Tipo num complejo
4.- SECCIN DE EJECUCIN (Se soluciona el problema)
Instruccin de Asignacin
Instrucciones READ Instruccin de lectura
Instrucciones WRITE Instruccin de salida impresa
Instruccin STOP Instruccin de detener proceso
5.- END PROGRAM Gua Fin programa

Estructura de una instruccin de Entrada (forma general)

Nota
Read (*.*) Instruccin de lectura

Indica que no importa la forma que se del dato, lo lee


literalmente (formato libre)
Indica que se lee una tecla ( desde un teclado)
*Se explica ms detalladamente mas delante en este capitulo.

Estructura de una instruccin de Salida (forma general)

Write (*.*) Instruccin de salida datos

Indica que de forma automtica desplegara el resultado en


forma automtica (formato libre)
Indica que se despliega en pantalla

28
La instruccin PROGRAM.- Es la primera lnea de todo programa en Fortran 90-
95 y su Forma es : PROGRAM nombre
Puede tener hasta 31 caracteres de longitud, y sigue las siguientes reglas a
saber:
Los caracteres pueden ser letras, dgitos o el carcter subrayado ( _ ).
El primer carcter debe ser letra.
Dentro del nombre no se permiten espacios en blanco.(Es caracter especial)
Maysculas o minsculas.
El nombre no puede usar palabras reservadas para el lenguaje como lo son
entre otras read, write, file, exit, close, integer, real, etc.
(Ver Apndice Tres: A.3)

SECCIN DE DECLARACIONES
En esta seccin se especifica el nombre del programa, y se definen los nombres
y tipos de variables que se van a usar. Cmo se declaran las variables?
Tipo_de_dato :: var1 [, var2]...
Su Contenido es opcional
LOS COMENTARIOS !
Los comentarios son mensajes o notas escritas para la persona que lea el
programa. Todos los caracteres que estn a la derecha del signo de admiracin
! Hasta el final de lnea, son comentarios y son ignorados por el compilador de
Fortran.
PROGRAM COMENTARIO
! Este programa imprime l numero PI Comentario
! WRITE (*,*) HOLA Comentario
WRITE (*,*) 3.141592 Instruccin Activa
! WRITE(*,*) 3,141592 ** 2 Comentario
END PROGRAM
Si grabamos, compilamos, ligamos y corremos este programa escribe lo
siguiente: 3.141592

SECCIN DE EJECUCIN
Aqu van una o ms instrucciones que describen las acciones que va a realizar el
programa. Los datos deben corresponder a lo especificado en el programa.

SECCIN DE TERMINACIN
Consiste en las instrucciones STOP y END PROGRAM.
STOP.- Este comando indica al compilador que detenga el proceso,
normalmente se usaba para que realizara los cambios de discos que se
necesitaran.
END PROGRAM dice al compilador que ya no hay ms instrucciones en l
programa y le ordena terminar el programa. Cuando la instruccin STOP va

29
inmediatamente antes de la instruccin END PROGRAM, es opcional. El
compilador genera automticamente una instruccin STOP cuando llega a la
instruccin END PROGRAM. Por eso, la instruccin STOP se usa rara vez ya
que no es necesario.

EXPRESIN: Es la representacin de una orden a la computadora a travs del uso de


variables, constantes y operadores lgicos, aritmticos y/o comandos propios del
lenguaje. En el caso de las expresiones aritmticas siempre ser a la derecha del signo
(=).

Expresin Aritmtica

Suma= a+b

Expresin de Transferencia lgica

IF (a>b) then

Expresin de Comando del lenguaje (ver apndice III tabla de comandos)

Exit open file


Stop close print

CARACTER: es un smbolo que se usa para la comunicacin, representacin de


especificaciones en FORTRAN y sus tipos son:

Numrico 0123456789
Alfabtico ABCDEFGHIJKLMN OPQRSTV W X Y Z
CARACTERES: Alfa numrico 0-9 y A-Z (COMBINACIN)
Especiales # $ % / ( ) .;,:@+`

30
CONSTANTE: expresin cuyo contenido permanece inalterable durante el transcurso de
un programa. Sus tipos son:

Enteras 1950
Numricos
Reales 3.1415
CONSTANTES Alfanumricos (carcter cadena) TECNOLOGICO DE CHIHUAHUA
Lgica verdadero falso.

VARIABLE: es una expresin cuyo contenido es susceptible de cambios sus


representantes son:

Enteros: DEF INTEGER VAR BYTE


(2) -32768 -32767 2
(4) -214748 -21474836 4
Numricos REALES: DEF REAL VGR BYTE
(2) +3.4(10) -38_1.1(10)38 4
VARIABLE (4) -3.4(10) -38_1.1(10)38 4
+1.7(10)-308 -2.2(10)308 8

Alfanumrico CHARACTER ( De cadena)


Def: carcter vgr nombre
(1) almacn 1 carcter 1
(n) almacn n carcter n

Aritmticos +,-,*,**,/
Asignacin =
Relacin > .GT. >= .GE.
OPERADORES < .LT. <= .LE.
= = .EQ. /= .NE.
LOGICOS .TRUE. .FALSE.

CMO NOMBRAR UNA VARIABLE?


1) PUEDE TENER DE 1 32 CARACTERES.
2) EL PRIMER CARCTER DEBE SER ALFABTICO.
3) NO DEBE TENER CARACTERES ESPECIALES.
* Excepto _ estando entre otro conjunto de caracteres alfabticos

NOTA: EN UNA EXPRESIN ARITMTICA NO SE DEBE MEZCLAR EL MODO


DE LAS VARIABLES NI DE LAS CONSTANTES

31
Ejemplo de expresiones:

Escribir las siguientes operaciones en cdigo FORTRAN 90-95

o
C=
(
5 o F 32 ) Grados Celsius = 5/9 ( grados Fahrenheit 32)
9

seno
tan = Tangente = sin (teta) / cos(teta)
cos eno

ETAPAS DE UN PROGRAMA EN FORTRAN 90-95

Cinco etapas de un programa Fortran:

1.- Escribir en lenguaje fuente Disear y Codificar (Fortran 90-95)

2.-Grabar en Disco 3.-Compilar 4.-Ligar 5.-Ejecutar

Programa Archivo Programa


Fortran .F90 Objeto .obj Ejecutable.exe Resultado

32
TIPOS DE DATOS: FORTRAN utiliza los siguientes tipos de datos:
Numricos, Alfa-Numricos, Especiales

Memoria Usada
RANGO (En bytes)

INTEGER -2147483648 a 2147483647 4


Enteros
(Sin punto) INTEGER2 -32768 a 32767 2

INTEGER4 -2147483648 a 2147483647 4

Datos Cifras de Numricos


Precisin
REAL 3.4 x 10 a 1.1 x 10 4 7
Reales

(Con punto) REAL (4) 3.4 x 10 a 1.1 x 10 4 7

REAL (8) 1.7 x 10 a 2.2 x 10 8

Datos CHARACTER almacena slo un caracter


Alfanumricos CHARACTER (1) almacena slo un carcter
CHARACTER (N) almacena N caracteres

Complejo COMPLEX
Otros tipos Lgico LOGICAL
De datos Archivo FILE
Variable con subndice
Tipos de datos derivados Registros

NUMERICA ENTERA ( Es un numero sin punto decimal )


REAL ( Es un nmero con punto decimal )
TIPOS DE
ALFANUMRICA
CONSTANTE LGICA

Complejo COMPLEX
Lgico LOGICAL
TIPOS Fraccionaria REAL
DE VARIABLES Entera INTEGER
Alfanumrica CHARACTER

33
Variables enteras (Integer).- Las variables de tipo entero solo pueden
almacenar valores enteros, y se pueden escribir 4 sistemas numricos
diferentes, dependiendo del tipo de sistema que se necesite usar, estos tipos de
variable cuando son adecuados. Permiten que las operaciones de procedimiento
y grabado sean ms rpidas y ahorren memoria.
1. Variable entera Decimal.- Las variables de este tipo solo pueden almacenar
valores enteros decimales (sin punto decimal) por ejemplo: -40 30 320 etc.
Nota: Si se OMITE el signo, se sobreentiende que el valor es positivo.
2. Valor entero Binario .- Una constante binaria esta formada por cualquier
combinacin de unos y ceros, el primero debe ser la letra B para identificarlo
como binario, por ejemplo: B'111010' B'10111 B'111011'
3. Valor entero octal -- Uno o varios dgitos del 0 al 7, el primero debe ser la
letra O para identificarlo como octal, su valor mximo es o7777, sea 215-1,
Por ejemplo: o'0' 0'143' o'1776 o7777'
Nota: Se recomienda que cuando introduzca este tipo de datos utilice Read con formato.
4. Valor entero Hexadecimal.- Serie de nmeros del 0 al 9 y/o letras de la A a
la F (pueden ser minsculas), pero debe comenzar con Z. Las letras
representan las cantidades decimales del 10 al 15 respectivamente (C=12,
A=10 etc.), por ejemplo: zBD z7AB zFAB El valor mximo es zZZZZ sea
(215-1)
Nota Solo, estos tipos de valores (Binario, Octal y Hexadecimal)pueden ser Enteros Reales.

Las variables enteras se declaran como sigue:


INTEGER :: A, B, C.
Donde: A, B, C son las variables declaradas como de tipo enteras.
Ejemplo.- Escriba al menos 3 declaraciones de tipo entero
Integer:: d, a, b INTEGER :: x, y, z Integer:: tres, cuatro, cinco

Nota:
1) Todos los estatutos de declaracin de variables deben de ir antes de cualquier estatuto
ejecutable.
2) En la declaracin de variables tambin se pueden inicializar estas, por
ejemplo: Integer;: a =50, b=230, c=184

Este tipo de variables tambin se puede declarar como:

INTEGER(I), INTEGER(2), INTEGER(4).


La siguiente tabla muestra los diferentes tipos de enteros, los bytes que ocupan
en memoria y el rango de valores que pueden almacenar.

Tipo de datos Bytes Rango


Integer(1) 1 -128 a 127
lnteger(2) 2 -32768 a 32767
Integer(4) 4 -2147483648 a 2147 483 647

Nota: Si no se pone el No, de bytes Entre parntesis, entonces por omisin es 4 bytes

Variables Reales (Real).- Son variables a las que se les puede asignar valores
que tengan punto decimal, por ejemplo: -970.25 .25 46.234 876.

34
Las variables reales se declaran de la siguiente manera:

REAL:: a, b, c

Donde: a, b, c son las variables declaradas como de Tipo Real (o que admiten
el punto decimal)
Ejemplo - Escriba al menos 3 declaraciones de variables de tipo real.

Real:: x, y, z
REAL:: uno, dos, tres
real:: a, b = 18.2, c = 0,2579

Ntese que para el lenguaje Fortran las maysculas son inapreciables.


Estas variables necesitan ms memoria para almacenar los valores que los de
tipo entero, aunque todos los datos internamente se representan en forma
binaria, no se representa igual el 10 (Entero) que el 10.0 (Real), a las variables
de tipo real se les puede asignar cualquier tipo de valores enteros o fraccionarios
al leer sin formato, pero si se usa un Read con formato se debe tener cuidado
(Ms adelante se analizar ste caso el Read con formato).

Este tipo de variables tambin se puede declarar como:

Real(4), Real(8) Doble Precisin.

La siguiente tabla muestra los diferentes tipos de reales, los bytes que ocupan
en memoria y el rango de valores que pueden almacenar.

Tipo de datos Bytes Precisin Rango


Real(4) o simple 4 6 dgitos
Nmeros negativos -3.4028235E+38 Hasta -1.1754944E-38
Nmeros Positivos +1.1754944-38 Hasta 3.4028235E+38
Real(8) o Double 8 15 dgitos
Nmeros negativos -1.79769313486231D+308 - 2.225073858507201 D-308
Nmeros positivos +2.225073858507201308 Hasta +1.797693134862316D+308

Nota:
1) S no se pone el nmero entre parntesis por omisin el valor ser de 4, es
conveniente aclarar que con la nueva tecnologa, la capacidad en el tamao del
valor a almacenar aumenta cada vez mas.
Ejemplo: Dado el valor 0.05 escrbalo en al menos de 5 formas diferentes.

5.D-2 +0.0005E+2 0.05DO 5D-3 0.05

35
2) Si queremos una constante con ms de 7 cifras de precisin, tendr que
escribirse despus del numero del carcter subrayado y enseguida el nmero 8.
El mismo nmero se logra utilizando la funcin DBLE(expresin, la cual convierte
el resultado de la expresin en un nmero real con precisin doble.
Ejemplo:
REAL :: PI
PI = 3.14159654_8
X PI = DBLE (3.14159654) (No precisa Almacena basura despus de la cifra)
Los nmeros muy grandes pueden expresarse de la siguiente forma:

Forma Exponencial Forma Cientfica En matemticas de Ingeniera

0.65E+08 6.5E+07 6.5 x 10 7 65,000,000


0.90E-05 9.0E-06 9.0 x 10 -6 0.000009

Nota: La letra E representa las palabras por 10 elevado a la potencia


ASC II (American Standard Code for Information Interchange)

Cdigo Carcter que representa


130
160
161 *ver apndice A.2, tabla de cdigos ASCII
162
163
164
165

Constante tipo CHARACTER (ALFANUMRICA)


Es una tira de caracteres ASCII encerrados entre apstrofes ( ) o entre comillas
( ). El nmero mnimo de caracteres de la tira es uno. El mximo vara de
compilador a compilador debern ir entre dos apstrofes o dos comillas puede ir
a cualquier tipo de caracteres.

Constante tipo LOGICAL


Las constantes tipo LOGICAL rara vez se usan. Pero si se usan las variables y
expresiones De estos tipos son las dos siguientes: .TRUE. . FALSE.

Nota: Los puntos antes y despus son necesarios para distinguirlos de nombres de variables.

36
DECLARAR O NO DECLARAR EL TIPO DE LAS VARIABLES

Hay dos maneras de declarar el tipo de variables:

De forma explcita:
Cuando se usa
IMPLICIT NONE
IMPLICIT NONE Es opcional
necesariamente se declaran
INTEGER :: A, I, J, Z
todas las Variables que se
REAL:: L, M, B, S
usan en el Programa. Si se
COMPLEX:: R, D, F
usan variables no
LOGICAL:: BANDERA1, BANDERA2
declaradas aparece un
CHARACTER(10) :: NOM, AP
mensaje de error.
CHARACTER(LEN = 5) :: DIR
CHARACTER :: LETRA_INICIAL

Si el tipo de variable No se declara explcitamente, FORTRAN supone que son:

INTEGER: Los nombres de las variables que inician con las letras I,J,K,L,M,N. bien se
declaran como enteras (Ms adelante se muestra como se declarar variables)

Tipo REAL: Los nombres de las variables que inicien con cualquier otra letra I,J,K,L,N,M
bien se declaran como Reales.

Nota: Como se observa, es necesario declarar en forma explcita los tipos:


COMPLEX LOGICAL CHARACTER

Declaracin de variables tipo CHARACTER


Para declarar variables tipo CHARACTER, despus de la expresin (Len = #),
entre Parntesis, se indica la longitud mxima deseable de la variable.
Por ejemplo: CHARACTER (LEN = 10) :: NOM, APELLIDO
Nota: Despus de esta declaracin, la variable NOM y tambin la variable APELLIDO pueden
almacenar Hasta 10 caracteres.

Puede omitirse la expresin LEN y ponerse el nmero solo, Vgr.:

CHARACTER(10) :: NOM, APELLIDO

Nota: Si se omiten los parntesis, las variables podrn almacenar solamente un carcter. Las
siguientes dos declaraciones son equivalentes:

CHARACTER :: LETRA_INICIAL Son


CHARACTER (1) :: LETRA_ INICIAL Equivalentes

37
DECLARACIONES DE CONSTANTES
Forma general: Tipo de dato, PARAMETER :: nombre = valor
Excepcin no nos marca error por no darle los parmetros

Por ejemplo:

REAL (8),PARAMETER:: PI = 3.14159654-8 8 Bytes de precisin

CHARACTER, PARAMETER :: Mensaje = Error desconocido

COMPLEX, PARAMETER:: Z = ( 0.9091, -2.7183) Parte Imag.


Parte REAL

LAS INSTRUCCIONES DE ASIGNACIN


Las instrucciones en FORTRAN tienen una nica forma de representarse

Variable = expresin

Nota: Aqu el signo (=) en otros lenguajes (Como el APL), equivale al que significa que el
resultado de la expresin se asignar a la variable de la izquierda del smbolo (=).

CODIFICACIN.
Debe ser utilizado un solo rengln para cada operacin.
Variables y Constantes conviene nombrar segn el contenido para su definicin.
No debe de haber mezclas de enteras con fraccionarias (modo mixto).

EJEMPLO:

Valor1 = A2 - C Valor2 = A ** 2 / (B + 5 ) - C

Lado_Sup = B + B2 Raiz1=(B+(B**2-4*A*C)**0.5 / (2*A)

DECODIFICACIN.
Significa convertir del cdigo computacional al matemtico, estos pasos son muy
Importantes debido a que pertenecen a una rama de la Ingeniera de aplicacin
Electrnica y de circuitos, como se podr apreciar en otras materias curriculares.

1) Es necesario seguir las reglas de la jerarqua de operadores.


(Se explican ms adelante)

2) Debe ser identificada cada una de las operaciones que se realizan.

38
EJEMPLO 1.
X= A ** 2 / ( B + 5 ) - C

2
A B + 5

2
A
B + 5

2
A - C
DECODIFICADO B + 5

X
Sesin Presencial:
OPERADORES ARITMTICOS
Las expresiones aritmticas hacen uso de los operadores aritmticos y estos
siempre van en dos variables y/o constantes:

Operador Ejemplo Descripcin

+ a+b suma
- ab resta
* a*b multiplicacin
/ a/b divisin
** a**b Exponenciacin (potencia)

39
REGLAS DE LA PROGRAMACION
Resultados Del Aprendizaje:
El alumno conocer y aplicar las reglas y pasos a seguir en la construccin de
instrucciones y programas
Conocer los caracteres, constantes y variables que constituyen una instruccin

Contenido
JERARQUIA DE OPERADORES
CODIFICACION
DECODIFICACION
TIPOS DE CARACTERES
TIPOS DE CONSTANTES
NOMBRAR UNA VARIABLE
TIPOS DE VARIABLES

ORDEN DE EJECUCIN DE LAS OPERACIONES (JERARQUA)


I) OPERACIONAL Cuando se evala una frmula una expresin complicada,
FORTRAN realiza las operaciones una por una, segn el siguiente orden de
prioridad o jerarqua.

1.- Exponenciacin **
2.- producto por menos uno
3.- *, /
4.- +, -
5.- = = , / =, >,>=,<, <=
6.- NOT.
7.-.AND.
8.-.OR.
9.-. EQV. , .NEQV

II) POSICIONAL
Cuando las operaciones tienen igual jerarqua, se realizan de izquierda
A derecha

Nota: Excepcin a la regla anterior: cuando en una frmula aparecen dos o ms


exponenciaciones, Fortran realiza las exponenciaciones de derecha a izquierda
R = 2**3**4 W= (2**3) **4

III) ASOCIATIVIDAD
Se puede cambiar la jerarqua por medio de parntesis redondos, al asociar las
operaciones, stas se convierten en operandos y su Ejecucin sigue las reglas
anteriores.
NOTA:
El numero de parntesis que se abre debe es igual al de parntesis que se cierra.

40
REGLAS CON EXPRESIONES NUMRICAS
1.- Si al efectuar una divisin, el divisor es cero, aparece un mensaje de error.

PROGRAM Error_Division
IMPLICIT NONE
REAL:: A
A = 99 / 0.0
WRITE (*,*) VALOR DE A = , A
END PROGRAM Error _Division
(F90 (4) ERROR FOR 2159 : FLOATING POINT DIVIDE TO CERO )

2.- Cuando el resultado de una operacin excede el rango del tipo de dato
genera un error. (Ver Ejemplo)

PROGRAM Rango
IMPLICIT NONE
INTEGER :: I
I = 9999999 * 9999999
WRITE (*,*) VALOR DE I = , I
End Program Rango
(BCD .F 90 (4) ERROR FOR 2154: INTEGER OVERFLOW)

3.- Las operaciones aritmticas que involucran solamente nmeros enteros (sin
punto), dan resultados de tipo entero. Esta regla es especialmente importante
para las divisiones. En la divisin de enteros no puede haber parte fraccional en
el resultado. La parte fraccional se trunca, se pierde.
Ejemplo:
1/4 = 0
5/5 = 1 7/4 = 1 5/4 = 1
17/4 = 4 18/9 = 2 11/5 = 2

4.- Las operaciones aritmticas que involucran solamente nmeros reales (con
punto), producen resultados de tipo real.
Ejemplos:
3./4. =0.750000 8./8. =1.000000 15./12. =1.250000 18./12. = 1.50000

PROGRAM FRACCION Resultados de RE4


WRITE (*,*) 5. / 5. = , 5./5. 5./5. =1.000000
WRITE (*,*) 1 / 4= , 1/4 1/4 = 0
WRITE (*,*) 5.*(5.*(1. /5 ))= , 5.*(5*1./5.) 5.*(5* (1./5.)) = 5.000000
WRITE (*,*) 7./ 4.= , 7/4 7/4. = 1.750000
WRITE (*,*) 3/4.= , 3/4. 3/4 = 0
WRITE (*,*) 9/4. = , 9/4 9/4. = 2.250000
END PROGRAM FRACCION

5.- Cuando se presenta una operacin aritmtica entre un nmero entero y un


nmero real, Fortran convierte l numero entero a real y luego realiza la
operacin y se obtiene un resultado de tipo real.

41
6.- Cuando el resultado de una operacin es real y se asigna el resultado a una
variable de tipo entero, sucede lo siguiente: primero se convierte el resultado a
un valor entero (se pierde la fraccin) y luego se almacena en la variable.

7.- Cuando el resultado de una operacin es entero y se asigna el resultado a


una variable de tipo Real, sucede lo siguiente: Primero se convierte el resultado
a un valor real (con punto) y luego se almacena en la variable.

PROGRAM BUENO
IMPLICIT NONE
INTEGER :: RESULTADO
REAL :: BUENO
WRITE(*,*) 9/4+1.25 =, 9/4+7.25
RESULTADO = 9/4 + 7.25
WRITE (*,*) EL RESULTADO es: , RESULTADO
BUENO = 9/4 + 2
WRITE (*,*) El valor de BUENO es: ,BUENO
END PROGRAM BUENO

8.- La Exponenciacin, cuando el exponente es entero, o real sin parte fraccionaria, la


expresin A**n quiere decir utilice A como factor n veces. Entonces es posible elevar
un nmero negativo a una potencia entera.

PROGRAM Exponente Escriba Los Resultados


WRITE (*,*)(-4,0 )**2 =`,(-4,0)**2
WRITE (*,*)(-4,0)**2.0=, (-4,0)**2.0
WRITE (*,*)(-4) **2=, (-4)**2

REGLAS PARA EXPRESIONES ALFANUMRICAS


Cuando se asigna un dato alfanumrico a una variable alfanumrica pueden
darse dos situaciones que necesitan aclararse a saber:

1.- Que el dato alfanumrico sea mas largo que la capacidad de la variable. En
este caso se almacena en la variable los primeros caracteres del dato
alfanumrico.
PROGRAM GABY

Implicit none
Character (5) :: nom
Nom=Gabriela
Write (*,*)nom
End program GABY RESULTADOS: Gabri

42
2.- Que el dato alfanumrico sea menos largo que la capacidad de la variable.
En este caso se almacena el dato alfanumrico alineado a la izquierda.

PROGRAM APELLIDO
Implicit none
Character (10) ::Apell
Apell= Glz
Write (*,*) *, Apell, *
END PROGRAM APELLIDO RESULTADOS: *Glz*

OPERACIONES CON ALFANUMRICOS


Con los alfanumricos podemos llevar acabo las operaciones siguientes:

1. Seleccionar una parte de una variable alfanumrica para imprimirla,


copiarla, grabarla para asignarle un valor.
Ejemplo:
PROGRAM BATO
Implicit none
Character (19):: Uno, Dos,Tres, Cuatro, Cinco, Seis
Uno =`aBcdehn.!o
Dos = Uno(11) + Uno (1)
Tres = Uno(2)+Uno(9)+Uno(5)+Uno(7)
Cuatro= Uno(19)+Uno(6)+Tres(2)+Uno(4)+Uno(18)
Cinco = Tres(1)+Uno(1)+Dos(1)+Cuatro(5)
Seis = Tres(1)+Dos(2)+Dos(1)+Cuatro(5)
Write(*,*) Dos,Tres, Cuatro,Cinco, Seis
End program BATO RESULTADO: Ta Bien Shido Bato .!

Nota: Como se observa para seleccionar una parte del contenido de las variable alfanumricas, se pone el nombre
de la variable y luego enseguida de ella entre parntesis va la posicin a seleccionar.

Cuando en una variable van dos nmeros enteros separados por : Estos
nmeros indican cual es el primero y cual es el ultimo carcter que se quieren
seleccionar. ( Ver Ejercicio )

EJERCICIO
PROGRAM MERO
Implicit none
Character (8) :: a, b, c = A M E R O T U H I J
A=C
WRITE(*,*) * , A, * *AMEROTUH *
B= 123456
Write (*,*) * , B, * * 123456 *
C=A(6:7)
B(1:4) = A(2:5)
B(5:7) = A(6:7)
B(8) = !
WRITE (*,*) *, B(5:7) , *, *,B(1:4) *, *, B(8), * * T U * * MERO !*
END PROGRAM MERO

43
2.- Encadenar o unir dos o mas datos alfanumricos con el operador // el
operador esta formado de dos diagonales // . [Significa: No existe espacio entre ellas.]

PROGRAM TRES_MOSCAS
Implicit none
Character (6) ::A, B, C
Character (18) :: D, E
A= Todos
B = Para
C = Uno
D = C // B // A
E =A // B //C
WRITE (*,*) C // B // A // Y // E
End Program TRES_MOSCAS RESULTADOS: Uno Para Todos Y Todos Para Uno

Entrada/Salida con Formato Libre


WRITE (*,*) Lista de datos
Esta instruccin presenta en la pantalla los datos o resultados de un programa
en unformato libre.Despus de escribir la lista de datos, brinca a siguiente lnea
.La lista de datos que va enseguida de write (*,*) puede estar formada por
una o mas constantes, variables o frmulas separadas por comas. Pude estar
formada de datos numricos o alfanumricos, solos o mezclados. Ms
adelante se presenta formalmente la salida y entrada con formato.

El primer * de la instruccin write (*,*) indica que el resultado se escribe en la


pantalla (se esta omitiendo el numero de dispositivo.)

El segundo * de la instruccin write (*,*) indica que el resultado se presenta en


formato libre , con cierto orden asumido por el compilador en forma
automtica, como se ve en la presentacin de los resultados. (Se omite dar un
formato especfico)
PROGRAM FORMATO_LIBRE
Implicit none
Real :: costo, pza1, pza2, pza3
Read(*.*) pza1, pza2, pza3
Costo= pza1+ pza2+ pza3
Write (*,*) Precio de parte 1 = , pza1
Write (*,*) Precio de parte 2 = , pza2
Write (*,*) Precio de parte 3 = , pza3
Write (*,*) Costo de maquina = , costo
END PROGRAM FORMATO_LIBRE
RESULTADOS:
Precio de parte 1 = 5.18
Precio de parte 2 = 6.34
Precio de parte 3 = 8.75
Costo de la maquina= 20.27

44
READ (*,*) Lista de datos
Esta instruccin asigna a las variables del programa los valores que se escriben
en el teclado.
Forma General
READ(*,*) nombre de variable [, nombre de otra variable] ----(opcional)

Cuando se escriben varios datos como respuesta a una instruccin READ,


deben ser separados por espacios en blanco por comas.
El primer valor que se escribe se guarda en la variable que est en el primer
lugar de la instruccin READ. El siguiente valor que se escribe, se guarda en la
variable que est en el segundo lugar, y as sucesivamente.

(Ver prximo ejemplo)

PROGRAM ALFANUMERICOS
IMPLICIT NONE
CHARACTER (len=12) :: NOMBRE
INTEGER:: CARRERA
WRITE(*,*) Nombre y edad?
READ(*,*) NOMBRE, CARRERA ! FORMATO LIBRE
WRITE(*,10) NOMBRE, CARRERA ! FORMATO RESTRINGIDO
10 FORMAT ( , Nombre: , A12, /, , CARRERA : , I3)
END PROGRAM ALFANUMERICOS

Nota: Cuando se escriban datos alfanumricos como respuesta a una instruccin READ,
si estos datos contienen espacios en blanco o comas, deben de ir entre apstrofes entre
comillas

ENTRADA/SALIDA CON FORMATO SELECCIONADO


READ (*, Nmero entero) lista de datos
WRITE (*, Nmero entero) lista de datos.

Los asteriscos de la instruccin write (*, *) Pueden ser sustituidos por nmeros enteros
La instruccin write (*, numero entero ), presenta en la pantalla los datos o
resultados de un programa. El nmero entero corresponde al nmero de la
instruccin FORMAT. Esta instruccin indica la forma formato de
presentacin de los resultados.

PROGRAM FORMATO_SELECCIONADO
IMPLICIT NONE
REAL :: FAHRENHEIT, CENTGRADOS
CONTA = 5
READ (*,100) FAHRENHEIT
100 FORMAT (DAME UNA TEMPERATURA EN GRADOS FAHRENHEIT= , F 7.3)
CENTGRADOS = 5./9.* (FAHRENHEIT - 32.)
WRITE (*,200) FAHRENHEIT, CENTGRADOS
200 FORMAT (x,Para,x,F7.3, GRADOS FAHRENHEIT, = F7.3, Celsius)

45
END PROGRAM FORMATO_SELECCIONADO

RESULTADOS: Para 9999.99 Grados Fahrenheit = 9999.99 Celsius

FORMATO O FORMA DE SALIDA


La forma o formato de presentacin de los resultados se indica as :
Formato pera datos enteros ( integer )
__ format ( , Iw) Donde: I Se refiere a integer ( Variable Entera
__format ( , Iw.M) W Son los lugares a usar en total de la impresin M # mnimo de dgitos

PROGRAM FORMATO_ENTERO
Implicit none
Integer :: valor1, valor2
Read(*.50) valor1, valor2
50 Format (I7, I7)
Write (*,150 ) valor1, valor2
150 Format (valor1 =I7, valor2= , I7) RESULTADO: Valor1 = 14 valor2 = 28
END PROGRAM FORMATO_ENTERO
NOTA:
El resultado saldr por la pantalla del monitor ;Para imprimir en FORTRAN 90-95, es necesario declarar el
archivo de salida como impresora. Esto se analizar en el capitulo 9 Manejo de archivos.

FORMATO PARA DATOS REALES


__ Format ( , Fw .d)
Donde
F Se refiere a datos de punto flotante (real)
w Es el nmero de lugares que se van a utilizar en total,
Incluyendo un lugar para el signo y punto decimal
D Es el nmero de dgitos a la derecha del punto decimal

Program formato_real
Implicit none
Integer::horas_trab
Real:: sueldoxhora, sueldo_total
Read(*.550) horas_trab, sueldoxhora
550 format(I2, f5.2)
sueldo_total= sueldoxhora * horas_trab
660 format ( Para , I2, horas trabajadas , ,sueldo a pagar = $, F5.2)
end program formato_real

Resultados: Para 8 hrs trabajadas con un sueldo a pagar = $80.00.

Formato para datos alfanumricos


__ format ( , A ) Donde A Son los datos alfanumricos(character)
__ format ( , Aw ) W Son los lugares se van a utilizar en total

46
PROGRAM ALFANUMERICO
IMPLICIT NONE
CHARACTER:: NOMB1(4), NOMB2(8)
READ ( * , 20 ) NOMB1, NOMB2
WRITE ( *,20 ) NOMB1, NOMB2
20 FORMAT (A4,A8)
END PROGRAM ALFANUMERICO

RESULTADOS : MIKE EDUARDO

FORMATOS PARA MOVER EL CURSOR

__ Format ( , Tc __ __ __ )
Donde T Se refiere al tabulador. Mueve el cursor a la columna c de la
presente lnea
__ format ( , nX, __ __ __ )
Donde X Se refiere a espaciado horizontal . brinca n espacios a la
derecha.

PROGRAM FORMATEADO
WRITE (*,10 ) UNO , DOS , TRES , CUATRO .
10 FORMAT ( , 9X, A, 7X, A, 2X, A, 4X , A )
WRITE(*,*) 12345678901234567890123456789012345678901234567890
WRITE(*,15 ) 18, 4.39, 213.35, 1850.666, MIKE
WRITE (*,15) 497, -0.09, 23099.001, -0.11, EDUARDO
15 FORMAT ( , T 4, I3 , T40, F8.2, T15, F9.2,T30, F6.1,T51,A)
END PROGRAM FORMATEADO

RESULTADOS
--------------------- UNO ---------- DOS ---------TRES------------CUATRO
1234567890123456789012345678901234567890
_ _18 _ _ _ _1.39 _ _ _203.35 1850.6 _ MIKE_
497 -0000.09 _23099.84 _ _-0.1 _EDUARDO_
Cuando los # que de quieren escribir no caben en el formato, se DESPLIEGAN asteriscos

FORMATO PARA NOTACIN EXPONENCIAL CIENTFICA


__ Format ( , Esw .d )
Donde
Es Se refiere a exponencial cientfica
w Indica el # total de lugares que se van a dejar en total
d Indica el # de dgitos a la derecha del punto decimal
El resultado de w- d debe ser mayor o igual a 7

47
PROGRAM NOTACIN_CIENTFICA
IMPLICIT NONE
REAL::CIENTFICA
READ (*.100) CIENTFICA
1000 FORMAT (F14.10)
WRITE (*,2000) CIENTFICA, CIENTFICA

2000 FORMAT( , T10, FORMATO REAL, F14.10, FORMATO CON NOTACIN


CIENTFICA ES ,ES9.4)
END PROGRAM NOTACIN_CIENTIFICA

Formato para notacin Exponencial


__ FORMAT (, Ew,d )
Donde:
E Se refiere a exponencial
w Indica el nmero total de lugares que se van a utilizar
d Es el nmero de dgitos a la derecha del punto decimal

NOTA : El resultado de w-d debe ser mayor o igual a 6

Ejemplo :
PROGRAM NOTACIN_EXPONENCIAL
IMPLICIT NONE
REAL:: EXPONENCIAL
READ (*,99) EXPONENCIAL
99 FORMAT(F14.10)
WRITE (*999) EXPONENCIAL, EXPONENCIAL
999 FORMAT ( , T10,CON FORMATO REAL ES ,F14.10, 10X, CON FORMATO
EXPONENCIAL ES , 3X, E9.4)
END PROGRAM NOTACIN_EXPONENCIAL

48
FUNCIONES DE FORTRAN MS COMUNES
El captulo nmero Siete se describen mas detalladamente el manejo y uso de
funciones y en el Apndice A.4 se enlistan algunas de ellas. Las funciones del
compilador ms usadas son entre otras:

ABS(expresin)Proporciona el valor absoluto del resultado de la expresin. La


expresin puede ser real, entera o compleja.

PROGRAM FUN_ABSOLUTA
IMPLICIT NONE
REAL, PARAMETER:: MPI=3.14159
WRITE(*,1950) MPI
1950 FORMAT (10X, F8.6, ES UN VALOR REAL)
WRITE (*.1980) ABS (MPI)
1980 FORMAT(10X, F8.6, EL VALOR ABSOLUTO)
END PROGRAM FUN_ABSOLUTA
RESULTADOS : -3.14159 ES EL VALOR REAL
3.14159 ES EL VALOR ABSOLUTO

Nota: Un nmero complejo esta formado por una parte real y una parte imaginaria.
La instruccin C = (6, 8) asigna a la variable C el nmero imaginario 6 + 8i.
Este nmero 6 + 8i es igual a 6 + 8 (-1)1/2 La parte real es 6 y la parte imaginaria es 8 (-1)1/2

Cuando se utiliza la funcin ABS(expresin compleja), el resultado que genera


en Fortran es:

ABS(expresin compleja) = real2 + imaginario2

Resultado 642 + 182

49
Funcin INT(expresin)
Esta funcin elimina la fraccin decimal del resultado de la expresin. La
expresin puede ser real, entera o compleja. El resultado es entero. Si la
expresin es compleja, se elimina la parte imaginaria y queda la parte real como
fraccin.
PROGRAM FUN_INTEGRAL
IMPLICIT NONE
INTEGER:: HORAS_TRAB, BILLETES
REAL:: SUELDOXHORA, SUELDO_TOTAL
READ(*,5) HORAS_TRAB, SUELDOXHORA
5 FORMAT (I2, F5.2)
SUELDO_TOTAL= SUELDOXHORA*HORAS_TRAB
BILLETES=INT(SUELDO_TOTAL)
WRITE(*,10) SUELDO_TOTAL, BILLETES
10 FORMAT (10X, EL SUELDO ES , F5.2, EN BILLETES ES $,I5)
END PROGRAM FUN_INTEGRAL

RESULTADOS $170.50 EN BILLETES ES $170

Funcin Real (uso de fracciones)


REAL (EXPRESIN)
Esta funcin convierte un dato variable de modo entero a uno real, comnmente
se usa para evitar errores de mezcla en operaciones aritmticas.
PROGRAM FUN_REAL
IMPLICIT NONE
INTEGER:: NUMERO_DE_ALUMNOS
REAL:: SUMA_DE_CALIFICACIONES, PROMEDIO
READ (*,20) NUMERO_DE_ALUMNOS, SUMA_DE_CALIFICACIONES
PROMEDIO= REAL(NUMERO_DE_ALUMNOS)/SUMA_DE_CALIFICACIONES
20 Format(I2,F14.3)
WRITE(*,30)PROMEDIO
30 FORMAT (15X, EL PROMEDIO GRUPAL FUE= ,F7.2)
END PROGRAM FUN_REAL
RESULTADOS: EL PROMEDIO GRUPAL FUE = 89.75
Funcin TRIM (alfanumricos)
La funcin TRIM elimina los espacios en blanco que estn al final de una
variable o una constante alfanumrica (tipo character) . Accin de compactar.

50
PROGRAM COMPACTA
! La instruccin trim(alfanumrico) elimina
! De una variable o de una constante alfanumrica
! Los espacios en blanco que van al final. NOM -------
CHARACTER(10) :: NOM , SALUDO
NOM= MIKE 1.-*MIKE-----*
Saludo = Hola 2.- * MIKE *
Write (*,*) * , nom * 3.-* Hola------*
Write (*,*) * , trim (nom ) , * 4.-* Hola Mike *
Write (*,*) * , Saludo, *
Write (*,*) * , Trim(Saludo), ,Trim(Nom), * *
END PROGRAM COMPACTA

Funcin NINT(Expresin)
(Nearest INTeger: Redondea al entero ms prximo)
Redondea el valor de la expresin de la siguiente manera:
Si la parte decimal de la expresin es inferior a 0.5 , da como resultado el entero
inferior ms cercano. Si la parte decimal de la expresin es mayor o igual a 0.5
el resultado es el entero superior ms cercano. La expresin debe ser real. El
resultado es un entero.

PROGRAM FUN_NINT
IMPLICIT NONE
REAL::PROMEDIO_DE_LLUVIA_X_DECADA
INTEGER:: LITROS
READ (*,2000) PROMEDIO_DE_LLUVIA_X_DECADA
2000 FORMAT (F14.7)
LITROS = NINT (PROMEDIO_DE_LLUVIA_X_DECADA)
WRITE (*,3000) LITROS
3000 FORMAT ( 20X, LOS LITROS CAIDOS EN LA DECADA FUERON , I7)
END PROGRAM FUN_NINT

RESULTADOS LOS LITROS CAIDOS EN LA DECADA FUERON 2

Funcin SQRT(Expresin) (SQUARE ROOT TABLE: TABLA DE RAIZ CUADRADA)


Calcula la raz cuadrada de un nmero positivo. La expresin puede ser real o
compleja. Si es real, debe ser mayor o igual a cero. Si es compleja tanto la parte
real como la parte imaginaria puede ser cero o mayor que cero o menor que
cero.
PROGRAM FUN_SQRT
IMPLICIT NONE
REAL:: A,B,C, DISCRIMINANTE
READ (*,90) A,B,C
90 FORMAT (3 F7.3)
DISCRIMINANTE= SQRT (B**2. 4.* A * C)
WRITE (*,100) DISCRIMINANTE
100 FORMAT ( 25X , EL VALOR DISCRIMINANTE ES , F7.3)
END PROGRAM FUN_SQRT

RESULTADOS EL VALOR DISCRIMINANTE ES_________

51
Funcin LOG 10 (Expresin)
Nos d el logaritmo comn (base diez) del valor de la expresin.
La expresin debe de ser Real, por lo cual el resultado es real.
PROGRAM LOGARITMOX
IMPLICIT NONE
INTEGER:: LOGARITMOX
READ(*,1)LOGARITMOX
1 FORMAT (F6.4)
WRITE(*,*) LOG10( LOGARITMOX)
WRITE(*,*) LOG10( LOGARITMOX * 10.)
WRITE(*,*) LOG10( LOGARITMOX * 100.)
WRITE(*,* LOG10( LOGARITMOX * )
END PROGRAM LOGARITMOX

Funcin LOG(expresin)
Nos da el logaritmo natural (base e) del valor de la expresin. La expresin
puede ser real o compleja. Si es real, debe ser mayor que cero. Si es compleja,
debe ser diferente de cero.

PROGRAM LOGARITMOe
IMPLICIT NONE
INTEGER:: NUMERO
REAL:: LOGARITMO_E
READ (*,1) NUMERO
1 FORMAT ( I4)
LOGARITMO_E = LOG (REAL(NUMERO))
WRITE(*,1) LOGARITMO_E
11 FORMAT (10X, F14.7)
END PROGRAM LOGARITMOe

FUNCION EXP(expresin)
Calcula el exponencial del valor de la expresin. Esto es: Calcula el valor de la
constante elevada a la potencia especificada en la expresin (real o
compleja).La expresin puede ser:
PROGRAM POTENCIA1
IMPLICIT NONE
REAL:: NUMERO, POTENCIA
READ (*,2) NUMERO
2 FORMAT ( F14.7)
POTENCIA = EXP (NUMERO)
WRITE(*,22) POTENCIA
22 FORMAT ( 20X, F 14.7)
END PROGRAM POTENCIA1

52
Funcin MOD (Residuo)
D el residuo de la divisin.= dividendo divisor *INT (Residuo)

PROGRAM RESIDUO
IMPLICIT NONE
INTEGER:: A, B, C
READ( *,3) A,B
3 FORMAT ( 2I4)
C= MOD(A,B)
WRITE(*,33) A, B, C
33 FORMAT ( 10X, SI A = ,I2, Y B = ,I2, ENTONCES EL RESIDUO ES = ,I2)
END PROGRAM RESIDUO

FORMATO MAX Y MIN


El formato MAX(X,Y) MIN(X, Y) ,Compara los valores contenidos en X y en Y
dando como resultado el mayor. De sta manera podemos responder a la
pregunta: Cmo podemos saber si un nmero es divisible entre otro?
Compara los valores contenidos en X y en Y y da como resultado el menor.

Nota: Los valores comparados deben ser del mismo tipo: los dos enteros o los dos reales.
X y Y pueden ser una constante, una variable o una frmula.

PROGRAM COMPARAR
IMPLICIT NONE
REAL:: X, Y
INTEGER::Z, W
READ (*,4 ) X,Y
4 FORMAT ( 2F 7.3)
READ (*,5 ) Z,W
5 FORMAT ( 2I 7)
WRITE(*,44) MIN(X, Y), MIN(Z, W)
10 FORMAT ( , F15.3, I15)
END PROGRAM COMPARAR

FUNCIONES TRIGONOMTRICAS

SIN(ngulo en radianes) SIND(ngulo en grados)

COS(ngulo en radianes) COSD(ngulo en grados)

TAN(ngulo en radianes) TAND(ngulo en grados)

53
Estas funciones nos dan respectivamente, el seno, el coseno y la tangente de un
ngulo dado en radianes, NO EN GRADOS, El ngulo puede estar dado por una
constante, una variable una frmula.

Ejemplo: Obtenga el seno de 30 grados, el coseno de 30 grados y la tangente de


45 grados

PROGRAM GRADOS
IMPLICIT NONE
REAL, PARAMETER::PI = 3.141593
REAL:: A , I
I = 30.
A= SIN(I*3.141593/180.)
WRITE(*,10) A,COS(I*PI/180.), TAN(45.*PI/180.)
10 FORMAT ( , 3F14.7)
END PROGRAM GRADOS

Funciones Arco
Con estas funciones podemos obtener el ngulo que corresponde a la
expresin. El ngulo que se obtiene esta en RADIANES. Estas tres funciones
obtienen un resultado inverso al de las tres funciones que estn anteriormente
en el ejemplo dado.

ASIN (expresin) [ Calcula el Arco Seno ] (ngulo en grados)

ACOS (expresin) [ Calcula el ArcoCoseno ] (ngulo en grados)

ATAN (expresin) [ Calcula el ArcoTangente ] (ngulo en grados)

Tarea : Elabore un programa para Obtener:


el arco seno de 0.5
el arco coseno de 0.866
el arco tangente de 1.0

FUNCIONES HIPERBLICAS
Estas funciones nos dan respectivamente, el seno hiperblico, el coseno
hiperblico y la tangente hiperblica de un ngulo dado en RADIANES, NO EN
GRADOS.

SINH(ngulo en radianes) [ Calcula el Seno hiperblico ]

COSH(ngulo en radianes) [ Calcula el Coseno hiperblico ]

TANH(ngulo en radianes) [ Calcula la Tangente hiperblica ]

54
Ejemplo :
PROGRAM HIPERBOLICAS
IMPLICIT NONE
REAL, PARAMETER :: PI = 3.141593 ! paremeter : PI = constante
REAL :: RADIANES, NUMERO
NUMERO = 30.
RADIANES = SINH ( NUMERO * 3.141593 / 180 )
WRITE(*,10) RADIANES, COSH (NUMERO * PI / 180. ), TANH (45. * PI / 180. )
10 FORMAT ( , 3F14.7)
END PROGRAM HIPERBOLICAS

FUNCIN RANDOM (NMEROS ALEATORIOS O AL AZAR)


Nos permite generar un nmero aleatorio real
CALL RANDOM_nmero (variable_de_tipo_real)
La subrutina RANDOM_ nmero (variable_de_tipo_real) genera un nmero
aleatorio real y lo almacena en la variable_de_tipo_real. El nmero generado es
mayor o igual que cero y menor que uno. La forma de usar o llamar a una
subrutina es con la palabra CALL, que significa llamar. Esta funcin siempre va
precedida de otra llamada RANDOM_SEED , la cual tambin ser llamada por
un CALL, y su funcin es que a partir de un nmero llamado Semilla , pueda
generar nmeros aleatorios.

PROGRAM AZAR
IMPLICIT NONE
REAL :: NUM1, NUM2, NUM3
CALL RANDOM_SEED( )!Llamada a generar # aleatorio EN BASE A UN NUMERO SEMILLA
CALL RANDOM_0(NUM 1)
CALL RANDOM_0(NUM 2)
CALL RANDOM_0(NUM 3)
WRITE(*,100)NUMI,INT(101* NUM1), NUM2, INT(11*NUM2),NUM3,INT(5*NUM3)
100 FORMAT ( , 3(F12.7,I9))
END PROGRAM AZAR

55
EJEMPLIFICACIN DE UN PROGRAMA DESARROLLADO CON CADA UNO
DE LOS PASOS SUGERIDOS PARA UNA PROGRAMACIN EXITOSA.

A continuacin se muestra un programa desarrollado, que nos da las distintas


soluciones de la ecuacin cuadrtica:

AX 2 + BX + C = 0

DEFINICIN. D = Discriminante ( Raz De La Ecuacin)

S D > 0 X1 X2

1.1) SALIDAS S D = 0 X1 = X2

Si D < 0
Parte_Real
Parte IMAGINARIA

1.2) CLCULOS DISCRIMINANTE ( D = B 4AC )

1.3) ENTRADAS B ( Valores Que Se Tienen Que Leer )

56
1) SALIDAS

1 Dame el valor de "A"

S D > 0 2
Dame el valor de "b"

1.1) SALIDAS S D = 0
3 Dame el valor de "c"
Si D < 0

4 La ecuacin a solucionar es
Ax2 + Bx + C = 0

5 Este problema tiene dos


races reales

6 Las races reales son:


Raz 1=x1 Raz 2= x2

Este problema tiene


7 dos races idnticas

Las races idnticas son:


8 Raz 1=x1 Raz 2= x2

9 Este problema tiene races


imaginarias (complejas)

Las races
10 complejas son:
Raz 1=x1Raz 2= x2

11 Este programa ya
termin
57
DISCRIMINANTE

1.2) CLCULOS = b 2
4 ac 1

DISCRIMINANTE ( D = B 4AC )
b + Discriminante
X1 = 2
2a

b Discriminante
X1 = 3
2a

X1 = X2 4

b
X1 = 5
2a

discrimina
nte
X2 = 6
2a

1.3)ENTRADAS B ( Valores Que Se Tienen Que Leer )

A
ENTRADAS 1

2
B
3
C
58
2) PSEUDO - CDIGO

Programa races
PROGRAMA RAICES
COMENTARIOS
DECLARACIONES
ESCRIBE ( DESPLIEGA) DAME LOS VALORES DE A, B, C
LEE A, B, C
DISCRIMINANTE = B ** 2 4 * A * C
! Grupo matricula, nombre
! maestro, fecha
! descripcin del problema
Variables Implcitas
! declaraciones
Real a,b,c, X1, X2, discriminante, pte real, parte imaginaria
! asignar valores
Escribe Este programa solucionaasigna los valores de a, b, c
Leer A, B, C
Escribir "los coeficientes son" a; b, c
! calcula el discriminante
discriminante = b ** 2 - 4 * a * c
! Solucione de acuerdo al discriminante
S (discriminante >0) entonces
X1= (-b + sqrt ( discriminante)) / ( 2 * a)
X2= (-b - sqrt ( discriminante)) / ( 2 * a)
Escribe la solucin de X1, X2
De lo contrario s ( l discrimnate = 0) entonces
X1= (-b) / ( 2*a)
Escribe la solucin de X1=X2, X1
De lo contrario ! si existen races complejas
Parte real = (-b) / (2*a)
parte imaginaria = sqrt (abs (discriminante)) / (*a)
Escribe la parte real y la parte imaginaria
Fin de s (preguntas)
Fin de programa de races

3) DIAGRAMACIN
3.1) DIAGRAMA ESTRUCTURADO:

59
4) TABULACIN:

A B C DISCRIMINANTE PR PI X1 X2 SALIDAS
2 1 1 7 -0.25 6.6614 SALIDA 1
DAME EL VALOR
DE A
DAME EL VALOR
DE B
DAME EL VALOR
DE C
2X + X + 1= 0
TIENE SOLUCION
IMAGINARIA
PI= 0.661435
PR= -.025
FIN

60
INICIO

3.2)DIAGRAMA DE FLUJO
a, b, c

a, b, c

Discriminante = b2 - 4ac

Discriminante
< 0
NO SI
X1 = (-b+ b 4 ac )/ (2a)
2

X2 = (-b+ b 4 ac )/ (2a)
2
Discriminante
= Cero
si 'Dos races reales
No X1 = (-b) / (2a) diferentes

Part_real = (-b) / (2a)


X1 = X2
Part_imag = discrimina nte X1, X2
2a
' Races reales '
Repetidas

'Races
Complejas' ' X1 = X2 = ',x1

Part_real, ' + i ', part_imag


Part_real, ' - i ', part_imag

FIN

61
5) CODIFICACIN

PROGRAM CUADRTICA
IMPLICIT NONE
!PROGRAMA QUE SOLUCIONA LA RAIZ DE UNA ECUACIN CUADRTICA
REAL :: X1, X2, A, B ,C
REAL :: DISCRIMINANTE, PTE_REAL, PTE_IMAG
READ (*,10) A, B, C
10 FORMAT ( 5X, ASIGNE EL VALOR DE A= , F7.2, ASIGNE EL VALOR DE B = ,
F7.2, ASIGNE EL VALOR DE C= ,F7.2)
WRITE (*,20) A, B, C
20 FORMAT (5X, EL VALOR DE A= ,7.2, EL VALOR DE B= ,7.2, EL VALOR DE C= ,7.2)
! CALCULOS
DISCRIMINANTE = B**2.-4.*A*C
IF(DISCRIMINANTE<0) THEN
X1 = (-B)+ SQRT(B**2.-4.A*C)/(2.*A)
X2 = (-B) - SQRT(B**2.-4.A*C)/(2.*A)
WRITE (*,30)X1,X2
30 FORMAT (5X, RAIZ REAL X1= ,F7.2,5X, RAIZ REAL X2= ,F7.2)
ELSE IF (DISCRIMINANTE = 0) THEN
X1 = (-B)/(2.*A)
X2 = X1
WRITE (*,40)X1,X2
40 FORMAT (5X, RAIZ REAL X1=X2= ,F7.2,5X,F7.2)
ELSE
PTE_REAL = (-B)/(2.*A)
PTE_IMAG = SQRT(ABS(DISCRIMINANTE))/(2.*A)
WRITE(*,50) PTE_REAL, PTE_IMAG, PTE_REAL, PTE_IMAG;
50 FORMAT(5X, RAICES IMAGINARIAS ,5X, PARTE REAL=; ,F7.2, +
I , 5X, PARTE IMAGINARIA = ,F7.2, 5X, PARTE;
REAL 2= ,F7.2, I ,5X, PARTE IMAGINARIA 2 = , F7.2, -I)
END IF
END PROGRAM CUADRATICA

Nota Muy Importante

En esta etapa de su estudio ya conociendo los conceptos bsicos, la simbologa,


el proceso de codificacin de frmulas, as como todos los pasos sugeridos para
una programacin exitosa. Recomiendo que consulte el Apndice nmero Dos
en el cual se muestran grficamente los pasos para instalar el lenguaje
FORTRAN 90-95.
Una vez practicado lo anterior... ya esta usted en una etapa bsica para iniciarse
en la gran aventura creativa del desarrollo y proceso de programar en el
lenguaje FORTRAN 90-95.

62
Problemas Resueltos y Prctica Integradora
1.- Diga si las siguientes variables estn correctas, o si hay algn error diga por
qu.
xyz correcta
x.y incorrecta, contiene un carcter especial
x123 correcta
loco_ incorrecta, contiene un carcter especial
10% incorrecta, comienza con nmero y lleva carcter especial
x15 correcta
m_o correcta
a-18 incorrecta, contiene carcter invlido
lluvia correcta
uno dos incorrecta, contiene carcter invlido
read Incorrecta, identificador ( Palabra Reservada )

2.- Escriba en Fortran las siguientes expresiones algebraicas


Solucin:
Frmula matemtica Solucin Codificada
0
C = 5/9 (0F-32) Grados Celsius = 5./9. * (grados faren 32)

Tangente (Teta) = Seno(Teta) / Coseno(Teta) tangente = sin (teta)/ cos (teta)

Evidencia Integradora Para El Aprendizaje:


3.1.- Antecedentes, (cundo se inicio a trabajar con el lenguaje FORTRAN?).
3.2.- Diga cul es la definicin de una variable en Fortran
3.3.- Diga qu es un algoritmo. (Pseudo-Cdigo)
3.4.- Diga cul es la diferencia entre diagrama de flujo y Estructurado.
3.5.- Diga en qu consiste un lenguaje estructurado.
3.6.- Diga qu significa la palabra "codificar".
3.7.- Diga cules son las partes fundamentales de un programa en Fortran.
3.8.- Diga para qu se usan comillas en un programa Fortran.
3.9.- Mencione los tipos de caracteres usados en Fortran y escriba un ejemplo
De cada uno.
3.10.-Enuncie el concepto de Variable en un programa en Fortran.
3.11.-Enuncie la definicin de identificador mencione al menos 5 identificadores.
3.12.-Diga cuntos tipos de variables existen en Fortran y diga sus rangos de
Aplicacin.
3.13.- Diga para qu se usan las variables de tipo Integer
3.14.- Diga para qu se usan las variables de tipo Real
3.15.- Diga hasta cuntos caracteres puede contener una variable Character-
3.16.- Diga qu significa "correr" un programa.
3.17.- Diga cul es el orden de prioridad con qu se realizan las operaciones en
Una expresin, y diga como se alterara este.(Jerarqua De Operadores)
3.18.- Diga qu es una cadena de caracteres

63
3.19.-Diga qu operacin efecta la siguiente funcin: SQRT ( )
3.20.-En una proposicin de asignacin diga qu significa la siguiente
Representacin: A FI
3.21.- Diga cmo se puede escribir un comentario en un programa Fortran.
3.22.- Describa la estructura de un programa en FORTRAN.
3.23.- Como se define una variable o constante en FORTRAN.
3.24.- Cuales son las reglas para expresiones aritmticas.
3.25.- Diga para que sirve el comando implicit none.
3.26.- Enuncie las reglas de las expresiones no numricas.
3.27.- Cuales son las principales funciones internas de FORTRAN.
3.28.- Codifique las siguientes expresiones.
b b 2 4ac
2 2
P t
x= V = 1 21 + k
2a P1

cateto _ opuesto b2 + (a b)(a + b)


seno = y=
hipotenusa (a + b)2

3.29.- Decodifique

x = y1 * y2 / (y1 + y2)2 y

y = (x1 + x2 ** 2 / (xy + x2) * (x1 x2)) ** 0.5

3.30.- Diga a que modo de variables corresponden los valores a continuacin


enunciados.

764.004 987654321 lola nombre 1.7e-3

3.31.-Estn o no correctamente descritas las siguientes variables, de lo contrario


diga la razn de ello.

X15 program open luz_electrica delfn avion_z


Bonita sper veloz gen entero Lucas perico
Chucha _menos jetx15 123lotus parangaricutirimicuaro

3.32.- Despus de consultar y estudiar el Apndice nmero Tres ( A.3) :Diga que
Son las palabras reservadas del Fortran 90-95
3.33.- Elabore un esquema de los pasos a seguir para la instalacin del lenguaje
FORTRAN 90-95 en una computadora personal.
3.34.- Elabore un esquema de los pasos para editar y procesar un programa en
FORTRAN 90-95.
3.35.- Que son y que codifican las utileras contenidas en el lenguaje ?
FORTRAN 90-95 que aparecen al instalarse y se denominan lecciones?

64
3.36.- Con todos los pasos sugeridos para una programacin exitosa, solucione:
3.37.- Elabore un programa que lea un valor, calcule y despliegue 1)El logaritmo
Base 10, 2) El logaritmo base e, 3)El seno, coseno y tangente de dicho
valor.
3.38.- Elabore un programa que lea dos valores, calcule y desligue:
1) Compare si es o no exactamente divisible entre ambos.
2) Calcule su residuo.
3) Genere un nmero al azar entre dichos valores.

**De aqu en adelante de todo su texto. Cuando se solicite elaborar un


programa, deber hacer uso de todos y cada uno de los pasos sugeridos para
una exitosa programacin.

3.39.- Elabore un programa que lea una temperatura en grados Celsius y la


convierta en grados Fahrenheit, Kelvin, y Ranking. Si grados
K=5/9(grados F-32)+273.15 y grados R= -273.150C.Despliegue
temperatura leda en Celsius y sus conversiones.
3.40.- Disee un programa que calcule el rea de un cubo con lados L .
3.41.-Elabore un programa que calcule el rea de un cilindro con radio r y
altura h.
3.42.- Haga un programa que calcule el volumen de una esfera de radio r.
3.43.- Escriba un programa que calcule el volumen de un cilindro de radio r y
altura h.
3.44.- Escriba un programa que lea y despliegue lo ledo y su promedio.
Matricula mat con 8 caracteres enteros
Nombre nomb con 30 caracteres alfanumricos.
Especialidad esp con 3 caracteres alfanumricos.
Nota1 mate con 6 caracteres reales con tres fracciones
(incluye el punto)
Nota2 fin con 6 caracteres reales con tres fracciones
(incluye el punto)
Nota3 fsica con 6 caracteres reales con tres fracciones
(incluye el punto)
Nota4 quim con 6 caracteres reales con tres fracciones
(incluye el punto)
El promedio se calcula:
Promedio Prom. Con 6 caracteres reales con tres fracciones
(incluye el punto)

3.45.- Elabore un programa que lea dos valores (x,y) y calcule la suma (x+y),
resta (x-y), divisin (x/y), producto (x*y) y potencia (x**y).

65

Você também pode gostar