1 lenguajes de programación fortran - 90 / 95 profesora ana lilia laureano cruces alumnos martha...

51
1 Lenguajes de Programación Lenguajes de Programación FORTRAN - 90 / 95 FORTRAN - 90 / 95 Profesora Ana Lilia Laureano Cruces Profesora Ana Lilia Laureano Cruces Alumnos Alumnos Martha Mora Torres / Martha Mora Torres / UNAM UNAM – Noviembre 2004 – Noviembre 2004 Ignacio Adriano Rivas Ignacio Adriano Rivas UAM-A UAM-A / Febrero 2005 / Febrero 2005

Upload: alondra-de-la-rosa

Post on 02-Apr-2015

106 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 1 Lenguajes de Programación FORTRAN - 90 / 95 Profesora Ana Lilia Laureano Cruces Alumnos Martha Mora Torres / UNAM – Noviembre 2004 Ignacio Adriano Rivas

11

Lenguajes de ProgramaciónLenguajes de Programación

FORTRAN - 90 / 95FORTRAN - 90 / 95Profesora Ana Lilia Laureano CrucesProfesora Ana Lilia Laureano Cruces

AlumnosAlumnos

Martha Mora Torres / Martha Mora Torres / UNAMUNAM – Noviembre 2004 – Noviembre 2004

Ignacio Adriano Rivas Ignacio Adriano Rivas UAM-AUAM-A / Febrero 2005 / Febrero 2005

Page 2: 1 Lenguajes de Programación FORTRAN - 90 / 95 Profesora Ana Lilia Laureano Cruces Alumnos Martha Mora Torres / UNAM – Noviembre 2004 Ignacio Adriano Rivas

22

FORTRAN 90 / 95FORTRAN 90 / 95 FORTRAN 90/95FORTRAN 90/95 representa el primer cambio representa el primer cambio

significativo en 20 años del lenguaje significativo en 20 años del lenguaje FORTRANFORTRAN (FORmula TRANslation), colocándose así a la (FORmula TRANslation), colocándose así a la altura de los más modernos lenguajes de altura de los más modernos lenguajes de programación estructurada.programación estructurada.

FORTRANFORTRAN fue el primer lenguaje denominado fue el primer lenguaje denominado de “alto nivel”, haciendo posible el uso de de “alto nivel”, haciendo posible el uso de nombres simbólicos para representar cantidades nombres simbólicos para representar cantidades y fórmulas matemáticas en forma y fórmulas matemáticas en forma razonablemente comprensible y fue propuesto a razonablemente comprensible y fue propuesto a finales de 1953 por John Backus.finales de 1953 por John Backus.

Page 3: 1 Lenguajes de Programación FORTRAN - 90 / 95 Profesora Ana Lilia Laureano Cruces Alumnos Martha Mora Torres / UNAM – Noviembre 2004 Ignacio Adriano Rivas

33

FORTRAN 90 / 95FORTRAN 90 / 95 La estructura de un programa en FORTRAN La estructura de un programa en FORTRAN

90/95 es de la siguiente forma (lo que se 90/95 es de la siguiente forma (lo que se encuentra entre corchetes es opcional):encuentra entre corchetes es opcional):

[[PROGRAMPROGRAM nombre del programanombre del programa]]

[[expresionesexpresiones declarativasdeclarativas]]

[[expresiones expresiones de de ejecuciónejecución]]

[[CONTAINSCONTAINS

subprogramas internossubprogramas internos]]

ENDEND [ [PROGRAMPROGRAM [ [nombre del programanombre del programa]]]]

Los enunciados son la base del programa y a Los enunciados son la base del programa y a excepción del enunciado de asignación, todos excepción del enunciado de asignación, todos empiezan con una palabra clave.empiezan con una palabra clave.

Page 4: 1 Lenguajes de Programación FORTRAN - 90 / 95 Profesora Ana Lilia Laureano Cruces Alumnos Martha Mora Torres / UNAM – Noviembre 2004 Ignacio Adriano Rivas

44

FORTRAN 90 / 95FORTRAN 90 / 95 Los comentarios se escriben anteponiendo un Los comentarios se escriben anteponiendo un

signo de cierre de admiración (signo de cierre de admiración (!!))

Si una línea del programa es muy larga, ésta Si una línea del programa es muy larga, ésta puede continuar en la línea siguiente colocando puede continuar en la línea siguiente colocando al final de la primera línea el al final de la primera línea el signo &:signo &:A = 174.6 *A = 174.6 * &&

(T – 1981.2) **3(T – 1981.2) **3

Tipos de Datos: Se dividen en 2 clases, los Tipos de Datos: Se dividen en 2 clases, los numéricos (numéricos (INTEGERINTEGER, , REALREAL y y COMPLEXCOMPLEX) y los ) y los no numéricos (no numéricos (CHARACTERCHARACTER y y LOGICALLOGICAL). ).

Page 5: 1 Lenguajes de Programación FORTRAN - 90 / 95 Profesora Ana Lilia Laureano Cruces Alumnos Martha Mora Torres / UNAM – Noviembre 2004 Ignacio Adriano Rivas

55

FORTRAN 90 / 95FORTRAN 90 / 95 Asociado al tipo existen varias clases de ellos, Asociado al tipo existen varias clases de ellos,

de acuerdo al número de bits disponible para su de acuerdo al número de bits disponible para su almacenamiento, por lo que puede haber 2 almacenamiento, por lo que puede haber 2 clases de enteros: clases de enteros: SHORTSHORT y y LONGLONG..

Constantes: usadas para denominar los valores Constantes: usadas para denominar los valores de un tipo en particularde un tipo en particular

Nombres y variables: Consiste entre 1 y 31 Nombres y variables: Consiste entre 1 y 31 caracteres alfanuméricos y deben empezar con caracteres alfanuméricos y deben empezar con una letra (excepto en las cadenas de una letra (excepto en las cadenas de caracteres, FORTRAN 90/95 no es sensible a caracteres, FORTRAN 90/95 no es sensible a mayúsculas o minúsculas): MINOMBRE mayúsculas o minúsculas): MINOMBRE significa lo mismo que MiNombre. significa lo mismo que MiNombre.

Page 6: 1 Lenguajes de Programación FORTRAN - 90 / 95 Profesora Ana Lilia Laureano Cruces Alumnos Martha Mora Torres / UNAM – Noviembre 2004 Ignacio Adriano Rivas

66

FORTRAN 90 / 95FORTRAN 90 / 95 Regla implícita del tipo de dato: Esta regla, Regla implícita del tipo de dato: Esta regla,

predetermina a las variables que empiezan con predetermina a las variables que empiezan con las letras de la i a la n como enteras, mientras las letras de la i a la n como enteras, mientras que a las que empiezan con cualquier otra letra, que a las que empiezan con cualquier otra letra, como reales. Por lo anterior, para evitar errores, como reales. Por lo anterior, para evitar errores, es recomendable deshabilitar dicha regla es recomendable deshabilitar dicha regla agregando la siguiente línea:agregando la siguiente línea:IMPLICIT NONEIMPLICIT NONE

Operadores:Operadores:**** ExponencialExponencial 2**4 (22**4 (244)) ++ Suma A+9 Suma A+9** MultiplicaciónMultiplicación 2*A2*A -- Resta X - Resta X - YY// DivisiónDivisión B / DeltaB / Delta

Page 7: 1 Lenguajes de Programación FORTRAN - 90 / 95 Profesora Ana Lilia Laureano Cruces Alumnos Martha Mora Torres / UNAM – Noviembre 2004 Ignacio Adriano Rivas

77

FORTRAN 90 / 95FORTRAN 90 / 95 Asignación numérica: El propósito es calcular el Asignación numérica: El propósito es calcular el

valor de una expresión numérica y asignarla a valor de una expresión numérica y asignarla a una variable. Su forma general es:una variable. Su forma general es:

variablevariable = = exprexpr x = a + bx = a + b Entradas y salidas de datos:Entradas y salidas de datos:

una forma de alimentar datos mientras el una forma de alimentar datos mientras el programa está corriendo es utilizando la programa está corriendo es utilizando la declaración READ, y tiene la forma:declaración READ, y tiene la forma:

READREAD*, *, listlist

donde donde listlist es una lista de variables separadas es una lista de variables separadas por comas:por comas: READREAD*, A, B, C*, A, B, C

Page 8: 1 Lenguajes de Programación FORTRAN - 90 / 95 Profesora Ana Lilia Laureano Cruces Alumnos Martha Mora Torres / UNAM – Noviembre 2004 Ignacio Adriano Rivas

88

FORTRAN 90 / 95FORTRAN 90 / 95La declaración La declaración PRINTPRINT, se utiliza para la salida de , se utiliza para la salida de

datos. Su forma general es: datos. Su forma general es: PRINTPRINT*, *, listlist

Donde Donde listlist puede ser una lista de constantes, puede ser una lista de constantes, variables, expresiones y cadenas de caracteres variables, expresiones y cadenas de caracteres separadas por comas:separadas por comas:

PRINTPRINT*, “la raiz cuadrada de”, 2, ‘es’, sqrt(2.0)*, “la raiz cuadrada de”, 2, ‘es’, sqrt(2.0)

También podemos usar la declaración También podemos usar la declaración WRITEWRITE::

OPENOPEN ( 2, file=‘prn’) ( 2, file=‘prn’)

WRITEWRITE (2, *) ‘Esto se envía a la impresora’ (2, *) ‘Esto se envía a la impresora’

PRINTPRINT*, ‘Esto se envía a la pantalla’*, ‘Esto se envía a la pantalla’

Page 9: 1 Lenguajes de Programación FORTRAN - 90 / 95 Profesora Ana Lilia Laureano Cruces Alumnos Martha Mora Torres / UNAM – Noviembre 2004 Ignacio Adriano Rivas

99

FORTRAN 90 / 95FORTRAN 90 / 95 Ciclos: la forma general del ciclo DO es:Ciclos: la forma general del ciclo DO es:

DO DO ii==jj, , kk

blockblock

END DOEND DO

donde i es una variable entera, j y k son donde i es una variable entera, j y k son expresiones enteras, y block es cualquier expresiones enteras, y block es cualquier número de declaraciones, las cuales se ejecutan número de declaraciones, las cuales se ejecutan repetidamente dependiendo del valor de j y k.repetidamente dependiendo del valor de j y k.

DO DO i=1, 10i=1, 10

PRINTPRINT*, i*, i

END DOEND DO

Page 10: 1 Lenguajes de Programación FORTRAN - 90 / 95 Profesora Ana Lilia Laureano Cruces Alumnos Martha Mora Torres / UNAM – Noviembre 2004 Ignacio Adriano Rivas

1010

FORTRAN 90 / 95FORTRAN 90 / 95 Decisiones: Declaración Decisiones: Declaración IF-THEN-ELSEIF-THEN-ELSE

IF IF conditioncondition THENTHEN

block 1block 1

[[ELSEELSE

block Eblock E]]

END IFEND IF La expresión parameter:La expresión parameter:

se utiliza como expresión de inicializaciónse utiliza como expresión de inicialización

REALREAL, , PARAMETERPARAMETER :: pi=3.141593 :: pi=3.141593

INTEGERINTEGER, , PARAMETERPARAMETER :: dos=2 :: dos=2

Page 11: 1 Lenguajes de Programación FORTRAN - 90 / 95 Profesora Ana Lilia Laureano Cruces Alumnos Martha Mora Torres / UNAM – Noviembre 2004 Ignacio Adriano Rivas

1111

FORTRAN 90 / 95FORTRAN 90 / 95 Operadores relacionales:Operadores relacionales:

.LT..LT. o < o < menor quemenor que a a .LT..LT. 5 5

.LE..LE. o <= o <= menor o igual quemenor o igual que b b .LE..LE. 4 4

.EQ..EQ. o == o == igualigual b b .EQ..EQ. 3 3

.NE..NE. o /= o /= diferentediferente a a .NE..NE. 0 0

.GT..GT. o > o > mayor quemayor que b b .GT..GT. 4 4

.GE..GE. o >= o >= mayor o igual quemayor o igual que x x .GE..GE. 0 0 Operadores lógicos:Operadores lógicos:

.NOT..NOT. Negación lógicaNegación lógica

.AND..AND. Intersección lógicaIntersección lógica

.OR..OR. Unión lógicaUnión lógica

.EQV. .EQV. yy .NEQV. .NEQV. Equivalencia y no equivalencia Equivalencia y no equivalencia

Page 12: 1 Lenguajes de Programación FORTRAN - 90 / 95 Profesora Ana Lilia Laureano Cruces Alumnos Martha Mora Torres / UNAM – Noviembre 2004 Ignacio Adriano Rivas

1212

FORTRAN 90 / 95FORTRAN 90 / 95 Construcción Construcción CASECASE::

Similar a Similar a IF-THEN-ELSEIF-THEN-ELSE, permite seleccionar , permite seleccionar entre un número de situaciones o casos entre un número de situaciones o casos basados en un basados en un SELECTORSELECTOR, este debe ser de , este debe ser de tipo ordinal.tipo ordinal.[[name:name:] ] SELECT CASESELECT CASE ( (exprexpr))

CASECASE ( (SELECTOR1SELECTOR1) [) [namename] ] block 1block 1

CASECASE ( (SELECTOR2SELECTOR2) [) [namename] ] block 2block 2

[[CASE DEFAULT CASE DEFAULT [[namename] ] block dblock d

END SELECT END SELECT [[namename] ]

Page 13: 1 Lenguajes de Programación FORTRAN - 90 / 95 Profesora Ana Lilia Laureano Cruces Alumnos Martha Mora Torres / UNAM – Noviembre 2004 Ignacio Adriano Rivas

1313

FORTRAN 90 / 95FORTRAN 90 / 95 Ejemplo:Ejemplo:

READ*, chREAD*, ch

vocalesvocales: SELECT CASE (ch): SELECT CASE (ch)

CASE (‘a’, ‘e’, ‘i’, ‘o’, ‘u’)CASE (‘a’, ‘e’, ‘i’, ‘o’, ‘u’)

PRINT*, ‘vocal’PRINT*, ‘vocal’

CASE defaultCASE default

PRINT*, ‘consonante u otro caracter’PRINT*, ‘consonante u otro caracter’

END SELECT END SELECT vocalesvocales

ENDEND

Page 14: 1 Lenguajes de Programación FORTRAN - 90 / 95 Profesora Ana Lilia Laureano Cruces Alumnos Martha Mora Torres / UNAM – Noviembre 2004 Ignacio Adriano Rivas

1414

FORTRAN 90 / 95FORTRAN 90 / 95 DO con salida condicional (simulamos un DO con salida condicional (simulamos un

WHILE o un REPEAT):WHILE o un REPEAT):DO DO

IF IF ((expr-lógicaexpr-lógica) ) exitexitblockblock

END DOEND DOOO

DODO blockblock

IF IF ((expr-lógicaexpr-lógica) ) EXITEXIT END DOEND DO

WHILE

DO WHILEDO WHILE ( (expr-lógicaexpr-lógica))

blockblock

END DOEND DO

REPEAT-UNTIL

Page 15: 1 Lenguajes de Programación FORTRAN - 90 / 95 Profesora Ana Lilia Laureano Cruces Alumnos Martha Mora Torres / UNAM – Noviembre 2004 Ignacio Adriano Rivas

1515

FORTRAN 90 / 95FORTRAN 90 / 95 Ejemplo:Ejemplo:

DODO

WRITEWRITE*, “tu invitado: “*, “tu invitado: “

READREAD*, invitado*, invitado

IF IF (invitado == 10) (invitado == 10) EXITEXIT

END DOEND DO

Do while:Do while:

DO WHILEDO WHILE ( (expr-lógicaexpr-lógica))

blockblock

END DOEND DO

Page 16: 1 Lenguajes de Programación FORTRAN - 90 / 95 Profesora Ana Lilia Laureano Cruces Alumnos Martha Mora Torres / UNAM – Noviembre 2004 Ignacio Adriano Rivas

1616

FORTRAN 90 / 95FORTRAN 90 / 95 Los Programas diseñados con los principios de Los Programas diseñados con los principios de

programación estructurada y un diseño modular programación estructurada y un diseño modular descendente son estructurados por medio de descendente son estructurados por medio de abstracciones procedurales y funcionales. Estos abstracciones procedurales y funcionales. Estos procedimientos se comunican con el programa principal procedimientos se comunican con el programa principal de manera específica, a través del paso de datos y son de manera específica, a través del paso de datos y son invocados o llamados desde éste.invocados o llamados desde éste.

Existen dos formas de estructurar el programa a través Existen dos formas de estructurar el programa a través de : funciones (abstracciones-funcionales) y subrutinas de : funciones (abstracciones-funcionales) y subrutinas (abstracciones-procedurales).(abstracciones-procedurales).

El paso de datos se conoce como paso de parámetros, El paso de datos se conoce como paso de parámetros, estos pueden ser pasados por referencia o por valor. estos pueden ser pasados por referencia o por valor.

Page 17: 1 Lenguajes de Programación FORTRAN - 90 / 95 Profesora Ana Lilia Laureano Cruces Alumnos Martha Mora Torres / UNAM – Noviembre 2004 Ignacio Adriano Rivas

1717

FORTRAN 90/95FORTRAN 90/95

Paso de parámetros Paso de parámetros por referencia:por referencia: Es un mecanismo que permite el paso de un Es un mecanismo que permite el paso de un

parámetro utilizando parámetro utilizando una dirección de una dirección de memoriamemoria con el fin de facilitar ya sea el con el fin de facilitar ya sea el retorno al programa principal de un valor retorno al programa principal de un valor producidoproducido por un subprograma o el retorno al por un subprograma o el retorno al programa principal de un valor programa principal de un valor modificadomodificado por por el subprograma.el subprograma.• INTENT (INTENT (OUTOUT) ! ) ! producidoproducido• INTENT (INTENT (INOUTINOUT) ! ) ! modificadomodificado

Page 18: 1 Lenguajes de Programación FORTRAN - 90 / 95 Profesora Ana Lilia Laureano Cruces Alumnos Martha Mora Torres / UNAM – Noviembre 2004 Ignacio Adriano Rivas

1818

FORTRAN 90/95FORTRAN 90/95

Parámetros Parámetros por valor:por valor: Es un mecanismo que permite el paso de un Es un mecanismo que permite el paso de un

parámetro utilizando parámetro utilizando su valorsu valor con el fin de evitar su con el fin de evitar su modificación, de esta forma al terminar de ejecutarse modificación, de esta forma al terminar de ejecutarse el subprograma y retornar el control al programa el subprograma y retornar el control al programa principal el valor de ese parámetro continúa siendo el principal el valor de ese parámetro continúa siendo el mismo. En otras palabras el valor de este parámetro mismo. En otras palabras el valor de este parámetro sólo puede ser utilizado.sólo puede ser utilizado.

• INTENT (IN) INTENT (IN) ! Sólo puede ser utilizado! Sólo puede ser utilizado

Page 19: 1 Lenguajes de Programación FORTRAN - 90 / 95 Profesora Ana Lilia Laureano Cruces Alumnos Martha Mora Torres / UNAM – Noviembre 2004 Ignacio Adriano Rivas

1919

D i s e ñ o M o d u l a r D e s c e n d e n t e

A b s tra cc ión P ro ce du ra l 1 A b s tra cc ión P ro ce du ra l 2 A b s tra cc ió n Fu n c ion a l 1

P ro g ram a P rin c ip a l

Page 20: 1 Lenguajes de Programación FORTRAN - 90 / 95 Profesora Ana Lilia Laureano Cruces Alumnos Martha Mora Torres / UNAM – Noviembre 2004 Ignacio Adriano Rivas

2020

FORTRAN 90 / 95FORTRAN 90 / 95 Ejemplo de función:Ejemplo de función:

PROGRAM newPROGRAM new

IMPLICIT NONEIMPLICIT NONE REAL:: x=2REAL:: x=2 x = x – f(x)x = x – f(x) PRINT*, x, f(x)PRINT*, x, f(x)

FUNCTION f(x)FUNCTION f(x) REAL INTENT (IN) :: xREAL INTENT (IN) :: x REAL :: fREAL :: f f = x ** 3f = x ** 3END FUNCTION fEND FUNCTION f

END PROGRAM newEND PROGRAM new

Page 21: 1 Lenguajes de Programación FORTRAN - 90 / 95 Profesora Ana Lilia Laureano Cruces Alumnos Martha Mora Torres / UNAM – Noviembre 2004 Ignacio Adriano Rivas

2121

FORTRAN 90 / 95FORTRAN 90 / 95 Ejemplo de subrutina:Ejemplo de subrutina:

IMPLICIT NONEIMPLICIT NONEINTEGER :: a, bINTEGER :: a, bREAD*, a, bREAD*, a, bCALL inter(a, b)CALL inter(a, b)

SOUBROUTINE inter(x, y)SOUBROUTINE inter(x, y)INTEGER tempINTEGER tempINTEGER INTENT (IN) :: xINTEGER INTENT (IN) :: xINTEGER INTENT (OUT) :: yINTEGER INTENT (OUT) :: ytemp = xtemp = xx = yx = yy = tempy = temp

END SOUBROUTINEEND SOUBROUTINEENDEND

Page 22: 1 Lenguajes de Programación FORTRAN - 90 / 95 Profesora Ana Lilia Laureano Cruces Alumnos Martha Mora Torres / UNAM – Noviembre 2004 Ignacio Adriano Rivas

2222

FORTRAN 90 / 95FORTRAN 90 / 95 RecursiónRecursión: Muchas funciones matemáticas : Muchas funciones matemáticas

pueden estar definidas recursivamente, es decir pueden estar definidas recursivamente, es decir que están definidas en términos de casos más que están definidas en términos de casos más simples de ellas mismas.simples de ellas mismas.

Para implementarlas es necesario que una Para implementarlas es necesario que una función se invoque a sí misma. Normalmente en función se invoque a sí misma. Normalmente en FORTRAN 90/95 esto es posible, agregando el FORTRAN 90/95 esto es posible, agregando el prefijo prefijo RECURSIVERECURSIVE como palabra clave en el como palabra clave en el encabezado de la función es como podrá encabezado de la función es como podrá invocarse a sí misma.invocarse a sí misma.

Page 23: 1 Lenguajes de Programación FORTRAN - 90 / 95 Profesora Ana Lilia Laureano Cruces Alumnos Martha Mora Torres / UNAM – Noviembre 2004 Ignacio Adriano Rivas

2323

FORTRAN 90 / 95FORTRAN 90 / 95 Ejemplo:Ejemplo:IMPLICIT NONEIMPLICIT NONE

INTEGERINTEGER :: i :: ii = 10i = 10PRINTPRINT*, i, factorial(i)*, i, factorial(i)

RECURSIVERECURSIVE FUNCTIONFUNCTION factorial(n) factorial(n) RESULTRESULT (fact) (fact)INTEGER :: factINTEGER :: factINTEGERINTEGER INTENT (IN) :: n INTENT (IN) :: nIF IF (n .LE.1) (n .LE.1) THENTHEN

fact=1fact=1ELSEELSE

fact=n*factorial(n-1)fact=n*factorial(n-1)END IFEND IF

END FUNCTIONEND FUNCTIONENDEND

Page 24: 1 Lenguajes de Programación FORTRAN - 90 / 95 Profesora Ana Lilia Laureano Cruces Alumnos Martha Mora Torres / UNAM – Noviembre 2004 Ignacio Adriano Rivas

2424

FORTRAN 90 / 95FORTRAN 90 / 95 Módulos:Módulos: son contenedores físicos que permiten son contenedores físicos que permiten

albergar expresiones declarativas o albergar expresiones declarativas o abstracciones procedurales o funcionales. Estos abstracciones procedurales o funcionales. Estos módulos pueden ser compilados por separado o módulos pueden ser compilados por separado o pueden estar dentro de un programa:pueden estar dentro de un programa:

Puede contener más de una abstracción funcional o Puede contener más de una abstracción funcional o procedural, oprocedural, o

Puede tener expresiones declarativas y/o de Puede tener expresiones declarativas y/o de especificación accesibles a todas las unidades del especificación accesibles a todas las unidades del programa.programa.

Page 25: 1 Lenguajes de Programación FORTRAN - 90 / 95 Profesora Ana Lilia Laureano Cruces Alumnos Martha Mora Torres / UNAM – Noviembre 2004 Ignacio Adriano Rivas

2525

FORTRAN 90 / 95FORTRAN 90 / 95 Ejemplo:Ejemplo: módulo apartemódulo aparte

USEUSE utilerias utilerias MODULEMODULE utilerias utilerias

IMPLICIT NONEIMPLICIT NONE REAL, PARAMETERREAL, PARAMETER :: pi :: pi =3.14159=3.14159

INTEGERINTEGER :: a, b :: a, b CONTAINSCONTAINS

READREAD*, a, b*, a, b SOUBROUTINESOUBROUTINE inter(x, y) inter(x, y)

b = Pib = Pi INTEGER tempINTEGER temp

CALLCALL inter(a,b) inter(a,b) INTEGER INTENT (IN) :: xINTEGER INTENT (IN) :: x

PRINTPRINT*, a,b*, a,b INTEGER INTENT (OUT) :: INTEGER INTENT (OUT) :: yy

temp = xtemp = x

x = yx = y

y = tempy = temp

END SOUBROUTINEEND SOUBROUTINE inter inter

END MODULEEND MODULE utilerias utilerias

Page 26: 1 Lenguajes de Programación FORTRAN - 90 / 95 Profesora Ana Lilia Laureano Cruces Alumnos Martha Mora Torres / UNAM – Noviembre 2004 Ignacio Adriano Rivas

2626

FORTRAN 90 / 95FORTRAN 90 / 95

Mod-Sub1

Int-Sub1

Mod-Sub2

Int-Sub2

Progma Principal.f90

Int – Sub1

Programas Externos.for

INCLUDE Externos.FOR

USE Module-Sub_1,Module-Sub2

Int – Sub2

Page 27: 1 Lenguajes de Programación FORTRAN - 90 / 95 Profesora Ana Lilia Laureano Cruces Alumnos Martha Mora Torres / UNAM – Noviembre 2004 Ignacio Adriano Rivas

2727

FORTRAN 90 / 95FORTRAN 90 / 95

Compilación Separada:Compilación Separada:Para compilar un módulo por separado, es Para compilar un módulo por separado, es

necesario agrupar todos las abstracciones necesario agrupar todos las abstracciones procedurales y funcionales dentro de un archivo procedurales y funcionales dentro de un archivo independiente cuya extensión debe ser independiente cuya extensión debe ser .FOR.FOR

Finalmente, dentro del PROGRAMA principal se Finalmente, dentro del PROGRAMA principal se debe declarar un debe declarar un INCLUDEINCLUDE del archivo que del archivo que contiene los módulos, cuya extensión debe contiene los módulos, cuya extensión debe ser ser .F90 .F90

Page 28: 1 Lenguajes de Programación FORTRAN - 90 / 95 Profesora Ana Lilia Laureano Cruces Alumnos Martha Mora Torres / UNAM – Noviembre 2004 Ignacio Adriano Rivas

2828

Archivo: Areas.forArchivo: Areas.forMODULE MODULE CompartirCompartirCONTAINSCONTAINSSUBROUTINE Impresion (Area, op)SUBROUTINE Impresion (Area, op)IMPLICIT NONEIMPLICIT NONE!Declaraiones de Variables!Declaraiones de VariablesINTEGER, INTENT(IN):: op, areaINTEGER, INTENT(IN):: op, area

ImpAreas: SELECT CASE (op)ImpAreas: SELECT CASE (op)CASE (1)CASE (1) PRINT *, 'El area del Triangulo es ', areaPRINT *, 'El area del Triangulo es ', areaCASE (2)CASE (2) PRINT *, 'El area del Cuadrado es ', areaPRINT *, 'El area del Cuadrado es ', areaCASE (3)CASE (3) PRINT *, 'El area del Circulo es ', areaPRINT *, 'El area del Circulo es ', area

END SELECT ImpAreas END SELECT ImpAreas END SUBROUTINE ImpresiónEND SUBROUTINE Impresión!Rutina!Rutinas s de de las áreaslas áreasSUBROUTINE Triangulo (op)SUBROUTINE Triangulo (op)IMPLICIT NONEIMPLICIT NONE

INTEGER, INTENT(IN) :: opINTEGER, INTENT(IN) :: opINTEGER :: base, altura, areaINTEGER :: base, altura, areaPRINT *,'DAME LOS DATOS DEL TRIANGULO'PRINT *,'DAME LOS DATOS DEL TRIANGULO'PRINT *,'Dame la Altura'PRINT *,'Dame la Altura'READ *,alturaREAD *,alturaPRINT *,'Dame la Base'PRINT *,'Dame la Base'READ *,baseREAD *,baseArea = (base * altura)/2Area = (base * altura)/2CALL Impresion (Area, op)CALL Impresion (Area, op)

END SUBROUTINE TrianguloEND SUBROUTINE TrianguloSUBROUTINE SUBROUTINE CuadradoCuadrado (op) (op) !su bloque!su bloque

CALL Impresion (Area, op)CALL Impresion (Area, op)END SUBROUTINE END SUBROUTINE CuadradoCuadrado

SUBROUTINE SUBROUTINE CirculoCirculo (op) (op)!su bloque!su bloqueCALL Impresion (Area, op)CALL Impresion (Area, op)

END SUBROUTINE END SUBROUTINE CirculoCirculoEND END MODULEMODULE Compartir Compartir

Page 29: 1 Lenguajes de Programación FORTRAN - 90 / 95 Profesora Ana Lilia Laureano Cruces Alumnos Martha Mora Torres / UNAM – Noviembre 2004 Ignacio Adriano Rivas

2929

Archivo: Areas.f90Archivo: Areas.f90

INCLUDE "Areas.for"INCLUDE "Areas.for"

PROGRAM SelecAreasPROGRAM SelecAreas

USE CompartirUSE Compartir

IMPLICIT NONEIMPLICIT NONE

INTEGER :: opINTEGER :: op

PRINT *, 'Areas Disponibles'PRINT *, 'Areas Disponibles'

DO WHILE (Op /= 4)DO WHILE (Op /= 4)

PRINT *, 'SELECCIONA UNA OPCION ENTRE 1..4'PRINT *, 'SELECCIONA UNA OPCION ENTRE 1..4'

PRINT *, '(1) TRIANGULO'PRINT *, '(1) TRIANGULO'

PRINT *, '(2) CUADRADO'PRINT *, '(2) CUADRADO'

PRINT *, '(3) CIRCULO'PRINT *, '(3) CIRCULO'

PRINT *, '(4) SALIDA'PRINT *, '(4) SALIDA'

PRINT *, 'CUAL ES LA OPCION DESEADA'PRINT *, 'CUAL ES LA OPCION DESEADA'

READ *, opREAD *, op

Areas: SELECT CASE (op)Areas: SELECT CASE (op)

CASE (1)CASE (1)

CALL Triangulo (op)CALL Triangulo (op)

CASE (2)CASE (2)

CALL Cuadrado (op)CALL Cuadrado (op)

CASE (3)CASE (3)

CALL Circulo (op)CALL Circulo (op)

CASE (4)CASE (4)

PRINT *, 'ABUR'PRINT *, 'ABUR'

CASE DEFAULT CASE DEFAULT

PPRINT *, 'has hecho una seleccion eeronea el rango valido es 1..4'RINT *, 'has hecho una seleccion eeronea el rango valido es 1..4'

END SELECT Areas END SELECT Areas

END DOEND DO

END PROGRAM SelecAreasEND PROGRAM SelecAreas

Page 30: 1 Lenguajes de Programación FORTRAN - 90 / 95 Profesora Ana Lilia Laureano Cruces Alumnos Martha Mora Torres / UNAM – Noviembre 2004 Ignacio Adriano Rivas

3030

MODULE Compartidas

IMPLICIT NONE

SAVE

!Tipos Derivados

TYPE Alumno

CHARACTER (LEN = 12) :: nombre

INTEGER :: PromEx, PromPr, PromTa, CaFi

END TYPE Alumno

INTEGER, PARAMETER :: Max = 45

END MODULE Compartidas

PROGRAM PromAlumnos

USE Compartidas

IMPLICIT NONE

TYPE (Alumno) :: UnAl (Max)

INTEGER Cuantos

!PROGRAMA PRINCIPAL

CALL Lectura(UnAl, Cuantos)

CALL Promedio(UnAl, Cuantos)

CALL imprimir(UnAl, Cuantos)

END PROGRAM PromAlumnos

Page 31: 1 Lenguajes de Programación FORTRAN - 90 / 95 Profesora Ana Lilia Laureano Cruces Alumnos Martha Mora Torres / UNAM – Noviembre 2004 Ignacio Adriano Rivas

3131

CONTAINSCONTAINS Especifica que un módulo o procedimiento contiene Especifica que un módulo o procedimiento contiene

procedimientos internosprocedimientos internos SAVESAVE

Se pueden utilizar Se pueden utilizar MODULEMODULE (s) para pasar grandes (s) para pasar grandes cantidades de datos entre procedimientos dentro de cantidades de datos entre procedimientos dentro de un programa. Al incluir este comando se asegura que un programa. Al incluir este comando se asegura que el contenido del el contenido del MODULEMODULE, permanece sin cambio , permanece sin cambio entre los entre los USEUSE..

PARAMETERPARAMETER Define el valor de una constanteDefine el valor de una constante

Page 32: 1 Lenguajes de Programación FORTRAN - 90 / 95 Profesora Ana Lilia Laureano Cruces Alumnos Martha Mora Torres / UNAM – Noviembre 2004 Ignacio Adriano Rivas

3232

FORTRAN 90 / 95FORTRAN 90 / 95 Arreglos: La siguiente expresión declara un arregloArreglos: La siguiente expresión declara un arreglo

REAL, DIMENSIONREAL, DIMENSION(10) :: x(10) :: xx es el arreglo con 10 elementos, x es el arreglo con 10 elementos,

el arreglo puede tener más de una dimensión:el arreglo puede tener más de una dimensión:REAL, DIMENSIONREAL, DIMENSION(2,3) :: num(2,3) :: numnum, es un arreglo de 2 dimensiones, la primera num, es un arreglo de 2 dimensiones, la primera dimensión tiene una extensión de 2 y la segunda dimensión tiene una extensión de 2 y la segunda tiene una extensión de 3.tiene una extensión de 3.

Page 33: 1 Lenguajes de Programación FORTRAN - 90 / 95 Profesora Ana Lilia Laureano Cruces Alumnos Martha Mora Torres / UNAM – Noviembre 2004 Ignacio Adriano Rivas

3333

FORTRAN 90 / 95FORTRAN 90 / 95 Arreglos utlizando (memoria dinámica)Arreglos utlizando (memoria dinámica)

Una manera de evitar el desperdicio de la memoria (que Una manera de evitar el desperdicio de la memoria (que se hace al no utilizar la totalidad de la misma reservada se hace al no utilizar la totalidad de la misma reservada en las declaraciones de arreglos con un máximo en las declaraciones de arreglos con un máximo número de elementos predeterminados) es usando número de elementos predeterminados) es usando memoria dinámica de la siguiente manera:memoria dinámica de la siguiente manera:REAL, DIMENSION(:), ALLOCATABLE :: xREAL, DIMENSION(:), ALLOCATABLE :: xx no tiene un tamaño específico hasta que aparece una x no tiene un tamaño específico hasta que aparece una declaración del tipo:declaración del tipo:ALLOCATEALLOCATE( x(n) )( x(n) )

Cuando ya no se necesite, se remueve la localidad de Cuando ya no se necesite, se remueve la localidad de memoria con la declaración:memoria con la declaración:DEALLOCATEDEALLOCATE ( x ) ( x )

Page 34: 1 Lenguajes de Programación FORTRAN - 90 / 95 Profesora Ana Lilia Laureano Cruces Alumnos Martha Mora Torres / UNAM – Noviembre 2004 Ignacio Adriano Rivas

3434

FORTRAN 90 / 95FORTRAN 90 / 95 Ejemplo:Ejemplo:

INTEGER, DIMENSION(:), INTEGER, DIMENSION(:), ALLOCATABLEALLOCATABLE :: vector :: vector

INTEGER :: iINTEGER :: i

DO i = 1,4DO i = 1,4

PRINT*, ‘Total elementos vector’ PRINT*, ‘Total elementos vector’

READ*, nREAD*, n

ALLOCATEALLOCATE (vector(n) (vector(n)

suma = 0.0suma = 0.0

DO j = 1,nDO j = 1,n

suma = suma + vector (j) ** 2suma = suma + vector (j) ** 2

END DOEND DO

PRINT *, ‘Suma de cuadrados = ’, sumaPRINT *, ‘Suma de cuadrados = ’, suma

END DOEND DO

DEALLOCATEDEALLOCATE ( vector ) ( vector )

Page 35: 1 Lenguajes de Programación FORTRAN - 90 / 95 Profesora Ana Lilia Laureano Cruces Alumnos Martha Mora Torres / UNAM – Noviembre 2004 Ignacio Adriano Rivas

3535

FORTRAN 90 / 95FORTRAN 90 / 95 Estructuras:Estructuras: Son tipos de variables que Son tipos de variables que

encapsulan varios datos como una unidad.encapsulan varios datos como una unidad.TYPETYPE [[, [[,accesoacceso] ::] ] ::] nombredeltiponombredeltipo

[[PRIVATEPRIVATE]]definición de componentesdefinición de componentes

END TYPEEND TYPE [ [nombredeltiponombredeltipo]]De manera predeterminada un tipo y todos sus De manera predeterminada un tipo y todos sus

componentes son accesibles (acceso público)componentes son accesibles (acceso público)TYPETYPE registroestudiantil registroestudiantil

CHARACTERCHARACTER (20) nombre (20) nombreINTEGERINTEGER numtareas numtareas

END TYPEEND TYPE registroestudiantil registroestudiantil

Page 36: 1 Lenguajes de Programación FORTRAN - 90 / 95 Profesora Ana Lilia Laureano Cruces Alumnos Martha Mora Torres / UNAM – Noviembre 2004 Ignacio Adriano Rivas

3636

FORTRAN 90 / 95FORTRAN 90 / 95 Ejemplo Ejemplo PROGRAMPROGRAM registros registros

IMPLICIT NONEIMPLICIT NONETYPETYPE DatosEstudiante DatosEstudiante

CHARACTER(LENCHARACTER(LEN=12) :: nomb,Ap1,Ap2=12) :: nomb,Ap1,Ap2INTEGERINTEGER::edad::edad

END TYPEEND TYPE DatosEstudiante DatosEstudiante

! Declaración de variables! Declaración de variablesTYPE TYPE (DatosEstudiante) :: alumnos(45)(DatosEstudiante) :: alumnos(45) INTEGER :: iINTEGER :: i

DODO i = 1,max i = 1,maxPRINT*PRINT*, ‘dame el nombre del alumno’, ‘dame el nombre del alumno’READ*,READ*, alumnos(i) % nombre alumnos(i) % nombrePRINT*,PRINT*, ‘dame la edad del alumno’ ‘dame la edad del alumno’READ*,READ*, alumnos(i) % edad alumnos(i) % edad

END DOEND DOEND PROGRAMEND PROGRAM registros registros

Page 37: 1 Lenguajes de Programación FORTRAN - 90 / 95 Profesora Ana Lilia Laureano Cruces Alumnos Martha Mora Torres / UNAM – Noviembre 2004 Ignacio Adriano Rivas

3737

FORTRAN 90 / 95FORTRAN 90 / 95 Apuntadores:Apuntadores:

La implementación de los apuntadores en FORTRAN se realiza La implementación de los apuntadores en FORTRAN se realiza mediante las siguientes declaraciones:mediante las siguientes declaraciones:POINTERPOINTER, se usa para declarar a una variable tipo puntero., se usa para declarar a una variable tipo puntero.Con la instrucción Con la instrucción TARGETTARGET, se restringen las variables a las que un , se restringen las variables a las que un puntero puede apuntar.puntero puede apuntar.

REALREAL, , POINTERPOINTER :: p :: p ! p apunta a un objeto del! p apunta a un objeto del! mismo tipo! mismo tipo

REALREAL, , TARGETTARGET :: r = 13 :: r = 13 ! r es una variable que puede ser! r es una variable que puede ser ! apuntada por una variable de tipo ! apuntada por una variable de tipo

! puntero! punterop p r r

pp apunta a apunta a rr, por lo que se le denomina apuntador o alias (atributo pointer)., por lo que se le denomina apuntador o alias (atributo pointer).rr es el objeto al que se refiere es el objeto al que se refiere pp y está denominado como el objeto (atributo y está denominado como el objeto (atributo target).target).

Page 38: 1 Lenguajes de Programación FORTRAN - 90 / 95 Profesora Ana Lilia Laureano Cruces Alumnos Martha Mora Torres / UNAM – Noviembre 2004 Ignacio Adriano Rivas

3838

INTEGER, POINTER :: aa,bb,ccINTEGER, POINTER :: aa,bb,cc INTEGER, TARGET :: xx,yyINTEGER, TARGET :: xx,yy aaaa xx xx bbbb xx xx cccc yy yy aaaa yy yy

FORTRAN 90 / 95FORTRAN 90 / 95

Page 39: 1 Lenguajes de Programación FORTRAN - 90 / 95 Profesora Ana Lilia Laureano Cruces Alumnos Martha Mora Torres / UNAM – Noviembre 2004 Ignacio Adriano Rivas

3939

FORTRAN 90 / 95FORTRAN 90 / 95

xx

xx

yy

aa

aa

bb

aa

cc

Lo que el código hace con las localidades de memoria es:

Page 40: 1 Lenguajes de Programación FORTRAN - 90 / 95 Profesora Ana Lilia Laureano Cruces Alumnos Martha Mora Torres / UNAM – Noviembre 2004 Ignacio Adriano Rivas

4040

FORTRAN 90 / 95FORTRAN 90 / 95 Cualquier apuntador en un programa se encuentra Cualquier apuntador en un programa se encuentra

en cualquiera de los siguientes 3 estados:en cualquiera de los siguientes 3 estados: indefinido:indefinido: se encuentran así, en la declaración se encuentran así, en la declaración Nulo o desasociado:Nulo o desasociado: significa que no apunta a ningún significa que no apunta a ningún

objeto.objeto. La asociación entre variables POINTERs y TARGETs se La asociación entre variables POINTERs y TARGETs se

rompe con el uso de la siguiente instrucción.rompe con el uso de la siguiente instrucción.• NULLIFY (p1)NULLIFY (p1)

asociado:asociado: indica si el puntero posee un estado de indica si el puntero posee un estado de asociación.asociación.

• nulo o desasociadonulo o desasociado se puede verificar con la función se puede verificar con la función• ASSOCIATED (p1), ASSOCIATED (p1), • la cual nos regresa verdadero si p1 es un alias de un objeto y la cual nos regresa verdadero si p1 es un alias de un objeto y

falso, si no lo es.falso, si no lo es.

Page 41: 1 Lenguajes de Programación FORTRAN - 90 / 95 Profesora Ana Lilia Laureano Cruces Alumnos Martha Mora Torres / UNAM – Noviembre 2004 Ignacio Adriano Rivas

4141

FORTRAN 90 / 95FORTRAN 90 / 95 Si deseamos manejar memoria dinámica, se declara de Si deseamos manejar memoria dinámica, se declara de

la siguiente forma:la siguiente forma:

REALREAL, , POINTERPOINTER :: p1 :: p1

ALLOCATE ALLOCATE (p1)(p1)

lo anterior indica que p1 apunta a un área de memoria lo anterior indica que p1 apunta a un área de memoria disponible para almacenar una variable del tipo real.disponible para almacenar una variable del tipo real.

Para liberar la memoria utilizar:Para liberar la memoria utilizar:

DEALLOCATEDEALLOCATE (p1) (p1) Definir arreglos con apuntadores o (memoria dinámica):Definir arreglos con apuntadores o (memoria dinámica):

REAL, DIMENSION (:), POINTER :: xREAL, DIMENSION (:), POINTER :: x

INTEGER, DIMENSION (:,:), ALLOCATABLE : : aINTEGER, DIMENSION (:,:), ALLOCATABLE : : a

Page 42: 1 Lenguajes de Programación FORTRAN - 90 / 95 Profesora Ana Lilia Laureano Cruces Alumnos Martha Mora Torres / UNAM – Noviembre 2004 Ignacio Adriano Rivas

4242

Los apuntadores también pueden definirse para Los apuntadores también pueden definirse para apuntar a tipos derivados de datos:apuntar a tipos derivados de datos:

TYPE (empleado), POINTER :: qqqTYPE (empleado), POINTER :: qqq qqq es una variable apuntador que señala objetos del qqq es una variable apuntador que señala objetos del

tipo derivado de datos empleado.tipo derivado de datos empleado.

TYPE empleadoTYPE empleado• INTEGER :: numeroINTEGER :: numero• CHARACTER (32) :: nombreCHARACTER (32) :: nombre

END TYPE empleadoEND TYPE empleado

FORTRAN 90 / 95FORTRAN 90 / 95

Page 43: 1 Lenguajes de Programación FORTRAN - 90 / 95 Profesora Ana Lilia Laureano Cruces Alumnos Martha Mora Torres / UNAM – Noviembre 2004 Ignacio Adriano Rivas

4343

Lo anterior se utilza para las listas Lo anterior se utilza para las listas encadenadas:encadenadas:

TYPE NodoTYPE Nodo• INTEGER :: iiINTEGER :: ii• CHARACTER (LEN = 2) :: identifiCHARACTER (LEN = 2) :: identifi• TYPE (NODO), POINTER :: punteroTYPE (NODO), POINTER :: puntero

END TYPE NodoEND TYPE Nodo Con esta declaración de tipo derivado se puede Con esta declaración de tipo derivado se puede

conseguir que unos datos apunten a otros.conseguir que unos datos apunten a otros.

FORTRAN 90 / 95FORTRAN 90 / 95

Page 44: 1 Lenguajes de Programación FORTRAN - 90 / 95 Profesora Ana Lilia Laureano Cruces Alumnos Martha Mora Torres / UNAM – Noviembre 2004 Ignacio Adriano Rivas

4444

TYPE (Nodo), TYPE (Nodo), TARGETTARGET :: nn_1,nn_2,nn_3 :: nn_1,nn_2,nn_3 !nn_1 apunta a nn_2!nn_1 apunta a nn_2 nn_1%ii = 1nn_1%ii = 1 nn_1%identifi = ‘ab’nn_1%identifi = ‘ab’ nn_1%puntero nn_1%puntero nn_2 nn_2 !nn_2 apunta a nn_1!nn_2 apunta a nn_1 nn_2%ii = 2nn_2%ii = 2 nn_2%identifi = ‘cd’nn_2%identifi = ‘cd’ nn_2%puntero nn_2%puntero nn_1 nn_1 !nn_3 apunta a nn_2!nn_3 apunta a nn_2 nn_3%ii = 3nn_3%ii = 3 nn_3%identifi = ‘ef’nn_3%identifi = ‘ef’ nn_3%puntero nn_3%puntero nn_2 nn_2

FORTRAN 90 / 95FORTRAN 90 / 95

Page 45: 1 Lenguajes de Programación FORTRAN - 90 / 95 Profesora Ana Lilia Laureano Cruces Alumnos Martha Mora Torres / UNAM – Noviembre 2004 Ignacio Adriano Rivas

4545

FORTRAN 90 / 95FORTRAN 90 / 95

Dentro de los avances que se observan en Dentro de los avances que se observan en Fortran 90 / 95Fortran 90 / 95 están: están: el gran conjunto de procedimientos intrínsecos, el gran conjunto de procedimientos intrínsecos,

incluyendo las funciones elementales que operan en incluyendo las funciones elementales que operan en todos o en elementos seleccionados de los todos o en elementos seleccionados de los argumentos (arreglos).argumentos (arreglos).

Otro de sus grandes potenciales es la inclusión Otro de sus grandes potenciales es la inclusión de estructuras de control bien definidas, y de estructuras de control bien definidas, y formas de tipificar las variables que se utilizan, formas de tipificar las variables que se utilizan, así como mecanismos de abstracción que así como mecanismos de abstracción que permiten aprovechar todo el potencial de los permiten aprovechar todo el potencial de los últimos avances de análisis y diseño de últimos avances de análisis y diseño de ingeniería de software.ingeniería de software.

Page 46: 1 Lenguajes de Programación FORTRAN - 90 / 95 Profesora Ana Lilia Laureano Cruces Alumnos Martha Mora Torres / UNAM – Noviembre 2004 Ignacio Adriano Rivas

4646

FORTRAN 90 / 95FORTRAN 90 / 95 Sólo mencionaremos algunas de ellas:Sólo mencionaremos algunas de ellas:

Funciones numéricas elementales:Funciones numéricas elementales:

- ABS(A): Valor absoluto del número entero, REALo - ABS(A): Valor absoluto del número entero, REALo complejo A.complejo A.

- ACOS(X): Coseno inverso (arco coseno)- ACOS(X): Coseno inverso (arco coseno)

- AIMAG(Z): Parte imaginaria.- AIMAG(Z): Parte imaginaria.

- COS(X): Coseno- COS(X): Coseno

- COSH(X): Coseno hiperbólico- COSH(X): Coseno hiperbólico

- EXP(X): Función exponencial.- EXP(X): Función exponencial.

- LOG(X): Logaritmo natural.- LOG(X): Logaritmo natural.

Page 47: 1 Lenguajes de Programación FORTRAN - 90 / 95 Profesora Ana Lilia Laureano Cruces Alumnos Martha Mora Torres / UNAM – Noviembre 2004 Ignacio Adriano Rivas

4747

FORTRAN 90 / 95FORTRAN 90 / 95

Funciones elementales para el uso de caracteresFunciones elementales para el uso de caracteres::

- - ACHAR(I):ACHAR(I): Caracter con código ASCII I para I en el rango Caracter con código ASCII I para I en el rango de 0-127.de 0-127.

- - CHAR(I [,KIND]):CHAR(I [,KIND]): Caracter en la posición I de la Caracter en la posición I de la secuencia obtenida por el sistema con un tipo dado.secuencia obtenida por el sistema con un tipo dado.

- - ICHAR(C):ICHAR(C): Posición del caracter C en la secuencia Posición del caracter C en la secuencia obtenida por el sistemaobtenida por el sistema

Page 48: 1 Lenguajes de Programación FORTRAN - 90 / 95 Profesora Ana Lilia Laureano Cruces Alumnos Martha Mora Torres / UNAM – Noviembre 2004 Ignacio Adriano Rivas

4848

FORTRAN 90 / 95FORTRAN 90 / 95

Funciones no elementales en el uso de caracteresFunciones no elementales en el uso de caracteres

- - LEN(STRING):LEN(STRING): (Función informativa) número de (Función informativa) número de caracteres en STRING si es escalar o en un caracteres en STRING si es escalar o en un

elemento de STRING si éste es un arreglo.elemento de STRING si éste es un arreglo.

- - REPEAT(STRING, NCOPIES):REPEAT(STRING, NCOPIES): Concatenación de Concatenación de NCOPIES de STRING; ambos argumentos son NCOPIES de STRING; ambos argumentos son escalares.escalares.

- - TRIM(STRING): STRINGTRIM(STRING): STRING (escalar) regresa la longitud sin (escalar) regresa la longitud sin espacios en blanco.espacios en blanco.

Page 49: 1 Lenguajes de Programación FORTRAN - 90 / 95 Profesora Ana Lilia Laureano Cruces Alumnos Martha Mora Torres / UNAM – Noviembre 2004 Ignacio Adriano Rivas

4949

FORTRAN 90 / 95FORTRAN 90 / 95

Funciones relativas a representaciones Funciones relativas a representaciones numéricasnuméricas: Son funciones relacionadas con los : Son funciones relacionadas con los modelos (expresión matemática) usados para modelos (expresión matemática) usados para representar enteros y reales internamente.representar enteros y reales internamente.

- - DIGITS(X):DIGITS(X): Número de dígitos significativos en el Número de dígitos significativos en el modelo del número REALo entero X. modelo del número REALo entero X.

- - MAXEXPONENT(X):MAXEXPONENT(X): Máximo exponente (entero) en el Máximo exponente (entero) en el modelo que incluye al número REALX. modelo que incluye al número REALX.

- - FRACTION(X):FRACTION(X): Parte fraccionaria del modelo para X. Parte fraccionaria del modelo para X.

Page 50: 1 Lenguajes de Programación FORTRAN - 90 / 95 Profesora Ana Lilia Laureano Cruces Alumnos Martha Mora Torres / UNAM – Noviembre 2004 Ignacio Adriano Rivas

5050

FORTRAN 90 / 95FORTRAN 90 / 95 Además existen otras funciones sobre:Además existen otras funciones sobre:

- Manipulación de Bits- Manipulación de Bits

- Multiplicación de Vectores y Matrices- Multiplicación de Vectores y Matrices

- Reducción de arreglos- Reducción de arreglos

- Información de arreglos e información de cualquier tipo- Información de arreglos e información de cualquier tipo

- Manipulación y construcción de arreglos- Manipulación y construcción de arreglos

- Lógica Elemental- Lógica Elemental

- Relacionadas al tipo de variable- Relacionadas al tipo de variable

También se incluyen Subrutinas intrínsecas no También se incluyen Subrutinas intrínsecas no elementales sobre:elementales sobre:

-- Números aleatorios y el reloj de tiempo real. Números aleatorios y el reloj de tiempo real.

Page 51: 1 Lenguajes de Programación FORTRAN - 90 / 95 Profesora Ana Lilia Laureano Cruces Alumnos Martha Mora Torres / UNAM – Noviembre 2004 Ignacio Adriano Rivas

5151

finfin