Professional Documents
Culture Documents
Aeronuticos (UPM)
Informtica Fortran 90
Marta Cordero Gracia Mariola Gmez Lpez
Dpto. Matemtica Aplicada y Estadstica
ETSI Aeronuticos
Estructura condicional
Una estructura condicional es aquella que ejecuta un conjunto u otro de sentencias, dependiendo de si se cumple o no una determinada condicin. Existen tres tipos de estructuras condicionales: simples dobles mltiples
Evala una nica condicin dada por una expresin lgica escalar.
c d .true. dd.false. expr. dlgica d d c
sentencia 1 sentencia n
c
Fortran 90 p. 2
q q q
c
Fortran 90 p. 3
Evala una nica condicin dada por una expresin lgica escalar. [nombre:] if (expr. lgica) then sentencia 1
q q q
sentencia n
end if [nombre]
Fortran 90 p. 4
Fortran 90 p. 5
Escribir un programa para intercambiar el valor de las variables x e y Escribir un programa que, dadas las variables x e y, tras la ejecucin, x tenga el valor mximo de los dos e y el mnimo.
Si solo hay una sentencia de ejecucin dentro de la estructura, el lenguaje permite la siguiente variacin
if (expr. lgica) sentencia
Fortran 90 p. 5
Fortran 90 p. 6
write(*,*) Introducir un entero positivo read(*,*) n if ((n/2)*2 == n) write(*,*) Lo es end program main
Fortran 90 p. 7
Fortran 90 p. 8
Evala una nica condicin dada por una expresin lgica escalar.
c d .true. dd.false. expr. dlgica d d c c
sentencia1_n
else
sentencia1_1
q q q
sentencia2_1
q q q
sentencia2_1
q q q
sentencia1_n
c c
sentencia2_n
c
Fortran 90 p. 9
sentencia2_n
end if [nombre]
Fortran 90 p. 10
Construccin if Se evalan diversas codiciones, todas ellas dadas por una expresin lgica escalar Construccin select Se evala el valor de un dato simple de tipo integer, character o logical
Fortran 90 p. 11
Fortran 90 p. 12
Constuccin if mltiple
d d expr. d .true. d .false. d lgica 1 d d d c
Constuccin if mltiple
[nombre:] if (expr. lgica 1) then sentencia1_1
q q
sent1_1
q q
sent1_n
sentencia2_n
q q
sent2_1 sent2_n
c c c
sent3_1
q q
[else sentenciaN_1
q q
sent3_n
c
Fortran 90 p. 13
Fortran 90 p. 14
Constuccin if mltiple
program raices real :: a real :: b real :: c real :: disc real :: x1 real :: x2 complex :: z1 complex :: z2 write(*,*) Introducir a, b y c read(*,*) a, b, c disc = b*b - 4.0*a*c
Constuccin if mltiple
if (disc < 0.0) then z1 = cmplx(-b, sqrt(-disc))/(2.0*a) z2 = cmplx(-b, -sqrt(-disc))/(2.0*a) else if (disc > 0.0) then x1 = (-b + sqrt(disc))/(2.0*a) x2 = (-b - sqrt(disc))/(2.0*a) else x1 = -b/(2.0*a) x2 = x1 end if end program raices
Fortran 90 p. 15
Fortran 90 p. 16
Constuccin anidada
Constuccin select
c d d expr. d d
if (a /= 0.0) then if (disc < 0.0) then z1 = cmplx(-b, sqrt(-disc))/(2.0*a) z2 = cmplx(-b, -sqrt(-disc))/(2.0*a) else if (disc > 0.0) then x1 = (-b + sqrt(disc))/(2.0*a) x2 = (-b - sqrt(disc))/(2.0*a) else x1 = -b/(2.0*a) x2 = x1 end if else write(*,*) a no puede ser nulo end if end program raices
Fortran 90 p. 17
#1 c sent1_1
q q
#2 c sent2_1
q q
#N c sentN_1
q q
sent1_n
c
sent2_n
c c
sentN_n
c
Fortran 90 p. 18
Constuccin select
[nombre:] select case (expr. case) case (rango de valores #1) sentencia1_1 sentencia1_n case (rango de valores #2) sentencia2_1
q q q q
Constuccin select
expr. case es una expresin escalar de tipo integer, character o logical Un dato simple: i Una expresin aritmtica: i*j+2
sentencia2_n
q q
q q
Constuccin select
Constuccin select
select case (num) case (:-1) write(*,*) num <= -1 case (1, 3, 5, 7, 9) write(*,*) 1 <= num <= 9 (impar) case (2, 4, 6, 8) write(*,*) 2 <= num <= 8 (par) case (0, 10:200) write(*,*) 10 <= num <= 200 o 0 case (205:) write(*,*) num >= 205 case default write(*,*) 201 <= num <= 204 end select
rango de valores puede tomar un nico valor, varios valores o un rango de valores
dato dato_1, dato_2, . . . , dato_n expr = dato expr = dato_1 dato_2 . . . dato_n dato_1 : dato_2 : dato_2 dato_1 : dato_1 expr dato_2 expr dato_2 dato_1 expr
Fortran 90 p. 21
Fortran 90 p. 22
Ejercicio
Ejercicio
Escribir un programa con las siguientes especicaciones: Carga desde el teclado el valor de una variable n de tipo integer Comprueba que es positivo Imprime, respecto de n, si es mltiplo de 4 si es par o no si es impar si es mltiplo de 3 o no
Fortran 90 p. 23
Escribir un programa con las siguientes especicaciones: Carga desde el teclado el valor de dos variables, n y m, de tipo integer con datos enteros positivos. Imprime:
Fortran 90 p. 24
Ejercicio
Si n > m Si m es par Si m es impar Si n + m > 100 Si n + m = 100 Si n + m < 100 Si n m > 100 Si n m = 100 Si n m < 100
A B C
D E F
H I
Fortran 90 p. 25