11
Brazos Brazos Bloque IF Bloque IF Permite que se ejecuten una serie de tareas si y sólo si una expresión lógica es verdadera. IF(logical_exp) then sentencia1 sentencia2 Bloque1 END IF Si la expresión lógica es verdad entonces se ejecuta el Bloque1. Si la expresión lógica es falsa se saltea todo el Bloque1 y ejecuta la sentencia posterior al END IF Exp. logic a Sentencia 1 Sentencia 2 ….. falso verda d

Brazos Bloque IF Permite que se ejecuten una serie de tareas si y sólo si una expresión lógica es verdadera. IF(logical_exp) then sentencia1 sentencia2

Embed Size (px)

Citation preview

Page 1: Brazos Bloque IF Permite que se ejecuten una serie de tareas si y sólo si una expresión lógica es verdadera. IF(logical_exp) then sentencia1 sentencia2

BrazosBrazosBloque IFBloque IFPermite que se ejecuten una serie de tareas si y sólo si una expresión lógica es verdadera.

IF(logical_exp) then sentencia1 sentencia2 Bloque1 …END IF

Si la expresión lógica es verdad entonces se ejecuta el Bloque1. Si la expresión lógica es falsa se saltea todo el Bloque1 y ejecuta la sentencia posterior al END IF

Exp. logica

Sentencia 1Sentencia 2

…..

falso

verdad

Page 2: Brazos Bloque IF Permite que se ejecuten una serie de tareas si y sólo si una expresión lógica es verdadera. IF(logical_exp) then sentencia1 sentencia2

EJ: Dado un numero A calcular su raíz cuadrada e imprimirlo

Leo A

A> 0

Imprimo: ‘No tiene

solución’

B=sqrt(A)

fin

comienzo

Imprimo : ‘ la raíz

es ‘ B

Diagrama de flujo

no

si

Page 3: Brazos Bloque IF Permite que se ejecuten una serie de tareas si y sólo si una expresión lógica es verdadera. IF(logical_exp) then sentencia1 sentencia2

Las clausulas ELSE y ELSE IFPermiten sumar otros Bloques de tareas

Exp. Lógica

2

Bloque 2

falso

verdad

Exp. Lógica

1

Bloque 1

verdad

Bloque 3

falso

Page 4: Brazos Bloque IF Permite que se ejecuten una serie de tareas si y sólo si una expresión lógica es verdadera. IF(logical_exp) then sentencia1 sentencia2

Ej:PROGRAM raices_de_la_ecuacion_cuadratica! Proposito: calcular las raíces de la ecuación cuadrática y clasificar el !resultado según sea con 2 soluciones reales distintas , 2 soluciones reales !iguales o 2 soluciones complejas.!IMPLICIT NONE

IF(logical_exp 1) THEN sentencia1 sentencia2 Bloque1 …ELSE IF(logical_exp2) THEN sentencia3 sentencia4 Bloque2 …ELSE

sentencia5 sentencia6 Bloque3 …END IF

Page 5: Brazos Bloque IF Permite que se ejecuten una serie de tareas si y sólo si una expresión lógica es verdadera. IF(logical_exp) then sentencia1 sentencia2

REAL :: a !coef de x2

REAL :: b !coef de xREAL :: c !coef indepREAL :: discrim !discriminanteREAL :: part_real !parte real de la solucionREAL :: part_ima !parte imaginaria de la solucionREAL :: x1 !sol. Real 1REAL :: x2 !sol. Real 2!WRITE(*,*) “Este programa resuelve la ec. a x2 +b x +c =0”WRITE(*,*) “Entre los coeficientes a, b y c”READ(*,*) a, b, cWRITE(*,*) “ los coeficientes a, b y c son:”, a, b, c! Calculo el discriminanteDiscrim=b**2 – 4.*a*c!clasifico la raiz según el discriminanteIF(discrim>0) then x1=(-b+sqrt(discrim))/(2.*a) x2=(-b-sqrt(discrim))/(2.*a) WRITE(*,*) “ esta ecuación tiene 2 raíces reales” WRITE(*,*) “x1=“, x1 WRITE(*,*) “x2=“, x2

Page 6: Brazos Bloque IF Permite que se ejecuten una serie de tareas si y sólo si una expresión lógica es verdadera. IF(logical_exp) then sentencia1 sentencia2

ELSE IF(discrim<0) then part_real=(-b)/(2.*a) part_ima=sqrt(abs(discrim))/(2.*a) WRITE(*,*) “ esta ecuación tiene 2 raíces complejas” WRITE(*,*) “x1=“,part_real,”+i”,part_ima WRITE(*,*) “x2=“, part_real,”-i”,part_imaELSE IF(discrim==0) then x1=(-b)/(2.*a) WRITE(*,*) “ esta ecuación tiene 2 raíces reales iguales” WRITE(*,*) “x1=x2=“, x1END IFEND PROGRAM raices_de_la_ecuacion_cuadratica

Verificación (prueba de escritorio)x2 + 5x + 6 = 0 x1 = -2 y x2 = -3x2 + 4x + 4 = 0 x=2x2 + 2x + 5 =0 x= -1 ∓ i2Realizar 3 ejecuciones para verificar los 3 casos

Page 7: Brazos Bloque IF Permite que se ejecuten una serie de tareas si y sólo si una expresión lógica es verdadera. IF(logical_exp) then sentencia1 sentencia2

Es posible poner un nombre al bloque IF

[nombre:] IF(logical_exp 1) THEN sentencia1 sentencia2 Bloque1 …ELSE IF(logical_exp2) THEN [nombre] sentencia3 sentencia4 Bloque2 …ELSE [nombre]

sentencia5 sentencia6 Bloque3 …END IF [nombre]

El nombre puede tener 31 caracteres de longitud y debe empezar con una letra.Si un nombre se le asigna al IF en el END IF también debe figurar ese nombre. En los ELSE el nombre es opcional.Este nombre es de utilidad en programas muy largos.

Page 8: Brazos Bloque IF Permite que se ejecuten una serie de tareas si y sólo si una expresión lógica es verdadera. IF(logical_exp) then sentencia1 sentencia2

Los IF pueden ser anidados

externo: IF (x > 0.) then…… interno: IF(y>0.) then …… ……. END IF interno………END IF externo

Para solo una lineaIF(exp_logica) sentencia

La sentencia debe de ser ejecutable. Se usa cuando el el bloque tiene una sola sentencia.

Page 9: Brazos Bloque IF Permite que se ejecuten una serie de tareas si y sólo si una expresión lógica es verdadera. IF(logical_exp) then sentencia1 sentencia2

[nombre:] SELECT CASE(exp_caso)case (caso seleccionado1) [ nombre]

sentencia1 sentencia2 Bloque1 …

case (caso seleccionado2) [ nombre] sentencia3 sentencia4 Bloque2 …

case default [ nombre] sentencian

sentencian+1 Bloquen …

END select [nombre]

Page 10: Brazos Bloque IF Permite que se ejecuten una serie de tareas si y sólo si una expresión lógica es verdadera. IF(logical_exp) then sentencia1 sentencia2

Caso n

Bloque n

falso

verdad

Caso2

Bloque 2

verdad

Bloque

falsoCaso 1

Bloque 1

verdad

Ej:INTEGER :: temp_cTemp: SELECT CASE (temp_c)CASE(:-1) WRITE(*,*) “Bajo cero ”CASE(0)WRITE(*,*) “congelación”CASE(1:20)WRITE(*,*) “frio a fresco”CASE(21:33)WRITE(*,*) “cálido”CASE(34:)WRITE(*,*) “bochornoso”END SELECT temp

Page 11: Brazos Bloque IF Permite que se ejecuten una serie de tareas si y sólo si una expresión lógica es verdadera. IF(logical_exp) then sentencia1 sentencia2