Sei sulla pagina 1di 22

M. Sileo - F.

Rossi
Liceo Scientifico A. Roiti Ferrara
Informatica per il Liceo Scientifico delle Scienze Applicate
Classe seconda

M. Sileo - F. Rossi
Liceo Scientifico A. Roiti Ferrara
Informatica per il Liceo Scientifico delle Scienze Applicate
Classe seconda

Logica formale
Proposizioni vero-funzionali
Gli oggetti della logica sono le proposizioni vero-funzionali, cio le proposizioni che
possono assumere solo il valore VERO (a cui per convenzione si associa il valore 1) o
FALSO (a cui si associa il valore 0).
Si noti che il termine proposizione lo stesso usato nella grammatica per denotare una
frase dotata di senso compiuto, ma nella logica dobbiamo fare due distinzioni importanti:
1. la proposizione logica semanticamente coerente, quella grammaticale basta che
sia formalmente coerente
2. se non possibile determinare il valore di verit, la proposizione grammaticale
comunque esistente, mentre a livello logico non c alcuna proposizione.
Chiariamo le questioni con degli esempi. Indichiamo le proposizioni con lettere minuscole
dellalfabeto latino (a, b, c, ecc.) e scriviamone lenunciato tra doppi apici.
a = il coccodrillo un mammifero una proposizione sia in senso logico che in senso
grammaticale, in quanto formalmente corretta, ha un senso ed indubbiamente falsa.
b = la speranza sottolinea il coccodrillo una proposizione, dal punto di vista
grammaticale1, ma non lo in senso logico, in quanto priva di senso.
c = 2+2=4 una proposizione della logica, in quanto ha senso ed vera, ma non
rispetta le regole di formazione grammaticale della lingua (anche se rispetta quelle di
unaltra lingua, la matematica).
d = quando coccodrillo se non una proposizione n grammaticale n logica.
Si noti che non ha alcuna importanza se la proposizione sia SEMPRE vera o falsa,
limportante che in ogni momento, sulla base delle condizioni reali, si possa affermare se
sia vera o falsa. Se consideriamo, infatti, la proposizione oggi luned, possiamo notare
che pu risultare vera o falsa a seconda del momento in cui viene pronunciata e quindi
apparentemente sembra non riguardarci, ma in ogni istante siamo in grado di dire se
risulta vera o falsa e quindi una proposizione della logica.
Si escludono dal mondo della logica anche tutte le proposizioni (anche se
grammaticalmente corrette) che esprimono:

interrogativi (Che ore sono?, Chi ha rubato la marmellata?)


opinioni, convinzioni o credenze (Picasso stato il pi grande pittore del XX
secolo, Ho visto un fantasma)
fatti che riguardano altre proposizioni o addirittura la proposizione stessa

Mentre le prime due categorie sono piuttosto ovvie, la terza merita un approfondimento.

Siete pregati di notare che c un soggetto (la speranza), un predicato verbale (sottolinea) ed un
complemento oggetto (il coccodrillo) e, se vogliamo essere precisi, potremmo anche immaginare una
situazione in cui questa frase potrebbe essere giustificata dalle circostanze ma i logici sono esseri semplici
e quindi rifiutano ogni approccio fantasioso.

M. Sileo - F. Rossi
Liceo Scientifico A. Roiti Ferrara
Informatica per il Liceo Scientifico delle Scienze Applicate
Classe seconda

Se consideriamo infatti la frase Io sono una proposizione vera, possiamo vedere che
ben formata, dotata di senso ed indubbiamente vera. Ma se permettessimo luso di
questo tipo di frasi, dovremmo ammettere anche questa: Io sono una proposizione falsa.
Provate a verificare cosa accade
Le proposizioni (grammaticali) di questo tipo si dicono indecidibili e devono essere
espunte dal mondo della logica per evitare di introdurre illogicit nel mondo della logica 2.
Chiamiamo P linsieme delle proposizioni della logica.

Proposizioni atomiche e proposizioni composte


Chiamiamo proposizione atomica ogni proposizione che non pu essere scomposta in
due o pi proposizioni. Ogni proposizione che non risulti atomica si dice composta.
Es. Oggi domenica e sta piovendo si pu scomporre in Oggi domenica e Sta piovendo.
Ci vediamo gioved o venerd si pu scomporre in Ci vediamo gioved e Ci vediamo venerd.
0<1<3 si scompone in 0<1 e 1<3.

Proposizioni aperte e proposizioni chiuse


Una proposizione si dice aperta quando al posto del soggetto (appartenente ad un
determinato insieme) o di altra parte della proposizione viene inserito un valore variabile 3.
Es. Carlo ha 25 anni diventa x ha 25 anni dove xA:{Insieme dei nomi di persona}

E evidente che una proposizione aperta non n vera n falsa, ma possiamo adoperare
2 tecniche diverse per renderla una vera e propria proposizione logica (chiusa):

valutazione
universalizzazione:

La valutazione consiste nellassegnare un valore determinato alla variabile e di


conseguenza assegnare un valore di verit alla proposizione.
Es. x=0 xN risulta vera quando x vale 0, mentre risulta falsa per ogni altro numero naturale.

Luniversalizzazione consiste nelluso dei quantificatori universali:


Quantificatore

Significato
Esiste almeno un
Per ogni valore di

Es. x tale che x=0 Proposizione vera


x x=0 Proposizione falsa

Non bisogna eliminare solo le proposizioni autoreferenziali (cio che parlano di se stesse), ma tutte le frasi
che parlano di proposizioni. altrimenti si pu andare incontro al seguente disastro:
La prossima proposizione vera; La proposizione precedente falsa.
Ognuna delle due frasi innocua, ma considerate una dopo laltra conducono ad un circolo vizioso.
3
Non abbiamo ancora definito il concetto di variabile informatica, ma per il momento possiamo accontentarci
di utilizzare il comune significato matematico del termine.

M. Sileo - F. Rossi
Liceo Scientifico A. Roiti Ferrara
Informatica per il Liceo Scientifico delle Scienze Applicate
Classe seconda

Operatori logici
Siamo gi abituati ad inserire in un insieme delle operazioni, ovvero delle regole di
combinazione che permettono, dati gli elementi di un insieme di combinarli in modo da
ottenere dei valori calcolabili allinterno dello stesso insieme (operazioni chiuse) o di un
sovrainsieme dellinsieme dato (operazioni aperte).
Es.
Insieme
Numeri naturali
N
Numeri interi
Z
Insiemi di R
Vettori del piano
Monomi

Operazioni chiuse
addizione
moltiplicazione
addizione
sottrazione
moltiplicazione
unione
intersezione
complemento
somma
prodotto per uno scalare
prodotto

Operazioni aperte
sottrazione (interi)
divisione (razionali)
divisione (razionali)
prodotto cartesiano (insiemi in
RxR)
prodotto vettoriale
nello spazio)
somma (polinomi)

(vettori

Queste operazioni hanno delle propriet (p.e. commutativa) e determinano una cosiddetta
algebra, cio permettono di operare con gli oggetti che ci interessano (gli elementi
dellinsieme) seguendo regole fisse e ben determinate.

Lalgebra di Boole
Nel 1847 George Boole pubblic il suo lavoro Analisi matematica della logica
(Mathematical Analysis of Logic), in cui presentava l'utilizzo di tecniche algebriche per la
descrizione e la formalizzazione della logica proposizionale, dando origine a quella che
oggi conosciuta come algebra di Boole. Negli anni immediatamente successivi alla sua
pubblicazione, l'opera di Boole trov applicazioni esclusivamente di tipo teorico e limitate
al campo della logica. Fu solo nel corso del XX secolo, con l'avvento dell'elettronica e lo
sviluppo dei sistemi digitali, che si comprese appieno limportanza e lutilit dell'algebra
booleana nel campo dell'informatica e dello studio dei circuiti.
Abbiamo gi studiato il sistema di numerazione binario, che permette di esprimere i
numeri attraverso sequenze di 0 e 1, e abbiamo appreso come operare aritmeticamente
sui numeri binari. Come ricordiamo, i sistemi digitali operano in modo binario, utilizzano
cio dispositivi che hanno solamente due stati possibili di funzionamento. Per questi due
stati discreti vengono utilizzate numerose denominazioni, le pi comuni sono 1 o 0, alto o
basso, vero o falso. In tale contesto, alle proposizioni logiche vengono fatte corrispondere
variabili il cui valore di verit risulta:
0 oppure F (False), se la proposizione falsa;
1 oppure T (True), se la proposizione vera.
Consideriamo quindi in particolare linsieme costituito da due soli elementi, B = {0,1} e
definiamo in esso le operazioni:

Somma logica (OR), indicata con il simbolo +, corrispondente al connettivo logico


:

M. Sileo - F. Rossi
Liceo Scientifico A. Roiti Ferrara
Informatica per il Liceo Scientifico delle Scienze Applicate
Classe seconda

La somma logica vale 1 se almeno uno degli operandi uguale a 1.


Prodotto logico (AND), indicato con il simbolo , corrispondente al connettivo
logico :
Il prodotto logico vale 1 se tutti gli operandi sono uguali a 1.
Negazione logica (NOT), indicata con il simbolo , corrispondente al connettivo
logico :
La negazione logica un operatore unario (agisce su un solo operando) che
cambia il valore delloperando da 0 a 1 e viceversa.
Esse godono delle propriet:
commutativa
A+B=B+A
AB=BA
distributiva
A + (B C) = (A + B) (A + C)
A (B + C) = A B + A C
associativa
A + (B + C) = (A + B) + C
A (B C) = (A B) C
Le variabili booleane, come gi detto, sono variabili discrete che possono assumere
soltanto i due valori 0 e 1, pertanto vengono definite spesso variabili binarie.
Una funzione booleana (o funzione logica) rappresenta la relazione tra una serie di
variabili indipendenti (di ingresso) e una variabile dipendente (di uscita), e viene definita
attraverso unespressione booleana che assume il valore 0 oppure 1 per ciascuna delle
configurazioni delle variabili di ingresso.
Ad esempio lespressione
f(A,B,C) = A + C
una funzione logica delle variabili booleane A, B, C.
Tabelle di verit
Gli operatori logici (e pi in generale le funzioni logiche) possono essere rappresentati,
invece che da unespressione, da una tabella di verit che contiene lelenco di tutte le
possibili combinazioni dei valori di ingresso e i relativi valori di uscita.
Per rappresentare completamente una funzione, dovremmo pertanto scrivere il valore che
questa assume in corrispondenza di ogni possibile combinazione delle variabili.
Costruiremo quindi una tabella, formata da tante colonne quante sono le variabili e tante
righe quante sono le loro possibili combinazioni. Una ulteriore colonna rappresenter lo
stato della funzione in corrispondenza di ogni singola combinazione.
Per una funzione booleana a due variabili avremo una tabella di verit di questo tipo:
A
0

B
0

f (A,B)
f(0,0)

M. Sileo - F. Rossi
Liceo Scientifico A. Roiti Ferrara
Informatica per il Liceo Scientifico delle Scienze Applicate
Classe seconda

0
1
1

1
0
1

f(0,1)
f(1,0)
f(1,1)

Mentre per una funzione di tre variabili avremo:


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

f (A,B,C)
f(0,0,0)
f(0,0,1)
f(0,1,0)
f(0,1,1)
f(1,0,0)
f(1,0,1)
f(1,1,0)
f(1,1,1)

Il numero di possibili combinazioni di un numero n di variabili booleane facilmente


determinabile, dal momento che ogni variabile booleana pu assumere solo due valori 0 o
1. Date quindi n variabili booleane, il numero di possibili combinazioni uguale a 2 n.
Vediamo ora le tabelle di verit degli operatori logici fondamentali.
Somma logica (OR)
A
0
0
1
1

B
0
1
0
1

f=A+B
0
1
1
1

Prodotto logico (AND)


A
0
0
1
1

B
0
1
0
1

f=AB
0
0
0
1

Negazione logica (NOT)


A
0
1

f=
1
0

M. Sileo - F. Rossi
Liceo Scientifico A. Roiti Ferrara
Informatica per il Liceo Scientifico delle Scienze Applicate
Classe seconda

Data una generica funzione logica, possibile scrivere la tabella di verit ad essa
associata introducendo alcune colonne ausiliarie in cui vengono rappresentati i risultati
delle elaborazioni intermedie.
Esempio
Tracciamo la tabella di verit associata alla funzione logica f(A,B,C) = A + C
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

1
1
0
0
1
1
0
0

C
0
1
0
0
0
1
0
0

A+C
0
1
0
0
1
1
1
1

Il modello a interruttori
Il modello a interruttori particolarmente semplice ed efficace per descrivere il
comportamento di un operatore logico. In questo modello, ad ogni variabile booleana di
ingresso viene associato un interruttore, i cui stati ON (chiuso) e OFF (aperto)
corrispondono ai valori 1 e 0. Per visualizzare il risultato di unoperazione possibile
utilizzare una lampadina, alimentata da una batteria, il cui stato acceso o spento
corrisponde ai valori di uscita 1 o 0.
Secondo il modello a interruttori, quindi, la somma logica pu essere rappresentata dal
circuito:

Dallo schema risulta evidente che, affinch la lampadina sia accesa, sufficiente che
almeno uno degli interruttori sia chiuso (on), mentre soltanto quando entrambi gli
interruttori sono aperti (off) la lampadina spenta.
Analogamente il prodotto logico pu essere rappresentato mediante il circuito:

M. Sileo - F. Rossi
Liceo Scientifico A. Roiti Ferrara
Informatica per il Liceo Scientifico delle Scienze Applicate
Classe seconda

Infatti la lampadina pu essere accesa soltanto se entrambi gli interruttori sono chiusi,
mentre sempre spenta se almeno uno degli interruttori aperto.
Propriet e teoremi fondamentali dellalgebra booleana
Abbiamo gi visto che somma e prodotto logico godono delle propriet commutativa,
associativa e distributiva.
Lalgebra di Boole gode di ulteriori propriet che si rivelano fondamentali nella
manipolazione delle funzioni logiche. Tutte le propriet ed i teoremi che vedremo possono
essere dimostrati utilizzando le tabelle di verit o sfruttando altri teoremi noti.
Propriet
Identit
A+0=A
A1=A
Dominanza
A0=0
A+1=1
Complementazione
A+=1
A=0
Idempotenza
A+0=A
A1=A
Involuzione (o doppia negazione)
=A
Inclusione (o assorbimento)
A + AB = A
A (A + B) = A
Teorema di De Morgan

E, in generale, nel caso di pi variabili:

M. Sileo - F. Rossi
Liceo Scientifico A. Roiti Ferrara
Informatica per il Liceo Scientifico delle Scienze Applicate
Classe seconda

M. Sileo - F. Rossi
Liceo Scientifico A. Roiti Ferrara
Informatica per il Liceo Scientifico delle Scienze Applicate
Classe seconda

Dal problema al programma


I problemi e la loro risoluzione
Lo scopo principale dei computer sicuramente quello di risolvere problemi, ovvero fare
operazioni lunghe o complesse al posto nostro. Questa necessit prevede che noi
riusciamo ad affrontare e risolvere una serie di quesiti decisamente complessi:
1. qual il problema che vogliamo risolvere e, soprattutto, questo problema pu
essere risolto da un computer?
2. qual il procedimento necessario per risolvere il problema?
3. come si pu comunicare alla macchina il procedimento?
Per comprendere il primo punto necessario fare una piccola analisi del termine
problema4. Nella lingua parlata un problema una qualunque situazione irrisolta e che
presenta delle difficolt per la sua soluzione, ma in informatica il significato diventa pi
ristretto: una situazione un problema se si verificano tutte le seguenti condizioni:

il quesito pu essere espresso e affrontato allinterno della logica formale


il quesito di carattere generale: le sue applicazioni particolari prendono il nome di
istanze
non immediatamente evidente che non esistono soluzioni
il quesito interessante

Es. Cerchiamo di chiarire il significato di queste condizioni con dei controesempi:


Esistono i fantasmi? non un problema, in quanto nessuna possibile risposta risolutiva (S, i
fantasmi esistono o No, i fantasmi non esistono) una proposizione della logica.
Come si calcola una radice quadrata? un problema; Qual la radice di 2? una sua
istanza.
Come posso smaterializzarmi dallaula di informatica per trasferirmi istantaneamente su una
spiaggia caraibica? unaspirazione sicuramente interessante, ma temo non attualmente
risolubile.
Quanti sono i granelli di sabbia sulle spiagge italiane? una questione che non dovrebbe
aver alcun interesse per una persona sana di mente.

Se una determinata questione risulta essere un problema, possiamo passare ai punti 2 e


3, che sono strettamente correlati fra di loro.
Infatti il procedimento risolutivo e la sua comunicazione sono aspetti assolutamente
interconnessi, in quanto il procedimento risolutivo dipende in maniera determinante dalle
abilit di chi (o cosa) dovr poi applicare il procedimento per ottenere il risultato voluto.
Es. Supponiamo di dover trovare (e spiegare a qualcuno) il procedimento risolutivo per andare da un punto
di una citt ad un altro, per esempio dalla stazione alla vostra scuola 5. Il procedimento risolutivo dovr
cambiare a seconda del mezzo in dotazione (automobile, mezzi pubblici, bicicletta, ecc.), a chi dovr
effettuare il tragitto e, soprattutto, dalle abilit dellesecutore: spiegare il percorso a qualcuno che parla
italiano e conosce la citt una cosa del tutto diversa che dover dare indicazioni ad uno straniero che non
parla nessuna delle lingue che conoscete e non ha una mappa!

4
5

dal greco , che significa ostacolo, promontorio.


si pu notare che questa, in realt unistanza, ma per il momento ci va bene cos.

M. Sileo - F. Rossi
Liceo Scientifico A. Roiti Ferrara
Informatica per il Liceo Scientifico delle Scienze Applicate
Classe seconda

Il grosso ostacolo da superare per trovare e comunicare un procedimento risolutivo


proprio il fatto che le competenze di un computer sono estremamente limitate e saremo
noi a doverci adattare a queste abilit minime per individuare la strada corretta da
percorrere per giungere alla meta.

Gli algoritmi
Un procedimento risolutivo di un problema un algoritmo 6 se rispetta le seguenti
caratteristiche:
Finitezza
un algoritmo pu essere descritto in un tempo finito, cio deve avere un numero
finito di istruzioni
un algoritmo pu essere eseguito in un tempo finito, cio lesecuzione deve
terminare con la soluzione
ogni istruzione ha complessit finita, cio adeguata alle capacit dellesecutore
Es. Supponiamo che il mio problema da risolvere sia quello di farvi scrivere i numeri da 0 in poi. Se vi dessi
le seguenti istruzioni:
Scrivi 0
Scrivi 1
Scrivi 2
Scrivi 3

violerei la prima regola di finitezza: non terminerei mai di dare istruzioni!


Se con lo stesso problema vi descrivessi il procedimento risolutivo cos:
Parti da 0
scrivi il numero
aggiungi 1 al numero che hai appena scritto
continua a ripetere le due istruzioni precedenti finch non hai finito
avrei rispettato la prima regola (ho scritto solo 4 istruzioni), ma non la seconda: voi non terminereste mai di
scrivere!
Se il mio problema fosse invece quello di andare da una citt allaltra (per esempio da Ferrara a Bologna) e
vi dessi le seguenti istruzioni:
Accendi il teletrasportatore
imposta la destinazione
entra nel teletrasportatore
parti
avrei rispettato le prime due regole, ma violato la terza chiedendovi di fare qualcosa che non siete in grado di
eseguire.

Esaustivit
un algoritmo deve prendere in considerazione tutti i casi possibili
In altri termini non deve accadere che una combinazione di valori non sia stata presa in considerazione e
renda pertanto impossibile continuare con lesecuzione o terminare le operazioni.
Es. contare da X a Y. Se le mie istruzioni fossero le seguenti:
parti da X
aggiungi 1 finch non arrivi a Y
andrebbe tutto bene con X=10 e Y=20, ma provate con X=20 e Y=10
6

il termine deriva da Muhammad ibn Musa al Khwarithmi a causa di un equivoco: lindicazione del luogo di
provenienza (Khwarithmi, lantica regione della Corasmia, attualmente al confine tra Iran e Uzbekistan)
venne dapprima intesa come cognome del celebre matematico e per estensione assegnata ai procedimenti
per effettuare le quattro operazioni (algorismi).

M. Sileo - F. Rossi
Liceo Scientifico A. Roiti Ferrara
Informatica per il Liceo Scientifico delle Scienze Applicate
Classe seconda

Si noti che nei casi reali, soprattutto di fronte a problemi che coinvolgono una quantit
indeterminabile a priori di casi possibili, ci si accontenta di una versione ridotta di tale
propriet:

un algoritmo deve prendere in considerazione tutti i casi plausibili rispettando un


principio di economicit

Es. Se dovessi scrivere un algoritmo per conservare su una memoria i nomi ed i cognomi degli studenti di
questa scuola, mi posso limitare a considerare dei cognomi con non pi di 15 lettere. Ovviamente nulla vieta
che prima o poi mi si presenti uno studente con un cognome con 21 lettere, ma prendere in considerazione
anche questo caso (e naturalmente anche 22, 23, ecc.) mi costerebbe pi tempo (e quindi denaro) che porre
rimedio alla questione quando e se si presenter.

Riproducibilit
due esecutori diversi con le stesse caratteristiche che eseguano lo stesso
procedimento risolutivo con gli stessi valori devono ottenere lo stesso risultato
un esecutore che ripeta il procedimento risolutivo in due momenti diversi con gli
stessi valori deve ottenere lo stesso risultato
In altri termini un procedimento risolutivo, per essere un algoritmo deve essere affidabile
(tecnicamente si dice deterministico) e fornire un risultato certo, senza alcun elemento
aleatorio. Ci ha una conseguenza importante: il classico esempio della ricetta di una
torta, per quanto molto chiaro ed accattivante, non esattamente quello di un algoritmo! A
tutti sar capitato, infatti, di verificare che la stessa ricetta, fatta da due persone diverse o
anche dalla stessa persona in due momenti diversi, pu dare esiti lievemente differenti.
Es. Fate questo esperimento. Dopo aver segnato sul pavimento con del nastro isolante la vostra posizione,
eseguite ad occhi chiusi le seguenti istruzioni:
fate 5 passi in avanti e ruotate di 90 a destra
fate 3 passi in avanti e ruotate di 90 a destra
fate 5 passi in avanti e ruotate di 90 a destra
fate un passo in avanti
segnate adesso la vostra posizione
Se provate a ripetere le stesse operazioni, partendo ovviamente dallo stesso punto e posizionati verso la
stessa direzione, scoprirete di essere arrivati in un punto leggermente diverso.

Rappresentazione di un algoritmo
Per rappresentare un algoritmo destinato ad avere come esecutore un computer devo
innanzitutto ricordare cosa un computer in grado di fare. Ricordando il modello di Von
Neumann possiamo dire che:

un computer ha almeno ununit di input e quindi in grado di ricevere dati


dallesterno;
un computer ha almeno ununit di output e quindi in grado di comunicare
informazioni allesterno;
un computer ha una memoria RAM e quindi pu conservare i dati nella memoria;
un computer ha una unit logico aritmetica e quindi pu fare operazioni aritmetiche
ed operazioni logiche.

M. Sileo - F. Rossi
Liceo Scientifico A. Roiti Ferrara
Informatica per il Liceo Scientifico delle Scienze Applicate
Classe seconda

Quando si inserisce un valore in memoria, sar necessario potersi riferire a tale valore in
modo formale. A questo scopo si introduce il concetto di variabile.
Una variabile informatica una grandezza caratterizzata da:
1. un nome (identificatore)
2. un tipo
3. un valore che pu variare durante lesecuzione dellalgoritmo.
Il nome di una variabile deve rispettare alcune regole:

il nome pu contenere lettere, cifre e il simbolo _ (underscore). Ogni altro


carattere (compreso quindi lo spazio) vietato;
il nome deve iniziare con una lettera;
il nome non deve superare i 18 caratteri.

Per comodit spesso si cerca di usare nomi brevi, che abbiano una qualche relazione con
il significato del valore che dobbiamo memorizzare. Generalmente buona norma
considerare i caratteri maiuscoli e minuscoli come diversi.
Es. Gli identificatori X, y, A3, casa_mia sono ammissibili.
Gli identificatori 3X (inizia con un numero), casa mia (contiene uno spazio), et (contiene il carattere vietato
), indirizzodicasadellanonna (ha pi di 18 caratteri) sono inammissibili.

Il tipo della variabile indispensabile in quanto serve per stabilire quanto spazio bisogner
riservare in memoria per la variabile. Ricordiamo infatti che ogni tipo di dato occupa un
certo numero di byte e pertanto sar necessario preparare un adeguato spazio di memoria
per poter inserire il dato.
Ogni linguaggio di programmazione ha i suoi tipi, ma a livello di algoritmo ci possiamo
limitare a considerare solo alcuni tipi fondamentali:
Intero una variabile di tipo intero potr contenere solo numeri interi
Reale una variabile di tipo reale potr contenere numeri reali e numeri interi in forma
reale, cio con parte decimale uguale a 0
Carattere una variabile di tipo carattere potr contenere solo caratteri ASCII
Boolean una variabile booleana potr contenere solo i valori True (vero, 1) e False
(falso, 0)
Si noti che accanto al concetto di variabile informatica possiamo considerare anche quello
di costante7, che avr tutte le stesse caratteristiche della variabile, tranne il fatto che il
valore non sar modificabile durante lesecuzione.
Per risolvere un problema e scrivere il corrispondente algoritmo dovremo per prima cosa
individuare in modo completo le variabili di cui abbiamo bisogno.

E importante osservare che, nonostante si usino i termini matematici variabile e costante, il significato di
tali termini, in informatica, assume un valore lievemente diverso. Se il concetto di variabile analogo a quello
matematico (sia pur con le limitazioni sul nome e per il fatto che una variabile ha in ogni istante un valore
ben definito), il concetto di costante informatica pi simile a quello di parametro, in quanto una costante
PUO VARIARE, ma solo mentre lalgoritmo non in esecuzione.

M. Sileo - F. Rossi
Liceo Scientifico A. Roiti Ferrara
Informatica per il Liceo Scientifico delle Scienze Applicate
Classe seconda

Es. supponiamo di voler calcolare la somma di due numeri. Avremo bisogno di tre variabili: una per
contenere il valore del primo numero, una per contenere il valore del secondo numero e lultima per
contenere il valore del risultato delladdizione.

Per rappresentare in modo efficace le variabili coinvolte nel problema, possiamo usare
una tabella delle variabili che mi riassuma le caratteristiche di ogni variabile. Una
possibile tabella (che utilizza le variabili dellesempio precedente) la seguente:
nome
A
B
C

tipo
intero
intero
intero

descrizione
primo addendo
secondo addendo
somma

uso
input
input
output

condizioni
nessuna
nessuna
nessuna

Vediamo di interpretare correttamente le diverse caratteristiche:


nome: il nome che abbiamo dato alla variabile; ovviamente deve rispettare le
regole generali sui nomi
tipo: il tipo di variabile con cui vogliamo lavorare
descrizione: una breve descrizione per permetterci di interpretare correttamente il
significato della variabile, soprattutto se non abbiamo usato nomi mnemonici. Non
dobbiamo dimenticare, infatti, che un algoritmo pu diventare anche estremamente
lungo e complesso e se non chiaro cosa dovr contenere ogni variabile, potrebbe
risultare di difficile comprensione
uso: luso prevalente che faremo della variabile. I valori ammessi 8 sono:
o input (I): il valore della variabile deve essere inserito dallutente
o output (O): il valore della variabile deve essere comunicato allutente
o input/output (I/O): il valore della variabile deve essere inserito dallutente e
dopo essere stato elaborato e/o modificato deve essere comunicato
allutente
o lavoro (L): il valore della variabile serve solo allinterno dellalgoritmo e quindi
non viene n inserito dallesterno n comunicato
condizioni: in questa colonna potremo inserire eventuali condizioni che potrebbero
essere necessarie per garantire il corretto funzionamento dellalgoritmo. A puro
titolo di esempio, se avessimo voluto individuare le variabili necessarie ad effettuare
la divisione tra due numeri, avremmo dovuto ricordare che il divisore deve essere
diverso da 0.
Su una variabile possiamo effettuare le seguenti operazioni:
assegnazione
Loperazione di assegnazione inserisce nella variabile un valore compatibile con il tipo
della variabile stessa. Il simbolo usato per lassegnazione =.
Es. A=3 significa che il numero 3 viene assegnato alla variabile A, cio che da questo momento in poi, finch
il valore non verr modificato, ogni volta che useremo la variabile A, a tale variabile sar sostituito il numero
3 (questa operazione di sostituzione si chiama valutazione). Ci mi consente di usare le variabili anche a
destra del segno =, intendendo con tali variabili il valore ad esse precedentemente attribuito.
B=2*A significa assegnare alla variabile B il doppio del valore valutato nella variabile A.

pi avanti introdurremo altre modalit duso che presentate adesso potrebbero solo confondere le idee.

M. Sileo - F. Rossi
Liceo Scientifico A. Roiti Ferrara
Informatica per il Liceo Scientifico delle Scienze Applicate
Classe seconda

Si noti che il simbolo = non ha il significato di uguaglianza, ma quello di assegnazione e


che pertanto operazioni del tipo var = var + 1, che come uguaglianze sono palesemente
assurde, sono perfettamente lecite in quanto il loro significato : valuta il valore della
variabile var, aggiungi 1 e assegna questo nuovo valore sempre alla variabile var,
sostituendolo al precedente.
Es. Per meglio comprendere il significato di questa operazione conviene riferirsi allhardware del computer,
ricordando il modello di von Neumann.
Consideriamo le seguenti operazioni di assegnazione sulle variabili intere A,B e C:
A=5
B=3
C=A+B
e cerchiamo di individuare quali operazioni vengono svolte dal computer
1. La Control Unit prende in considerazione listruzione A=5, prepara unarea di memoria in RAM di due
byte per A (ricordiamo che stiamo lavorando con numeri interi) e memorizza il valore 5 in questarea
(assegnazione);
2. La Control Unit prende in considerazione listruzione B=3, prepara unarea di memoria in RAM di
due byte e memorizza il valore 3 in questarea (assegnazione);
3. La Control Unit prende in considerazione listruzione C=A+B, prepara unarea di memoria in RAM di
due byte per C
a. prende il valore presente in RAM per A e lo passa allALU (valutazione)
b. prende il valore presente in RAM per B e lo passa allALU (valutazione)
c. d allALU il comando di effettuare unaddizione
4. LALU effettua laddizione e restituisce il valore trovato alla Control Unit;
5. La Control Unit memorizza il valore restituito dallALU nellarea C (assegnazione).
Se invece le istruzioni fossero
A=0
A=A+1
le corrispondenti operazioni sarebbero:
1. La Control Unit prende in considerazione listruzione A=0, prepara unarea di memoria in RAM di due
byte per A e memorizza il valore 0 in questarea (assegnazione);
2. La Control Unit prende in considerazione listruzione A=A+1
a. prende il valore presente in RAM per A e lo passa allALU (valutazione)
b. prende il valore 1 e lo passa allALU
c. d allALU il comando di effettuare unaddizione
3. LALU effettua laddizione e restituisce il valore trovato alla Control Unit;
4. La Control Unit memorizza il valore restituito dallALU nellarea A (assegnazione); si noti che il valore
precedente viene automaticamente eliminato.

gli operatori9 consentiti nelle espressioni sono i seguenti:

operatore

simbolo

addizione
sottrazione
moltiplicazione
divisione intera
resto
divisione reale
congiunzione (AND)
disgiunzione (OR)
negazione (NOT)

+
*
/
DIV
% MOD
/
&&
||
!

tipi di variabile
applicabile
interi, reali
interi, reali
interi, reali
interi
interi
reali
boolean
boolean
boolean

cui

esistono anche altri operatori che verranno introdotti, secondo le necessit, in un secondo momento.

M. Sileo - F. Rossi
Liceo Scientifico A. Roiti Ferrara
Informatica per il Liceo Scientifico delle Scienze Applicate
Classe seconda

Es. E necessario fare una precisazione per quanto riguarda la divisione intera e la divisione reale: se a e b
sono numeri interi e valgono rispettivamente 9 e 4, loperazione 9 / 4 (o 9 DIV 4) d come risultato 2, mentre
se fossero stati reali avrebbe dato 2,25. Se consideriamo poi loperazione 9 % 4 (o 9 MOD 4) il risultato 1,
in quanto 1 il resto della divisione tra 9 e 4.

La priorit tra le operazioni la medesima della matematica. Se vogliamo alterare lordine


delle operazioni dovremo usare le parentesi tonde.
Es.

a = 5*3+2*2 +1 d come valore 20


a = 5*(3+2)*2 +1 d come valore 51
a = 5*((3+2)*2+1)) d come valore 55

lettura
Loperazione di lettura inserisce nella variabile un valore compatibile con il tipo della
variabile stessa, ricevuto tramite input.
La sintassi delloperazione leggi A oppure input A.
scrittura
Loperazione di scrittura restituisce in output il valore presente in memoria della variabile.
La sintassi delloperazione scrivi A oppure output A.
confronto o alternativa
Loperazione di confronto restituisce il valore True (vero, 1) o False (falso, 0) a seconda
del fatto che unespressione di uguaglianza o disuguaglianza tra variabili o costanti o
espressioni risulti rispettivamente vera o falsa.
Gli operatori ammissibili per il confronto sono i seguenti:
operatore
uguale a
diverso da
maggiore di
maggiore o uguale a
minore di
minore o uguale a
si noti che alcuni simboli sono formati da
unico operatore.

simbolo
negazione delloperatore
==
diverso da
<> oppure !=
uguale a
>
minore o uguale a
>=
minore di
<
maggiore o uguale a
<=
maggiore di
due caratteri che, nel loro complesso, servono a rappresentare un

Es. consideriamo le seguenti espressioni:


x>0 (confronto tra variabile e costante)
se in memoria x contiene un valore maggiore di zero, il confronto avr valore True, altrimenti False;
x==y (confronto tra variabile e variabile)
se in memoria x contiene lo stesso valore contenuto in y, il confronto avr valore True, altrimenti False;
x>=2*y (confronto tra variabile ed espressione)
se in memoria x contiene un valore maggiore o uguale al doppio del valore contenuto in y, il confronto avr
valore True, altrimenti False.

Rappresentare un algoritmo vuol dire usare un linguaggio formale per descrivere i


passaggi necessari a raggiungere la soluzione del problema. Si deve notare, per, che
tale rappresentazione pu essere fatta utilizzando solo le operazioni di assegnazione,
lettura, scrittura e confronto.
I linguaggi formali per rappresentare gli algoritmi sono due:
la pseudocodifica
i diagrammi a blocchi
Nella pseudocodifica le operazioni vengono rappresentate tramite comandi scritti con la
seguente sintassi:

M. Sileo - F. Rossi
Liceo Scientifico A. Roiti Ferrara
Informatica per il Liceo Scientifico delle Scienze Applicate
Classe seconda

operazione
assegnazione

sintassi
variabile=espressione

lettura

input variabile

scrittura

output variabile

confronto

output messaggio
(espressione1 op. espressione2)

significato
il valore assunto dallespressione viene assegnato
alla variabile
il valore scritto dallutente viene assegnato alla
variabile
il valore valutato nella variabile viene comunicato
allutente
il messaggio viene comunicato allutente
dove op. uno degli operatori di uguaglianza o
disuguaglianza

A tali operazioni si aggiungono due comandi speciali: inizio e fine per identificare il punto
iniziale e quello finale dellalgoritmo. Per migliorare la leggibilit dellalgoritmo, tutto ci che
compreso tra linizio e la fine (corpo dellalgoritmo) pu essere scritto un po pi a
destra (indentazione).
Le operazioni verranno eseguite nellordine in cui sono state scritte, dallalto verso il
basso.
Es. Algoritmo 1
Testo del problema: effettuare la somma di due numeri presi in input.
Tabella delle variabili
nome
tipo
descrizione
a
intero
primo addendo
b
intero
secondo addendo
c
intero
somma

uso
input
input
output

condizioni
nessuna
nessuna
nessuna

Pseudocodifica
inizio
input a
input b
c=a+b
output c
fine
Se vogliamo migliorare lusabilit dellalgoritmo, possiamo aggiungere in output dei messaggi:
inizio
output inserisci il primo addendo
input a
output inserisci il secondo addendo
input b
c=a+b
output la somma vale
output c
fine

Nei diagrammi a blocchi, invece, le operazioni sono rappresentate dentro blocchi, cio
figure geometriche collegate da frecce, che indicano il flusso delle operazioni.
I blocchi principali sono i seguenti:
Blocco

Operazione
inizio
fine

Esempio
inizio

M. Sileo - F. Rossi
Liceo Scientifico A. Roiti Ferrara
Informatica per il Liceo Scientifico delle Scienze Applicate
Classe seconda

assegnazione
a=3
input
output

input a

alternativa
a==0
connettore

serve ad unire due o pi


linee di collegamento tra i
blocchi

Vediamo lo stesso algoritmo dellesempio precedente (nella prima versione) utilizzando i


diagrammi a blocchi al posto della pseudocodifica.
inizio
input a
input b

c=a+b

output c

fine

Esercizi:
1.
2.
3.
4.
5.
6.

Scrivere in pseudocodifica lalgoritmo per effettuare il prodotto tra due numeri interi.
Scrivere in pseudocodifica lalgoritmo per effettuare la media tra due numeri reali.
Dato il prezzo di un prodotto, calcolare il valore di uno sconto del 15%.
Dato il prezzo di un prodotto, calcolare il prezzo scontato, applicando uno sconto del 15%.
Dati in input prezzo unitario di un prodotto e la quantit acquistata, dare in output il totale da pagare.
Nelle stesse condizioni dellesercizio 5, dare in output anche lIVA (usate laliquota del 22%) e
limponibile (cio il totale da cui viene tolta lIVA).
7. Dato un tempo in ore, minuti e secondi, calcolare a quanti secondi corrisponde.
8. Dato un tempo in secondi, calcolare a quante ore, minuti e secondi corrisponde.

M. Sileo - F. Rossi
Liceo Scientifico A. Roiti Ferrara
Informatica per il Liceo Scientifico delle Scienze Applicate
Classe seconda

Strutture
Negli esempi precedenti le diverse operazioni da effettuare si susseguono secondo un
ordine preciso ed immutabile.
Se consideriamo infatti lalgoritmo corrispondente allesercizio 4, possiamo notare come le
istruzioni date allesecutore devono essere svolte esattamente nellordine in cui sono state
scritte,senza alcuna possibilit di modificare la successione delle operazioni:
inizio
output inserisci il prezzo
input prezzo
sconto=prezzo*0,15
output lo sconto vale
output sconto
fine

In altri termini, tra listruzione inizio e listruzione fine, c una serie prefissata di
istruzioni, cio un unico percorso che lesecutore pu seguire per ottenere il risultato
finale.
Chiamiamo sequenza la struttura formata da due o pi istruzioni da eseguire in un ordine
prefissato.
La sintassi della struttura sequenza la seguente:
Pseudocodifica

<istruzione 1>
<istruzione 2>

Diagrammi a blocchi

istruzione 1

istruzione 2

Dove gli elementi tra parentesi angolate o i blocchi rappresentano generiche istruzioni.

M. Sileo - F. Rossi
Liceo Scientifico A. Roiti Ferrara
Informatica per il Liceo Scientifico delle Scienze Applicate
Classe seconda

Esistono problemi, per, nei quali luso di ununica sequenza non permette di giungere ad
un procedimento risolutivo di tipo algoritmico.
Vediamo un esempio:
Scrivere in pseudocodifica lalgoritmo per calcolare le divisione tra due numeri reali presi in input.
Tabella delle variabili
nome
tipo
descrizione
a
reale
dividendo
b
reale
divisore
c
reale
quoziente

uso
input
input
output

Pseudocodifica
inizio
output inserisci il dividendo
input a
output inserisci il divisore
input b
c=a/b
output il quoziente
output c
fine

Se proviamo ad eseguire lalgoritmo otterremo spesso una soluzione valida, ma se


introduciamo il valore 0 per b, la FPU 10 non riuscir ad effettuare la divisione per 0 e
quindi, in mancanza di un risultato valido, il processo esecutivo non terminer in modo
corretto11, violando la regola di esaustivit.
Una soluzione possibile a questo problema quella di introdurre una nuova struttura, che
preveda lesecuzione di gruppi di istruzioni alternative al verificarsi o meno di una
determinata condizione.
Chiamiamo alternativa la struttura formata da due gruppi di istruzioni da eseguire in modo
mutuamente esclusivo, sulla base del verificarsi o meno di una condizione.
La sintassi della struttura alternativa la seguente:
Pseudocodifica

se <condizione>
allora
<istruzioni1>
altrimenti
<istruzioni2>

Se la <condizione> risulta vera verranno eseguite le <istruzioni1>, se invece risulta falsa,


le <istruzioni2>.

10

Ricordiamo che la FPU il processore dedicato ad effettuare le operazioni in virgola mobile


In questi casi il sistema cercher di difendersi dallerrore terminando immediatamente lesecuzione e
quindi le istruzioni successive allerrore non verranno prese in considerazione. A seconda degli strumenti
usati per limplementazione del programma corrispondente allalgoritmo, se saremo fortunati apparir un
messaggio per segnalarci il problema, ma potrebbe anche capitare che il sistema si blocchi misteriosamente,
impedendoci di continuare il lavoro.
11

M. Sileo - F. Rossi
Liceo Scientifico A. Roiti Ferrara
Informatica per il Liceo Scientifico delle Scienze Applicate
Classe seconda

Diagrammi a blocchi

condizione

istruzioni 2

istruzioni 1

Si noti che per convenzione il ramo destro corrisponde a cosa fare quando la condizione
risulta vera, il sinistro cosa fare quando falsa.
Con questa nuova struttura il nostro problema si risolve cos:
Tabella delle variabili
nome
tipo
descrizione
a
reale
dividendo
b
reale
divisore
c
reale
quoziente

uso
input
input
output

condizioni
nessuna
b<>0
nessuna

Pseudocodifica
inizio
output inserisci il dividendo
input a
output inserisci il divisore
input b
se b<>0
allora
c=a/b
output il quoziente
output c
altrimenti
output non possibile dividere per 0
fine

In questo caso, quando il divisore diverso da 0 la divisione sar eseguita normalmente e


otterremo loutput del risultato, quando invece b sar uguale a 0 la divisione non verr
eseguita, evitando lerrore della FPU, e ci sar un messaggio di output che ci avverte del
problema.
Esercizi:
1. Presi in input due numeri interi, mandare in output il maggiore.
2. Preso in input il numero dei pezzi acquistati di un determinato prodotto del costo di 5 euro, praticare
uno sconto del 10% se i pezzi sono almeno 10 e mandare in output il totale da pagare.
3. Preso in input un numero intero, dire se positivo o meno.

M. Sileo - F. Rossi
Liceo Scientifico A. Roiti Ferrara
Informatica per il Liceo Scientifico delle Scienze Applicate
Classe seconda

4. Preso in input un numero intero, dire se pari o dispari.


5. Presi in input due numeri ed un segno di operazione, calcolare il risultato.