You are on page 1of 57

Instituto Politcnico Nacional

Escuela Superior de Ingeniera y Arquitectura


Unida Ticomn Ciencias de la Tierra Ing. Efran Sosa Cisneros

FORTRAN 90
Control de estructuras

Variables LOGICAS
Una variable lgica debe construirse con VERDADERO (TRUE) o FALSO (FALSE) y no puede contener valores de otro tipo. Utilice V o F para leer la variable lgicos (*, *) WRITE (*, *) impresiones y T o F. VERDADERO y FALSO., respectivamente.

Operadores relacionales

Operadores relacionales 1/4


Fortran 90 tiene seis operadores relacionales: <, <=, >,> =, ==, / =. Cada uno de estos seis operadores de relacin toma dos expresiones, compara sus valores, y los rendimientos. TRUE. o. FALSE. As, a <b <c est mal, porque a <b es LGICA y c es real (REAL)o entero (INTERGER) Para valores complejos slo puede usar == y / = Para valores lgicos deben utilizar. Eq. o. NEQV. para la comparacin de igualdad y desigualdad.

Operadores relacionales: 2/4


Los operadores relacionales tienen menor prioridad que operadores aritmticos y / /. Por lo tanto, 3 + 5> 10 es. FALSO. y "a" / / "B" == "ab" es. VERDADERO. Los valores de caracteres estn codificados bajo estndares (por ejemplo, BCD, EBCDIC, ANSI) con diferentes secuencias de codificacin.

Estas secuencias de codificacin puede no ser compatibles entre s.

Operadores relacionales : 3/4


Para una mxima portabilidad, slo asuma las siguientes rdenes de letras y dgitos. Si, "A" <"X", "f" <= "u", y "2" <"7" Sabemos que ser VERDADERO. Pero no sabemos los resultados de "S" <"s" y "t"> = "%".

Sin embargo, igualdades y desigualdades como "S" / ="S" y "t" == "5" tambin son correctas.

Operadores relacionales:4/4
Reglas de comparacin de cadenas: Inicie el escaneo desde el primer carcter. - Si los dos son iguales, pase al siguiente - Si no hay ms caracteres para comparar, las cadenas son iguales (por ejemplo, "abc" == "abc") - Si una cadena no tiene ningn carcter ms, la cadena mas corta ser mas pequea (por ejemplo, "ab" <"abc" es. VERDADERO) Si las dos corrientes no son iguales, la cadena tiene el carcter ms corto es mas pequea (por ejemplo, "Abcd" es ms pequeo que "ABCT ).

Operadores Lgicos

Operadores lgicos: 1/2


Hay 5 operadores lgicos en Fortran 90: NOT., .OR. , .AND. , .EQV. and .NEQV. NOT. es el ms alto, seguido por. OR. y .AND., .EQV. y .NEQV son los mas bajos. Hay que recordar que NOT. se evala de derecha a izquierda. Si ambos operadores .EQV. (equivalencias)son los mismos, .EQV. Ser . VERDADERO. . NEQV. es lo contrario de. EQV. (no equivalencia). Si los operadores de . NEQV. tienen diferentes valores, . NEQV. Los resultados sern VERDADEROS.

Operadores Lgicos:2/2
Si las variables enteras (INTERGER) m, n, x e y tienen valores 3, 5, 4 y 2, respectivamente.

NOT. Es mas alto que NEQV.

Declaraciones:
IF-THEN-ELSE

Declaraciones IF-THEN-ELSE : 1/4


Fortran 90 tiene declaraciones de tres formas: IF-THEN-ELSE La ms completa es la-IF-THEN-ELSEIF END IF La mas vieja es IF , pero se necesita pues es muy til.

Declaracin IF-THEN-ELSE:2/4
IF-THEN-ELSE-IF-END IF es la siguiente. Las expresiones lgicas se evalan de forma secuencial (es decir, arriba abajo). La secuencia de instruccin que corresponde a la expresin evaluada a . VERDADERO. ser ejecutada. De lo contrario, la secuencia ELSE se ejecuta.

Declaracin IF-THEN-ELSE:3/4
Ejemplos:
Encuentre al menor de a, b y c y guarde el resultado.

Ejemplo para encontrar el grado de X:

Declaracin IF-THEN-ELSE:4/4
Usar ELSE IF o ELSE es opcional. Si falta la parte ELSE y no hay una expresin lgica VERDADERA., el IF-THENELSE no tiene ningn efecto.

Dada una ecuacin de segundo grado ax2 + bx + c = 0, donde a 0, sus races se calculan de la siguiente manera: Sin embargo, esta es una forma muy pobre y poco fiable de obtener las races en computacin.

Ejemplo:1/2

Ejemplo: 2/2
A continuacin se muestra la parte ejecutable

IF-THEN-ELSE Anidados: 1/2


Esta es otra mirada a la resolucin de ecuaciones de segundo grado.

IF-THEN-ELSE Anidados: 2/2


Aqu est otra gran parte de ELSE:

Expresin lgica IF

Expresin Lgica IF
La lgica IF es desde Fortran 66, y ha ido mejorando con respecto a la aritmtica de Fortran I. Si la expresin es lgico-. VERDADERO. , La declaracin es ejecutado. De lo contrario, la ejecucin continua La declaracin puede ser la asignacin de entrada / salida.

Declaracin SELECT CASE

Declaracin SELECT CASE: 1/7


Fortran 90 tiene la instruccin SELECT CASE para la ejecucin selectiva si los criterios de seleccin son basado en los valores simples en INTEGER, LGICA y CHARACTER. No., REAL no es aplicable.

Declaracin SELECT CASE:2/7


El label-list es una lista de las siguientes formas: -valor; valor especifico Valor1: valor2 incluyendo el valor1 y valor2, el valor1 <= valor2 -valor1: valores mayores o igual que valor1 - valor2: valores menores o iguales que el valor2. Recuerda: el valor, valor1 y valor2, deben ser parmetros o constantes.

Declaracin SELECT CASE: 3/7


La declaracin SELECT CASE es ejecutable de la siguiente manera: Compara los valores del selector con las etiquetas en cada caso. si se encuentra una coincidencia ejecutar las correspondientes declaraciones. Si no se encuentra una coincidencia y si hay CASE DEFAULT, ejecute el statements-DEFAULT

Declaracin SELECT CASE: 4/7


Notas importantes Los valores de label-list debe ser nico, de lo contrario, no se sabe que casos seran seleccionados.

CASE DEFAULT debe ser utilizada siempre que sea posible, ya que garantiza que hay un lugar para hacer algo (por ejemplo, un mensaje de error) DEFAULT CASE puede estar en cualquier lugar en un SELECT CASE, pero, pero prefiere un lugar que sea despus del CASE.

Declaracin SELECT CASE: 5/7


Ejemplos de SELECT CASE

Declaracin SELECT CASE


Un ejemplo mas completo:

Declaracin SELECT CASE: 7/7

Ciclo Do continuo

Ciclo Do continuo: 2/6


Fortran 90 tiene dos formas para DO: Do continuo y Do general DO continuo tiene la siguiente forma:
DO control-var = inicial, final [, step] statements END DO

Control-var es una variable INTERGER , inicial, final y el step tambin son expresiones INTERGER, pero step no puede ser cero. Si step es omitido, entonces el valor por default ser 1. Statements son declaraciones ejecutables para DO.

Ciclo Do continuo: 2/6


Antes de que el ciclo Do se inicie, deben ser evaluadas las expresiones inicial, final y step, se evaluaran exactamente una vez. Cuando se este ejecutando el ciclo Do, esos valores no sern revaluados. Nota: nuevamente los valores de step no pueden ser cero. Si el valor de step es positivo, el Do continua hacia arriba, si el valor es negativo, Do continua hacia atrs.

Ciclo Do continuo: 3/6


Si step es positivo: El control-var recibir los valores iniciales Si el valor de control-var es menor o igual al del valor final, las declaraciones sern ejecutadas. Entonces los valores de step se aade a controlvar y va hacia atrs y compra los valores de control-var y final. Si el valor de control-var es mayor que el valor del final, el ciclo do completa y la instruccin que sigue a END DO se ejecuta.

Ciclo Do continuo: 4/6


Si step es negativo: El control-var recibir el valor inicial. Si el valor de control var es mayor o igual que el valor final, la parte de las declaraciones ser ejecutada. Entonces el valor se aade a control-var y se compara con el final. Si el valor de control-var es menor que el valor del final, el ciclo do completa y la declaracin siguiente a END DO ser ejecutado.

Ciclo Do continuo: 5/6


Ejemplos:

Ciclo Do continuo:6/6
Notas importantes. El valor de step no puede ser cero. Nunca cambiar el valor de las variables control-var, inicial, final o step. Para una cuenta atrs del ciclo Do, step debe ser negativo. As, do i = 10, -10, no es negativo y esta parte de las declaraciones no se ejecuta.

Ciclo Do con EXIT

Ciclo Do con EXIT: 1/2


En general el ciclo Do tiene la siguiente forma.
DO statements END DO

Las declaraciones sern ejecutadas repetidamente. Para salir del ciclo Do use EXIT o declaracin CYCLE. La declaracin EXIT, tiene el control de flujo para la declaracin siguiendo la de END DO

Ciclo Do con EXIT: 2/2

Ejemplo: exp (x)


La funcin del exponente de x tiende a una serie infinita:

Sumar los trminos hasta que los valores de los trminos tengan una tolerancia menor a 0.00001

Ejemplo exp (x): 2/2


Nota:

Esta no es una buena solucin.

Ejemplo Comprobando nmeros primos:1/2


Un entero positivo n> = 2 es un nmero primo si los nicos divisores de este entero son 1 y l mismo. Si n = 2, es un nmero primo. Si n> 2 es par (es decir, MOD (n, 2) == 0), no es el primo Si n es impar, entonces: Si los nmeros impares entre 3 y n-1, no pueden dividir n, n es un nmero primo! Nosotros tenemos que ir hasta n-1? No. SQRT (n) es lo suficientemente bueno. Por qu?

Ejemplo, comprobando nmeros primos:2/2

Encontrando todos los primos en [2, n]: 1/2


El programa anterior se puede modificar para encontrar todos los nmeros primos entre 2 y n.

Encontrando todos los primos en [2, n]: 1/2

Factorizando nmeros: 1/3


Dado un nmero entero positivo, siempre se puede factorizar en sus factores primos. El siguiente es un ejemplo: 586390350 = 2 3 52 72 13 17 192 Aqu, 2, 3, 5, 7, 13, 17 y 19 son factores primos. No es difcil encontrar todos los factores primos. Repetidamente se puede dividir la entrada por 2. Haga lo mismo para los nmeros impares 3, 5, 7, 9, .... Pero, dijimos los factores "primos" . No hay problema, mltiplos de 9 son eliminadas por 3 en una anterior el escenario!

Factorizando nmeros primos: 2/3

Factorizando nmeros: 3/3

Ntese que incluso 9, 15, 49, ... Ser usado, slo una vez porque Divisor = 3 elimina todos los mltiplos de 3 (por ejemplo, 9, 15, ...), Divisor = 5, elimina todos los mltiplos de 5 (por ejemplo, 15, 25, ...), y Divisor = 7 todos los mltiplos de 7 (por ejemplo, 21, 35, 49, ...), etc.

Manejo de Fin de archivos

Manejo fin de archivos: 1/3


Muy frecuentemente nosotros no sabemos el numero de datos en la entrada. Fortran usa IOSTAT= for I/O para el manejo de errores READ(*,*,IOSTAT=v) v1, v2, , van En lo anterior, v es una variable entera. Despus de la ejecucin de READ (*, *): Si v = 0, READ (*, *) se ejecut con xito Si v> 0, se produjo un error en la lectura, READ (*, *) y no todas las variables recibieron valores. Si v <0, se encontr al final de su archivo, y no todos las variables recibieron valores

Manejo de fin de archivos: 2/3


Cada archivo se termina con un carcter especial. Unix y Windows utilizar las teclas Ctrl-D y Ctrl-Z Al usar el teclado para introducir datos de READ (*, *), Ctrl-D significa fin de archivo en Unix. Si IOSTAT = devuelve un valor positivo, slo que algo andaba mal en la READ (*, *), tales que no coincide el tipo, no existe tal archivo, o error de dispositivo, etc. Realmente no sabemos exactamente lo que sucedi porque el valor devuelto depende del sistema.

Manejo de fin de archivo: 3/3

Medios de computacin etc. :1/4


Vamos a calcular la aritmtica, geomtrica y medios armnicos de nmero desconocido de valores:

Tenga en cuenta que slo sern considerados los valores positivos. De esta manera, no resulta se un buen mtodo.

Medios de computacin etc.:2/4

Medios de computacin etc.: 3/3

Medios de computacin etc.:4/4

You might also like