You are on page 1of 7

Dpto. Matemtica Aplicada y Estadstica E.T.S.I.

Aeronuticos (UPM)

Informtica Fortran 90
Marta Cordero Gracia Mariola Gmez Lpez
Dpto. Matemtica Aplicada y Estadstica

ETSI Aeronuticos

Universidad Politcnica de Madrid


1 Fortran 90 p. 1

Estructura condicional

Dpto. Matemtica Aplicada y Estadstica E.T.S.I. Aeronuticos (UPM)

Estructura condicional simple

Dpto. Matemtica Aplicada y Estadstica E.T.S.I. Aeronuticos (UPM)

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

Estructura condicional simple

Dpto. Matemtica Aplicada y Estadstica E.T.S.I. Aeronuticos (UPM)

Estructura condicional simple

Dpto. Matemtica Aplicada y Estadstica E.T.S.I. Aeronuticos (UPM)

Evala una nica condicin dada por una expresin lgica escalar. [nombre:] if (expr. lgica) then sentencia 1
q q q

Escribir un programa para intercambiar el valor de las variables x e y

sentencia n
end if [nombre]

Fortran 90 p. 4

Fortran 90 p. 5

Estructura condicional simple

Dpto. Matemtica Aplicada y Estadstica E.T.S.I. Aeronuticos (UPM)

Estructura condicional simple

Dpto. Matemtica Aplicada y Estadstica E.T.S.I. Aeronuticos (UPM)

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

Estructura condicional simple


program ValorAbsoluto real :: x write(*,*) Introducir el valor de x read(*,*) x if (x < 0.0) x = -x write(*,*) Valor absoluto de x:, x end program ValorAbsoluto

Dpto. Matemtica Aplicada y Estadstica E.T.S.I. Aeronuticos (UPM)

Estructura condicional simple


program main integer :: n

Dpto. Matemtica Aplicada y Estadstica E.T.S.I. Aeronuticos (UPM)

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

Estructura condicional doble

Dpto. Matemtica Aplicada y Estadstica E.T.S.I. Aeronuticos (UPM)

Estructura condicional doble


[nombre:] if (expr. lgica) then sentencia1_1
q q q

Dpto. Matemtica Aplicada y Estadstica E.T.S.I. Aeronuticos (UPM)

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

Estructura condicional doble


program raiz real :: a, b, x write(*,*) Introducir a y b read(*,*) a, b if (a /= 0.0) then x = -b/a write(*,*) La solucion es x=, x else write(*,*) Ecuacion incorrecta end if end program raiz

Dpto. Matemtica Aplicada y Estadstica E.T.S.I. Aeronuticos (UPM)

Estructura condicional mltiple

Dpto. Matemtica Aplicada y Estadstica E.T.S.I. Aeronuticos (UPM)

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

Dpto. Matemtica Aplicada y Estadstica E.T.S.I. Aeronuticos (UPM)

Constuccin if mltiple
[nombre:] if (expr. lgica 1) then sentencia1_1
q q

Dpto. Matemtica Aplicada y Estadstica E.T.S.I. Aeronuticos (UPM)

sent1_1
q q

sent1_n

c d d expr. d .true. d .false. d lgica 2 d d c c d q q

sentencia1_n else if (expr. lgica 2) then sentencia2_1


q q

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

sentenciaN_n] end if [nombre]

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

Dpto. Matemtica Aplicada y Estadstica E.T.S.I. Aeronuticos (UPM)

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

Dpto. Matemtica Aplicada y Estadstica E.T.S.I. Aeronuticos (UPM)

Fortran 90 p. 15

Fortran 90 p. 16

Constuccin anidada

Dpto. Matemtica Aplicada y Estadstica E.T.S.I. Aeronuticos (UPM)

Constuccin select
c d d expr. d d

Dpto. Matemtica Aplicada y Estadstica E.T.S.I. Aeronuticos (UPM)

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

Dpto. Matemtica Aplicada y Estadstica E.T.S.I. Aeronuticos (UPM)

Constuccin select

Dpto. Matemtica Aplicada y Estadstica E.T.S.I. Aeronuticos (UPM)

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

[case default sentenciaN_1 sentenciaN_n] end select [nombre]


Fortran 90 p. 19 Fortran 90 p. 20

q q

Constuccin select

Dpto. Matemtica Aplicada y Estadstica E.T.S.I. Aeronuticos (UPM)

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

Dpto. Matemtica Aplicada y Estadstica E.T.S.I. Aeronuticos (UPM)

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

Dpto. Matemtica Aplicada y Estadstica E.T.S.I. Aeronuticos (UPM)

Ejercicio

Dpto. Matemtica Aplicada y Estadstica E.T.S.I. Aeronuticos (UPM)

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

Dpto. Matemtica Aplicada y Estadstica E.T.S.I. Aeronuticos (UPM)

A B C

Si n = m G Si n es par Si n < m Si n es impar

D E F

H I
Fortran 90 p. 25

You might also like