Está en la 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. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Antecedentes / Normas / Estructuras del programa / estructuras de entrada y salida Secciones Declaracin Ejecucin Terminacin Datos, Carcter, Constante,Variable, Instrucciones De Asignacin Notacin Exponencial y Cientfica Constantes, Cdigo ASCII, Caracter, Lgico Variables Implcitas, Parmetros, Operadores Aritmticos Reglas y pasos en programacin y con expresiones. Operaciones Alfa Numricas Comandos Write, Read Funciones Abs, NINT, SQRT, LOG10, LOG, Exp, Mod Funciones Trigonomtricas Funciones Hiperblicas 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) 2) 3) 4) Ejecucin Compilacin Estructura de lenguaje 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 1.- PROGRAM Gua 2.- IMPLICIT NONE 3.- SECCIN DE DECLARACIONES REAL instrucciones INTEGER instrucciones LOGICAL instrucciones CHARACTER instrucciones COMPLEX instrucciones 4.- SECCIN DE EJECUCIN Instruccin de Asignacin Instrucciones READ Instrucciones WRITE Instruccin STOP 5.- END PROGRAM Gua SIGNIFICADO (Se inicia el programa) instruccin de apoyo v/s errores (Se indica que las variables son:) REAL :: (Con punto decimal) INTEGER ::(Entero, Sin punto decimal) LOGICAL :: Tipo lgica CHARACTER :: Tipo carcter COMPLEX :: Tipo num complejo (Se soluciona el problema) Instruccin de lectura Instruccin de salida impresa Instruccin de detener proceso 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 9095 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 Stop open close file print

CARACTER: es un smbolo que se usa para la comunicacin, representacin de especificaciones en FORTRAN y sus tipos son:

Numrico
Alfabtico

0123456789
ABCDEFGHIJKLMN OPQRSTV W X Y Z

CARACTERES:

Alfa numrico Especiales

0-9 y A-Z (COMBINACIN) # $ % / ( ) .;,:@+`

30

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

Enteras Numricos Reales CONSTANTES Alfanumricos Lgica

1950 3.1415

(carcter cadena) TECNOLOGICO DE CHIHUAHUA

verdadero falso.

VARIABLE: es una expresin cuyo contenido es susceptible de cambios sus representantes son: Enteros:
Numricos VARIABLE Alfanumrico DEF (2) (4) REALES: (2) (4) INTEGER VAR BYTE -32768 -32767 2 -214748 -21474836 4 DEF REAL VGR BYTE +3.4(10) -38_1.1(10)38 4 -3.4(10) -38_1.1(10)38 4 +1.7(10)-308 -2.2(10)308 8 nombre 1 n

CHARACTER ( De cadena) Def: carcter vgr (1) almacn 1 carcter (n) almacn n carcter

Aritmticos Asignacin Relacin OPERADORES LOGICOS

+,-,*,**,/ = > .GT. < .LT. = = .EQ. .TRUE.

>= .GE. <= .LE. /= .NE. .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 9

Grados Celsius = 5/9 ( grados Fahrenheit 32)

tan =

seno cos eno

Tangente = sin (teta) / cos(teta)

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
Fortran .F90

Archivo
Objeto .obj

Programa
Ejecutable.exe

Resultado

32

TIPOS DE DATOS: FORTRAN utiliza los siguientes tipos de datos: Numricos, Alfa-Numricos, Especiales
Memoria Usada (En bytes) 4 2 4

RANGO INTEGER Enteros (Sin punto) INTEGER2 INTEGER4 Datos Precisin REAL Reales (Con punto)

-2147483648 a 2147483647 -32768 a 32767 -2147483648 a 2147483647 Cifras de Numricos

3.4 x 10 a 1.1 x 10

REAL (4) 3.4 x 10 a 1.1 x 10 REAL (8) 1.7 x 10 a 2.2 x 10

4 7 8

Datos Alfanumricos

CHARACTER CHARACTER (1) CHARACTER (N)

almacena slo un caracter almacena slo un carcter almacena N caracteres

Otros tipos De datos

Complejo COMPLEX Lgico LOGICAL Archivo FILE Variable con subndice Tipos de datos derivados

Registros

NUMERICA TIPOS DE CONSTANTE

ENTERA ( Es un numero sin punto decimal ) REAL ( Es un nmero con punto decimal )

ALFANUMRICA LGICA Complejo Lgico Fraccionaria Entera Alfanumrica COMPLEX LOGICAL REAL INTEGER CHARACTER

TIPOS DE VARIABLES

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. 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' 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: Se recomienda que cuando introduzca este tipo de datos utilice Read con formato. Nota: Si se OMITE el signo, se sobreentiende que el valor es positivo.

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 Integer(1) lnteger(2) Integer(4) Bytes 1 2 4 Rango -128 a 127 -32768 a 32767 -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
-1.1754944E-38 3.4028235E+38 - 2.225073858507201 D-308 +1.797693134862316D+308 Real(4) o simple 4 6 dgitos Nmeros negativos -3.4028235E+38 Hasta Nmeros Positivos +1.1754944-38 Hasta Real(8) o Double 8 15 dgitos Nmeros negativos -1.79769313486231D+308 Nmeros positivos +2.225073858507201308 Hasta

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 0.65E+08 0.90E-05 Forma Cientfica 6.5E+07 9.0E-06 En matemticas de Ingeniera 6.5 x 10 7 9.0 x 10 -6 65,000,000 0.000009

Nota: La letra E representa las palabras por 10 elevado a la potencia ASC II (American Standard Code for Information Interchange) Cdigo 130 160 161 162 163 164 165 Carcter que representa *ver apndice A.2, tabla de cdigos ASCII

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

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 CHARACTER (1) :: LETRA_ INICIAL

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: 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 Lado_Sup = B + B2 Valor2 = A ** 2 / (B + 5 ) - C 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 /
2

A
2

B + 5 A B + 5
2

DECODIFICADO

A 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 a+b ab a*b a/b a**b Descripcin suma resta multiplicacin divisin 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 Resultados de RE4 5./5. =1.000000 1/4 = 0 5.*(5* (1./5.)) = 5.000000 7/4. = 1.750000 3/4 = 0 9/4. = 2.250000

PROGRAM FRACCION WRITE (*,*) 5. / 5. = , 5./5. WRITE (*,*) 1 / 4= , 1/4 WRITE (*,*) 5.*(5.*(1. /5 ))= , 5.*(5*1./5.) WRITE (*,*) 7./ 4.= , 7/4 WRITE (*,*) 3/4.= , 3/4. WRITE (*,*) 9/4. = , 9/4 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 WRITE (*,*)(-4,0 )**2 =`,(-4,0)**2 WRITE (*,*)(-4,0)**2.0=, (-4,0)**2.0 WRITE (*,*)(-4) **2=, (-4)**2 Escriba Los Resultados

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 ( Ver Ejercicio ) seleccionar.
EJERCICIO PROGRAM MERO Implicit none Character (8) :: a, b, c = A M E R O T U H I J A=C WRITE(*,*) * , A, * B= 123456 Write (*,*) * , B, * 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), * END PROGRAM MERO

*AMEROTUH * * 123456 *

* T U * * 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 = Write (*,*) Precio de parte 2 = Write (*,*) Precio de parte 3 = Write (*,*) Costo de maquina = END PROGRAM FORMATO_LIBRE

, pza1 , pza2 , pza3 , costo

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
RESULTADO: Valor1 = 14 valor2 = 28

150 Format (valor1 =I7, valor2= , I7) 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) COS(ngulo en radianes) TAN(ngulo en radianes) SIND(ngulo en grados) COSD(ngulo en grados) 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) ACOS (expresin) ATAN (expresin) Tarea : [ Calcula el Arco Seno ] (ngulo en grados) [ Calcula el ArcoCoseno ] (ngulo en grados) [ Calcula el ArcoTangente ] (ngulo en grados)

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) COSH(ngulo en radianes) TANH(ngulo en radianes) [ Calcula el Seno hiperblico ] [ Calcula el Coseno hiperblico ] [ 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 1.1) SALIDAS S D = 0 Si D < 0

X1 X2
X1 = X2

Parte_Real
Parte IMAGINARIA

1.2)

CLCULOS A

DISCRIMINANTE ( D = B 4AC )

1.3)

ENTRADAS

B ( Valores Que Se Tienen Que Leer ) C

56

1) SALIDAS 1 Dame el valor de "A"

S D > 0 1.1) SALIDAS

Dame el valor de "b"

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

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

Este problema tiene dos races reales

Las races reales son: Raz 1=x1 Raz 2= x2 Este problema tiene dos races idnticas Las races idnticas son: Raz 1=x1 Raz 2= x2

Este problema tiene races imaginarias (complejas)

10

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

11 57

Este programa ya termin

DISCRIMINANTE
1.2) CLCULOS DISCRIMINANTE ( D = B 4AC )
X1 =

4 ac

nte b + Discrimina 2a

X1 =

nte b Discrimina 2a

X1 = X2

X1 =

b 2a

X2 =

discrimina nte 2a

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


ENTRADAS

1 2 3

B 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 2 B 1 C 1 DISCRIMINANTE PR -0.25 PI 6.6614 X1 X2 SALIDAS 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

Discriminante = Cero
si No Part_real = (-b) / (2a) X1 = X2 Part_imag =

X2 = (-b+ b 4 ac )/ (2a)
2

X1 = (-b) / (2a)

'Dos races reales diferentes

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

X1, X2

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
0

Solucin Codificada

C = 5/9 (0F-32)

Grados Celsius = 5./9. * (grados faren 32) tangente = sin (teta)/ cos (teta)

Tangente (Teta) = Seno(Teta) / Coseno(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 Character3.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. 2 2 P t b b 2 4ac x= V = 1 21 + k 2a P1

seno =

cateto _ opuesto hipotenusa

y=

b2 +

(a b)(a + b) (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 Bonita sper veloz Chucha _menos luz_electrica gen entero jetx15 delfn avion_z Lucas perico 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) con 6 caracteres reales con tres fracciones Nota2 fin (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: Con 6 caracteres reales con tres fracciones Promedio Prom. (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

También podría gustarte