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

Upload: cristiano-ricciardi

Post on 02-May-2015

216 views

Category:

Documents


0 download

TRANSCRIPT

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