L gica decisiones
This presentation is the property of its rightful owner.
Sponsored Links
1 / 20

LÓGICA - DECISIONES PowerPoint PPT Presentation


  • 112 Views
  • Uploaded on
  • Presentation posted in: General

Las expresiones lógicas relacionales comparan los valores de dos expresiones aritméticas o dos expresiones de tipo carácter. Las expresiones lógicas combinacionales representan operaciones lógicas entre constantes, variables y otras expresiones lógicas. LÓGICA - DECISIONES.

Download Presentation

LÓGICA - DECISIONES

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


L gica decisiones

  • Las expresiones lógicas relacionales comparan los valores de dos expresiones aritméticas o dos expresiones de tipo carácter.

  • Las expresiones lógicas combinacionales representan operaciones lógicas entre constantes, variables y otras expresiones lógicas.

LÓGICA - DECISIONES

Los valores lógicos: constantes, variables y expresiones lógicas, permiten controlar la ejecución de las sentencias de un programa.

Hay dos tipos de expresiones lógicas: las expresiones lógicas relacionales y las expresiones lógicas combinacionales.


Expresiones l gicas relacionales

Operador LÓGICO relacional

Significado

F77

F90/95

.EQ.

= =

Igual

.NE.

/=

Distinto

.LT.

<

Menor que

.LE.

<=

Menor o igual que

.GT.

>

Mayor que

.GE.

>=

Mayor o igual que

Expresiones lógicas relacionales

Las expresiones lógicas relacionales comparan los valores de dos expresiones aritméticas o dos expresiones de tipo carácter.

La evaluación de una expresión lógica relacional produce un resultado de tipo lógico: .TRUE. o .FALSE.

Sintaxis:

operando1 OPERADOR_LÓGICO_RELACIONAL operando2

  • operando es una expresión, variable o constante aritmética o de tipo carácter.

Los operadores lógicos relacionales de Fortran 77 han sobrevivido y funcionan en los compiladores de Fortran 90/95. Por ello, es interesante que el programador los reconozca en los programas, sin embargo, es preferible que utilice la forma de Fortran 90 en sus programas nuevos, que es mucho más intuitiva.


Expresiones l gicas relacionales ejemplos

Expresiones lógicas relacionales (ejemplos)

  • Sea la sentencia de declaración de tipos:

  • INTEGER :: I=3, J=5

    • OPERACIÓNRESULTADO

    • 3 <= I.TRUE.

    • J**2-1 >= 0.TRUE.

    • I = = J.FALSE.

    • I /= 10.TRUE.

    • ‘ANA’ < ’PEPE’.TRUE.

  • No son válidas las siguientes expresiones lógicas relacionales:

  • <= 5 (falta operando 1)

  • 8.44 /= 'XYZ' (no se pueden comparar reales con caracteres)

  • I = 3(es una sentencia de asignación)

  • No confundir el operador lógico relacional de igualdad con el operador de asignación.


Expresiones l gicas combinacionales

Operador

TIPO

SIGNIFICADO

.NOT.

Unario

Es lo opuesto a operando2

.AND.

Binario

Es .true. si y sólo si operando1 y operando2 son .true.

.OR.

Binario

Es .true. si uno de los dos operandos ES .true.

.EQV.

Binario

Es .true. si y sólo si los dos operandos son .true. o los dos operandos son .false.

.NEQV.

Binario

Es .true. si y sólo si los dos operandos tienen valores distintos

Expresiones lógicas combinacionales

Las expresiones lógicas combinacionales representan operaciones lógicas entre constantes, variables y otras expresiones lógicas.

La evaluación de una expresión lógica combinacional produce un resultado de tipo lógico: .TRUE. o .FALSE.

Sintaxis:

operando1 OPERADOR_LÓGICO_COMBINACIONAL operando2

  • operando es una expresión relacional, variable lógica o constante lógica. Operando1 no existe cuando el operador lógico usado es unario.


Expresiones l gicas combinacionales ejemplos

Expresiones lógicas combinacionales (ejemplos)

  • Sea:

  • LOGICAL:: L1=.TRUE., L2=.TRUE., L3=.FALSE.

    • OPERACIÓNRESULTADO

    • .NOT.L1.FALSE.

    • L1.AND.L3.FALSE.

    • L1.OR.L3.TRUE.

    • L1.AND.L2.OR.L3.TRUE.

  • No es válida la siguiente expresión:

  • 4.AND.3

  • da error al compilar


Precedencias l gicas aritm ticas

Precedencias lógicas-aritméticas

Expresiones lógicas combinacionales

Operador

( )

.NOT.

.AND.

.OR.

.EQV., .NEQV.

  • Si una expresión lógica contiene dos o más operadores de la misma precedencia se siguen las siguientes reglas:

  • Cuando tiene paréntesis anidados, éstos se evalúan desde el más interno hasta el más externo.

  • Si hay varios operadores .EQV. y/o .NEQV. se evalúan de izquierda a derecha.

Mayor

Prioridad

Menor

Combinación de expresiones

Operador

**

*, /

+, -

.GT., .GE., .LT.,

.LE., .EQ., .NE.

.NOT.

.AND.

.OR.

.EQV., .NEQV.

Mayor

Operadores aritméticos

Operadores lógicos relacionales

Prioridad

Operadores lógicos combinacionales

Menor


Bloque if i

Bloque IF (I)

Permite que un bloque de sentencias (puede ser sólo una) sea ejecutado si y sólo si el valor de una expresión lógica es cierta. Si la expresión lógica es falsa se salta ese bloque de sentencias y se ejecuta la siguiente primera sentencia ejecutable.

Sintaxis:

IF (expresión lógica) THEN

bloquede sentencias

END IF

  • ENDIFmarca laterminación de la sentencia de bloque IF.

  • El bloque de sentencias suele dentarse varios espacios para facilitar la lectura del bloque IF, aunque no es obligatorio hacerlo.

La estructura del bloque IF puede ser más complicada. A veces, se quiere ejecutar diferentes bloques de sentencias dependiendo de que otras tantas condiciones sean ciertas. Por ejemplo:

IF (expresión lógica 1) THEN

bloquede sentencias 1

ELSE IF (expresión lógica 2) THEN

bloquede sentencias 2

ELSE

bloquede sentencias 3

END IF


Bloque if ii

Bloque IF (II)

La forma general responde a la siguiente sintaxis:

IF (expresión lógica 1) THEN

bloquede sentencias 1

[ELSE IF (expresión lógica 2) THEN

bloquede sentencias 2]

...

[ELSE

bloquede sentencias n]

END IF

  • Cuando una expresión lógica es cierta se ejecuta el bloque de sentencias correspondiente y se salta a la primera sentencia ejecutable por debajo de END IF.

  • Cuando todas las expresiones son falsas y el bloque IF incluye la cláusula ELSE se ejecuta su bloque de sentencias.

  • Cuando el bloque IF no incluye la cláusula ELSE y ninguna de las expresiones lógicas sean ciertas no se ejecuta ninguno de los bloques de sentencias dados.


Bloque if con nombre

Bloque IF con nombre

Es posible asignar un nombre a un bloque IF. La sintaxis general de un bloque IF con nombre es:

[nombre:] IF (expresión lógica 1) THEN

bloquede sentencias 1

[ELSE IF (expresión lógica 2) THEN [nombre]

bloquede sentencias 2]

[ELSE [nombre]

bloquede sentencias n]

END IF [nombre]

  • Es recomendable usar nombres en los bloque IF largos y complicados. Por un lado, el programador estructura mejor los programas y, por otro, el compilador encuentra errores en su código de forma más precisa.

  • Además, los bloques IFpueden estar anidados. Dos bloques IF se dice que están anidados cuando uno de ellos se encuentra dentro de otro. En este caso, cada uno de los bloques IFrequiere su propia sentencia ENDIF. Ejemplo

[nombre_externo:] IF (expresión lógica 1) THEN

bloquede sentencias 1

[nombre_interno:]IF (expresión lógica 2) THEN

bloquede sentencias 2

END IF [nombre_interno]

END IF [nombre_externo]


Ejemplo de bloque if i valor absoluto

Ejemplo de bloque IF I (Valor absoluto)

IF (expresión lógica 1) THEN

bloquede sentencias

END IF

Principio

Leer

n

SI

n < 0

n = - n

NO

Escribir

n

Fin


Ejemplo de bloque if ii ecuaci n de 2 grado

Ejemplo de bloque IF II (Ecuación de 2º grado)

IF (expresión lógica 1) THEN

bloquede sentencias 1

[ELSE IF (expresión lógica 2) THEN

bloquede sentencias 2]

[ELSE

bloquede sentencias n]

END IF

Principio

Leer

a, b y c

SI

d = 0

NO

SI

d > 0

NO

Escribir

r1

Escribir

r1 y r2

Escribir

pr y pi

Fin


Ejemplo de if l gico i valor absoluto

Ejemplo de IF lógico I (Valor absoluto)

IF (expresión lógica 1) sentencia

Principio

Leer

n

SI

n < 0

n = - n

NO

Escribir

n

Fin


L gica decisiones

¡PRECAUCIÓN!

TÉNGASE MUCHO CUIDADO AL REALIZAR

COMPROBACIONES EN UN IF CON VARIABLES

REALES: POR ERROR DE REDONDEO PUEDE

TENER RESULTADOS INCORRECTOS.

USAR SIEMPRE VARIABLES ENTERAS


Bloque select case

Bloque SELECT CASE

El bloque SELECT CASE aparece en Fortran 90/95 como otra forma de controlar, junto con el bloque IF, la ejecución de determinados bloques de sentencias.

Su sintaxis general es:

[nombre:] SELECT CASE (expresióncaso)

CASE (selector de caso1) [nombre]

bloque de sentencias 1

[CASE (selector de caso 2) [nombre]

bloque de sentencias 2]

[CASE DEFAULT [nombre]

bloque de sentencias n]

END SELECT [nombre]

  • El bloque SELECT CASE ejecuta un bloque determinado de sentencias cuando el valor de la expresióncaso coincide o pertenece al rango dado de su correspondiente selector de caso.

  • Opcionalmente puede existir un CASE DEFAULT en un bloque SELECT CASE. El bloque de sentencias de este caso por defecto se ejecuta cuando el valor de la expresión caso no coincide con ningún selector de caso.

  • expresión caso es una expresión entera, lógica o de caracteres.

  • Selector de caso es una lista de uno o más valores posibles del mismo tipo que la expresióncaso. Cada selector de caso debe ser mutuamente excluyente. Los valores pueden escribirse como:

valor

valormin: valormax

: valormax

valormin:

o una combinación de estas formas separadas por comas.

  • Es recomendable poner nombre a un bloque SELECT CASE cuando sea largo y complicado


Bloque select case ejemplo

Principio

Leer

a, b y oper

Fin 2

otro caso

'+'

Escribir

no vale

oper =

c = a + b

'/'

'-'

'*'

c = a - b

NO

c = a * b

SI

c = a / b

Escribir

imposible

Escribir

c

Fin 1

Fin

Bloque SELECT CASE (Ejemplo)


Bloque select case otros ejemplos

Bloque SELECT CASE (Otros ejemplos)

INTEGER :: valor

parimpar: SELECT CASE (valor)

CASE (1, 3, 5, 7, 9)

WRITE (*,*) ‘el valor es impar’

CASE (2, 4, 6, 8, 10)

WRITE (*,*) ‘el valor es par’

CASE (11:)

WRITE (*,*) ‘el valor es demasiado grande’

CASE DEFAULT

WRITE (*,*) ‘el valor es negativo o cero’

END SELECT parimpar

Determinar si un número entero entre 1 y 10 es par o impar y visualizar un mensaje adecuado.

INTEGER :: temp

friocalor: SELECT CASE (temp)

CASE (:-1)

WRITE (*,*) ‘Por debajo de 0 Celsius’

CASE (0)

WRITE (*,*) ‘Está helando’

CASE (1:10)

WRITE (*,*) ‘Hace frío’

CASE (11:20)

WRITE (*,*) ‘Templado’

CASE (21:)

WRITE (*,*) ‘Hace calor’

END SELECT friocalor

Visualizar un mensaje de acuerdo con el valor de la temperatura dada.


Ejercicio resuelto n 1

Principio

Leer

num

SI

NO

num > 0

Escribir

NEGATIVO o CERO

Escribir

POSITIVO

Fin

Ejercicio resuelto nº 1

Pedir un número real por teclado y escribir si es positivo o no


Ejercicio resuelto n 2

Ejercicio resuelto nº 2

Pedir un número real por teclado y escribir si es positivo, negativo o cero.

Principio

Leer

num

SI

NO

num > 0

SI

NO

num < 0

Escribir

POSITIVO

Escribir

NEGATIVO

Escribir

CERO

Fin


Ejercicio resuelto n 4

Principio

Leer

a, b y c

NO

NO

b 0

a 0

SI

SI

NO

c 0

SI

NO

NO

Escribir

INDET.

d = 0

d > 0

Escribir

r

SI

SI

Escribir

IMPOS.

Escribir

r1

Escribir

r1 y r2

Escribir

pr y pi

Fin

Ejercicio resuelto nº 4

Resolver una ecuación de 2º grado con A, B y C cualquier valor.


Ejercicio resuelto n 5

0 Nota < 5

Suspenso

5 Nota < 7

Aprobado

7 Nota < 9

Notable

9 Nota < 10

Sobresaliente

Nota = 10

Matricula de Honor

Ejercicio resuelto nº 5

Dada una calificación numérica obtener la correspondiente alfabética según la siguiente clasificación:

Principio

Leer

nota

NO

nota < 5

SI

NO

nota < 7

Escribir

Susp.

SI

NO

nota < 9

SI

NO

Escribir

Aprob.

nota < 10

Escribir

Notab.

SI

Escribir

Sobres.

Escribir

Mat. H.

Fin


  • Login