Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 1 Algebra Booleana Come per...

39
Corso di Informatica - Logica & programmazione - Raffael e Grande - 2005 1 Algebra Booleana Come per la rappresentazione dell’informazione e la sua memorizzazione anche per la logica di elaborazione i computer digitali utilizzano circuiti di tipo ON/OFF con due stati elettrici. È quindi necessario disporre di un sistema di calcolo che operi su variabili che possono assumere due soli valori. Un tale sistema era stato creato nel XIX secolo dal matematico inglese George Boole ed è noto come algebra booleana. Le variabili booleane possono assumere i valori logici 0 e 1 oppure vero e falso (true e false)

Transcript of Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 1 Algebra Booleana Come per...

Page 1: Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 1 Algebra Booleana Come per la rappresentazione dellinformazione e la sua memorizzazione.

Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 1

Algebra Booleana

Come per la rappresentazione dell’informazione e la sua memorizzazione anche per la logica di elaborazione i computer digitali utilizzano circuiti di tipo ON/OFF con due stati elettrici. È quindi necessario disporre di un sistema di calcolo che operi su variabili che possono assumere due soli valori.

Un tale sistema era stato creato nel XIX secolo dal matematico inglese George Boole ed è noto come algebra booleana.

Le variabili booleane possono assumere i valori logici 0 e 1 oppure vero e falso (true e false)

Page 2: Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 1 Algebra Booleana Come per la rappresentazione dellinformazione e la sua memorizzazione.

Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 2

Funzioni booleaneCome in qualsiasi algebra, anche in quella booleana si possono definire delle

funzioni f(a,b,c,…) che operano sulle variabili e possono quindi assumere due soli valori: 0 e 1 oppure vero e falso (true e false).

Per definire tali funzioni si possono usare delle tabelle dette tavole di verità

Esempio:

a b c f(a,b,c)0 0 0 0

0 0 1 0

0 1 0 1

0 1 1 0

1 0 0 0

1 0 1 1

1 1 0 1

1 1 1 1

Nella tavola di verità, per ogni possibile combinazione delle variabili si riporta il valore assunto dalla funzione. Nel caso dell’esempio con tre variabili abbiamo 23=8 combinazioni possibili quindi la tavola ha 8 righe. Al posto dei simboli 0 e 1 avremmo potuto usare Vero e Falso

Page 3: Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 1 Algebra Booleana Come per la rappresentazione dellinformazione e la sua memorizzazione.

Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 3

Operatori booleani

Come in ogni algebra, anche nell’algebra booleana, sono definite alcune operazioni eseguibili sulle variabili.

Per costruire una funzione booleana si utilizzano gli operatori booleani o logici che stabiliscono le relazioni tra le variabili della funzione.

Nell’algebra di Boole esistono tre operatori fondamentali:

• NOT negazione o complemento

• OR disgiunzione o somma logica

• AND congiunzione o prodotto logico

E alcuni operatori derivati tra cui XOR (da eXclusive OR disgiunzione esclusiva)

Page 4: Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 1 Algebra Booleana Come per la rappresentazione dellinformazione e la sua memorizzazione.

Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 4

Operatore NOT

NOT è un operatore unario, cioè opera su una sola variabile invertendone il valore secondo la seguente tavola di verità:

a NOT(a)0 1

1 0

L’operazione di negazione si indica anche con ā

Page 5: Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 1 Algebra Booleana Come per la rappresentazione dellinformazione e la sua memorizzazione.

Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 5

Operatore OR

OR è un operatore binario, cioè opera tra due variabili eseguendo la somma logica secondo la seguente tavola di verità:

a b a OR b0 0 0

0 1 1

1 0 1

1 1 1

Il risultato è 1 se almeno una delle variabili è 1

Oppure

Il risultato è 0 se e solo se entrambe le variabili sono 0

L’operazione di somma logica si indica anche con a + b

Page 6: Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 1 Algebra Booleana Come per la rappresentazione dellinformazione e la sua memorizzazione.

Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 6

Operatore AND

AND è un operatore binario, cioè opera tra due variabili eseguendo il prodotto logico secondo la seguente tavola di verità:

a b a AND b0 0 0

0 1 0

1 0 0

1 1 1

Il risultato è 1 se e solo se tutte le variabili hanno il valore 1

Oppure

Il risultato è 0 se almeno una delle variabili è 0

L’operazione di negazione si indica anche con a . b

Page 7: Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 1 Algebra Booleana Come per la rappresentazione dellinformazione e la sua memorizzazione.

Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 7

Esempi di funzioni booleane (1)

Con i tre operatori visti si può realizzare qualsiasi funzione booleana ad esempio: f(a,b,c) = a AND b OR NOT c che ha la seguente tavola di verità costituita da 23=8 righe, se avessimo una funzione di 4 variabili avremmo 24 = 16 righe, con 5 variabili 25=32 righe ecc.

a b c f(a,b,c)0 0 0 1

0 0 1 0

0 1 0 1

0 1 1 0

1 0 0 1

1 0 1 0

1 1 0 1

1 1 1 1

Tra gli operatori logici esiste la seguente scala di precedenza:

NOT, AND, OR

Quindi nella funzione a fianco si

esegue prima il NOT c quindi si

esegue l’AND tra a e b e infine si esegue l’OR tra i due risultati .

Page 8: Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 1 Algebra Booleana Come per la rappresentazione dellinformazione e la sua memorizzazione.

Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 8

Esempi di funzioni booleane (2)

L’ordine di precedenza visto può essere cambiato con l’uso delle parentesi: f(a,b,c) = a AND (b OR NOT c), in questo caso si risolve prima la parentesi quindi si esegue NOT c, quindi si fa l’OR con b e infine si

esegue l’AND tra a e il risultato della parentesi; la tavola di verità diventa:

a b c f(a,b,c)0 0 0 0

0 0 1 0

0 1 0 0

0 1 1 0

1 0 0 1

1 0 1 0

1 1 0 1

1 1 1 1

Page 9: Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 1 Algebra Booleana Come per la rappresentazione dellinformazione e la sua memorizzazione.

Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 9

Esempi di funzioni booleane (3)

Consideriamo la seguente funzione: f(a,b,c) = NOT(a OR b) OR c la tavola di verità si ricava in questo modo: si risolve la parentesi facendo l’OR tra a e b, quindi si applica il NOT al risultato e infine si esegue l’OR con c

a b c f(a,b,c)0 0 0 1

0 0 1 1

0 1 0 0

0 1 1 1

1 0 0 0

1 0 1 1

1 1 0 0

1 1 1 1

a b c f(a,b,c)0 0 0 1

0 0 1 1

0 1 0 0

0 1 1 1

1 0 0 0

1 0 1 1

1 1 0 0

1 1 1 1

Page 10: Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 1 Algebra Booleana Come per la rappresentazione dellinformazione e la sua memorizzazione.

Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 10

Operatore XOR

XOR è un operatore binario, cioè opera tra due variabili eseguendo l’operazione di OR esclusivo secondo la seguente tavola di verità:

a b a XOR b0 0 0

0 1 1

1 0 1

1 1 0

Il risultato è 1 se le variabili hanno valore diverso

Oppure

Il risultato è 0 se le variabili hanno lo stesso valore

L’operazione di OR esclusivo si indica anche con a (+) b

Page 11: Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 1 Algebra Booleana Come per la rappresentazione dellinformazione e la sua memorizzazione.

Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 11

L’algebra di Boole è alla base

• dei circuiti logici della CPU (Hardware)

• delle procedure logiche secondo le quali avvengono le elaborazioni (Software)

Le basi dell’hardware e del software

Page 12: Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 1 Algebra Booleana Come per la rappresentazione dellinformazione e la sua memorizzazione.

Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 12

Un circuito logico (o rete logica) è costituito da porte logiche elementari che realizzano le tre operazioni dell’algebra di Boole

• La porta NOT

• la porta OR

• La porta AND

• la porta XOR

Logica e hardware

Page 13: Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 1 Algebra Booleana Come per la rappresentazione dellinformazione e la sua memorizzazione.

Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 13

Logica e hardware (un esempio)

Il semi-sommatoreNella somma di due bit si verificano i seguenti casi:

Logica e hardware

A B Somma Riporto

0 0 0 0

0 1 1 0

1 0 1 0

1 1 0 1

Si vede che la somma è l’OR esclusivo (XOR) dei due ingressi, mentre il riporto è il prodotto logico (AND) dei due ingressi.

A

B

Somma

Riporto

Quindi un semi-sommatore può essere realizzato dalla rete logica:

Page 14: Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 1 Algebra Booleana Come per la rappresentazione dellinformazione e la sua memorizzazione.

Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 14

Nella preparazione del software si ricorre spesso all’uso di operatori logici quando il programma deve decidere le operazioni da eseguire in base al verificarsi o meno di un certo evento o combinazione di eventi (vero/falso).

Esempio 1:

SE lo studente ha sostenuto tutti gli esami AND (e) ha pagato le tasse ALLORA può accedere all’esame di laurea

ALTRIMENTI deve regolarizzare la sua situazione

Esempio 2:

Trova nell’archivio i libri che hanno come autore (Pirandello OR (o) Verga) AND (e) un prezzo NOT (non) superiore a 20 euro

Esempio 3:

Trova nel Web i documenti in cui siano presenti i termini (Olimpiadi OR (o) Giochi) AND (e) invernali

Logica e software

Page 15: Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 1 Algebra Booleana Come per la rappresentazione dellinformazione e la sua memorizzazione.

Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 15

Sviluppo e produzione del software

Problema AlgoritmoProgramma sorgente

scritto in un

linguaggio di programmazione

Programma eseguibile linguaggio macchina

(binario)

Test

Analisi Codifica

Traduzione: (compilatore o

interprete)Funziona?si

no

FineErrori

formali?

no

si

Page 16: Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 1 Algebra Booleana Come per la rappresentazione dellinformazione e la sua memorizzazione.

Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 16

Linguaggi di programmazione

Hardware

Linguaggio macchina

Linguaggio assembler

Linguaggi di alto livello

Page 17: Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 1 Algebra Booleana Come per la rappresentazione dellinformazione e la sua memorizzazione.

Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 17

Linguaggio macchina

• Unico linguaggio effettivamente comprensibile al processore (CPU)

• Le istruzioni sono costituite da sequenze di bit: ad esempio un byte per il Codice Operativo e altri byte per gli Operandi dell’istruzione:

00010101 1100110111011011

• Legato strettamente al particolare processore – ogni CPU ha il suo set di istruzioni

C.O. della somma

1° operando 2° operando

Somma di due numeri

Page 18: Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 1 Algebra Booleana Come per la rappresentazione dellinformazione e la sua memorizzazione.

Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 18

Linguaggio assembler

• Deve essere tradotto da un assemblatore;

• Le istruzioni sono costituite da codici mnemonici e operandi espressi in vari modi (immediati, a registro, tramite indirizzamenti diretti o indiretti): es. ADD A,B (somma il contenuto dei registri A e B e metti il risultato in A)

• È molto efficiente in termini di velocità di esecuzione in quanto molto vicino all’hardware

• È legato al processore

• Utilizzato per programmare procedure di basso livello (vicine all’hardware) come ad esempio i driver dei dispositivi

Page 19: Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 1 Algebra Booleana Come per la rappresentazione dellinformazione e la sua memorizzazione.

Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 19

Linguaggi di alto livello (1)

• Fortran - Cobol anni 50

• Algol60 - PL1 - BASIC anni 60

• Pascal - C anni 70

• C++ anni 80

• Java anni 90

Page 20: Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 1 Algebra Booleana Come per la rappresentazione dellinformazione e la sua memorizzazione.

Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 20

Linguaggi di alto livello (2)• Necessitano di programmi traduttori per ottenere codici eseguibili dal

processore:

• Compilatori programmi che traducono tutto il codice sorgente in un codice macchina eseguendo controlli sintattici. Producono un programma eseguibile indipendente dal sorgente e molto efficiente. (Fortran, Cobol, Pascal, C, C++)

• Interpreti programmi che traducono ed eseguono il codice sorgente riga per riga senza produrre un codice eseguibile. Ogni esecuzione richiede la presenza e la traduzione del sorgente e ciò ne limita l’efficienza. (BASIC)

• Virtual Machine sistema che combina i due precedenti: il codice sorgente viene tradotto da un compilatore in un codice intermedio (bytecode) il quale poi è interpretato dalla V.M. Ciò rende i programmi portabili su piattaforme diverse (ognuna dispone della sua V.M.) (JAVA)

Page 21: Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 1 Algebra Booleana Come per la rappresentazione dellinformazione e la sua memorizzazione.

Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 21

Algoritmo (definizione)

Un algoritmo è una sequenza finita e ordinata di operazioni che, eseguite su opportuni dati, portano alla soluzione di un problema in un tempo finito.

Un algoritmo è quindi costituito da :

Operazioni + Dati

Page 22: Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 1 Algebra Booleana Come per la rappresentazione dellinformazione e la sua memorizzazione.

Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 22

Algoritmo (proprietà)

Un algoritmo deve essere:

• Eseguibile costituito da operazioni che l’esecutore può fare

• Non ambiguo ogni operazione deve essere univocamente interpretabile dall’esecutore

• Finito il numero totale delle operazioni da eseguire deve essere finito ed eseguibile in un tempo finito

• Deterministico la sequenza delle operazioni è esattamente determinata e non dipende da elementi aleatori

• Completo deve prevedere tutte le situazioni che si possono presentare nella risoluzione del problema

Page 23: Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 1 Algebra Booleana Come per la rappresentazione dellinformazione e la sua memorizzazione.

Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 23

Algoritmo & Programma

Un algoritmo può essere codificato in un linguaggio di programmazione per dar vita a un programma

Un programma è una sequenza ordinata di istruzioni che dicono a un esecutore (computer) come operare sui dati per ottenere i risultati

Esecutore

Programma

Dati di ingresso

Risultati

Page 24: Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 1 Algebra Booleana Come per la rappresentazione dellinformazione e la sua memorizzazione.

Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 24

Dati - Variabili

Una variabile è un dato il cui valore può essere modificato durante l’esecuzione del programma

Una variabile è caratterizzata da un nome, da un tipo e da un contenuto

Esempi:

n1 numero intero 15

n2 numero reale 12,34

s1 stringa di caratteri pippo

log booleano true

Nome Tipo Contenuto o valore

Page 25: Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 1 Algebra Booleana Come per la rappresentazione dellinformazione e la sua memorizzazione.

Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 25

Dati - Costanti

Una costante è una rappresentazione simbolica di un dato che non deve cambiare durante l’esecuzione del programma:

Costante numerica 23

Costante stringa “pippo”

Le costanti stringa si scrivono tra virgolette per distinguerle dai nomi di variabile

Page 26: Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 1 Algebra Booleana Come per la rappresentazione dellinformazione e la sua memorizzazione.

Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 26

Dati - Espressioni

Un’espressione è un insieme di dati, variabili e costanti, operatori e parentesi a cui corrisponde un risultato:

Espressione risultato

(n1+n2)/2 somma dei contenuti delle variabili n1 e n2 diviso 2

3 + 4 * 12 51 (si applicano le regole di precedenza dell’algebra)

“conto” + “corrente” “contocorrente” (l’operatore + tra stringhe ha significato di concatenazione)

Page 27: Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 1 Algebra Booleana Come per la rappresentazione dellinformazione e la sua memorizzazione.

Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 27

Linguaggio di progetto e Pseudocodifica

Per introdurre i concetti di base della programmazione usiamo un linguaggio di progetto che ci consente di eseguire una pseudocodifica.

Il linguaggio di progetto è uno strumento linguistico (vocabolario, sintassi e semantica) per rappresentare algoritmi.

Il passo successivo è la traduzione in un vero e proprio linguaggio di programmazione cioè la codifica

Page 28: Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 1 Algebra Booleana Come per la rappresentazione dellinformazione e la sua memorizzazione.

Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 28

Un esempio di linguaggio di progetto

• Il programma è costituito da due parti:

la parte dichiarativa - in cui si definiscono le variabili utilizzate nel programma e inizia

con la parola var

la parte esecutiva - in cui si definiscono le operazioni da eseguire chiusa tra le parole inizio e fine

• Un blocco di istruzioni è un insieme di istruzioni chiuso tra le parole

inizio e fine

• Ogni istruzione è terminata da un “;”

Definiamo un linguaggio di progetto molto semplificato con un minimo di regole di sintassi:

Page 29: Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 1 Algebra Booleana Come per la rappresentazione dellinformazione e la sua memorizzazione.

Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 29

Istruzioni di Ingresso e Uscita

leggi(Variabile): prende il dato presente in ingresso e lo mette nella variabile

scrivi(Variabile): manda il contenuto della variabile in uscita;

Un’operazione di ingresso (input) è normalmente indicata come una lettura di un’informazione da parte dell’esecutore

Un’operazione di uscita (output) è normalmente indicata come una scrittura di un’informazione da parte dell’esecutore

Page 30: Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 1 Algebra Booleana Come per la rappresentazione dellinformazione e la sua memorizzazione.

Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 30

Ingresso e Uscita - Esempio

var

cognome, nome: stringa;

anni: numero intero;

inizio

leggi (cognome);

leggi (nome):

leggi (anni);

scrivi (nome, cognome, anni);

fine

Parte dichiarativa

Parte esecutiva

Page 31: Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 1 Algebra Booleana Come per la rappresentazione dellinformazione e la sua memorizzazione.

Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 31

Istruzione di Assegnamento

L’istruzione di assegnamento dà un valore a una variabile:

Variabile = espressione

Esempi:

n1 = 1;

n2 = n1 + 2;

somma = n1 + n2;

media = (n1 + n2 + n3 + n4 + n5)/5;

Page 32: Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 1 Algebra Booleana Come per la rappresentazione dellinformazione e la sua memorizzazione.

Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 32

Istruzione Condizionale

L’istruzione condizionale decide quali operazioni eseguire in base al verificarsi o meno di una condizione:

se (condizione) allora

blocco-istruzioni 1

altrimenti

blocco-istruzioni 2

La condizione è un’espressione booleana, se è vera viene eseguito il blocco di istruzioni 1, altrimenti (se è falsa) viene eseguito il blocco di istruzioni 2

Page 33: Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 1 Algebra Booleana Come per la rappresentazione dellinformazione e la sua memorizzazione.

Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 33

Istruzione Condizionale - Esempio

var

x, y: numero intero;

………….

inizio

leggi x;

leggi y;

se (x>=y) allora scrivi (x)

altrimenti scrivi (y);

……….

fine

Page 34: Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 1 Algebra Booleana Come per la rappresentazione dellinformazione e la sua memorizzazione.

Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 34

Istruzioni di Iterazione

Un’iterazione è la ripetizione ciclica di un blocco di istruzioni per un certo numero di volte.

Il numero di cicli da effettuare è determinato da una condizione di uscita dall’iterazione.

La posizione della condizione di uscita classifica le iterazioni in due tipi:

• Iterazione a condizione iniziale

• Iterazione a condizione finale

Page 35: Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 1 Algebra Booleana Come per la rappresentazione dellinformazione e la sua memorizzazione.

Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 35

Iterazione a condizione iniziale

mentre (condizione) esegui

blocco-istruzioni

Viene esaminata, all’inizio di ogni ciclo, la condizione di uscita e, se questa è vera, viene eseguito il blocco di istruzioni; quando la condizione risulta falsa si esce dall’iterazione.

In questo modo il blocco potrebbe anche non essere eseguito per niente, nel caso in cui la condizione di uscita sia subito falsa

Page 36: Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 1 Algebra Booleana Come per la rappresentazione dellinformazione e la sua memorizzazione.

Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 36

Iterazione a condizione iniziale - Esempio var c, max: numero intero;

…………….

inizio

leggi (max):

c = 1;

mentre (c<=max) esegui

inizio

scrivi (c);

c = c +1;

fine

……….

fine

Vengono scritti i numeri naturali da 1 a max.

Nel caso in cui nella variabile max venga letto un valore nullo o negativo l’iterazione non avviene neanche una volta e non viene scritto nessun numero.

Page 37: Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 1 Algebra Booleana Come per la rappresentazione dellinformazione e la sua memorizzazione.

Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 37

Iterazione a condizione finale

esegui

blocco-istruzioni

finché (condizione)

Viene esaminata, alla fine di ogni ciclo, la condizione di uscita e, se questa è vera, viene rieseguito il blocco di istruzioni; quando la condizione risulta falsa si esce dall’iterazione.

In questo modo il blocco viene eseguito almeno la prima volta.

Page 38: Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 1 Algebra Booleana Come per la rappresentazione dellinformazione e la sua memorizzazione.

Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 38

var

c, max: numero intero;

………………

inizio

…………….

leggi (max);

c = 1;

esegui

scrivi (c);

c = c +1;

finché (c<=max);

……….

fine

Vengono ancora scritti i numeri naturali da 1 a max.

Nel caso in cui nella variabile max venga letto un valore nullo o negativo l’iterazione avviene una volta e viene scritto il numero 1.

Iterazione a condizione finale - Esempio

Page 39: Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 1 Algebra Booleana Come per la rappresentazione dellinformazione e la sua memorizzazione.

Corso di Informatica - Logica & programmazione - Raffaele Grande - 2005 39

Esempio di programma

Si vuole un programma che riceva in ingresso una serie di 10 valori e li controlli mandando in uscita solo quelli che rientrano in un certo range (ad es. 10 – 50), mentre per gli altri emette il messaggio “fuori range”.

var

valore, cont: numero intero;

inizio

cont = 1;

mentre (cont <= 10)

esegui

inizio

leggi(valore);

se (valore >= 10) AND (valore <= 50)

allora scrivi (valore)

altrimenti scrivi(“fuori range”);

cont = cont + 1;

fine;

scrivi (“fine valori”);

fine.

Una possibile soluzione contiene una iterazione a condizione iniziale per leggere i dieci valori e, al suo interno, una struttura condizionale per controllare il valore ricevuto.

Notare l’uso dell’operatore logico AND nella condizione