Transcript
Page 1: Operatori di espressione di controllo (booleani) AND (operatore binario) OR (operatore binario) NOT (operatore unario) (IN) (operatore binario)
Page 2: Operatori di espressione di controllo (booleani) AND (operatore binario) OR (operatore binario) NOT (operatore unario) (IN) (operatore binario)

Operatori di espressione di controllo (booleani)

• AND (operatore binario)

• OR (operatore binario)

• NOT (operatore unario)

• (IN) (operatore binario)

Page 3: Operatori di espressione di controllo (booleani) AND (operatore binario) OR (operatore binario) NOT (operatore unario) (IN) (operatore binario)

REGOLA SINTATTICA PER IN [ ]

espressione IN Insieme di valori

IF Ch IN [‘A’..’Z’,’1..9’] THEN …………………..

Page 4: Operatori di espressione di controllo (booleani) AND (operatore binario) OR (operatore binario) NOT (operatore unario) (IN) (operatore binario)

Gli operatori binari

AND Falso Vero OR Falso Vero

Falso Falso Falso Falso Falso Vero

Vero Falso Vero Vero Vero Vero

NOT

Falso Vero

Vero Falso

L’operatore unario

Page 5: Operatori di espressione di controllo (booleani) AND (operatore binario) OR (operatore binario) NOT (operatore unario) (IN) (operatore binario)

ESEMPI

1. WHILE (A <> 0) AND (B <> 0) DO

corpo del ciclo

2. WHILE NOT ((A = 0) OR (B = 0)) DO

corpo del ciclo

Page 6: Operatori di espressione di controllo (booleani) AND (operatore binario) OR (operatore binario) NOT (operatore unario) (IN) (operatore binario)

Gerarchia degli operatori

( )

NOT

* / DIV MOD AND

+ - OR

< <= = <> > >= IN

Page 7: Operatori di espressione di controllo (booleani) AND (operatore binario) OR (operatore binario) NOT (operatore unario) (IN) (operatore binario)

Espressioni booleane

Page 8: Operatori di espressione di controllo (booleani) AND (operatore binario) OR (operatore binario) NOT (operatore unario) (IN) (operatore binario)

Fino a quando non chiarisco il

concetto o voi capite, la lezione prosegue

Fino a quando chiarisco il concetto e voi capite, la lezione prosegue

UNTIL NOT chiarisco OR capite

REPEAT La lezione prosegue

UNTIL chiarisco AND capite

REPEAT La lezione prosegue

Page 9: Operatori di espressione di controllo (booleani) AND (operatore binario) OR (operatore binario) NOT (operatore unario) (IN) (operatore binario)

Realizzazione di ciclicicli

• preprocessing– condizioni di ingresso

• istruzione di ciclo– espressione di controllo– corpo del ciclo– condizioni di uscita

• postprocessing

Page 10: Operatori di espressione di controllo (booleani) AND (operatore binario) OR (operatore binario) NOT (operatore unario) (IN) (operatore binario)

Valutiamo alcuni esempi (1- 1)WHILE (A <> 0) AND (B <> 0) DO

corpo del ciclo

(A <> 0) AND (B <> 0) = VERO

(A <> 0) = VERO e (B <> 0) = VERO

Il corpo del ciclo viene eseguito fino a quando A è diverso

da zero e B è diverso da zero

L’esecuzione del ciclo si interrompe per A uguale a zeroL’esecuzione del ciclo si interrompe per B uguale a zero

Page 11: Operatori di espressione di controllo (booleani) AND (operatore binario) OR (operatore binario) NOT (operatore unario) (IN) (operatore binario)

Valutiamo alcuni esempi (2 - 1)WHILE NOT ((A = 0) OR (B = 0)) DO

corpo del ciclo

NOT ((A = 0) OR (B = 0)) = VERO

(A = 0) OR (B = 0) = FALSO

(A = 0) = FALSO e (B = 0) = FALSO

Il corpo del ciclo viene eseguito fino a quando A è diverso

da zero e B è diverso da zero

L’esecuzione del ciclo si interrompe per A uguale a zeroL’esecuzione del ciclo si interrompe per B uguale a zero

Page 12: Operatori di espressione di controllo (booleani) AND (operatore binario) OR (operatore binario) NOT (operatore unario) (IN) (operatore binario)

Teorema di De Morgan(condizioni di uscita)

ESPRESSIONEESPRESSIONE

• Esp1 AND Esp2

• Esp1 OR Esp2

COMPLEMENTOCOMPLEMENTO

• NOT Esp1 OR NOT Esp2

• NOT Esp1 AND NOT Esp2

Page 13: Operatori di espressione di controllo (booleani) AND (operatore binario) OR (operatore binario) NOT (operatore unario) (IN) (operatore binario)

Valutiamo alcuni esempi (1 - 2)

WHILE (A <> 0) AND (B <> 0) DOcorpo del ciclo

condizione di ingresso

Esp1 = (A <> 0) AND Esp2 = (B <> 0)

(A <> 0) = VERO e (B <> 0) = VERO

condizione di uscita

NOT Esp1 = (A = 0) OR NOT Esp2 = (B = 0)

(A = 0) = VERO o (B = 0) = VERO

ESPRESSIONEESPRESSIONEEsp1 AND Esp2Esp1 OR Esp2

COMPLEMENTOCOMPLEMENTONOT Esp1 OR NOT Esp2 NOT Esp1 AND NOT Esp2

Page 14: Operatori di espressione di controllo (booleani) AND (operatore binario) OR (operatore binario) NOT (operatore unario) (IN) (operatore binario)

Valutiamo alcuni esempi (2 - 2)WHILE NOT ((A = 0) OR (B = 0)) DO

corpo del ciclo condizione di ingresso

NOT ( Esp1 = (A = 0) OR Esp2 = (B = 0) )

(NOT Esp1) = (A<>0) AND (NOT Esp2) = (B<>0)

(A <> 0) = VERO e (B <> 0) = VERO

condizione di uscita

NOT(NOT(Esp1 = (A = 0)) OR NOT(NOT(Esp2 = (B = 0))

Esp1 = (A = 0) OR Esp2 = (B = 0)

(A = 0) = VERO o (B = 0) = VERO

ESPRESSIONEESPRESSIONEEsp1 AND Esp2Esp1 OR Esp2

COMPLEMENTOCOMPLEMENTONOT Esp1 OR NOT Esp2 NOT Esp1 AND NOT Esp2

Page 15: Operatori di espressione di controllo (booleani) AND (operatore binario) OR (operatore binario) NOT (operatore unario) (IN) (operatore binario)

Esempio di algoritmo (1)DESCRIZIONE

Verificare se tre valori numerici inseriti possono essere considerati come le lunghezze dei lati di un triangolo

read (L1, L2, L3)

WHILE NOT ( (L1 < L2 + L3) AND (L2 < L1 + L3) AND

(L3 < L1 + L2) ) DO

write (Valori non validi - Inserire di nuovo)

read (L1, L2, L3)

END

Page 16: Operatori di espressione di controllo (booleani) AND (operatore binario) OR (operatore binario) NOT (operatore unario) (IN) (operatore binario)

Esempio di algoritmo (2)DESCRIZIONE

Verificare se tre valori numerici inseriti possono essere considerati come le lunghezze dei lati di un triangolo

read (L1, L2, L3)

WHILE ( (L1 >= L2 + L3) OR (L2 >= L1 + L3) OR

(L3 >= L1 + L2) ) DO

write (Valori non validi - Inserire di nuovo)

read (L1, L2, L3)

END

Page 17: Operatori di espressione di controllo (booleani) AND (operatore binario) OR (operatore binario) NOT (operatore unario) (IN) (operatore binario)

Fino a quando chiarisco il concetto o voi capite

Fino a quando non chiarisco il

concetto e voi non capite

Proseguo la lezione:

WHILE chiarisco OR capite La lezione prosegue;

WHILE (NOT chiarisco AND NOT capite) La lezione prosegue;

ESPRESSIONEESPRESSIONEEsp1 AND Esp2Esp1 OR Esp2

COMPLEMENTOCOMPLEMENTONOT Esp1 OR NOT Esp2 NOT Esp1 AND NOT Esp2

Page 18: Operatori di espressione di controllo (booleani) AND (operatore binario) OR (operatore binario) NOT (operatore unario) (IN) (operatore binario)

Valutiamo gli esempi (3 - 1)REPEAT

corpo del cicloUNTIL NOT ((A <> 0) AND (B <> 0))

NOT((A <> 0) AND (B <> 0)) = FALSO

(A <> 0) AND (B <> 0) = VERO

(A <> 0) = VERO e (B <> 0) = VERO

Il corpo del ciclo viene eseguito fino a quando A è diverso da zero e B è diverso da zero

L’esecuzione del ciclo si interrompe per A uguale a zeroL’esecuzione del ciclo si interrompe per B uguale a zero

Page 19: Operatori di espressione di controllo (booleani) AND (operatore binario) OR (operatore binario) NOT (operatore unario) (IN) (operatore binario)

Valutiamo gli esempi (4 - 1)REPEAT

corpo del cicloUNTIL (A = 0) OR (B = 0)

(A = 0) OR (B = 0) = FALSO

(A = 0) = FALSO e (B = 0) = FALSO

Il corpo del ciclo viene eseguito fino a quando A è diverso

da zero e B è diverso da zero

L’esecuzione del ciclo si interrompe per A uguale a zeroL’esecuzione del ciclo si interrompe per B uguale a zero

Page 20: Operatori di espressione di controllo (booleani) AND (operatore binario) OR (operatore binario) NOT (operatore unario) (IN) (operatore binario)

Esempio di algoritmo (3)DESCRIZIONE

Verificare se tre valori numerici inseriti possono essere considerati come le lunghezze dei lati di un triangolo

L1 L2 L3 0

REPEAT

write (Valori non validi - Inserire di nuovo)

read (L1, L2, L3)

UNTIL (L1 < L2 + L3) AND (L2 < L1 + L3) AND

(L3 < L1 + L2)

Page 21: Operatori di espressione di controllo (booleani) AND (operatore binario) OR (operatore binario) NOT (operatore unario) (IN) (operatore binario)

Esempio di algoritmo (4)DESCRIZIONE

Verificare se tre valori numerici inseriti possono essere considerati come le lunghezze dei lati di un triangolo

L1 L2 L3 0

REPEAT

write (Valori non validi - Inserire di nuovo)

read (L1, L2, L3)

UNTIL NOT ( (L1 >= L2 + L3) OR (L2 >= L1 + L3) OR

(L3 >= L1 + L2) )

Page 22: Operatori di espressione di controllo (booleani) AND (operatore binario) OR (operatore binario) NOT (operatore unario) (IN) (operatore binario)

ESEMPI

3. REPEAT

corpo del ciclo

UNTIL NOT ((A <> 0) AND (B <> 0))

4. REPEAT

corpo del ciclo

UNTIL (A = 0) OR (B = 0)

Page 23: Operatori di espressione di controllo (booleani) AND (operatore binario) OR (operatore binario) NOT (operatore unario) (IN) (operatore binario)

Array elementari

Page 24: Operatori di espressione di controllo (booleani) AND (operatore binario) OR (operatore binario) NOT (operatore unario) (IN) (operatore binario)

Tipi di variabile in PascalTipi di variabile in Pascal

• Tipi predefiniti– integer– real– char

• Tipi utente (esempiesempi)– giorno (subrange)– indice (subrange)– ….

Page 25: Operatori di espressione di controllo (booleani) AND (operatore binario) OR (operatore binario) NOT (operatore unario) (IN) (operatore binario)

Tipo SUBRANGE SUBRANGE (sotto-intervallo)

• intervallo di valori di tipo predefinito (integer, real, ecc.)– valore minimo– valore massimo– minimo < massimominimo < massimo

costante costante..tipo subrange

SINTASSISINTASSI

Page 26: Operatori di espressione di controllo (booleani) AND (operatore binario) OR (operatore binario) NOT (operatore unario) (IN) (operatore binario)

Esempi di Subrange

TYPE

GiornoType = 1 . . 31;

IndiceType = 1 . . 100;

VAR

Giorno: GiornoType;

Indice: IndiceType;

Page 27: Operatori di espressione di controllo (booleani) AND (operatore binario) OR (operatore binario) NOT (operatore unario) (IN) (operatore binario)

Variabili SCALARISCALARI

• intero

• reale

• carattere

• giorno

• indice

• ……..

• integer

• real

• char

• GiornoType

• IndiceType

• ……..

variabili che possono assumere un solo valore ad un dato istante

Page 28: Operatori di espressione di controllo (booleani) AND (operatore binario) OR (operatore binario) NOT (operatore unario) (IN) (operatore binario)

Variabili STRUTTURATESTRUTTURATEvariabili che contengono variabili componenti

Meccanismo di accesso alle variabili componenti

è il modo in cui ciascun componente di una variabile strutturata può essere manipolato

come se fosse una variabile scalare

Page 29: Operatori di espressione di controllo (booleani) AND (operatore binario) OR (operatore binario) NOT (operatore unario) (IN) (operatore binario)

ARRAYARRAYvariabile strutturata che contiene variabili

componenti tutte dello stesso tipo (omogenee)il cui meccanismo di accesso consiste di una o più

espressioni di SUBRANGESUBRANGE

ELEMENTO

una variabile componente di un ARRAY

Page 30: Operatori di espressione di controllo (booleani) AND (operatore binario) OR (operatore binario) NOT (operatore unario) (IN) (operatore binario)

SINTASSIArray mono-dimensionale

ARRAY subrange[

array mono-dimensionale

] OF type

Accesso ad un elemento

identificatore espressione[

accesso adelemento

]

ArrayDiReali = ARRAY [1..10] OF real;

Page 31: Operatori di espressione di controllo (booleani) AND (operatore binario) OR (operatore binario) NOT (operatore unario) (IN) (operatore binario)

Esempio 1TYPE TipoIndice = 1 . . 5; ArrayDiReali = ARRAY [TipoIndice] OF real;VAR Reali: ArrayDiReali; Indice: TipoIndice;BEGINIndice := 3;Reali[1] := 2.5;Reali[2] := 3.14;Reali[Indice] := 6.0;Reali[4] := Reali[1];Reali[5] := Reali[Indice];END.

Page 32: Operatori di espressione di controllo (booleani) AND (operatore binario) OR (operatore binario) NOT (operatore unario) (IN) (operatore binario)

Risultato dell’Esempio 1

2.5 3.14 6.0 2.5 6.0

[1] [2] [3] [4] [5]

Reali

Page 33: Operatori di espressione di controllo (booleani) AND (operatore binario) OR (operatore binario) NOT (operatore unario) (IN) (operatore binario)

Esempio 2TYPEIndiceType = 1 . . 5;IntArray = ARRAY [IndiceType] OF integer;VAR Interi: IntArray; Indice: IndiceType;BEGINwriteln (‘Inserisci 5 interi’);FOR Indice := 1 TO 5 DO read (Interi[Indice] : 6);readln;FOR Indice := 5 DOWNTO 1 DO write (Interi[Indice] : 6);writeln (‘I numeri in ordine inverso sono’);writeln;END.

Page 34: Operatori di espressione di controllo (booleani) AND (operatore binario) OR (operatore binario) NOT (operatore unario) (IN) (operatore binario)

Risultato dell’Esempio 2

5 10 54 1 32

[1] [2] [3] [4] [5]

Interi

Se i valori inseriti sono:

5 10 54 1 32

il contenuto dell’array è:

e la stampa finale è:

32 1 54 10 5

Page 35: Operatori di espressione di controllo (booleani) AND (operatore binario) OR (operatore binario) NOT (operatore unario) (IN) (operatore binario)

Esempio 3

Assegnato un Array contenente un serie di valori numerici si vuole che tali valori siano riscritti nell’Array in ordine inverso

Se il contenuto iniziale dell’array è

50 40 30 20 10

il contenuto finale deve essere

10 20 30 40 5

Page 36: Operatori di espressione di controllo (booleani) AND (operatore binario) OR (operatore binario) NOT (operatore unario) (IN) (operatore binario)

Esempio 3PROGRAM Arr(input,output);TYPEIndiceType = 1..5;IntArray = ARRAY [IndiceType] OF integer;VAR Interi: IntArray; Indice: IndiceType;PROCEDURE Inverti (VAR Inter: IntArray);VAR Ind: Integer; Invert, Temp: integer;BEGINInvert := 6;FOR Ind := 1 TO Invert DIV 2 DO BEGIN Temp:=Inter[Invert - Ind]; Inter[Invert - Ind]:= Inter[Ind]; Inter[Ind]:=Temp; ENDEND;

BEGINInteri [1]:=50; Interi [2]:=40; Interi [3]:=30;Interi [4]:=20; Interi [5]:=10;writeln ('I numeri in ordine diretto sono');FOR Indice := 1 TO 5 DO write (Interi[Indice]: 5);writeln;Inverti(Interi);writeln ('I numeri in ordine inverso sono');FOR Indice := 1 TO 5 DO write (Interi[Indice]: 5);writeln;readlnEND.

Page 37: Operatori di espressione di controllo (booleani) AND (operatore binario) OR (operatore binario) NOT (operatore unario) (IN) (operatore binario)

Risultato dell’Esempio 3

10 20 30 40 50

[1] [2] [3] [4] [5]Interi

I valori inseriti sono:

50 40 30 20 10 il contenuto iniziale dell’array è:

e la stampa finale è: 10 20 30 40 50

50 40 30 20 10

[1] [2] [3] [4] [5]Interi

dopo l’esecuzione della procedura diventa:

Page 38: Operatori di espressione di controllo (booleani) AND (operatore binario) OR (operatore binario) NOT (operatore unario) (IN) (operatore binario)

Nota

Le variabili strutturate possono essere parametri di procedure così come le variabili predefinite. Ciò significa che possono essere passate per valore o per variabile.

Page 39: Operatori di espressione di controllo (booleani) AND (operatore binario) OR (operatore binario) NOT (operatore unario) (IN) (operatore binario)

ESERCIZIO

Dato un Array di N interi eliminare da esso i numeri dispari sostituendoli con il primo pari che li segue. Si ottiene così una Array di K interi con K N

Es.A[1 2 4 5 7 9 8 2] -> A[2 4 8 2 ]


Top Related