VARIABILI E COSTANTI LOGICHE LOGICAL :: var LOGICAL, PARAMETER :: cost=… valide cost=.TRUE....

26
VARIABILI E COSTANTI LOGICHE LOGICAL :: var LOGICAL, PARAMETER :: cost=… valide cost=.TRUE. cost=.FALSE. non valide cost=TRUE cost=.FALSE In generale var = espressione logica

Transcript of VARIABILI E COSTANTI LOGICHE LOGICAL :: var LOGICAL, PARAMETER :: cost=… valide cost=.TRUE....

Page 1: VARIABILI E COSTANTI LOGICHE LOGICAL :: var LOGICAL, PARAMETER :: cost=… valide cost=.TRUE. cost=.FALSE. non valide cost=TRUE cost=.FALSE In generale var.

VARIABILI E COSTANTI LOGICHE

LOGICAL :: varLOGICAL, PARAMETER :: cost=…

valide

cost=.TRUE.

cost=.FALSE.

non valide

cost=TRUE

cost=.FALSE

In generale

var = espressione logica

Page 2: VARIABILI E COSTANTI LOGICHE LOGICAL :: var LOGICAL, PARAMETER :: cost=… valide cost=.TRUE. cost=.FALSE. non valide cost=TRUE cost=.FALSE In generale var.

Operatori relazionali

nuovo vecchio descrizione

== .EQ. uguale

/= .NE. diverso

> .GT. maggiore

>= .GE. maggiore o uguale

< .LT. minore

<= .LE. minore o uguale

Page 3: VARIABILI E COSTANTI LOGICHE LOGICAL :: var LOGICAL, PARAMETER :: cost=… valide cost=.TRUE. cost=.FALSE. non valide cost=TRUE cost=.FALSE In generale var.

Operatori relazionali

N.B. non confondere

l’operatore relazionale di uguaglianza ==

con l’operatore di assegnazione =

operazione risultato 6 < 7 .TRUE.

6 > 7 .FALSE.

6 == 7 .TRUE.

‘A’ < ‘B’ .TRUE.

i caratteri vengono valutati in ordine alfabetico

Page 4: VARIABILI E COSTANTI LOGICHE LOGICAL :: var LOGICAL, PARAMETER :: cost=… valide cost=.TRUE. cost=.FALSE. non valide cost=TRUE cost=.FALSE In generale var.

Operatori relazionali

gli operatori relazionali sono valutati dopo tutti gli

operatori matematici

le seguenti espressioni sono equivalenti

7+3 < 10+15

(7+3) < (10+15)

Page 5: VARIABILI E COSTANTI LOGICHE LOGICAL :: var LOGICAL, PARAMETER :: cost=… valide cost=.TRUE. cost=.FALSE. non valide cost=TRUE cost=.FALSE In generale var.

Operatori relazionali

se l’operazione relazionale riguarda numeri interi

e reali gli interi vengono trasformati in numeri reali

operazione risultato 6 == 6. .TRUE.

operazioni relazionali tra dati numerici e dati di

tipo carattere non sono ammessi

operazione risultato 6 <= ‘S’ errore

Page 6: VARIABILI E COSTANTI LOGICHE LOGICAL :: var LOGICAL, PARAMETER :: cost=… valide cost=.TRUE. cost=.FALSE. non valide cost=TRUE cost=.FALSE In generale var.

Operatori logici

operazione descrizione

v1.AND.v2 TRUE se v1 e v2 sono TRUE

v1.OR.v2 TRUE se v1 o v2 è TRUE

v1.EQV.v2 TRUE se v1 e v2 sono concordi

v1.NEQV.v2 TRUE se v1 e v2 sono discordi

.NOT.v1 TRUE se v1 è FALSE

FALSE se v1 è TRUE

Page 7: VARIABILI E COSTANTI LOGICHE LOGICAL :: var LOGICAL, PARAMETER :: cost=… valide cost=.TRUE. cost=.FALSE. non valide cost=TRUE cost=.FALSE In generale var.

Gerarchia delle operazioni

1) gli operatori aritmetici (con la loro gerarchia)

2) gli operatori relazionali da sinistra verso destra

3) gli operatori .NOT. da sinistra verso destra

4) gli operatori .AND. da sinistra verso destra

5) gli operatori .OR. da sinistra verso destra

6) gli operatori .EQV. e .NEQV. da sinistra verso destra

Page 8: VARIABILI E COSTANTI LOGICHE LOGICAL :: var LOGICAL, PARAMETER :: cost=… valide cost=.TRUE. cost=.FALSE. non valide cost=TRUE cost=.FALSE In generale var.

Gerarchia delle operazioni

Esempi:

v1=.TRUE. v2=.TRUE. v3=.FALSE.

operazione risultato

v1.AND.v2.OR.v3 .TRUE.

v1.AND.(v2.OR.v3) .FALSE.

Page 9: VARIABILI E COSTANTI LOGICHE LOGICAL :: var LOGICAL, PARAMETER :: cost=… valide cost=.TRUE. cost=.FALSE. non valide cost=TRUE cost=.FALSE In generale var.

Istruzioni di diramazione

permettono di selezionare ed eseguire delle

particolari parti del codice saltandone altre

due tipi:

istruzioni IF

istruzioni SELECT

Page 10: VARIABILI E COSTANTI LOGICHE LOGICAL :: var LOGICAL, PARAMETER :: cost=… valide cost=.TRUE. cost=.FALSE. non valide cost=TRUE cost=.FALSE In generale var.

Istruzione IF

IF (espressione logica) THEN

istruzione 1

istruzione 2

……………

ENDIF

blocco 1

Se l’espressione logica è .TRUE. vengono

eseguite le istruzione contenute nel blocco 1

Se l’espressione logica è .FALSE. si salta alla

prima istruzione eseguibile dopo ENDIF

Page 11: VARIABILI E COSTANTI LOGICHE LOGICAL :: var LOGICAL, PARAMETER :: cost=… valide cost=.TRUE. cost=.FALSE. non valide cost=TRUE cost=.FALSE In generale var.

Istruzione IF (esempio)

READ(*,*) a

y=1.D0

IF (a.GE.0.D0) THEN

y=DSQRT(a)

ENDIF WRITE(*,*) ‘ valore di y = ‘,y

se a<0 si ha y=1

altrimenti è uguale alla radice quadrata di a

Page 12: VARIABILI E COSTANTI LOGICHE LOGICAL :: var LOGICAL, PARAMETER :: cost=… valide cost=.TRUE. cost=.FALSE. non valide cost=TRUE cost=.FALSE In generale var.

Istruzione IF

IF (espressione logica) THEN

istruzione 1

istruzione 2

……………

ELSE

blocco 1

istruzione 3

istruzione 4

……………

blocco 2

END IF

Page 13: VARIABILI E COSTANTI LOGICHE LOGICAL :: var LOGICAL, PARAMETER :: cost=… valide cost=.TRUE. cost=.FALSE. non valide cost=TRUE cost=.FALSE In generale var.

Istruzione IF

Se l’espressione logica è .TRUE. vengono

eseguite le istruzione contenute nel blocco 1

e si salta alla prima istruzione eseguibile dopo

ENDIF

Se l’espressione logica è .FALSE. vengono

eseguite le istruzione contenute nel blocco 2

e si va alla prima istruzione eseguibile dopo

ENDIF

Page 14: VARIABILI E COSTANTI LOGICHE LOGICAL :: var LOGICAL, PARAMETER :: cost=… valide cost=.TRUE. cost=.FALSE. non valide cost=TRUE cost=.FALSE In generale var.

Istruzione IF (esempio)READ(*,*) a

y=1.D0

IF (a.GE.0.D0) THEN

y=DSQRT(a)

ELSE

y=0.D0

ENDIF

WRITE(*,*) ‘ valore di y = ‘,y

se a<0 si ha y=0

altrimenti è uguale alla radice quadrata di a

Page 15: VARIABILI E COSTANTI LOGICHE LOGICAL :: var LOGICAL, PARAMETER :: cost=… valide cost=.TRUE. cost=.FALSE. non valide cost=TRUE cost=.FALSE In generale var.

Istruzione IFIF (espressione logica 1) THEN

istruzione 1istruzione 2……………

ELSE IF (espressione logica 2) THEN

blocco 1

istruzione 3istruzione 4……………

blocco 2

END IF

ELSE

istruzione 5istruzione 6……………

blocco 3

Page 16: VARIABILI E COSTANTI LOGICHE LOGICAL :: var LOGICAL, PARAMETER :: cost=… valide cost=.TRUE. cost=.FALSE. non valide cost=TRUE cost=.FALSE In generale var.

Istruzione IF

Se l’espressione logica1 è .TRUE. vengono eseguite

le istruzione contenute nel blocco 1 e si salta alla

prima istruzione eseguibile dopo ENDIF

Se l’espressione logica2 è .TRUE. vengono eseguite

le istruzione contenute nel blocco 2 e si salta alla

prima istruzione eseguibile dopo ENDIF

Se le espressioni sono entrambe .FALSE. vengono

eseguite le istruzione contenute nel blocco 3 e si va

alla prima istruzione eseguibile dopo ENDIF

Page 17: VARIABILI E COSTANTI LOGICHE LOGICAL :: var LOGICAL, PARAMETER :: cost=… valide cost=.TRUE. cost=.FALSE. non valide cost=TRUE cost=.FALSE In generale var.

Istruzione IF (esempio)

READ(*,*) a

IF (a.GE.1.D0) THEN

y=1.D0DSQRT(a)

ELSE IF (a.GE.0.D0) THEN

y=DSQRT(a)

ELSE

y=0.D0

END IF

se a<0 si ha y=0

se 0=<a<1 y è uguale alla radice quadrata di a

Se a>=1 si ha y=1

Page 18: VARIABILI E COSTANTI LOGICHE LOGICAL :: var LOGICAL, PARAMETER :: cost=… valide cost=.TRUE. cost=.FALSE. non valide cost=TRUE cost=.FALSE In generale var.

Istruzione IF con nomeIF (espressione logica 1) THEN

istruzione 1istruzione 2……………

ELSE IF (espressione logica 2) THEN

blocco 1

istruzione 3istruzione 4……………

blocco 2

END IF

ELSE

istruzione 5istruzione 6……………

blocco 3

[nome]

[nome]

[nome]

[nome]

Page 19: VARIABILI E COSTANTI LOGICHE LOGICAL :: var LOGICAL, PARAMETER :: cost=… valide cost=.TRUE. cost=.FALSE. non valide cost=TRUE cost=.FALSE In generale var.

Istruzione IF con nomeIF (espressione logica 1) THEN

…………...…………………………

IF (espressione logica 2) THEN

………………………………………

END IF

END IF ………………………………………

[nome1]

[nome2]

[nome2]

[nome1]

Page 20: VARIABILI E COSTANTI LOGICHE LOGICAL :: var LOGICAL, PARAMETER :: cost=… valide cost=.TRUE. cost=.FALSE. non valide cost=TRUE cost=.FALSE In generale var.

Istruzione IF logico

IF (espressione logica) istruzione

Se l’espressione logica è .TRUE. viene

eseguita la singola istruzione

IF (a>0.d0) y=DSQRT(a)

Page 21: VARIABILI E COSTANTI LOGICHE LOGICAL :: var LOGICAL, PARAMETER :: cost=… valide cost=.TRUE. cost=.FALSE. non valide cost=TRUE cost=.FALSE In generale var.

Istruzione GO TO

GO TO label

si salta alla prima istruzione eseguibile dopo quella

preceduta dal label

Page 22: VARIABILI E COSTANTI LOGICHE LOGICAL :: var LOGICAL, PARAMETER :: cost=… valide cost=.TRUE. cost=.FALSE. non valide cost=TRUE cost=.FALSE In generale var.

Istruzione SELECT CASE

CASE (valori 1)

istruzione ……………

CASE (valori 2)

blocco 1

istruzione ……………

blocco 2

END SELECT

CASE DEFAULT

istruzione ……………

blocco default

SELECT CASE (espressione CASE)

……………….. ………………..

Page 23: VARIABILI E COSTANTI LOGICHE LOGICAL :: var LOGICAL, PARAMETER :: cost=… valide cost=.TRUE. cost=.FALSE. non valide cost=TRUE cost=.FALSE In generale var.

Se l’espressione CASE ha un valore compreso in

valori 1 vengono eseguite le istruzione contenute nel

blocco 1

Istruzione SELECT CASE

Se l’espressione CASE ha un valore compreso in

valori 2 vengono eseguite le istruzione contenute nel

blocco 2

Se l’espressione CASE ha un valore che non è

compreso in nessuno valori descritti dai vari CASE,

vengono eseguite le istruzione contenute nel blocco

default

Page 24: VARIABILI E COSTANTI LOGICHE LOGICAL :: var LOGICAL, PARAMETER :: cost=… valide cost=.TRUE. cost=.FALSE. non valide cost=TRUE cost=.FALSE In generale var.

Istruzione SELECT CASE

Il CASE DEFAULT è facoltativo.

Se non è presente e l’espressione CASE ha un

valore che non è compreso in nessuno valori descritti

dai vari CASE non viene eseguita nessuna istruzione.

Page 25: VARIABILI E COSTANTI LOGICHE LOGICAL :: var LOGICAL, PARAMETER :: cost=… valide cost=.TRUE. cost=.FALSE. non valide cost=TRUE cost=.FALSE In generale var.

Istruzione SELECT CASE (esempio)

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

write(*,*) ‘ valore dispari minore di 10’

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

write (*,*) ‘ valore pari minore uguale a 10’

END SELECT

CASE DEFAULT

SELECT CASE (valore)

CASE (11:20)

write (*,*) ‘ valore tra 11 e 20’

write (*,*) ‘ valore negativo, zero oppure & superiore a 20’

INTEGER :: valore

Page 26: VARIABILI E COSTANTI LOGICHE LOGICAL :: var LOGICAL, PARAMETER :: cost=… valide cost=.TRUE. cost=.FALSE. non valide cost=TRUE cost=.FALSE In generale var.