Escolar Documentos
Profissional Documentos
Cultura Documentos
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.
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).
27
9).- Produccin.- Es el proceso de procesar el (Los), programa (s) para generar
los resultados para cuyo fin fueron creados.
Nota
Read (*.*) Instruccin de lectura
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 Aritmtica
Suma= a+b
IF (a>b) then
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.
Aritmticos +,-,*,**,/
Asignacin =
Relacin > .GT. >= .GE.
OPERADORES < .LT. <= .LE.
= = .EQ. /= .NE.
LOGICOS .TRUE. .FALSE.
31
Ejemplo de expresiones:
o
C=
(
5 o F 32 ) Grados Celsius = 5/9 ( grados Fahrenheit 32)
9
seno
tan = Tangente = sin (teta) / cos(teta)
cos eno
32
TIPOS DE DATOS: FORTRAN utiliza los siguientes tipos de datos:
Numricos, Alfa-Numricos, Especiales
Memoria Usada
RANGO (En bytes)
Complejo COMPLEX
Otros tipos Lgico LOGICAL
De datos Archivo FILE
Variable con subndice
Tipos de datos derivados Registros
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.
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
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
La siguiente tabla muestra los diferentes tipos de reales, los bytes que ocupan
en memoria y el rango de valores que pueden almacenar.
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.
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:
Nota: Los puntos antes y despus son necesarios para distinguirlos de nombres de variables.
36
DECLARAR O NO DECLARAR EL TIPO DE LAS 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
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: Si se omiten los parntesis, las variables podrn almacenar solamente un carcter. Las
siguientes dos declaraciones son 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:
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
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.
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:
+ 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
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
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
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.
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
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*
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
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)
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
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
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.
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
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
__ 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
47
PROGRAM NOTACIN_CIENTFICA
IMPLICIT NONE
REAL::CIENTFICA
READ (*.100) CIENTFICA
1000 FORMAT (F14.10)
WRITE (*,2000) CIENTFICA, CIENTFICA
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:
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
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
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
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
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
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.
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.
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.
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
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.
AX 2 + BX + C = 0
S D > 0 X1 X2
1.1) SALIDAS S D = 0 X1 = X2
Si D < 0
Parte_Real
Parte IMAGINARIA
56
1) SALIDAS
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
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
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
'Races
Complejas' ' X1 = X2 = ',x1
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
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 )
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
3.29.- Decodifique
x = y1 * y2 / (y1 + y2)2 y
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.
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