Algebra Booleana ed Espressioni Booleane

Transcript

Algebra Booleana ed Espressioni Booleane
Algebra Booleana ed Espressioni Booleane
Che cosa è un’Algebra?
Dato un insieme E di elementi (qualsiasi, non necessariamente numerico) ed una o più operazioni definite sugli
elementi appartenenti a tale insieme si definisce come Algebra l’insieme formato da (E, op1, op2, …, opn), dove
per operazione definita su un insieme si intende che l’operazione ha come sempre come risultato un valore che
appartiene all’insieme stesso. Ad esempio, se consideriamo l’insieme N dei numeri interi positivi, la coppia
(N, +) è una algebra, mentre non lo è la coppia (N,-). Nel caso di (N, +) l’operazione somma applicata a due
numeri interi positivi (o numeri naturali) restituisce sempre un numero intero e positivo (naturale), mentre se
consideriamo (N,-) l’operazione sottrazione non sempre restituisce un valore intero positivo (se il minuendo e
maggiore del sottraendo il risultato non sarà più un numero naturale, ma sarà un numero relativo).
Algebra Booleana
L’algebra booleana è un particolare tipo di algebra definita su un insieme di due soli elementi, che possono
essere rappresentati in modi diversi ma dal significato equivalente. I due valori in questione sono 0 e 1.
Esempi di possibili rappresentazioni dell’insieme:
{0, 1}
{F, T}
{Falso, Vero}
Ecc.
Allo 0 viene associato il significato di Falso e all’1 viene associato il significato di Vero (Vero e Falso vanno
intesi nel senso matematico del termine, non nei termini del linguaggio comune anche se concettualmente
sono la stessa cosa).
Restano da definire le operazioni su questo insieme di valori: le tre principali operazioni sono
AND
OR
NOT
(congiunzione logica o prodotto logico)
(disgiunzione logica o somma logica)
(negazione logica)
Definiamo ora il significato di queste operazioni.
AND logico
L’operazione AND è una operazione binaria (con binaria si intende una operazione che richiede due operandi,
come ad esempio la somma tra numeri naturali).
Dati due valori booleani, l’AND restituisce 1 se e solo se entrambi gli operandi sono 1, altrimenti il risultato è 0.
Dato il numero finito di valori dell’insieme su cui sono definiti questi operatori, è possibile per ciascuno di essi
elencare in forma di tabella tutti i possibili casi che possono verificarsi. Tale tabella prende il nome di tabella di
verità
op1
op2
op1 AND op2
0
0
0
0
1
0
1
0
0
1
1
1
Pag. 1 di 15
Il significato della tabella è evidente: se volessimo calcolare 0 AND 0 o applichiamo la regola o prendiamo la
riga in cui op1 e op2 sono entrambi a 0 ed il risultato sarà dato dal valore riportato nella terza colonna della
riga. Quindi 0 AND 0=0.
Dalla tabella di verità si deduce facilmente la ragione per la quale l’AND viene anche chiamato prodotto logico.
OR logico
L’operazione OR è anch’essa una operazione binaria. Dati due valori booleani, l’OR restituisce 1 se e solo se
almeno uno dei due operandi vale 1, altrimenti il risultato è 0.
Passiamo ad esaminare la tabella di verità corrispondente
op1
0
0
1
1
op2
0
1
0
1
op1 OR op2
0
1
1
1
Quindi se volessimo calcolare 1 OR 0, come nel caso dell’AND, o applichiamo la regola o consideriamo la riga
della tabella in cui op1 è 1 e op2 è 0, da cui si ottiene che il risultato è 1.
NOT logico
L’operazione NOT è una operazione unaria (una operazione unaria è una operazione che richiede un solo
operando). Dato un valore booleano, il NOT restituisce l’altro valore: NOT 0=1 e NOT 1=0. La tabella di verità
corrispondente è
Op
0
1
NOT op
1
0
Espressioni Booleane
Così come per i numeri, è possibile costruire espressioni a partire da lettere e operatori. Ad esempio, nel caso
delle algebre su insiemi numerici, possiamo costruire monomi e polinomi: con il monomio xy intendiamo il
risultato dell’operazione prodotto del valore numerico rappresentato dalla lettera x per il valore numerico
rappresentato dalla lettera y.
Una espressione booleana la si costruisce nello stesso modo:
- Le lettere rappresentano un generico valore booleano
- l’AND viene di solito omesso (come per il segno di prodotto nei monomi)
- L’OR viene indicato con il segno +
- Per il NOT le notazioni sono varie, ad esempio si usa il segno ¬ (¬a significa NOT a)
oppure si mette un segno sopra la lettera o espressione su cui agisce il NOT
( significa NOT a)
Gli operatori logici hanno, come gli operatori numerici, delle regole di precedenza: il Not ha precedenza
massima, di seguito viene l’AND e ultimo l’OR.
Esempio:
Se scriviamo ab+bc, questa espressione booleana la sua corretta interpretazione è (a AND b)OR(b AND c).
N.B. Per alterare le regole di precedenza tra operatori booleani si utilizzano, come nel caso di espressioni
numeriche, le parentesi.
Pag. 2 di 15
Approfondimento
Proprietà e teoremi dell’Algebra di Boole
Proprietà commutativa della somma e del prodotto
Proprietà associativa della somma e del prodotto
Proprietà distributiva del prodotto rispetto alla somma
Proprietà distributiva della somma rispetto al prodotto
Teoremi dell'unione
Teoremi dell'intersezione
Teoremi del complemento
Teoremi dell'idempotenza
Teoremi di De Morgan
Teoremi dell'assorbimento
Le proprietà ed i teoremi valgono (ovviamente) per qualsiasi valore assegnato alle variabili X, Y e Z. Si possono
facilmente dimostrare a partire dalle tabelle di verità.
Pag. 3 di 15
Valutazione di una espressione logica
Una espressione logica si valuta tramite le tabelle di verità degli operatori. Vediamo, tramite un esempio,
quale è la tecnica da utilizzare.
Esempio: si vuole determinare la tabella di verità dell’espressione ab+
Primo passo:
- si determina il numero di variabili non ripetute presenti nell’espressione. In questo caso ho tre
variabili
Secondo passo:
- si costruisce una tabella elencando tutte le possibili combinazioni dei valori che le variabili possono
assumere
In questo caso specifico le variabili sono 3 (a, b e c) e quindi le possibili combinazioni saranno
a
b
c
0
0
0
0
0
1
0
1
0
0
1
1
1
0
0
1
0
1
1
1
0
1
1
1
A partire dai valori che possono assumere la variabili, si cominciano a valutare le espressioni secondo l’ordine
di precedenza degli operatori:
a
0
0
0
0
1
1
1
1
b
0
0
1
1
0
0
1
1
c
0
1
0
1
0
1
0
1
ab
0
0
0
0
0
0
1
1
a
0
0
0
0
1
1
1
1
b
0
0
1
1
0
0
1
1
c
0
1
0
1
0
1
0
1
ab
0
0
0
0
0
0
1
1
Applichiamo le regole
dell’AND per i valori
della prima e seconda
colonna
e quindi
1
0
1
0
1
0
1
0
Applichiamo le regole
del NOT per i valori della
terza colonna
Pag. 4 di 15
A questo punto siamo in grado di determinare, per ogni combinazione dei valori assunti dalle variabili
dell’espressione, il risultato
a
0
0
0
0
1
1
1
1
b
0
0
1
1
0
0
1
1
c
0
1
0
1
0
1
0
1
ab
0
0
0
0
0
0
1
1
1
0
1
0
1
0
1
0
ab+
1
0
1
0
1
0
1
1
Applichiamo le regole
dell’OR per la quarta e
quinta colonna
Data una espressione booleana siamo ora in grado, costruendone la tabella di verità, di conoscere il valore
restituito dall’espressione, dati i valori assegnati alle variabili.
Nell’esempio appena visto, assegnati i valori a=0, b=1 e c=0 il valore restituito dall’espressione ab+ è 0.
Pag. 5 di 15
Espressioni booleane e linguaggio di programmazione VB.NET
Le espressioni booleane sono utilizzate dai linguaggi di programmazione per prendere decisioni. I costrutti di
programmazione in cui vengono utilizzate sono quelli di selezione e iterazione.
Nel linguaggio VB.net il costrutto di selezione è l’IF, che ha la seguente sintassi
IF <condizione> THEN
<comando1>
[ELSE
<comando2>]
ENDIF
Quando si parla di condizione, in molti linguaggi di programmazione, si intende una espressione che restituisce
un valore booleano Vero o Falso (più correttamente True o False, dato che la quasi tutti i linguaggi sono stati
progettati in inglese).
Come è fatta allora una condizione? Partiamo dalle condizioni più semplici, cioè da una costante booleana.
Esempio 1
IF true THEN
<comando1>
ENDIF
……
……
IF true THEN
<comando1>
ELSE
<comando2>
ENDIF
………
………
Senza entrare nel dettaglio del comando IF, è chiaro che, in entrambi i casi considerati, venga eseguito il
comando1 (la valutazione di una costante ha come risultato la costante stessa!)
Esempio 2
pippo=true
…….
…….
IF pippo THEN
<comando1>
Endif
…….
…….
pippo=true
…….
…….
IF pippo THEN
<comando1>
Else
<comando2>
Endif
………
………
La variabile pippo è di tipo booleano, e quindi, quando andiamo a valutare l’espressione che determina la
condizione dell’IF, verrà eseguito il comando1 in quanto pippo è uguale a true (in entrambi gli IF).
Pag. 6 di 15
Vediamo ora il caso di espressioni logiche espresse mediante predicati. I predicati che possono essere utilizzati
per costruire una espressione avente come risultato un valore booleano sono:
=, >=, <= , < > (nell’ordine uguale, maggiore o uguale, minore o uguale, diverso)
Quando si utilizzano questi predicati bisogna che i tipi delle espressioni che si vanno a confrontare siano
compatibili
True=a+2
è una espressione senza senso (confrontiamo un booleano con un numero)
2=5
è una espressione corretta (confrontiamo due numeri)
La valutazione dell’espressione in cui compare uno di questi predicati darà un risultato booleano True o False.
Esempio
a+b > c
varrà True se il valore di a sommato al valore di b è maggiore del valore di c,
altrimenti varrà False
N.B. La valutazione di una espressione booleana NON comporta la modifica di alcuna delle variabili presenti
nell’espressione stessa
Uso degli operatori logici
E’ possibile l’uso degli operatori logici AND, OR , NOT non solo con variabili booleane, ma anche con
espressioni. Vediamo qualche esempio (per ipotesi le variabili tappo e pippo sono booleane, mentre a,b e c
numeriche)
tappo AND pippo
vengono messi in AND i valori logici delle variabili tappo e pippo
(a+b > c) AND pippo
viene messo in AND il valore logico risultante dalla valutazione dell’
espressione a+b>c con il valore logico della variabile pippo
(a+b=c) OR (b=c)
viene messo in OR il valore logico risultante dalla valutazione
dell’espressione a+b=c con il valore logico risultante dalla valutazione
di b=c
Esempio 3
pippo=true
a=2
b=3
IF pippo AND (b=a) THEN
<comando1>
Endif
…….
…….
c=1
b=3
a=-1
IF (a=c)OR b>0 THEN
<comando1>
Else
<comando2>
Endif
………
………
Pag. 7 di 15
Il comando ELSEIF
In VB.net, oltre che nel comando IF…THEN e IF…THEN…ELSE, esiste la possibilità di “concatenare” più IF. Il
comando in questione è strutturato in questo modo
IF <condizione 1> THEN
<comando 1>
ELSEIF <condizione 2> THEN
<comando 2>
ELSEIF <condizione 3> THEN
<comando 3>
….
….
[ELSE
<comando n>]
ENDIF
Bisogna fare attenzione ad usare questo costrutto. Il funzionamento è il seguente: si verificano le condizione
nell’ordine in cui queste sono scritte fino a quando se ne incontra una con valore logico TRUE. A questo punto
viene eseguito il comando corrispondente e si passa all’ENDIF. Questo implica che anche se possono essere
presenti delle altre condizioni logiche vere (successive alla prima che ha valore logico true), queste non
verranno valutate. La parte finale racchiusa tra parentesi quadre è opzionale, cioè può non essere presente.
Esempio
…..
IF a=0 THEN
a=a+1
ELSEIF a=0 OR b=1 THEN
b=b+a
ELSEIF b=1 THEN
c=2
ENDIF
……
……
In questo esempio se il valore di a è 0, verrà eseguita solo l’istruzione
a=a+1 e poi si passerà alla prima istruzione successiva a ENDIF. Si noti che
nel caso esaminato anche la seconda condizione è vera, ma questa non
verrà valutata.
Si verifica la stessa cosa nel caso in cui a sia diversa da zero e b uguale ad
1: il comando eseguito sarà b=b+a e poi si passerà all’istruzione
successiva all’ENDIF.
Osservazione molto importante: NOT(a AND b) non è equivalente a (NOT a) AND (NOT b)
Le espressioni logiche sono utilizzate, oltre che nell’IF, anche nei cicli. Il Vb.NET mette a disposizione, oltre al
FOR, altri quattro tipi di cicli il do while…loop , il do…. loop while , il do until….loop, e il do…loop until.
Pag. 8 di 15
Il ciclo FOR
Il ciclo for viene tipicamente utilizzato quando è noto a priori il numero di volte (o comunque il numero
massimo) di volte che una sequenza di istruzioni deve essere eseguita.
La sua sintassi è
FOR <variabile contatore=valore iniziale>
<istruzione 1>
……
……
<istruzione n>
NEXT [<variabile contatore>]
TO <valore limite> [STEP incremento]
/* Le parti inserite all’interno delle parentesi quadre sono opzionali */
Vediamo un esempio: calcolo della somma dei primi 10 numeri interi
(1+2+3+4+5+6+7+8+9+10)
DIM cont, somma AS INTEGER
somma=0
FOR cont=1 TO 10
somma=somma+cont
NEXT
Significato
cont è la variabile contatore,
e in questo caso viene
inizializzata a 1.
N.B. L’inizializzazione viene
eseguita una volta sola
10 è il valore limite
Incremento della variabile
cont, e poi si torna al FOR
1) la variabile cont viene inizializzata a 1
2) il valore di cont viene confrontato con il valore limite (10 in questo caso)
- se il valore di cont è maggiore di 10 (maggiore del valore limite) si esce dal FOR, cioè si passa ad
eseguire l’istruzione successiva al NEXT
- se il valore di cont è invece minore o uguale a 10, si vanno ad eseguire le istruzioni interne del FOR
(corpo del FOR). Si esegue quindi il passo 3)
3) esecuzione delle istruzioni del FOR
4) Quando si esegue l’istruzione NEXT, la variabile contatore viene incrementata di una unità (nel caso in
cui non si sia specificato alcuno STEP) e poi si va ad eseguire di nuovo il passo 2).
Osservazioni
a) E’ possibile definire un incremento diverso da 1. Nella sintassi del FOR, infatti si può osservare che vi è
una parte opzionale (STEP).
Se specificato, lo STEP (passo) definisce l’incremento della variabile contatore da eseguire ogni volta
che si esegue l’istruzione NEXT
Esempio: consideriamo un problema simile al precedente: vogliamo calcolare la somma dei valori
interi pari compresi tra 1 e 10 (2+4+6+8+10)
Pag. 9 di 15
Possiamo anche questa volta usare il FOR, definendo un opportuno STEP
DIM cont, somma AS INTEGER
somma=0
FOR cont=2 TO 10 STEP 2
somma=somma+cont
NEXT
b) Il valore iniziale, il valore limite e lo STEP non devono essere necessariamente delle costanti, ma
possono anche essere delle espressioni
c) Le istruzioni interne al ciclo FOR, dette corpo del FOR, possono anche non essere mai eseguite. Questo
accadrà quando il valore limite specificato è minore del valore iniziale assegnato alla variabile
contatore e non è specificato lo STEP
Esempio:
FOR cont=15 TO 10
…
…
NEXT
In questo caso il corpo del FOR
non verrà eseguito, perché 15 è
maggiore di 10
Nel caso in cui si specifica un valore di STEP il discorso precedente non è, in generale, più valido.
Esempio
In questo caso il corpo del FOR
FOR cont=15 TO 10 STEP -1
viene eseguito, in quanto lo
…
STEP negativo significa che il
…
FOR terminerà quando il valore
NEXT
di CONT sarà minore del valore
limite
I cicli DO WHILE… LOOP e DO LOOP … WHILE
Il cicli WHILE eseguono una sequenza di istruzioni in base alla verifica di una condizione logica, non
necessariamente numerica (e quindi non necessariamente si dovrà testare un contatore). Vediamo nel
dettaglio le due istruzioni
DO WHILE…LOOP
La sintassi del ciclo in questione è la seguente
DO WHILE <condizione logica>
<istruzione 1>
……
……
<istruzione n>
LOOP
Pag. 10 di 15
Le istruzioni all’interno del DO WHILE LOOP vengono eseguite finché la condizione logica è vera. Quando la
condizione logica diventa falsa, si esce dal ciclo. In dettaglio: quando si entra nel DO WHILE si testa la
condizione; se il risultato booleano è TRUE allora si eseguono le istruzioni del DO WHILE (corpo del WHILE).
L’istruzione LOOP forza il programma a tornare all’istruzione DO WHILE, e quindi avverrà nuovamente il test
per verificare se la condizione è TRUE o FALSE. Nel momento in cui la condizione diventa FALSE il ciclo
terminerà e si passerà ad eseguire l’istruzione successiva alla LOOP.
Esempio
A=1
B=10
DO WHILE A<B
A=A+5
LOOP
Condizione logica
Corpo del WHILE
Differenze con il FOR
- La condizione è più generale, non legata all’uso di contatori
- L’istruzione LOOP non esegue alcunché (a differenza della NEXT), ma forza solamente il
programma a tornare ad eseguire di nuovo il test del WHILE
- Nel caso in cui le istruzioni del corpo del WHILE non modifichino in alcun modo l’espressione del
test, è possibile che il ciclo non termini e di conseguenza il programma si blocca in ciclo infinito.
Analogie con il FOR
- Il ciclo DO WHILE, così come il ciclo FOR, potrà non essere mai eseguito. Questo accade nel caso in
cui la condizione logica iniziale è falsa
E’ sempre possibile, dato un comando FOR, costruire un comando WHILE equivalente. Non è vero, in generale, il
contrario.
Esempio: Somma dei primi 10 interi naturali (1+2+3+4+…+10)
somma=0
somma=0
FOR cont=1 TO 10
cont=1
DO WHILE cont<11
somma=somma+cont
NEXT
somma=somma+cont
…
cont=cont+1
LOOP
…
…
…
DO LOOP…WHILE
Il comando DO LOOP…WHILE è simile al comando precedente. L’unica differenza consiste nel fatto che mentre
nel DO WHILE…LOOP il test della condizione associata al WHILE viene eseguito all’inizio del ciclo, in questo
caso le istruzioni del ciclo saranno eseguite sempre almeno una volta. Inoltre, come nel comando precedente,
il ciclo viene eseguito fino a quando la condizione espressa nel WHILE è vera; non appena il test dà valore
falso, si esce dal ciclo e si passa ad eseguire l’istruzione successiva.
Pag. 11 di 15
La sintassi del ciclo in questione è la seguente
DO LOOP
<istruzione 1>
……
……
<istruzione n>
WHILE <condizione logica>
Esempio: Somma dei primi 10 interi naturali (1+2+3+4+…+10) – Confronto tra LOOP WHILE e WHILE LOOP
somma=0
somma=0
cont=1
cont=1
DO LOOP
DO WHILE cont<11
somma=somma+cont
somma=somma+cont
cont=cont+1
cont=cont+1
WHILE cont<11
LOOP
…
…
…
…
In conclusione la scelta di utilizzare il DO LOOP… WHILE o il DO WHILE… LOOP è indifferente solo nel caso in cui
si abbia la certezza che il ciclo da codificare venga effettuato almeno una volta. Per quanto riguarda
l’equivalenza con il ciclo FOR vale quanto detto in precedenza per il ciclo DO WHILE…LOOP, con la differenza
che nel caso il ciclo non debba essere mai eseguito bisognerà utilizzare necessariamente un IF esterno da cui
far dipendere l’esecuzione del ciclo.
In entrambi i comandi, per forzare l’uscita dal ciclo, è possibile utilizzare l’istruzione EXIT DO.
I cicli DO UNTIL… LOOP e DO LOOP … UNTIL
Il cicli UNTIL, così come i cicli WHILE, eseguono una sequenza di istruzioni in base alla verifica di una condizione
logica, non necessariamente numerica. Esaminiamone ora la sintassi.
DO UNTIL…LOOP
La sintassi del ciclo in questione è la seguente
DO UNTIL <condizione logica>
<istruzione 1>
……
……
<istruzione n>
LOOP
Le istruzioni all’interno del ciclo DO UNTIL…LOOP vengono eseguite fintantoché la condizione logica è falsa.
Quando la condizione espressa diventa vera si uscirà dal ciclo. Inoltre, come nel caso del WHILE, non è
necessario effettuare test con contatore e sarà sempre possibile scrivere il codice equivalente per un FOR. E’
Pag. 12 di 15
anche possibile, come per il FOR, che i comandi del ciclo non vengano mai eseguiti, nel caso in cui la
condizione d testare sia vera.
Esempio: Somma dei primi 10 interi naturali (1+2+3+4+…+10) Confronto tra implementazioni (FOR, DO
WHILE e DO UNTIL)
somma=0
FOR cont=1 TO 10
somma=somma+cont
NEXT
…
…
somma=0
cont=1
DO WHILE cont<11
somma=somma+cont
cont=cont+1
LOOP
…
…
somma=0
cont=1
DO UNTIL cont>10
somma=somma+cont
cont=cont+1
LOOP
…
…
Osservazione: Così come nei cicli WHILE la condizione da verificare non è vincolata al test di un contatore.
DO LOOP…UNTIL
Il comando DO LOOP…UNTIL è simile al comando precedente, con l’unica differenza che mentre nel comando
precedente il test della condizione associata all’ UNTIL veniva eseguito all’inizio del ciclo, le istruzioni del ciclo
saranno eseguite almeno una volta. Inoltre, come nel comando precedente, il ciclo viene eseguito fino a
quando la condizione espressa nell’UNTIL diventa vera.
La sintassi del ciclo in questione è la seguente
DO
<istruzione 1>
……
……
<istruzione n>
LOOP UNTIL <condizione logica>
Esempio: Somma dei primi 10 interi naturali (1+2+3+4+…+10). Confronto tra implementazione mediante
DO …LOOP UNTIL e DO UNTIL…LOOP
somma=0
cont=1
DO
somma=somma+cont
cont=cont+1
LOOP UNTIL cont > 10
…
…
somma=0
cont=1
DO UNTIL cont>10
somma=somma+cont
cont=cont+1
LOOP
…
…
Osservazione: anche per i cicli UNTIL vale quanto detto per i cicli espressi con il WHILE: la scelta di adottare
uno dei due è indifferente solo nel caso in cui si è certi che l’iterazione viene eseguita almeno un volta.
Pag. 13 di 15
Vediamo ora in una unica tabella raissuntiva tutte le codifiche equivalenti dello stesso esempio proposto:
somma dei primi 10 numeri interi (1+2+3+4+…+10)
somma=0
FOR cont=1 TO 10
somma=somma+cont
NEXT
…
…
somma=0
cont=1
DO WHILE cont<11
somma=somma+cont
cont=cont+1
LOOP
…
…
somma=0
cont=1
DO LOOP
somma=somma+cont
cont=cont+1
WHILE cont<11
…
…
somma=0
cont=1
DO UNTIL cont>10
somma=somma+cont
cont=cont+1
LOOP
…
…
somma=0
cont=1
DO LOOP
somma=somma+cont
cont=cont+1
UNTIL cont>10
…
…
Conclusioni
Esiste anche un altro ciclo in Vb.net mantenuto per compatibilità con VB 6, che è equivalente al do while..loop
e che ha una sintassi leggermente differente ma il cui comportamento è pressoché lo stesso.
E’ inoltre molto importante sottolineare che non ci sono restrizioni alla tipologia di comandi che possono far
parte del corpo di un ciclo, e quindi potremo definire cicli annidati (l’uno dentro l’altro, non necessariamente
dello stesso tipo). Questa necessità è più comune di quanto si possa credere (si pensi ad esempio agli
ordinamenti in cui si hanno due cicli annidati).
Pag. 14 di 15
Tabella Riassuntiva per i cicli vb.net
Condizione
Ciclo eseguito
almeno una volta
Uscita dal ciclo
Possibilità di avere
un ciclo infinito
Istruzione per
uscita forzata dal
ciclo
FOR
DO WHILE… LOOP
DO LOOP… WHILE
DO UNTIL … LOOP
DO LOOP … UNTIL
Test Contatore
Espr. logica
qualsiasi
Espr. logica
qualsiasi
Espr. logica
qualsiasi
Espr. logica
qualsiasi
No
No
Si
No
Si
Contatore > Limite
Contatore < Limite
(in funzione dello
STEP)
Espr logica=FALSE
Espr logica=FALSE
Espr logica=TRUE
Espr logica=TRUE
No (*)
Si
Si
Si
Si
EXIT FOR
EXIT DO
EXIT DO
EXIT DO
EXIT DO
(*) In effetti è possibile che anche il ciclo FOR sia infinito, se nelle istruzioni del ciclo si effettuano modifiche alla variabile contatore.
Pag. 15 di 15