...

EXPRESIONES LOGICAS

by user

on
Category: Documents
0

views

Report

Comments

Transcript

EXPRESIONES LOGICAS
Electromagnetismo & FORTRAN
4.1.-
Capítulo 4
EXPRESIONES LOGICAS
Una expresión lógica únicamente puede tomar dos valores que son :
.true. o .false.
Este tipo de expresiones permiten crear estructuras de control dentro del programa FORTRAN que dependiendo
de los valores obtenidos por la expresión se bifurcan y recorren caminos alternativos.
A la hora de construir una expresión lógica FORTRAN cuenta con una serie de operadores lógicos que se aplican
siempre entre dos elementos del mismo tipo, bien numéricos o bien tipo carácter. Una vez construida la expresión
esta únicamente puede tomar dos valores cierto o falso.
Los operadores en FORTRAN son los siguientes:
OPERADOR
.EQ.
.NE.
.LT.
.LE.
.GT.
.GE.
SIGNIFICADO
Igual que ( = )
No igual que ( ≠ )
Menor que (< )
Menor o igual que (≤ )
Mayor que (> )
Mayor o igual que ( ≥ )
Ejemplo
Supongamos que una variable real A posee un valor de 5.6 y otra variable real B posee un valor de 7.8, la
siguiente tabla muestra los valores de lógicos para una serie de expresiones lógicas:
EXPRESION
(A .gt. 50.0)
(A .ge. B)
(A.ne.B)
VALOR
.false.
.false.
.true.
Por otro lado, hay otro tipo de operadores lógicos que son utilizados únicamente entre expresiones lógicas, en
concreto .NOT. opera sobre una sola expresión lógica y el resto sobre dos. La siguiente tabla muestra este tipo de
operadores y sus significado.
OPERADOR
.NOT.
.AND.
.OR.
.XOR.
.EQV.
.NEQV.
SIGNIFICADO
Cambia el valor de la expresión lógica a su opuesto
Cierto únicamente si ambas expresiones lógicas son ciertas
Cierto si una de las expresiones es cierta
Cierto únicamente si una de las expresiones lógicas es cierto
Cierto si ambas expresiones tiene el mismo valor
Cierto si ambas expresiones no tienen el mismo valor
Ejemplo
Supongamos dos variables con valores A=2.0 y B=10.0, entonces:
.not. (a .lt. b)
(a .ne. b) .and. (a .lt. b)
(a .lt. b) .or. (a .gt. b)
(a .ne. b) .xor. (a .lt. b)
(a .lt. b) .eqv. (a .gt. b)
(a .lt. b) .neqv. (a .gt. b)
.false.
.true. (ambas expresiones lógicas son ciertas)
.true. (una de las expresiones lógicas es cierta)
.true. (ambas expresiones son ciertas)
.false. (los resultados de las expresiones no son iguales)
.true. (los resultados de las expresiones no son iguales)
Grupo de Electromagnetismo
1
Electromagnetismo & FORTRAN
Capítulo 4
Cuando en una misma expresión lógica compuesta existen varios operadores la prioridad de mayor a menor es:
1.
2.
3.
4.
5.
6.
7.
Paréntesis
Operadores aritméticos (**, *, /, +, -)
Operadores lógicos (.lt. , .gt. , .eq. , .ne. , .le. , .ge.)
.not.
.and.
.or.
.eqv. and .neqv.
Cuando en una misma expresión existen operadores de la misma prioridad las operaciones se realizaran recorriendo
la expresión de izquierda a derecha.
4.2.-
ESTRUCTURAS DE CONTROL
Una vez vistas las posibilidades que ofrecen la conjunción de expresiones lógicas, así como su funcionamiento
podemos introducir las estructuras de control . Este tipo de estructuras son fundamentales en el desarrollo de un
programa FORTRAN y permiten implementar bifurcaciones operacionales que son indispensables en la mayoría de
los programas.
La sentencia FORTRAN que permite este tipo de estructuras es la sentencia IF (lógico) la cual tiene una estructura
como la que se muestra a continuación:
IF (expresión lógica) THEN
Sentencias nº 1 ejecutadas cuando expresión logica=.true.
ELSE
Sentencias nº 2 ejecutadas cuando expresión logica=.false.
ENDIF
En caso de no existir o no ser necesarias las sentencias nº 2, la sentencia ELSE no es de uso obligado. En ese caso
el Bloque IF queda del siguiente modo:
IF (expresión lógica) THEN
Sentencias nº 1 ejecutadas cuando expresión logica=.true.
ENDIF
Ejemplo:
Programa que lee dos números y nos dice por pantalla cual de ellos es el mayor.
P
R
O
G
R
A
M
I
M
P
L
I
C
I
T
R
E
A
L
A
,
B
P
R
I
N
T
*
,
´
D
R
E
A
D
*
,
A
P
R
I
N
T
*
,
´
R
E
A
D
*
,
B
I
F
(
A
.
G
E
P
R
I
N
T
*
E
L
S
E
P
R
I
N
T
*
Grupo de Electromagnetismo
M
A
Y
O
R
N
O
N
E
A
M
E
A
´
D
A
M
E
B
´
.
B
)
T
H
,
´
A
E
S
M
A
Y
O
R
´
,
´
B
E
S
M
A
Y
O
R
´
E
N
2
Electromagnetismo & FORTRAN
E
N
D
E
N
D
I
Capítulo 4
F
Obsérvese que el programa responderá que A es mayor, cuando A=B, lo que no es muy correcto. Analizando el
problema observamos que deberíamos haber tenido en cuenta el caso. Para ello podemos incluir otra sentencia IF
del siguiente modo:
P
R
O
G
R
A
M
I
M
P
L
I
C
I
T
R
E
A
L
A
,
B
P
R
I
N
T
*
,
´
D
R
E
A
D
*
,
A
P
R
I
N
T
*
,
´
R
E
A
D
*
,
B
I
F
(
A
.
E
Q
P
R
I
N
T
L
S
E
I
F
(
A
P
R
I
L
S
E
P
R
E
N
E
N
D
E
N
D
E
E
M
A
Y
O
R
N
O
N
E
A
M
E
A
´
D
A
M
E
B
´
.
B
)
T
H
E
*
,
´
A
=
B
´
.
G
E
.
B
)
T
H
E
N
T
*
,
´
A
E
S
M
A
Y
O
R
´
I
N
T
*
,
´
B
E
S
M
A
Y
O
R
´
D
I
F
I
F
N
N
De la modificación anterior es preciso observar detenidamente dos cuestiones:
a) Al existir dos sentencia IF, su anidamiento debe respetarse. Esto significa que las sentencias ELSE y ENDIF
del segundo IF nunca deberán se escritas con posterioridad a las sentencia ELSE y ENDIF de del primer IF.
ANIDAMIENTO CORRECTO
ANIDAMIENTO INCORRECTO
IF (expresión lógica) THEN
IF (expresión lógica) THEN
Sentencias FORTRAN
ELSE
Sentencias FORTRAN
ENDIF
ELSE
Sentencias FORTRAN
ENDIF
IF (expresión lógica) THEN
IF (expresión lógica) THEN
Sentencias FORTRAN
ELSE
Sentencias FORTRAN
ELSE
ENDIF
Sentencias FORTRAN
ENDIF
b) Al aumentar el numero de sentencia anidadas es muy conveniente para una correcta comprensión y lectura del
programa aplicar tabulaciones hacia la derecha para cada bloque IF, con el fin de que cada bloque quede alineado
verticalmente y separado de los demás bloques.
Grupo de Electromagnetismo
3
Electromagnetismo & FORTRAN
Capítulo 4
Dentro de la estructura IF existe una variante permitida en la que no es necesario poner las sentencia ELSE y
ENDIF, su estructura es:
IF (expresión lógica) Sentencia ejecutable que se aplicará cuando expresión logica=.true.
Ejemplo
Programa que lea un carácter y si es la letra S escribe la palabra YES, sino que no escriba nada
P
R
O
G
R
A
M
C
U
A
D
R
I
M
P
L
I
C
I
T
C
H
A
R
A
C
T
E
R
*
1
P
R
I
N
T
*
,
´
D
A
M
E
R
E
A
D
*
,
A
I
F
(
A
.
E
Q
.
´
S
´
)
E
N
D
A
D
N
O
N
E
U
N
A
R
I
N
O
A
P
T
L
E
T
R
A
´
*
,
´
Y
E
S
´
Al introducir por teclado un carácter que será leído por la sentencia READ*,A este deberá ser introducido
entrecomillado, es decir : 'S' .
Por ultimo, dentro de la construcción de varios bloques IF entrelazados se establece una nueva forma que responde
a la siguiente estructura:
IF (expresión lógica 1) THEN
Sentencias nº 1 ejecutadas cuando expresión lógica 1 = .true.
ELSE IF (expresión lógica 2) THEN
Sentencias nº 2 ejecutadas cuando expresión lógica 2 = .true.
ELSE IF (expresión lógica 3) THEN
Sentencias nº 3 ejecutadas cuando expresión lógica 2 = .true.
.......................................
.......................................
.......................................
ELSE IF (expresión lógica N) THEN
Sentencias nº N ejecutadas cuando expresión lógica N = .true.
ELSE
Sentencias nº N+1 ejecutadas cuando expresión lógica 1 = .false.
ENDIF
De manera gráfica puede explicarse fácilmente la estructura anterior como se puede ver a continuación:
Grupo de Electromagnetismo
4
Electromagnetismo & FORTRAN
Capítulo 4
condicion logica 1
.false.
.true.
condicion logica 2
sentencias nº 1
.false.
.true.
condicion logica 3
sentencias nº 2
.true.
.false.
sentencias nº 3
condicion logica N
.false.
.true.
sentencias nº N
sentencias nº N+1
EJERCICIO 4.1
•
Realizar un programa que lea un numero por pantalla y comunique al usuario si es par o
impar.
EJERCICIO 4.2
•
Realizar un programa que lea un valor entero comprendido entre 1 y 5 y presente por
pantalla la vocal a,e,i,o,u en función del numero leído. El programa deberá advertir al
usuario en caso de que el valor introducido no este en el intervalo [1,5].
EJERCICIO 4.3
•
Realizar un programa que lea una letra del abecedario y diga al usuario si se trata de una
vocal o no.
EJERCICIO 4.4
•
Programar la ecuación de 2º grado Ax2 + B x + C = 0, con la capacidad de dar como
resultado las raíces complejas.
EJERCICIO 4.5
•
Realizar un programa que calcule el modulo y el argumento de un numero complejo
(a+bi), poniendo especial cuidado en la ubicación del argumento resultante en el
cuadrante correcto.
Grupo de Electromagnetismo
5
Fly UP