Sei sulla pagina 1di 350

Modulo 2— U.D. 1— Lez.

Lezione 1 - Concetto di numero

Fondamenti di Informatica per la Sicurezza

Modulo 2 - Rappresentazione dell’informazione

Unità didattica 1 - Numeri e numerali

Stefano Ferrari

Università degli Studi di Milano - Ssri - CDL ONLINE

Citazione

Aritmetica è contare fino a venti


senza togliersi le scarpe
[Topolino]

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 1


Modulo 2— U.D. 1— Lez. 1

Numeri

Un numero è un ente astratto usato per indicare


proprietà quantitative delle grandezze.

x x •
x x • •
x • •

Contare

Per contare, non è necessario conoscere i


numeri.
Basta ricorrere a delle relazioni:
• tra grandezze discrete:
– sassolini e pecore;
– dita della mano e figli.
• tra grandezze continue:
– tempo trascorso e candela che brucia;
– tempo trascorso e spazio percorso dall’ombra.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 2


Modulo 2— U.D. 1— Lez. 1

Astrazione

Le esigenze pratiche possono portare a scoprire


concetti più evoluti.
Alcuni esempi:
• confronto tra elementi numerici;
• proprietà delle operazioni;
• assegnazione di nomi a numeri particolari;
• concetto di ordine di grandezza.

Rappresentazione dei numeri

L’elaborazione (o la trasmissione) dei numeri


richiede la loro rappresentazione su di un
supporto fisico.
Serve quindi:
• mezzo fisico (modificabile, ma stabile);
• codifica.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 3


Modulo 2— U.D. 1— Lez. 1

Sistema di numerazione

Codifica arbitraria per rappresentare un insieme


infinito di oggetti utilizzando un insieme finito di
simboli.

Numerale

Al concetto astratto di numero si affianca la sua


rappresentazione simbolica: il numerale.
Interpretazione del numerale:
• un numerale ha significato solo all’interno di un
sistema di numerazione.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 4


Modulo 2— U.D. 1— Lez. 1

Sistemi di numerazione

I sistemi di numerazione si dividono


principalmente in:
• additivi;
• posizionali.

Sistemi di numerazione addittivi (1)

Sistema di numerazione romano:


• in uso nell’antica Roma;
• simboli letterali: I, V, X, L, C, D e M
(uno, cinque, dieci, cinquanta, cento, cinquecento e
mille);
• i simboli affiancati in ordine decrescente indicano il
numero pari alla loro somma;
• se un simbolo precede un simbolo di valore
superiore, deve essere sottratto.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 5


Modulo 2— U.D. 1— Lez. 1

Sistemi di numerazione addittivi (2)

Sistema di numerazione romano:


• esempio:
MCMLXII

1000 + (1000 − 100) + 50 + 10 + 1 + 1

1962

Sistemi di numerazione posizionali

Notazione decimale:
• inventata in India, perfezionata dagli arabi e poi
introdotta in Europa da Fibonacci;
• basata su dieci cifre;
• il significato dipende dalla loro posizione.

• Esempio:
1203 = 1 ·103 + 2 ·102 + 0 ·101 + 3 ·100

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 6


Modulo 2— U.D. 1— Lez. 1

In sintesi

I numeri:
• sono gli elementi di informazione più semplici che
siamo in grado di elaborare in modo automatico;
• per elaborarli, dobbiamo essere in grado di
rappresentarli.

Chiusura

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 7


Modulo 2— U.D. 1— Lez. 2

Lezione 2 - Rappresentazione
posizionale

Fondamenti di Informatica per la Sicurezza

Modulo 2 - Rappresentazione dell’informazione

Unità didattica 1 - Numeri e numerali

Stefano Ferrari

Università degli Studi di Milano - Ssri - CDL ONLINE

Numeri e rappresentazione

Il concetto di “numero” è indipendente dalla sua


rappresentazione.

Esempio:
+ + + o + o + o o o + o + o o o + o + o

In questo caso, i simboli “+” sono posizionati in


corrispondenza di un numero primo.

La scelta della rappresentazione dipende


dall’utilizzo che si vuol fare dei numeri
rappresentati.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 1


Modulo 2— U.D. 1— Lez. 2

Scelta della notazione posizionale

Se si devono fare calcoli, la notazione posizionale


offre alcuni indubbi vantaggi.

Proprietà della notazione posizionale:


• somma: viene operata agendo “localmente” (unità
con unità, decine con decine e così via);
• traslazione (shift): moltiplicare o dividere per 10
trasla le cifre di una posizione;
• compattezza: la rappresentazione richiede un
numero di cifre logaritmico.

Notazione posizionale (1)

Formalizzazione:

X
n
(an . . . a1 a0 )b ≡ ai · b i , b ≥ 2, ai ∈ {0, . . . , b − 1}
i=0

• dato un numero intero maggiore o uguale a 2, b,


detto base,
• la sequenza an . . . a1 a0 ,
• composta da n + 1 simboli scelti dall’insieme
{0, . . . , b − 1},
• viene interpretata come an · bn + · · · + a1 · b1 + a0 · b0 .

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 2


Modulo 2— U.D. 1— Lez. 2

Notazione posizionale (2)

Basi notevoli:
• decimale, b = 10 ai ∈ {0, . . . , 9};
• binaria, b = 2 ai ∈ {0, 1};
• ottale, b = 8 ai ∈ {0, . . . , 7};
• esadecimale, b = 16 ai ∈ {0, . . . , 9, A, . . . , F }.

Esempi:
• (34)10 = 3 · 10 + 4 · 1 = 34
• (34)8 = 3 · 8 + 4 · 1 = 28
• (34)16 = 3 · 16 + 4 · 1 = 52

Tuttavia ...

In alcuni campi, è più comodo usare una base


diversa da quella decimale.

Infatti:
• le uova si vendono a dozzine;
• le ore sono composte da 60 minuti;
• un giorno dura 24 ore.

12 è divisibile per 2, 3, 4 e 6!

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 3


Modulo 2— U.D. 1— Lez. 2

Numeri frazionari

Ogni numero intero è rappresentabile utilizzando


una qualsiasi base, ma lo stesso non vale per i
numeri frazionari:
1
in base 10 3
≡ (0.3̄)10
1
in base 3 3
≡ (0.1)3

I numeri frazionari si possono rappresentare


come:
X
n
(an . . . a2 a1 a0 . a−1 . . . a−m )b ≡ ai · b i , b≥2
i=−m

In sintesi

La notazione posizionale permette:

• di rappresentare in qualsiasi base qualsiasi numero


intero;
• e anche alcuni numeri frazionari.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 4


Modulo 2— U.D. 1— Lez. 2

Chiusura

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 5


Modulo 2— U.D. 1— Lez. 3

Lezione 3 - Cambio di base

Fondamenti di Informatica per la Sicurezza

Modulo 2 - Rappresentazione dell’informazione

Unità didattica 1 - Numeri e numerali

Stefano Ferrari

Università degli Studi di Milano - Ssri - CDL ONLINE

Cambio di base (1)

Come si scrive in base 12 il numero


rappresentato dal numerale (32)4 ?

NB: Cambia solo la rappresentazione del numero!

Per rispondere alla domanda serve una piccola


digressione: la divisione.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 1


Modulo 2— U.D. 1— Lez. 3

Divisione

Dati due numeri naturali a, b (b > 0), la divisione


permette di determinare due numeri q ed r tali
che
a = b · q + r, 0≤r<b
dove:
• a è il dividendo;

• b è il divisore;
• q è il quoziente (o quoto);
• r è il resto.

Cambio di base (2)

L’algoritmo per il cambio di base fa uso degli


operatori di divisione intera (div) e di resto
(mod):
div è la parte intera della divisione tra due numeri
interi (quoziente):
es: 13 div 5 = 2
mod è il resto della divisione tra due numeri interi:
es: 13 mod 5 = 3
Infatti:
13 = 5 · 2 + 3

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 2


Modulo 2— U.D. 1— Lez. 3

Cambio di base (3)

Algoritmo per trovare il numerale del numero n,


in una data base, b:
1. Calcolare il quoziente, q , ed il resto, r , della
divisione di n per b:
q = n div b
r = n mod b
2. Il resto, r , è l’ultima cifra del numerale che esprime
n in base b.
3. Se il quoziente, q , è diverso da zero, le rimanenti
cifre si ottengono trasformando il quoziente,
sostituendo nei passi precedenti q ad n.
4. Se il quoziente è zero, la conversione è terminata.

Cambio di base (4)

Esempio: (133)10 → (x)5


quoziente resto
133 133 = 26 · 5 + 3
26 3 26 = 5 · 5 + 1
5 1 5=1·5+0
1 0 1=0·5+1
0 1
(133)10 = (1013)5

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 3


Modulo 2— U.D. 1— Lez. 3

Cambio di base (5)

Spiegazione:
133 = 26 · 5 + 3 =
= (5 · 5 + 1) · 5 + 3 =
= ((1 · 5 + 0) · 5 + 1) · 5 + 3 =
= (((0 · 5 + 1) · 5 + 0) · 5 + 1) · 5 + 3 =
= ((1 · 5 + 0) · 5 +1) · 5 + 3 =
= (1 ·52 + 0 · 5 + 1) · 5 + 3 =
= 1 · 5 3 + 0 · 52 + 1 · 5 + 3 =
= 1 · 5 3 + 0 · 52 + 1 · 5 + 3 · 5 0
(133)10 = (1013)5

Numero di cifre (1)

Quante cifre, k, bisogna usare per rappresentare


in base b il numero n?
Ragionando in base 10:
con 1 cifra: 0...9 fino a 101 − 1
con 2 cifre: 10 . . . 99 fino a 102 − 1
con 3 cifre: 100 . . . 999 fino a 103 − 1
k−1 k
con k cifre: 10 . . . 10 − 1 fino a 10k − 1
k deve essere il più piccolo numero intero tale
per cui bk − 1 ≥ n.
Per comodità: bk ≥ n + 1.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 4


Modulo 2— U.D. 1— Lez. 3

Numero di cifre (2)

Applicando il logaritmo in base b ad entrambi i


membri della disequazione precedente:

logb bk ≥ logb (n + 1)

k ≥ logb (n + 1)
k = dlogb (n + 1)e
dove dxe indica il più piccolo numero intero
maggiore o uguale a x.

Numero di cifre (3)

Quante cifre sono necessarie per rappresentare


1145 in notazione posizionale in base:
a) 10 b) 2 c) 16?
a) 10: log10 1146 ≈ 3.0592 → 4 cifre.
Infatti: 1145 = (1145)10 .
b) 2: log2 1146 ≈ 10.162 → 11 cifre.
Infatti: 1145 = (10001111001)2 .
c) 16: log16 1146 ≈ 2.5406 → 3 cifre.
Infatti: 1145 = (479)16 .

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 5


Modulo 2— U.D. 1— Lez. 3

In sintesi

La notazione posizionale permette:

• in generale, il calcolo del numerale attraverso la


divisione;
• il calcolo del numero di cifre necessarie basato sul
logaritmo del numero da rappresentare.

Chiusura

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 6


Modulo 2— U.D. 1— Lez. 4

Lezione 4 - Esercizi sul cambiamento


di base

Fondamenti di Informatica per la Sicurezza

Modulo 2 - Rappresentazione dell’informazione

Unità didattica 1 - Numeri e numerali

Stefano Ferrari

Università degli Studi di Milano - Ssri - CDL ONLINE

Da base n a decimale

Come si rappresenta in base 10 il numero (412)5 ?

Dalla definizione di notazione posizionale:


(412)5 = 4 · 52 + 1 · 51 + 2 · 50 =
= 4 · 25 + 1 · 5 + 2 · 1 =
= 100 + 5 + 2 =
= 107

(412)5 = (107)10

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 1


Modulo 2— U.D. 1— Lez. 4

Da decimale a base n

Come si rappresenta in base 3 il numero (1079)10 ?


Algoritmo della divisione:
quoziente resto
1079
359 2
119 2
39 2 (1079)10 = (1110222)3
13 0
4 1
1 1
0 1

Da base m a base n (1)

Come si rappresenta in base 5 il numero (106)7 ?


Si potrebbe applicare l’algoritmo di divisione, ma
è difficile fare i calcoli se la base non è 10.
Meglio risolvere il problema in due passi:
1. conversione da base 7 a decimale;
2. conversione da decimale a base 5.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 2


Modulo 2— U.D. 1— Lez. 4

Da base m a base n (2)

Conversione da base 7 a decimale:


(106)7 = 1 · 72 + 0 · 71 + 6 · 70 = 55

Conversione da decimale a base 5:


quoziente resto
55
11 0
2 1
0 2
Quindi:
(106)7 = (210)5

Da binario ad ottale
È un caso particolare di conversione da base m a
base n: 8 = 23 .
Se n = mk , il cambiamento di base si può operare
per blocchi.
Esempio: (101001)2 = (???)8
(101001)2 =
= 1 · 25 + 0 · 24 + 1 · 23 + 0 · 22 + 0 · 21 + 1 · 20 =
= (1 · 22 + 0 · 21 + 1 · 20 ) · 23 + (0 · 22 + 0 · 21 + 1 · 20 ) · 20 =
= (5) · 81 + (1) · 80 =
= (51)8
base 2 101 001
base 8 5 1

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 3


Modulo 2— U.D. 1— Lez. 4

Da binario ad esadecimale
È un caso particolare di conversione da base m a
base n: 16 = 24 .
Esempio: (101001010)2 = (???)16

base 2 0001 0100 1010


base 16 1 4 A

(101001010)2 = (14A)16

Da ottale a binario
È un caso particolare di conversione da base m a
base n: 8 = 23 .
Se m = nk , il cambiamento di base si può operare
per blocchi.
Esempio: (51)8 = (???)2
= (51)8 = (5) · 81 + (1) · 80 =
= (1 · 22 + 0 · 21 + 1 · 20 ) · 23 + (0 · 22 + 0 · 21 + 1 · 20 ) · 20 =
= 1 · 25 + 0 · 24 + 1 · 23 + 0 · 22 + 0 · 21 + 1 · 20 =
= (101001)2
base 8 5 1
base 2 101 001

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 4


Modulo 2— U.D. 1— Lez. 4

Da esadecimale a binario
È un caso particolare di conversione da base m a
base n: 16 = 24 .
Esempio: (14A)16 = (???)2

base 16 1 4 A
base 2 0001 0100 1010

(14A)16 = (101001010)2

In sintesi

Esercizi di cambiamento di base:


• da base 10 a base n;
• da base n a base 10;
• da base n a base m;
• da binario ad ottale/esadecimale;
• da ottale/esadecimale a binario.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 5


Modulo 2— U.D. 1— Lez. 4

Chiusura

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 6


Modulo 2— U.D. 2— Lez. 1

Lezione 1 - Bit e byte

Fondamenti di Informatica per la Sicurezza

Modulo 2 - Rappresentazione dell’informazione

Unità didattica 2 - Rappresentazione binaria

Stefano Ferrari

Università degli Studi di Milano - Ssri - CDL ONLINE

Binario è bello!

Per ragioni tecnologiche di affidabilità, gli attuali


calcolatori sono in grado di rappresentare e di
elaborare solo informazione espressa utilizzando
due stati.
É perciò naturale descrivere le informazioni in
notazione binaria.
In particolare, un elemento di informazione
viene chiamato bit.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 1


Modulo 2— U.D. 2— Lez. 1

Bit

Binary Digit

cifra binaria

Un bit può valere (convenzionalmente) 0 o 1.

Sequenze di bit

Per rappresentare oggetti che possono assumere


più di due stati, si usano sequenze di bit.
Quanti numeri sono rappresentabili in N bit?
• N simboli che, indipendentemente uno dall’altro,
possono assumere due valori assumono 2N
combinazioni diverse.

2 × 2 × ··· × 2
←−−−−−−−−− →
N volte

Se abbiamo N bit, quali numeri rappresentiamo?


• Lo stabilisce la codifica (arbitraria).

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 2


Modulo 2— U.D. 2— Lez. 1

Byte

Una sequenza di otto bit viene detta byte.


Quante configurazioni differenti può assumere
un byte?
• 28 = 256.

Una digressione:
• il termine byte indica un gruppo di elementi binari
(tipicamente 8) trattati congiuntamente;
• diverse le origini del termine:
– variazione del termine bite per evitare confusione con bit;
– acronimo di Binary Yoked Transfer Element (elemento di
trasferimento di binari aggiogati).

Multipli binari (1)

210 = 1024 ≈ 1000 = 103 uno scarto del 2.4%!


Secondo il SI (basato su scala decimale), 1
kilobyte vale 1000 byte.
Poiché molto spesso in informatica ricorrono
multipli di potenze di due, è stato trovato
conveniente riferirsi a 1024 come 1 kilobyte
(KB).

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 3


Modulo 2— U.D. 2— Lez. 1

Multipli binari (2)

Lo scarto tra i multipli di 210 e di 103 cresce


esponenzialmente:
• Mega: 220 = 1 048 576 ≈ 1 000 000 = 106
uno scarto di circa 4.86%!
• Giga: 230 = 1 073 741 824 ≈ 1 000 000 000 = 109
uno scarto di circa 7.37%!
• Tera:
240 = 1 099 511 627 776 ≈ 1 000 000 000 000 = 1012
uno scarto di circa 9.95%!

Multipli binari (3)

Sono stati proposti i seguenti nomi per i multipli


binari:
Fatt. Nome Simb. Origine derivazione SI
210 kibi Ki kilobinary (210 )1 kilo (103 )1 = 103
220 mebi Mi megabinary (210 )2 mega (103 )2 = 106
230 gibi Gi gigabinary (210 )3 giga (103 )3 = 109
240 tebi Ti terabinary (210 )4 tera (103 )4 = 1012
250 pebi Pi petabinary (210 )5 peta (103 )5 = 1015
260 exbi Ei exabinary (210 )6 exa (103 )6 = 1018

Fonte: http://www.iec.ch/zone/si/si_bytes.htm

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 4


Modulo 2— U.D. 2— Lez. 1

In sintesi

I bit:
• sono gli elementi di informazione minimi;
• rappresentano due stati;
• possono essere aggregati per rappresentare più di
due stati.

I byte:
• sono l’aggregazione di 8 bit;
• sono la base per i multipli binari.

Prossimi passi

Come i bit si possono usare per rappresentare i


numeri:
• naturali;
• interi;
• razionali;
• reali.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 5


Modulo 2— U.D. 2— Lez. 1

Chiusura

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 6


Modulo 2— U.D. 2— Lez. 2

Lezione 2 - Codifica binaria di interi

Fondamenti di Informatica per la Sicurezza

Modulo 2 - Rappresentazione dell’informazione

Unità didattica 2 - Rappresentazione binaria

Stefano Ferrari

Università degli Studi di Milano - Ssri - CDL ONLINE

Citazione

Ci sono 10 tipi di persone,


chi capisce il binario
e chi no.
[Anonimo]

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 1


Modulo 2— U.D. 2— Lez. 2

Numeri naturali

È il tipo più naturale da rappresentare:


rappresentazione in notazione posizionale in
base due.

Esempio: (13)10 = (1101)2 → 00001101, usando un


byte.

Il primo bit viene chiamato bit più significativo


(Most Significant Bit, MSB).

L’ultimo bit viene chiamato bit meno significativo


(Least Significant Bit, LSB).

MSB 00001101 LSB

Numeri interi con segno

Con bit di segno (rappresentazione segno e


modulo):

0 0 0 +0 • il bit più significativo


0 0 1 +1 rappresenta il segno, gli altri
0 1 0 +2 bit rappresentano il modulo;
0 1 1 +3 • lo stesso numero (lo zero)
1 0 0 -0 viene rappresentato con due
1 0 1 -1 numerali differenti;
1 1 0 -2 • le operazioni aritmetiche sono
1 1 1 -3 macchinose.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 2


Modulo 2— U.D. 2— Lez. 2

Complemento a 2 (1)

Per rappresentare in complemento a 2 il numero


x usando una sequenza di n bit, si rappresenta in
binario (usando n + 1 bit) il numero 2n + x, e
scartando poi il bit più significativo.

Esempio
Usando 4 bit (n = 4):
compl. a 2
• 6 → 24 + 6 = (22)10 = (10110)2 −−−−−→ 0110
compl. a 2
• −6 → 24 − 6 = (10)10 = (01010)2 −−−−−→ 1010

−an · 2n + an−1 · 2n−1 + · · · + a1 · 21 + a0 · 20

Complemento a 2 (2)

0000
1111 0001
0
1110 -1 1 0010
-2 2
1101 0011
-3 3

1100 -4 4 0100

-5 5
1011 0101
-6 6
1010 -7 7 0110
-8
1001 0111
1000

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 3


Modulo 2— U.D. 2— Lez. 2

Complemento a 2 (3)

Con questa rappresentazione:


• lo zero ha rappresentazione unica;
• con n bit, si rappresentano i numeri interi
dell’intervallo [−2n−1 , 2n−1 − 1];
• i numeri negativi hanno il MSB che vale 1, gli altri 0
(di fatto, il MSB è il bit di segno);
• la somma si realizza considerando le sequenze di bit
come numeri binari;
• la sottrazione si realizza invertendo il valore del
sottraendo e poi sommandolo al minuendo in
notazione binaria.

In sintesi

Con due simboli possiamo rappresentare i


numeri:
• naturali;
• interi.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 4


Modulo 2— U.D. 2— Lez. 2

Prossimi passi

Vantaggi nell’uso della notazione in


complemento a 2.

Chiusura

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 5


Modulo 2— U.D. 2— Lez. 3

Lezione 3 - Complemento a 2

Fondamenti di Informatica per la Sicurezza

Modulo 2 - Rappresentazione dell’informazione

Unità didattica 2 - Rappresentazione binaria

Stefano Ferrari

Università degli Studi di Milano - Ssri - CDL ONLINE

Decodifica in complemento a due

0000 Decodifica:
1111 0001
1110 -1
0
1 0010
• se il primo simbolo è 0
-2 2 si considera
1101
-3 3
0011 semplicemente come
un numero binario;
1100 -4 4 0100
• se il primo simbolo è 1
-5 5
1011 0101 lo si decodifica in
-6 6
1010 0110
binario e ad esso si
-7 7
-8 sottrae il numero 2n .
1001 0111
1000
overflow

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 1


Modulo 2— U.D. 2— Lez. 3

Inversione in complemento a 2

0000 Inversione:
1111 0001
1110 -1
0
1 0010
• si invertono tutte le
-2 2 singole cifre binarie;
1101 0011
-3 3 • si somma 1.
1100 -4 4 0100

-5 5
1011 0101
-6 6
1010 -7 7 0110
-8
1001 0111
1000
overflow

Codifica in complemento a 2

0000 Codifica:
1111 0001
1110 -1
0
1 0010
• codifica del valore
-2 2 assoluto in notazione
1101
-3 3
0011 posizionale binaria;
1100 -4 4 0100 • se è negativo, lo si
inverte.
-5 5
1011 0101
-6 6
1010 -7 7 0110
-8
1001 0111
1000
overflow

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 2


Modulo 2— U.D. 2— Lez. 3

Operazioni algebriche in complemento a 2

0000 Somma:
1111 0001
1110 -1
0
1 0010
• normale somma
-2 2 binaria.
1101 0011
-3 3
Sottrazione:
1100 -4 4 0100
• si inverte il sottraendo;
-5 5
1011 0101 • lo si somma al
-6 6
1010 -7 7 0110
minuendo.
-8
1001 0111
1000
overflow

Overflow

L’overflow si manifesta quando si cerca di


rappresentare un numero troppo grande.

Esempio
Usiamo una rappresentazione in complemento a
2 a 4 bit per i numeri da -8 a 7.
Il risultato della somma 6+5 non è
rappresentabile.
Analoghe considerazioni per il risultato di -7-4.
Con la notazione in complemento a 2, l’overflow
si rileva facilmente.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 3


Modulo 2— U.D. 2— Lez. 3

Individuazione dell’overflow

0000 Overflow:
1111 0001
1110 -1
0
1 0010
• somma di valori con
-2 2 segno opposto e
1101
-3 3
0011 sottrazione di valori con
segni concordi non dà
1100 -4 4 0100
mai overflow;
-5 5
1011 0101 • negli altri casi, c’è stato
-6 6
1010 0110
overflow se il segno del
-7 7
-8 risultato è discorde con
1001 0111
1000
overflow
il segno del primo
operando.

Overflow in complemento a 2

Si verifica un overflow se:


C=A+B C=A-B
A B C A B C
+ + - + - -
- - + - + +

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 4


Modulo 2— U.D. 2— Lez. 3

In sintesi

La rappresentazione in complemento a 2
permette di:
• codificare e decodificare agevolmente i numeri;
• effettuare calcoli algebrici con lo stesso algoritmo;
• individuare le situazioni di overflow.

Prossimi passi

Esercizi sulla codifica in complemento a due.

Come i bit si possono usare per rappresentare:


• numeri razionali;
• numeri irrazionali.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 5


Modulo 2— U.D. 2— Lez. 3

Chiusura

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 6


Modulo 2— U.D. 2— Lez. 4

Lezione 4 - Esercizi sulla notazione in


complemento a 2

Fondamenti di Informatica per la Sicurezza

Modulo 2 - Rappresentazione dell’informazione

Unità didattica 2 - Rappresentazione binaria

Stefano Ferrari

Università degli Studi di Milano - Ssri - CDL ONLINE

Codifica (1)

D Codificare il numero 2 in complemento a 2 a 4 bit,


specificando se si verifica un overflow.
R Poiché 2 ≤ 24−1 − 1, non ci sarà overflow.
Numero da codificare: 24 + 2 = 18.
Codifica binaria troncata a 4 bit: 0010.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 1


Modulo 2— U.D. 2— Lez. 4

Codifica (2)

D Codificare il numero 10 in complemento a 2 a 3


bit, specificando se si verifica un overflow.
R Poiché 10 > 23−1 − 1, ci sarà overflow.
• Numero da codificare: 23 + 10 = 18
Codifica binaria troncata a 3 bit: 010

Codifica (3)

D Codificare il numero −13 in complemento a 2 a 3


bit, specificando se si verifica un overflow.
R Poiché −13 < 23−1 , ci sarà overflow.
Numero da codificare: 23 − 13 = −5.
Codifica binaria troncata a 3 bit del valore assoluto
(5): 101.
Inversione in complemento a 2: 011.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 2


Modulo 2— U.D. 2— Lez. 4

Decodifica (1)

D Quale numero è rappresentato dalla stringa


binaria 10111, codificata in complemento a due?
R (10111)2 = (23)10 .
Poiché la prima cifra binaria è 1, 10111 viene
decodificato come: 23 − 25 = −9.

Decodifica (2)

D Quale numero è rappresentato dalla stringa


binaria 01101, codificata in complemento a due?
R (01101)2 = (13)10 .
Poiché la prima cifra binaria è 0, 01101 viene
decodificato come 13.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 3


Modulo 2— U.D. 2— Lez. 4

Inversione (1)

D Quale stringa binaria è l’inverso in complemento a


due della stringa binaria 01101?
R Invertendo i bit di 01101, si ottiene 10010.
Sommando 1 a 10010, si ottiene 10011.
Troncando a 5 bit 10011, si ottiene 10011.

Inversione (2)

D Quale stringa binaria è l’inverso in complemento a


due della stringa binaria 00?
R Invertendo i bit di 00, si ottiene 11.
Sommando 1 a 11, si ottiene 100.
Troncando a 2 bit 100, si ottiene 00.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 4


Modulo 2— U.D. 2— Lez. 4

Somma (1)

D Date le stringhe binarie A = 0000 e B = 0011,


calcolare in complemento a due la loro somma,
specificando se si verifica un overflow.
R La somma binaria di 0000 e 0011, troncata a 4 bit
è 0011.
Poiché le due stringhe date hanno il primo bit
uguale, e uguale anche al primo bit del risultato,
non si è verificato un overflow.

Somma (2)

D Date le stringhe binarie A = 111101 e B = 100001,


calcolare in complemento a due la loro somma,
specificando se si verifica un overflow.
R La somma binaria di 111101 e 100001, troncata a 6
bit è 011110.
Poiché le due stringhe date hanno il primo bit
uguale, ma diverso dal primo bit del risultato, si è
verificato un overflow.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 5


Modulo 2— U.D. 2— Lez. 4

Sottrazione (1)

D Date le stringhe binarie A = 1011000 e B =


0101000, calcolare in complemento a due la loro
differenza, specificando se si verifica un overflow.
R Il complemento a 2 di 0101000 è 1011000.
La somma binaria di 1011000 e 1011000, troncata
a 7 bit è 0110000.
Poiché le due stringhe date hanno il primo bit
diverso, e il primo bit del risultato è uguale al
primo bit della seconda stringa, si è verificato un
overflow.

Sottrazione (2)

D Date le stringhe binarie A = 100011 e B = 110000,


calcolare in complemento a due la loro differenza,
specificando se si verifica un overflow.
R Il complemento a 2 di 110000 è 010000.
La somma binaria di 100011 e 010000, troncata a 6
bit è 110011.
Poiché le due stringhe date hanno il primo bit
uguale, non si è verificato un overflow.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 6


Modulo 2— U.D. 2— Lez. 4

Prossimi passi

Come i bit si possono usare per rappresentare:


• numeri razionali;
• numeri irrazionali.

Chiusura

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 7


Modulo 2— U.D. 2— Lez. 5

Lezione 5 - Codifica di numeri


razionali

Fondamenti di Informatica per la Sicurezza

Modulo 2 - Rappresentazione dell’informazione

Unità didattica 2 - Rappresentazione binaria

Stefano Ferrari

Università degli Studi di Milano - Ssri - CDL ONLINE

Numeri “con la virgola”

Per la rappresentazione dei numeri razionali e


reali ci sono due impedimenti:
• per via della notazione posizionale, alcuni numeri
non possono essere rappresentati con un numero
limitato di cifre (e.g., 13 in base 10);
• alcuni numeri reali (gli irrazionali) non possono
proprio essere rappresentati in nessuna base (e.g.,
π ).

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 1


Modulo 2— U.D. 2— Lez. 5

Numeri razionali

Per gli usi pratici, i numeri irrazionali possono


essere approssimati da un numero razionale:
• per esempio, 3.14 ≈ π .

Per rappresentare numeri razionali ci sono due


notazioni, dette:
• virgola fissa;
• virgola mobile.

Virgola fissa (1)

Data una sequenza di n bit, viene stabilito a


priori quanti di questi, m rappresenteranno la
parte intera, e quanti, k, la parte frazionaria.

m bit k bit
←−−− −−→ ←−−−−−→
a n−1 · · · ak . ak−1 · · · a0
←−−−−−−−−−−−−−−− →
n bit

Equivale a dividere per 2k .

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 2


Modulo 2— U.D. 2— Lez. 5

Virgola fissa (2)

Esempio:
(10.101)2 = 1 · 21 + 0 · 20 + 1 · 2−1 + 0 · 2−2 + 1 · 2−3 =
1 · 2 + 0 · 1 + 1 · 0.5 + 0 · 0.25 + 1 · 0.125 = 2.625
(10101)2 /23 = (1 · 24 + 0 · 23 + 1 · 22 + 0 · 21 + 1 · 20 =
1 · 16 + 0 · 8 + 1 · 4 + 0 · 2 + 1 · 1)/8 = 21/8 = 2.625

Virgola fissa (3)

In virgola fissa, la precisione assoluta è fissata:


1 0 3 0. 2 7 e 0 0 0 1. 0 9
hanno la stessa precisione: 1/100.
Per il primo numero, la precisione relativa è
1/105 , mentre per il secondo numero, la
precisione relativa è 1/102 .
1.091 e 1.094 sono indistinguibili: vengono
rappresentati con 1.09.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 3


Modulo 2— U.D. 2— Lez. 5

Virgola fissa (4)

Problema di underflow: può non essere possibile


rappresentare un numero piccolo.
Come si rappresenta 0.001?
0 0 0 0. 0 0 !

Virgola mobile (1)

Un numero razionale può essere rappresentato


nella forma: m · be , b è una base intera.

Esempio
32.1 può essere scritto come 0.321 · 102 .
m è detto mantissa, e è detto esponente.

In virgola mobile, un numero viene


rappresentato tramite la coppia
mantissa-esponente.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 4


Modulo 2— U.D. 2— Lez. 5

Virgola mobile (2)

In virgola mobile, la precisione relativa è fissata.


Il numero di bit dedicati a:
• m fissano la precisione relativa con cui il numero può
essere rappresentato;
• e fissano l’estensione dell’intervallo rappresentabile.

IEEE Standard 754 Floating Point Numbers:


• singola precisione: 32 bit (1 per il segno, 8 per

l’esponente e 23 per la mantissa);


• doppia precisione: 64 bit (1 per il segno, 11 per
l’esponente e 52 per la mantissa).

Fissa o mobile?

Con lo stesso budget di bit, possiamo


rappresentare lo stesso numero di valori.
Virgola fissa e mobile si differenziano per come i
valori vengono distribuiti sulla retta dei reali.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 5


Modulo 2— U.D. 2— Lez. 5

In sintesi

I numeri non interi possono essere rappresentati


mediante le notazioni:
• a virgola fissa;
• a virgola mobile.

Prossimi passi

Come i bit si possono usare per rappresentare


altre grandezze:
• insiemi non numerici;
• suoni;
• immagini;
• animazioni.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 6


Modulo 2— U.D. 2— Lez. 5

Chiusura

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 7


Modulo 2— U.D. 2— Lez. 6

Lezione 6 - Rappresentazione di
grandezze numerabili

Fondamenti di Informatica per la Sicurezza

Modulo 2 - Rappresentazione dell’informazione

Unità didattica 2 - Rappresentazione binaria

Stefano Ferrari

Università degli Studi di Milano - Ssri - CDL ONLINE

Citazione

Il computer è un genio che può soddisfare


qualsiasi desiderio.
Però bisogna specificare il desiderio
esattamente.
E in binario.
[Anonimo]

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 1


Modulo 2— U.D. 2— Lez. 6

Insiemi numerabili

n bit possono assumere 2n configurazioni.


Attraverso un’opportuna codifica, possiamo
rappresentare un insieme di 2n elementi.

Esempio: la codifica di caratteri:


• EBCDIC, 8 bit: era usato sui mainframe IBM;
• ASCII (American Standard Code for Information
Interchange), 7 bit + 1: adottata dall’ANSI
(American National Standards Institute);
• Unicode, 16 bit: “a unique number for every
character, no matter what the platform, no matter
what the program, no matter what the language”.

Tabella ASCII
0 1 2 3 4 5 6 7 8 9
0 NUL SOH STX ETX EOT ENQ ACK BEL BS HT
1 LF VT FF CR SO SI DLE DC1 DC2 DC3
2 DC4 NAK SYN ETB CAN EM SUB ESC FS GS
3 RS US SP ! " # $ % & ’
4 ( ) * + , - . / 0 1
5 2 3 4 5 6 7 8 9 : ;
6 < = > ? @ A B C D E
7 F G H I J K L M N O
8 P Q R S T U V W X Y
9 Z [ \ ] ^ _ ‘ a b c
10 d e f g h i j k l m
11 n o p q r s t u v w
12 x y z { | } ~ DEL

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 2


Modulo 2— U.D. 2— Lez. 6

Grandezze continue

È possibile approssimare numericamente una


grandezza continua tramite campionamento.
Campionare significa collezionare ad intervalli
regolari (di tempo o di spazio) i valori che la
grandezza assume (nel tempo o nello spazio).

Campionamento

In funzione delle caratteristiche del segnale,


esiste la lunghezza massima dell’intervallo di
campionamento per poter ricostruire fedelmente
il segnale.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 3


Modulo 2— U.D. 2— Lez. 6

Quantizzazione

L’elaborazione digitale del suono (e più in


generale dei segnali) richiede però di utilizzare
una codifica digitale del valore di ogni campione.
Questa operazione, chiamata quantizzazione,
comporta una distorsione del segnale.

In sintesi

Anche alcune grandezze non numeriche possono


essere descritte tramite i numeri.
Se possiamo descriverle tramite numeri,
possiamo anche descriverle in binario.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 4


Modulo 2— U.D. 2— Lez. 6

Prossimi passi

Codifica di grandezze continue.

Chiusura

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 5


Modulo 2— U.D. 2— Lez. 7

Lezione 7 - Rappresentazione di
grandezze continue

Fondamenti di Informatica per la Sicurezza

Modulo 2 - Rappresentazione dell’informazione

Unità didattica 2 - Rappresentazione binaria

Stefano Ferrari

Università degli Studi di Milano - Ssri - CDL ONLINE

Segnale audio (1)

Un suono può essere rappresentato come una


funzione continua: l’ampiezza dell’onda sonora
nel tempo.
Frequenza di campionamento:
• la voce umana deve essere campionata ad un ottavo
di millesimo di secondo;
• la musica deve essere campionata 44 100 volte al
secondo.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 1


Modulo 2— U.D. 2— Lez. 7

Segnale audio (2)

Una codifica del segnale sonoro deve quindi


decidere:
• il numero di canali (mono? stereo? effetto
surround?);
• frequenza di campionamento (quanti campioni per
ogni secondo?);
• i livelli di quantizzazione (quanti bit per ogni
campione?).

Segnale audio

Esempio 1
La codifica a 8 bit di un segnale stereo della
durata di 3 secondi, campionato a 16 kHz
richiede:
8 × 16 000 × 2 × 3 = 768 000 bit.

Esempio 2
Per i CD musicali viene utilizzata una codifica a
16 bit per canale e un campionamento a 44 100
Hz; per un’ora di registrazione servono:
16 × 44 100 × 2 × 3600 = 5 080 320 000 bit.
Circa 606 MiB.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 2


Modulo 2— U.D. 2— Lez. 7

Codifiche audio particolari

Per ottenere una codifica meno voluminosa, lo


standard MP3 sfrutta:
• la ridondanza del segnale audio;
• le particolarità del nostro sistema uditivo.

Il MIDI (Musical Instrument Digital Interface):


• codifica lo strumento, la nota e la sua durata;
• è l’analogo di uno spartito musicale.

Codifica di immagini

Le tecniche per descrivere un’immagine digitale


sono di due tipi:
• bitmap;
• vettoriali.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 3


Modulo 2— U.D. 2— Lez. 7

Bitmap (1)

Una immagine digitale bitmap è descritta da una


matrice di pixel (contrazione di picture element).
Ogni pixel può assumere un singolo colore.
Quindi:
• il numero di righe e di colonne determina la
risoluzione spaziale dell’immagine;
• il numero di colori che il pixel può assumere
determina la risoluzione cromatica.

Bitmap (2)

Una bitmap può essere:


• in bianco e nero:
– ogni pixel è codificato da 1 bit.
• a toni di grigio:
– il pixel può assumere diversi livelli intermedi tra il bianco e il
nero;
– un’immagine a 16 livelli di grigio richiede 4 bit per pixel.
• a colori:
– il colore può essere scomposto in termini di componente
rossa, verde e blu (rappresentazione RGB — Red, Green,
Blue);
– utilizzando tre canali è possibile rappresentare il colore.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 4


Modulo 2— U.D. 2— Lez. 7

Codifiche video particolari

Una rappresentazione più compatta può essere


ottenuta sfruttando:
• la ridondanza del segnale;

• le caratteristiche del sistema percettivo.


Queste tecniche sono utilizzate nelle codifiche
più diffuse, quali GIF, PNG e JPEG.

Sono molto utilizzate anche le codifiche a palette


(tavolozza):
• insieme alla bitmap viene codificata una tabella dei

colori usati;
• gli elementi della bitmap non contengono un colore,
ma solo un riferimento ad un colore della tavolozza.

Immagini vettoriali

Una descrizione vettoriale indica:


• una collezione di elementi grafici:
– per esempio, un cerchio o un rettangolo;
• loro caratteristiche:
– per esempio, il tipo di tratto, il colore del bordo o dell’interno.
I formati vettoriali:
• sono l’analogo del formato MIDI;

• sono molto usati nei sistemi CAD e nella grafica;


• si prestano a subire trasformazioni geometriche
senza degradare l’immagine descritta;
• permettono la visualizzazione alla risoluzione dei
dispositivi.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 5


Modulo 2— U.D. 2— Lez. 7

Animazioni

Una animazione può essere ottenuta tramite una


successione di immagini.
Ogni singola immagine viene detta frame.
Il frame-rate è il numero di immagini per
secondo che vengono rappresentate.
Il numero di bit sufficiente per una animazione è
quindi pari a:
numero di bit per frame × frame-rate × durata

In realtà, il numero di bit può essere


ampiamente ridotto sfruttando la ridondanza
dovuta alla somiglianza tra frame consecutivi.

In sintesi

Anche alcune grandezze non numeriche possono


essere descritte tramite i numeri.
Se possiamo descriverle tramite numeri,
possiamo anche descriverle in binario.
Se restringiamo il dominio di utilizzo, possiamo
affinare la codifica.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 6


Modulo 2— U.D. 2— Lez. 7

Prossimi passi

Tecniche per il calcolo dei bit necessari per la


codifica di grandezze numeriche e non
numeriche.

Chiusura

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 7


Modulo 2— U.D. 3— Lez. 1

Lezione 1 - Permutazioni e
disposizioni

Fondamenti di Informatica per la Sicurezza

Modulo 2 - Rappresentazione dell’informazione

Unità didattica 3 - Calcolo del numero di bit

Stefano Ferrari

Università degli Studi di Milano - Ssri - CDL ONLINE

Codifica e numero di bit necessari

La codifica è una scelta arbitraria basata su una


convenzione che chi usa la codifica deve
necessariamente conoscere.
Una codifica può essere considerata buona se
facilita:
• l’elaborazione nella quale la si vuole utilizzare;

• le operazioni di codifica e decodifica.


Per stabilire quanti bit sono necessari, bisogna
conoscere il numero di configurazioni che la
codifica deve rappresentare.
Qualche nozione di calcolo combinatorio è
indispensabile.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 1


Modulo 2— U.D. 3— Lez. 1

Regola del prodotto

Una regola generale:


se una cosa può essere realizzata in n modi e per
ciascuna di queste realizzazioni una seconda cosa
può essere realizzata in m modi, allora il numero di
realizzazioni possibili è n × m.
Esempio
Una signora ha cinque cappellini, due borsette,
sei paia di scarpe e dodici vestiti.
In quanti modi diversi può abbigliarsi?
Per quanto detto sopra, la signora avrà:
5 × 2 × 6 × 12 = 720
possibilità di scelta.

Permutazioni (1)

Si chiamano permutazioni di n elementi distinti


(n ∈ N, n > 0), tutti i raggruppamenti diversi che
si possono formare con gli elementi dati,
rispettando le seguenti proprietà:

1. ciascun raggruppamento contiene n elementi;


2. uno stesso elemento non può figurare più volte in
un raggruppamento;
3. due raggruppamenti sono tra loro distinti se
differiscono per l’ordine con cui sono disposti gli
elementi.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 2


Modulo 2— U.D. 3— Lez. 1

Permutazioni (2)

n elementi danno luogo a n! permutazioni:


P (n) = n!

L’operatore indicato con il simbolo ! si chiama


fattoriale e assume la seguente forma:
(
1 n=0
n! = Qn
1 · 2 · . . . · (n − 1) · n = i=1 i n ≥ 1

Esercizio 1 (1)

Sei atleti partecipano ad una gara di corsa.


• Quante possono essere le classifiche finali della gara?
– Poiché la classifica finale non sarà altro che una
permutazione della lista dei partecipanti, ci sono
P (6) = 6! = 720 ordini di arrivo possibili.
• Quanti bit servono per codificare l’ordine di arrivo?
– Per codificare in binario 720 configurazioni possibili, servono
almeno dlog2 720e = 10 bit.

Questo ragionamento fornisce il minimo numero


di bit da utilizzare, ma non dice come effettuare
la codifica.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 3


Modulo 2— U.D. 3— Lez. 1

Esercizio 1 (2)

Si può immaginare una codifica del genere:


• ogni atleta è descritto dal suo pettorale (i numeri da

1 a 6);
• l’ordine di arrivo è rappresentato da una sequenza di
sei numeri di pettorale.
In tal caso:
• ogni atleta necessita di 3 bit (dlog 6e = 3);
2

• la codifica della classifica richiede 6 × 3 = 18 bit.


La codifica scelta non sarebbe quella di ingombro
minimo (10 bit), ma sarebbe semplice da
costruire e utilizzare.

Disposizioni (1)

Si dice disposizione semplice di n elementi


distinti su k posizioni (n, k ∈ N, 0 < k ≤ n) una
collezione di k degli n elementi che rispetti le
seguenti proprietà:

1. ciascun raggruppamento contiene k elementi;


2. uno stesso elemento può figurare al più una volta in
un raggruppamento;
3. due raggruppamenti sono da considerarsi distinti
quando essi differiscono per almeno un elemento, o
per l’ordine degli elementi.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 4


Modulo 2— U.D. 3— Lez. 1

Disposizioni (2)

Le disposizioni semplici di n elementi presi k per


n!
volta sono in totale (n−k)! :
n!
D(n, k) = (n−k)!
= n · (n − 1) · . . . · (n − k + 1)

Esercizio 2

Sei atleti partecipano ad una gara di corsa.


• In quanti modi diversi si può verificare la tripletta di

atleti che arriva sul podio?


– La classifica dei primi 3 arrivati è una disposizione di 6
elementi su 3 posti: ci possono essere D(6, 3) = 6 · 5 · 4 =
= 120 configurazioni diverse di atleti sul podio.
• Quanti bit servono per codificare il podio?
– Per rappresentare 120 configurazioni diverse servono
dlog2 120e = 7 bit.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 5


Modulo 2— U.D. 3— Lez. 1

In sintesi

Per calcolare il numero di bit necessario per


descrivere una situazione dobbiamo conoscere il
numero di configurazioni possibili.

Il calcolo combinatorio permette di modellare la


maggior parte delle situazioni reali mediante:
• permutazioni;
• disposizioni.

Prossimi passi

Altri casi di calcolo combinatorio:


• disposizioni con ripetizione;
• combinazioni;
• combinazioni con ripetizione.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 6


Modulo 2— U.D. 3— Lez. 1

Chiusura

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 7


Modulo 2— U.D. 3— Lez. 2

Lezione 2 - Altri elementi di calcolo


combinatorio

Fondamenti di Informatica per la Sicurezza

Modulo 2 - Rappresentazione dell’informazione

Unità didattica 3 - Calcolo del numero di bit

Stefano Ferrari

Università degli Studi di Milano - Ssri - CDL ONLINE

Disposizioni con ripetizione (1)

Si dice disposizione con ripetizione (o


reimmissione) di n elementi distinti su k
posizioni (n, k ∈ N, n > 0, k > 0) una collezione di
k degli n elementi che rispetti le seguenti
proprietà:

1. ciascun raggruppamento contiene k elementi;


2. due qualsiasi raggruppamenti sono da considerarsi
distinti quando essi differiscono per almeno un
elemento, o per l’ordine degli elementi.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 1


Modulo 2— U.D. 3— Lez. 2

Disposizioni con ripetizione (2)

Rispetto ad una disposizione semplice, quindi, in


una disposizione con ripetizione ogni elemento
può essere ripetuto.

Le disposizioni con ripetizione di n su k saranno:


Dr (n, k) = nk

Esercizio 3

Sei atleti sono impegnati in una gara di triathlon.


• Quante terne dei vincitori in ogni singola gara si
possono verificare?
– Poiché ogni atleta può vincere più di una gara, il numero
cercato sono le disposizioni con ripetizione di sei elementi su
tre posizioni: Dr (6, 3) = 63 = 216.
• Quanti bit servono per codificare tale tripletta?
– Per codificare tale classifica, serviranno almeno
dlog2 216e = 8 bit.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 2


Modulo 2— U.D. 3— Lez. 2

Combinazioni (1)

Si dice combinazione semplice di n elementi


distinti su k posizioni (n, k ∈ N, 0 < k ≤ n) una
collezione di k degli n elementi che rispetti le
seguenti proprietà:

1. ciascun raggruppamento contiene k elementi;


2. uno stesso elemento può figurare al più una volta in
un raggruppamento;
3. due raggruppamenti sono da considerarsi diversi
soltanto quando differiscono tra loro almeno per un
elemento.

Combinazioni (2)

L’ordine degli elementi non ha importanza in una


combinazione.
Le combinazioni semplici di n elementi su k posti
sono:
D(n,k) n·(n−1)· ··· (n−k+1)
C(n, k) = P (k)
= k!
n!
La quantità (n−k)! k!
è il coefficiente binomiale di n
su k, e viene indicato con:
n

k

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 3


Modulo 2— U.D. 3— Lez. 2

Esercizio 4

Un negozio ha in vetrina lo spazio per esporre


solo tre manichini ed un campionario di sette
modelli di giacca.
• Volendo mettere una giacca diversa su ogni
manichino, quante vetrine può comporre?
– Si tratta di calcolare le combinazioni semplici di 7 elementi
su 3 posti: C(7, 3) = 7·6·5
3·2
= 7 · 5 = 35.
• Quanti bit servono per codificare tale composizione?
– Sono necessari dlog2 35e = 6 bit.

Combinazioni con ripetizione (1)

Si dice combinazione con ripetizione (o con


reimmissione) di n elementi distinti su k
(n, k ∈ N, n > 0, k > 0) posizioni una collezione di
k degli n elementi che rispetti le seguenti
proprietà:

1. ciascun raggruppamento contiene k elementi;


2. due raggruppamenti sono da considerarsi diversi
soltanto quando differiscono tra loro almeno per un
elemento.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 4


Modulo 2— U.D. 3— Lez. 2

Combinazioni con ripetizione (2)

Uno stesso elemento può quindi comparire più di


una volta.
Le combinazioni con ripetizione di n elementi su
k posti sono:
n+k−1

Cr (n, k) = C(n + k − 1, k) = k

Esercizio 5

Un negozio ha in vetrina lo spazio per esporre


solo tre manichini ed un campionario di sette
modelli di giacca.
• Quante vetrine potrebbe comporre, se ritenesse
accettabile avere più copie della stessa giacca in
vetrina?
– In questo caso, si tratta di calcolare le combinazioni con
ripetizione di 7 elementi su 3 posti:
Cr (7, 3) = C(9, 3) = 9·8·7
3·2
= 3 · 4 · 7 = 84.
• Quanti bit servono per codificare tale composizione?
– Sono necessari dlog2 84e = 7 bit.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 5


Modulo 2— U.D. 3— Lez. 2

Riassumendo

Le permutazioni dicono in quanti modi possiamo


scrivere la sequenza degli elementi di un insieme
dato.
Le disposizioni e le combinazioni dicono in quanti
modi si possono scrivere sequenze di
sottoinsiemi di cardinalità data.
La differenza tra combinazioni e disposizioni è
che queste ultime tengono in considerazione
anche l’ordine degli elementi.

In sintesi

Per calcolare il numero di bit necessario per


descrivere una situazione dobbiamo conoscere il
numero di configurazioni possibili.
Il calcolo combinatorio permette di modellare la
maggior parte delle situazioni reali mediante:
• permutazioni;
• disposizioni (con ripetizione);
• combinazioni (con ripetizione).

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 6


Modulo 2— U.D. 3— Lez. 2

Prossimi passi

Un po’ di esercizi sulla codifica binaria.

Chiusura

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 7


Modulo 2— U.D. 3— Lez. 3

Lezione 3 - Esercizi sulla codifica


binaria (parte 1)

Fondamenti di Informatica per la Sicurezza

Modulo 2 - Rappresentazione dell’informazione

Unità didattica 3 - Calcolo del numero di bit

Stefano Ferrari

Università degli Studi di Milano - Ssri - CDL ONLINE

Contare con le dita

D Fino a quanto si può contare usando solo le dita di


due mani?
R Ipotizzando che ogni dito possa assumere solo
due posizioni (disteso o chiuso):
– si hanno 10 elementi indipendenti;
– ogni elemento può assumere due configurazioni;
– il numero di configurazioni totali è 210 = 1024.
Si può quindi contare da 1 a 1024 (o da 0 a
1023!).

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 1


Modulo 2— U.D. 3— Lez. 3

Colori

D Quanti colori possono essere rappresentati in una


codifica RGB a 1 byte per canale?
R Ognuno dei canali (R, G e B) ha a disposizione 8
bit.
In totale, dunque, 8 × 3 = 24 bit.
Sono quindi rappresentabili 224 = 16 777 216
colori.
La codifica a 24 bit è chiamata comunemente “a
16 milioni di colori”.

Dimensione di una immagine digitale

D Quanti bit servono per rappresentare un’immagine


1024 × 768 a colori, 8 bit per canale colore?
R I pixel sono 1024 × 768 = 786 432.
Ogni pixel è rappresentato da 3 colori (rosso,
verde e blu) e ogni colore occupa 8 bit.
Una immagine così fatta, occupa quindi:
786 432 × 3 × 8 = 18 874 368 bit.
Essi equivalgono a 18 874 368/8 = 2 359 296 byte.
Cioè 2 359 296/1024 = 2304 kiB (kibibyte).
O 2304/1024 = 2, 25 MiB (mebibyte).

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 2


Modulo 2— U.D. 3— Lez. 3

Codifica per le carte da briscola

D Quale può essere una buona codifica per le carte


di un mazzo da briscola?
R Poiché il mazzo di carte da briscola è composto da
40 carte, si dovranno utilizzare 6 bit:
– 5 ≤ log2 40 ≤ 6;
– 5 bit sarebbero troppo pochi.
Uno dei modi di ottenere una codifica è individuare
una enumerazione degli elementi dell’insieme da
rappresentare e poi tradurre in binario tali valori.

Enumerazione per le carte da briscola

Per esempio, poiché il mazzo di carte da briscola


è composto 10 carte per ognuno dei 4 semi, si
può scegliere:
seme carte ordine codifica
bastoni asso, 2–7, fante, cavallo, re 0–9 000000–001001
coppe asso, 2–7, fante, cavallo, re 10–19 001010–010011
denari asso, 2–7, fante, cavallo, re 20–29 010100–011101
spade asso, 2–7, fante, cavallo, re 30–39 011110–100111

L’enumerazione proposta sarebbe una buona


codifica in decimale: la prima cifra rappresenta il
seme (0–3) e la seconda il valore (0–9).

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 3


Modulo 2— U.D. 3— Lez. 3

Codifica per le carte da briscola

Una codifica migliore può essere ottenuta


utilizzando le prime due cifre binarie per
rappresentare il seme, e le rimanenti per il
valore:
seme carte codifica
bastoni asso, 2–7, fante, cavallo, re 00 0000 – 00 1001
coppe asso, 2–7, fante, cavallo, re 01 0000 – 01 1001
denari asso, 2–7, fante, cavallo, re 10 0000 – 10 1001
spade asso, 2–7, fante, cavallo, re 11 0000 – 11 1001

Il vantaggio di questa codifica rispetto alla


precedente è la facilità di codifica/decodifica.

Riassumendo ...

Una carta è caratterizzata da seme e valore.


Ogni seme può assumere 4 configurazioni,
mentre ogni valore può assumere 10
configurazioni.
oggetto #config. #bit
seme 4 2
valore 10 4
carta 4 × 10 = 40 6
La codifica “seme+valore” usa lo stesso numero
di bit della codifica “carta”, ma non è una regola
generale.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 4


Modulo 2— U.D. 3— Lez. 3

Codifica per le automobili

Un’auto è prodotta in 3 motorizzazioni e 10


colori.
Quanti bit sono necessari per descrivere un
modello di questa automobile?
oggetto #config. #bit
motore 3 2
colore 10 4
automobile 3 × 10 = 30 5
In questo caso, la codifica “motore+colore” è più
ingombrante della codifica “automobile”.

Regola generale

Sebbene:

logb mn = logb m + logb n


In generale:

dlogb mne ≤ dlogb me + dlogb ne

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 5


Modulo 2— U.D. 3— Lez. 3

Prossimi passi

Ancora esercizi sulla codifica binaria.

Chiusura

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 6


Modulo 2— U.D. 3— Lez. 4

Lezione 4 - Esercizi sulla codifica


binaria (parte 2)

Fondamenti di Informatica per la Sicurezza

Modulo 2 - Rappresentazione dell’informazione

Unità didattica 3 - Calcolo del numero di bit

Stefano Ferrari

Università degli Studi di Milano - Ssri - CDL ONLINE

Una mano a briscola

D Quanti bit servono per codificare una mano di


briscola?
R Una mano di briscola è composta da tre carte
(diverse tra loro) prese da un mazzo di carte.
Una mano di briscola è quindi equivalente ad una
combinazione di quaranta oggetti su tre posizioni.

Poiché C(40, 3) = 37!·3!


40!
= 40·39·38
3·2
= 9880,
serviranno dlog2 9880e = 14 bit.
Nota: ripetere tre volte la codifica della singola
carta richiede 18 bit.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 1


Modulo 2— U.D. 3— Lez. 4

Rappresentare elementi e insiemi (1)

D Gli oggetti sotto riportati sono elementi delle


comuni interfacce grafiche. Come rappresentare in
binario gli stati di tali oggetti?

# Qui 4 Qui
Quo 2 Quo
# Qua 4 Qua
Radio button Check box

R I radio button permettono di selezionare uno solo


degli n elementi della lista, mentre le check box
consentono di selezionare un sottoinsieme degli n
elementi della lista.

Rappresentare elementi e insiemi (2)

Quante configurazioni diverse può assume un gruppo


di n radio button?
Solo una voce può essere attiva.
Quindi, il numero di configurazioni sarà pari a n.
Pertanto, saranno necessari dlog2 ne bit.
Nel caso in esame, useremo 2 bit per i radio button.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 2


Modulo 2— U.D. 3— Lez. 4

Rappresentare elementi e insiemi (3)

Lo stato di un gruppo di check box equivale ad un


sottoinsieme delle voci.
Il numero di sottoinsiemi di un insieme di n elementi
è 2n .
È necessario dedicare un bit per ogni voce per
indicare se essa è attiva o no.
Pertanto, saranno necessari n bit.
Nel caso in esame, useremo 3 bit per i check box.

Rappresentare elementi e insiemi (4)

Enumeriamo le voci come di seguito riportato:


# Qui 0 4 Qui
Quo 1 2 Quo
# Qua 2 4 Qua

Possiamo individuare le seguenti codifiche:


Radio button: la posizione della voce attiva (1) si
può codificare con la stringa binaria 01;
Check box: ponendo ad 1 i bit corrispondenti alle
voci attive ed a 0 gli altri:
posizione 210
valore 101

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 3


Modulo 2— U.D. 3— Lez. 4

Gelateria (1)

Una gelateria dispone di 12 gusti di gelato, 5


guarnizioni e 2 contenitori.
I gelati che vende sono sempre composti da un
contenitore, 3 gusti e 2 guarnizioni.
I contenitori sono divisi in tre scomparti asimmetrici.
Le guarnizioni vengono distribuite uniformemente sul
gelato.
Calcolare i bit necessari per codificare:
a) i singoli elementi (gusti, guarnizioni, contenitori);
b) un gelato.

Gelateria (2)

a) Codifica dei singoli elementi (gusti, guarnizioni,


contenitori):
• 12 gusti → dlog 12e = 4 bit;
2

• 5 guarnizioni → dlog2 5e = 3 bit;


• 2 contenitori → dlog2 2e = 1 bit.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 4


Modulo 2— U.D. 3— Lez. 4

Gelateria (3)

b) Codifica del gelato (3 gusti, 2 guarnizioni, 1


contenitore).
I gusti possono essere ripetuti e l’ordine è
importante:
Dr (12, 3) = 123 configurazioni.
Anche le guarnizioni possono essere ripetute, ma
non importa l’ordine:
Cr (5, 2) = C(6, 2) = 15 configurazioni.
Il contenitore può essere solo uno:
2 configurazioni.
Perciò si possono avere 123 · 15 · 2 possibili gelati.

Gelateria (4)

b) Codifica del gelato (3 gusti, 2 guarnizioni, 1


contenitore).
Con qualche passaggio matematico:
123 · 15 · 2 = 27 · 33 · 15 = 27 · 405
Serviranno quindi:
dlog2 27 · 405e = dlog2 27 + log2 405e
=d7 + log2 405e = 7 + dlog2 405e = 7 + 9 = 16 bit.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 5


Modulo 2— U.D. 3— Lez. 4

Prossimi passi

Una formalizzazione del concetto di


informazione.

Chiusura

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 6


Modulo 2— U.D. 4— Lez. 1

Lezione 1 - Natura dell’informazione

Fondamenti di Informatica per la Sicurezza

Modulo 2 - Rappresentazione dell’informazione

Unità didattica 4 - Teoria dell’Informazione

Stefano Ferrari

Università degli Studi di Milano - Ssri - CDL ONLINE

Informazione

Il termine “informazione” è usato in molti


contesti e con molte accezioni.
Portano informazione:
• una certa distribuzione di gocce di inchiostro su un
foglio;
• una certa sequenza di lettere dell’alfabeto;
• una certa sequenza di parole della lingua italiana.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 1


Modulo 2— U.D. 4— Lez. 1

Informazione

Si individuano diversi livelli di informazione:


• sintattico:
– l’informazione sintattica è legata alle configurazioni del
supporto fisico;
• semantico:
– l’informazione semantica è legata al significato attribuibile
alle diverse configurazioni del supporto fisico;
• pragmatico:
– l’informazione pragmatica è legata al valore attribuibile alle
diverse configurazioni del supporto fisico.

Teoria dell’informazione

La branca dell’informatica nota come


teoria dell’informazione
studia l’informazione di tipo sintattico.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 2


Modulo 2— U.D. 4— Lez. 1

Misura dell’informazione (1)

Qual’è la natura dell’informazione?

Come si può misurare l’informazione?

Per rispondere a queste domande proviamo ad


analizzare alcuni casi.

Misura dell’informazione (2)

Poniamo il caso di dover comunicare se un


determinato evento è accaduto oppure no.
Consideriamo le seguenti modalità per
comunicare l’evento:
1. organizziamo un falò da qualche decina di metri
cubi di legna;
2. accendiamo un cerino.

Quale modalità trasferisce più informazione?

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 3


Modulo 2— U.D. 4— Lez. 1

Misura dell’informazione (3)

La risposta è chiara: sia chi vede il cerino, sia chi


vede il falò hanno la stessa informazione.
Quindi, si può trarre una prima conclusione:

la quantità di informazione dipende dall’evento,


non dal mezzo di comunicazione!

Misura dell’informazione (4)

Consideriamo ora le seguenti domande:


a) Quanti sono i sette nani?
b) Quale lato della moneta che ho appena lanciato è
uscito?
Quale risposta fornisce più informazione?

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 4


Modulo 2— U.D. 4— Lez. 1

Misura dell’informazione (5)

La risposta alla domanda a) è conosciuta.

La risposta alla domanda b), magari non è


interessante, ma toglie un dubbio.

Possiamo trarre una seconda conclusione:

l’informazione è legata all’incertezza.

In sintesi

L’informazione:
• è di diversi tipi;
• è legata all’incertezza.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 5


Modulo 2— U.D. 4— Lez. 1

Prossimi passi

Una formalizzazione del concetto di


informazione.

Chiusura

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 6


Modulo 2— U.D. 4— Lez. 2

Lezione 2 - Elementi di teoria


dell’Informazione

Fondamenti di Informatica per la Sicurezza

Modulo 2 - Rappresentazione dell’informazione

Unità didattica 4 - Teoria dell’Informazione

Stefano Ferrari

Università degli Studi di Milano - Ssri - CDL ONLINE

Misura dell’informazione

Ipotizziamo un messaggio che contenga un


simbolo x scelto da un insieme
X = {xi | 1 ≤ i ≤ n} di n simboli (detto alfabeto).

Attraverso una funzione I(·), vorremmo misurare


l’informazione contenuta nel messaggio, I(x).

Quali proprietà deve avere la funzione I(·)?

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 1


Modulo 2— U.D. 4— Lez. 2

Proprietà dell’informazione (1)

L’informazione portata da una sequenza di


simboli deve essere la somma dell’informazione
portata dai singoli simboli che compongono la
sequenza stessa:

I(xi xj ) = I(xi ) + I(xj )

Proprietà dell’informazione (2)

Se il simbolo xi è meno frequente (o meno


probabile) del simbolo xj , l’informazione portata
da xi deve essere maggiore dell’informazione
portata da xj :

p(xi ) ≤ p(xj ) ⇒ I(xi ) ≥ I(xj )

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 2


Modulo 2— U.D. 4— Lez. 2

Proprietà dell’informazione (3)

Se due simboli sono equiprobabili, l’informazione


da essi portata deve essere la stessa:

p(xi ) = p(xj ) ⇒ I(xi ) = I(xj )

Proprietà dell’informazione (4)

Se è certo che un dato simbolo apparirà sul


messaggio, allora l’informazione portata dal
messaggio è nulla:

p(xi ) = 1 ⇒ I(xi ) = 0

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 3


Modulo 2— U.D. 4— Lez. 2

Proprietà dell’informazione (5)

Meno probabile è un simbolo, maggiore è


l’informazione da esso portata:

p(xi ) → 0 ⇒ I(xi ) → ∞

Funzione informazione

Una funzione che gode delle precedenti proprietà


è:
(
− log2 p(x) p(x) > 0
I(x) =
0 p(x) = 0

Questa funzione ha il vantaggio di valere 1 se


l’insieme di simboli portabili dal messaggio è
costituito da soli due simboli equiprobabili.
In tal caso, ogni messaggio porta 1 bit!

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 4


Modulo 2— U.D. 4— Lez. 2

Bit e informazione (1)

A questo punto ci sono due significati per il


termine bit:
• unità di misura della capacità (o dell’ingombro) di
una rappresentazione binaria;
• unità di misura dell’informazione.

Bit e informazione (2)

Per codificare 256 simboli equiprobabili, si usano


8 cifre binarie.

Ogni cifra binaria porta 1 bit di informazione.

Se i simboli non fossero equiprobabili, alcune


cifre potrebbero portare (in media) più di 1 bit, e
altre meno di 1 bit.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 5


Modulo 2— U.D. 4— Lez. 2

Indovinare un numero (1)

Esempio

Regole del gioco “Indovina il numero”:


1. una persona pensa un numero tra 1 e 128;
2. per scoprire tale numero gli si possono fare delle
domande;
3. a tali domande, la persona può rispondere solo “Sì”
o “No”.

Qual è il numero minimo di domande necessarie


per indovinare il numero nascosto?

Indovinare un numero (2)

Risposta: 7.

Traccia:
• la conoscenza del numero porta 7 bit di

informazione;
• con ogni domanda possiamo ottenere 1 bit di
informazione.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 6


Modulo 2— U.D. 4— Lez. 2

Approfondimento

Sciuto ed altri, "Introduzione ai sistemi


Informatici", McGraw Hill, 1997, seconda
edizione: capitolo 3, (pagg. 63–107).
• stessi argomenti del Modulo 2, trattati in ordine
inverso;
• cenni di teoria della trasmissione.

In sintesi

L’informazione:
• è legata all’incertezza;
• si misura in bit.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 7


Modulo 2— U.D. 4— Lez. 2

Chiusura

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 8


Modulo 3— U.D. 1— Lez. 1

Lezione 1 - Cenni di insiemistica

Fondamenti di Informatica per la Sicurezza

Modulo 3 - Elaborazione delle informazioni

Unità didattica 1 - Insiemistica

Stefano Ferrari

Università degli Studi di Milano - Ssri - CDL ONLINE

Teoria degli insiemi

Insieme: collezione arbitraria di elementi reali e


immaginari.

Esempi:
• {1, 2, 4, 7} descrizione intensionale
• {x | x ≤ 5} descrizione estensionale

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 1


Modulo 3— U.D. 1— Lez. 1

Descrizione grafica di un insieme

4 1 2
7 diagrammi di Venn

5
grafi cartesiani

Insiemi particolari

L’insieme universo, U , contiene ogni elemento.

L’insieme vuoto, ∅ = {}, non contiene alcun


elemento.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 2


Modulo 3— U.D. 1— Lez. 1

Insieme universo

L’insieme universo deve essere definito all’inizio


di ogni trattazione.

Esempio:

A = {numeri minori di 3}
• U ≡N ⇒ A1 = {numeri naturali minori di 3}
• U ≡Z ⇒ A2 = {numeri interi minori di 3}
• U ≡R ⇒ A3 = {numeri reali minori di 3}

Operatori (1)

L’appartenenza, ∈, indica A
che un elemento appartiene
ad un dato insieme: a
a∈A

A B
L’unione, ∪, compone due
insiemi considerando gli
elementi di entrambi:
A∪B

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 3


Modulo 3— U.D. 1— Lez. 1

Operatori (2)

A B
L’intersezione, ∩, compone
due insiemi considerando
solo gli elementi comuni:
A∩B

Il complemento, · , è A
l’insieme composto da tutti
gli elementi che non
appartengono all’insieme
dato:
A

Operatori (3)

La differenza, −, compone A B
due insiemi considerando gli
elementi del primo che non
appartengono al secondo:
A−B

Il sottoinsieme, ⊆, indica B
che ogni elemento del primo
insieme appartiene anche al A
secondo:
A⊆B

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 4


Modulo 3— U.D. 1— Lez. 1

Operatori (4)

La cardinalità, | · | di un insieme è il numero dei suoi


elementi:
|A|
Esempio:
– se A = {a, b, c}, allora |A| = 3
– |∅| = 0

Operatori (5)

L’insieme delle parti di un dato insieme, P(·), è


l’insieme dei suoi sottoinsiemi:
P(A)
Esempio:
– se A = {a, b, c}, allora
P(A) = {∅, {a}, {b}, {c}, {a, b}, {a, c}, {b, c}, A}

L’insieme delle parti di A ha cardinalità pari a 2|A| .


Per questo motivo viene anche chiamato insieme
potenza e viene indicato con 2A .

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 5


Modulo 3— U.D. 1— Lez. 1

Proprietà degli operatori (1)

• Idempotenza
A∪A=A
A∩A=A
• Commutatività
A∩B =B∩A
A∪B =B∪A
• Associatività
A ∩ (B ∩ C) = (A ∩ B) ∩ C
A ∪ (B ∪ C) = (A ∪ B) ∪ C

Proprietà degli operatori (2)

• Distributività
A ∩ (B ∪ C) = (A ∩ B) ∪ (A ∩ C)
A ∪ (B ∩ C) = (A ∪ B) ∩ (A ∪ C)
• Assorbimento
A ∩ (A ∪ B) = A
A ∪ (A ∩ B) = A
• Doppio complemento
A=A
• Leggi di De Morgan
A∩B =A∪B
A∪B =A∩B

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 6


Modulo 3— U.D. 1— Lez. 1

Descrizione ricorsiva di un insieme

Anche detta induttiva.

Esempio:
A = {x | x = 1 o x = 2 + y, y ∈ A}

Servono:
• elementi base;
• operazioni per individuare i nuovi elementi in base ad
alcuni elementi che già appartengono all’insieme.

L’insieme descritto è dato dalla chiusura


dell’insieme base rispetto alle operazioni della
regola ricorsiva.

Insiemi, bag e sequenze

Insieme {1, 2, 3} ≡ {1, 3, 2} ≡ {1, 3, 2, 3}

Bag {1, 2, 3} ≡ {1, 3, 2} 6≡ {1, 3, 2, 3}

Sequenza h1, 2, 3i 6≡ h1, 3, 2i 6≡ h1, 3, 2, 3i

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 7


Modulo 3— U.D. 1— Lez. 1

In sintesi

L’insiemistica è alla base della formalizzazione


della matematica moderna.

Vanno ricordati i seguenti concetti:


• operatori insiemistici;
• loro proprietà.

Chiusura

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 8


Modulo 3— U.D. 1— Lez. 2

Lezione 2 - Funzioni

Fondamenti di Informatica per la Sicurezza

Modulo 3 - Elaborazione delle informazioni

Unità didattica 1 - Insiemistica

Stefano Ferrari

Università degli Studi di Milano - Ssri - CDL ONLINE

Prodotto cartesiano

Il prodotto cartesiano A × B degli insiemi A e B è


formato dalla combinazione degli elementi di A e
B.

Esempio:

A = {a, b, c} B = {1, 2}
B
2
A × B = {ha, 1i, ha, 2i, hb, 1i, 1
hb, 2i, hc, 1i, hc, 2i} a c
b
A

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 1


Modulo 3— U.D. 1— Lez. 2

Funzione

Una funzione f : A → B è una regola per


abbinare ad ogni elemento a dell’insieme A un
elemento f (a) dell’insieme B .
A B
f
A è il dominio di f
a f (a)
B è il codominio di f

a è detto argomento B
f
f (a) è la sua immagine f (a)

a
A

Funzioni: esempi

square : Z → N, square(x) = x2
Esiste x tale per cui square(x) = 5?
Per quale x vale square(x) = 9?

+x, x≥0

abs : Z → N, abs(x) =
−x, x<0

g : Z → N, g(x) = 2x2 + x

I : U → U, I(u) = u

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 2


Modulo 3— U.D. 1— Lez. 2

Funzioni suriettive

Una funzione si dice suriettiva se ogni elemento


del codominio è immagine di un elemento del
dominio.

Funzioni iniettive

Una funzione si dice iniettiva se ad elementi


distinti del dominio corrispondono immagini
distinte nel codominio.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 3


Modulo 3— U.D. 1— Lez. 2

Funzioni biiettive

Una funzione si dice biiettività se la funzione è


suriettiva ed iniettiva.

Funzione inversa

Una funzione biiettiva f : A → B comporta:


• corrispondenza uno ad uno tra gli elementi di A e
quelli di B ;
• esistenza della funzione inversa f −1 : B → A.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 4


Modulo 3— U.D. 1— Lez. 2

Composizione di funzioni

La composizione di due funzioni è l’applicazione


di una al risultato dell’altra.

Siano date le funzioni f e g :

f :A→B e g:B→C

Componendo f con g si ottiene la funzione h:

h : A → C, h(a) = g(f (a))


La composizione di una funzione e della sua
inversa dà la funzione identità, I :

f (f −1 (a)) = a

Funzioni a più argomenti

f :A→B
è una funzione unaria (monadica)

f : A1 × A2 → B
è una funzione binaria (diadica)

f : A 1 × A2 × A3 → B
è una funzione ternaria (triadica)

f : A1 × · · · × A n → B
è una funzione n-aria (n-adica)

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 5


Modulo 3— U.D. 1— Lez. 2

In sintesi

L’insiemistica è alla base della formalizzazione


della matematica moderna.

Vanno ricordati i seguenti concetti relativi alle


funzioni:
• suriettività;
• iniettività.
• biiettività.

Chiusura

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 6


Modulo 3— U.D. 2— Lez. 1

Lezione 1 - Algebre di Boole

Fondamenti di Informatica per la Sicurezza

Modulo 3 - Elaborazione delle informazioni

Unità didattica 2 - Algebre di Boole

Stefano Ferrari

Università degli Studi di Milano - Ssri - CDL ONLINE

George Boole (1815–1864)

Nel 1854, pubblica “An investigation


into the Laws of Thought, on Which
are founded the Mathematical
Theories of Logic and Probabilities”.
Boole riduce la logica a semplice
algebra, incorporandola nella
matematica.
Evidenzia l’analogia tra i simboli algebrici e quelli
delle forme logiche.
L’algebra booleana trova applicazioni nella
progettazione dei calcolatori.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 1


Modulo 3— U.D. 2— Lez. 1

Algebra booleana

Un’algebra booleana è basata su:


• un insieme di elementi K
• due operazioni chiuse su K (+, ·)
• una funzione complemento ( · )

Assiomi (1)

1. almeno due elementi

∃ a, b ∈ K : a 6= b

2. chiusura di +e·
∀ a, b ∈ K :
• a+b∈K
• a·b∈K

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 2


Modulo 3— U.D. 2— Lez. 1

Assiomi (2)

3. proprietà commutativa

∀ a, b ∈ K :
• a+b=b+a
• a·b=b·a

4. proprietà associativa

∀ a, b, c ∈ K :
• (a + b) + c = a + (b + c) = a + b + c
• (a · b) · c = a · (b · c) = a · b · c

Assiomi (3)

5. esistenza degli elementi neutri di +e·


• ∃! 0 ∈ K : a + 0 = a, ∀ a ∈ K
• ∃! 1 ∈ K : a · 1 = a, ∀ a ∈ K

6. proprietà distributiva
∀ a, b, c ∈ K :
• a + (b · c) = (a + b) · (a + c)
• a · (b + c) = (a · b) + (a · c)

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 3


Modulo 3— U.D. 2— Lez. 1

Assiomi (3)

7. complemento
∀a ∈ K ∃a ∈ K :
• a+a=1
• a·a=0

Proprietà

Idempotenza a+a=a e a·a=a


Leggi di De Morgan a+b=a·b e a·b=a+b
Doppio complemento a=a
Elemento nullo a+1=1 e a·0=0

Tali proprietà possono essere verificate per:


• dimostrazione;
• analisi esaustiva.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 4


Modulo 3— U.D. 2— Lez. 1

Principio di dualità
I teoremi dell’algebra booleana possono essere
dimostrati a coppie, scambiando tra loro:
• le operazioni, + ↔ ·;
• gli elementi neutri, 0 ↔ 1.

Teorema di De Morgan (1)

La legge di De Morgan può essere generalizzata a


n termini.

X1 + X 2 + . . . + X n = X 1 · X 2 · . . . · X n
Dimostrazione per induzione:
• caso base:

– si dimostra vero il caso con il numero minimo di elementi;

• passo di induzione:
– si ipotizza vero il teorema per n − 1 elementi;
– si utilizza l’ipotesi aggiuntiva per dimostrare il teorema per n
elementi.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 5


Modulo 3— U.D. 2— Lez. 1

Teorema di De Morgan (2)

Dimostrazione per induzione:


• caso base:

X1 + X 2 = X 1 · X 2 (Legge di De Morgan)
• passo di induzione:
Se per ipotesi, è vero che:
X1 + . . . + Xn−1 = X 1 · . . . · X n−1
allora:
(X1 + . . . + Xn−1 ) + Xn =
= (X1 + . . . + Xn−1 ) · X n = X 1 · . . . · X n−1 · X n

Cardinalità

Si può dimostrare che in ogni algebra booleana


finita, il numero di elementi di K è una potenza
di due.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 6


Modulo 3— U.D. 2— Lez. 1

Esempi

Sono algebre di Boole:


• algebra binaria
• algebra di insiemi
• lo spazio degli eventi (calcolo delle probabilità)
• circuiti logici
• logica proposizionale

In sintesi

Le algebre booleane:
• sono uno strumento matematico per la
formalizzazione del ragionamento;
• sono regolate da 7 assiomi.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 7


Modulo 3— U.D. 2— Lez. 1

Prossimi passi

Algebre booleane e loro applicazioni:


• logica proposizionale;
• logica dei predicati (cenni);
• circuiti logici.

Chiusura

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 8


Modulo 3— U.D. 3— Lez. 1

Lezione 1 - Logica proposizionale

Fondamenti di Informatica per la Sicurezza

Modulo 3 - Elaborazione delle informazioni

Unità didattica 3 - Logica proposizionale

Stefano Ferrari

Università degli Studi di Milano - Ssri - CDL ONLINE

Logica formale

La logica formale è una branca della matematica


che studia i principi su cui si basa la
formalizzazione di asserzioni e delle regole di
inferenza.
Semplificando, si può dire che la logica formale
permette una formalizzazione del
“ragionamento”.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 1


Modulo 3— U.D. 3— Lez. 1

Formalizzazione

Formalizzare significa tradurre dal linguaggio


naturale in un linguaggio semplificato con una
sintassi rigida e precisa.

Un linguaggio con regole rigide serve:


• per comunicare con le macchine;
• per comunicare con altre persone;
• per progettare algoritmi.

Questo procedimento è necessario in molte


discipline.

Logiche

Ambiti diversi hanno esigenze diverse.

A seconda della necessità ci si può appoggiare,


fra le altre, alla logica:
• classica: studia i processi per trarre conclusioni a
partire da assunzioni;
• intuizionista: basata su un approccio costruttivo,
utile per esigenze pratiche di realizzazione;
• temporale: arricchita da operatori per indicare
intervalli temporali;
• fuzzy: infinite gradazioni di verità.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 2


Modulo 3— U.D. 3— Lez. 1

Logica proposizionale

La logica proposizionale studia gli schemi di


composizione di frasi dichiarative.
Queste frasi saranno chiamate proposizioni.
La logica non indaga sul significato delle singole
proposizioni, ma solo sugli schemi in cui le
proposizioni possono essere composte mediante
operatori detti connettivi logici.
Si occupa di stabilire la verità o la falsità di
asserzioni (espressioni linguistiche) ottenute
componendo proposizioni semplici.

Linguaggio formale

Bisogna stabilire:
• cosa si vuole formalizzare;
• alfabeto:
elementi simbolici usati per la rappresentazione;
• sintassi:
come si rappresentano gli oggetti del discorso;
• semantica:
quale significato si dà a tali rappresentazioni.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 3


Modulo 3— U.D. 3— Lez. 1

Alfabeto

Le proposizioni sono costruite usando:


• costanti (valori di verità): {F, V }
(indicati anche come: {F, T }, {0, 1}, {⊥, >})
• simboli enunciativi: {a, b, . . . , z}
• connettivi: ¬, ∧, ∨, →, ↔
• simboli ausiliari: “(”, “)”

Proposizioni semplici

Una proposizione semplice (o atomica) è


un’affermazione che:
• non dipende da variabili;
• può essere vera o falsa;
• viene formalizzata da un simbolo enunciativo.

Esempi:
• ogni triangolo si può inscrivere in un cerchio vera
• Roma è in Francia falsa

NB: non interessa il significato delle proposizioni,


solo se sono vere o false.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 4


Modulo 3— U.D. 3— Lez. 1

Connettivi (1)

Le proposizioni semplici sono composte per


mezzo dei connettivi logici:
• congiunzione: ∧, et, AND, e
a ∧ b è vera se lo è sia a che b;
• disgiunzione: ∨, vel, OR, o
a ∨ b è vera quando lo è almeno uno fra a e b;
• negazione: ¬, ∼, non, NOT, non
¬a è vera quando a è falsa;

Connettivi (2)

• implicazione (condizionale): →, se ... allora


a → b ≡ ¬a ∨ b;
a viene detta premessa e b conseguenza;
• biimplicazione (bicondizionale): ↔, se e solo se
a ↔ b ≡ (a → b) ∧ (b → a) ≡ (a ∧ b) ∨ (¬a ∧ ¬b).

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 5


Modulo 3— U.D. 3— Lez. 1

Proposizioni composte

Una proposizione composta può essere:


• sempre vera;
• sempre falsa;
• vera o falsa in funzione dei componenti.

Esempi:
• a ∨ ¬a vera
• a ∧ ¬a falsa
• a∧b da valutare

In sintesi

La logica formale:
• fornisce un linguaggio non ambiguo e con una
struttura rigida;
• può essere usata per descrivere concetti, situazioni e
procedure.

La logica proposizionale studia:


• i connettivi;
• gli schemi di composizione.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 6


Modulo 3— U.D. 3— Lez. 1

Prossimi passi

Formalizzazione di sintassi e semantica della


logica proposizionale.

Inferenza di asserzioni valide.

Chiusura

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 7


Modulo 3— U.D. 3— Lez. 2

Lezione 2 - Sintassi e semantica della


logica proposizionale

Fondamenti di Informatica per la Sicurezza

Modulo 3 - Elaborazione delle informazioni

Unità didattica 3 - Logica proposizionale

Stefano Ferrari

Università degli Studi di Milano - Ssri - CDL ONLINE

Sintassi (1)

Le proposizioni (o formule) sono definite


induttivamente dalle regole:
• caso base: ogni simbolo enunciativo o costante è
una formula;
• passo: ogni composizione di formule è una formula;
• nient’altro è una formula.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 1


Modulo 3— U.D. 3— Lez. 2

Sintassi (2)

Più formalmente, detto L l’insieme dei simboli


enunciativi e delle costanti, l’insieme P delle
proposizioni è così definito:
• ∀a ∈ L, (a) ∈ P
• ∀p ∈ P, ¬(p) ∈ P
• ∀p, q ∈ P , (p ∨ q), (p ∧ q), (p → q), (p ↔ q) ∈ P

Precedenze

Le precedenze permettono di ridurre il numero di


parentesi necessarie per interpretare
correttamente una proposizione.
¬ precede ∧ precede ∨ precede → precede ↔

Esempi:
• ((¬a) ∨ a) si può scrivere ¬a ∨ a
• (a ∨ (b ∧ c)) si può scrivere a ∨ b ∧ c
• (a ∧ (b ∨ c)) si può scrivere a ∧ (b ∨ c)

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 2


Modulo 3— U.D. 3— Lez. 2

Semantica

La semantica è l’insieme delle regole che


permettono di associare un valore di verità ad
una proposizione, a partire dai valori dei simboli
enunciativi che vi compaiono.

La semantica dei connettivi è illustrata dalle


seguenti tabelle, dette tabelle di verità:

a b a∨b a∧b ¬a a→b a↔b


F F F F V V V
F V V F V V F
V F V F F F F
V V V V F V V

Interpretazione (1)

Diremo interpretazione di una proposizione una


funzione che assegna uno dei due valori di verità,
V o F , a ciascuna proposizione atomica
componente e che quindi assegna un valore di
verità alla proposizione composta sulla base
delle tavole di verità.

Formalmente, quindi, una interpretazione è una


funzione v : P → {F, V }.

L’interpretazione di una proposizione p può


essere calcolata mediante la costruzione della
tabella di verità di p.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 3


Modulo 3— U.D. 3— Lez. 2

Interpretazione (2)

Esempio: ¬p ∧ (q → p)

p q ¬p q → p ¬p ∧ (q → p)
F F V V V
F V V F F
V F F V F
V V F V F

Ogni riga di una tabella di verità è una


interpretazione.
Se una proposizione ha n componenti atomici,
esistono 2n interpretazioni per essa.

Soddisfacibilità

Se una interpretazione, v(·), rende una


proposizione, p, vera (v(p) = V ), si dice che v
soddisfa p.

Una proposizione, p, si dice soddisfacibile se


esiste almeno una interpretazione, v(·), che la
soddisfa.

Una proposizione, p, si dice tautologia (o anche


che è valida) se tutte le sue interpretazioni
possibili la rendono vera: ∀v, v(p) = V .

Una proposizione non soddisfacibile (cioè resa


falsa da tutte le interpretazioni possibili) viene
detta contraddizione.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 4


Modulo 3— U.D. 3— Lez. 2

Relazioni tra proposizioni


Implicazione logica :
a implica logicamente b se e solo se a → b è
una tautologia: a ⇒ b

Equivalenza logica :
a è logicamente equivalente a b se e solo se
a ↔ b è una tautologia: a ⇔ b

NB: a ⇒ b e a ⇔ b sono relazioni tra la


proposizione a e la proposizione b.
Ad esse sono associabili rispettivamente le
proposizioni a → b e a ↔ b.

In sintesi

Sono state definite in modo ricorsivo la sintassi e


la semantica della logica proposizionale.
Sono state definiti i concetti di interpretazione e
soddisfacibilità delle forme logiche.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 5


Modulo 3— U.D. 3— Lez. 2

Prossimi passi

Schemi di inferenza.

Chiusura

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 6


Modulo 3— U.D. 3— Lez. 3

Lezione 3 - Inferenza e dimostrazioni

Fondamenti di Informatica per la Sicurezza

Modulo 3 - Elaborazione delle informazioni

Unità didattica 3 - Logica proposizionale

Stefano Ferrari

Università degli Studi di Milano - Ssri - CDL ONLINE

Leggi logiche (1)

Le tautologie sono chiamate anche leggi logiche.


• Eliminazione di congiunzione
(a ∧ b) ⇒ a

• Introduzione di disgiunzione
a ⇒ (a ∨ b)

• Negazione della biimplicazione


¬(a ↔ b) ⇔ (¬a ↔ b)

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 1


Modulo 3— U.D. 3— Lez. 3

Leggi logiche (2)

• Sillogismo disgiuntivo
(a ∨ b) ∧ ¬b ⇒ a

• Ex falso sequitur quodlibet


¬a ⇒ (a → b)

• Verum sequitur a quodlibet


a ⇒ (b → a)

• Terzo escluso
a ∨ ¬a

Leggi logiche (3)

• Non contraddizione
¬(a ∧ ¬a)

• Dimostrazione per casi


((a → b) ∧ (¬a → b)) ⇒ b

• Dimostrazione per assurdo


(¬b → a ∧ ¬a) ⇒ b

• Contrapposizione
a → b ⇔ ¬b → ¬a

• (De Morgan)
¬(a ∧ b) ⇔ (¬a ∨ ¬b)
¬(a ∨ b) ⇔ (¬a ∧ ¬b)
(Sillogismo
Stefano •Ferrari— ipotetico)
Fondamenti di Informatica per la Sicurezza 2
((a → b) ∧ (b → c)) ⇒ (a → c)
Modulo 3— U.D. 3— Lez. 3

Leggi logiche (4)

• Leggi di De Morgan
¬(a ∧ b) ⇔ (¬a ∨ ¬b)
¬(a ∨ b) ⇔ (¬a ∧ ¬b)

• Sillogismo ipotetico
((a → b) ∧ (b → c)) ⇒ (a → c)

• Transitività dell’implicazione
(a → b) ⇒ ((b → c) → (a → c))

Leggi logiche (5)

• Distributività delle conseguenze


a → (b ∧ c) ⇔ (a → b) ∧ (a → c)

• Esportazione/importazione delle premesse


(a ∧ b) → c ⇔ a → (b → c)

• Doppia negazione
¬¬a ⇔ a

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 3


Modulo 3— U.D. 3— Lez. 3

Teoremi

Un teorema della logica proposizionale è


composto da:
• una o più proposizioni , ak (1 ≤ k ≤ n), dette
assunzioni o ipotesi;
• da una proposizione, t, detta tesi.

Un teorema è esprimibile come:

a1 ∧ · · · ∧ a n ⇒ t

Regole di inferenza

Le regole di inferenza permettono di dedurre una


proposizione valida:
• dato che p è vera e p ⇔ q , anche q è vera
(equivalenza logica);
• se p è una tautologia e a è una sua proposizione
componente, sostituendo a tutte le occorrenze di a in
p la proposizione q , si ottiene ancora una tautologia
(sostituzione);
• dato che sia a → b che a sono vere, si deduce che
anche b è vera (modus ponens);
• dato che sia a → b che ¬b sono vere, si deduce che
anche ¬a è vera (modus tollens).

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 4


Modulo 3— U.D. 3— Lez. 3

Dimostrazione di teoremi

Una dimostrazione può essere formulata come


una sequenza di proposizioni vere p1 , . . . , pm ,
dove pj , 1 ≤ j ≤ m:

• è un’assunzione;
• è una tautologia;
• è ottenuta per applicazione delle regole di inferenza;
• pm è la tesi.

Esempio — teorema

Assumiamo che le seguenti proposizioni siano


vere:
• se è vacanza sto a casa o vado in montagna;
• oggi sono al lavoro.

Date le precedenti assunzioni, dimostrare che:


• oggi è un giorno lavorativo.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 5


Modulo 3— U.D. 3— Lez. 3

Esempio — formalizzazione

Le proposizioni coinvolte possono essere


formalizzate come segue:
• v = “oggi è vacanza”
• c = “stare a casa”
• m = “andare in montagna”

e il teorema diventa:
a1 : v → (c ∨ m)
a2 : ¬c ∧ ¬m
t: ¬v

Esempio — dimostrazione

p1 : ¬(c ∨ m) → ¬v contrapposizione di a1
p2 : ¬(c ∨ m) Legge di De Morgan da a2
p3 : ¬v modus ponens da p2 p1

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 6


Modulo 3— U.D. 3— Lez. 3

In sintesi

Alcune forme logiche sono sempre valide: le


tautologie.

Possiamo utilizzarle per dedurre una


proposizione valida da un insieme di asserzioni.

Questo procedimento assume la struttura di una


dimostrazione.

Prossimi passi

Esercizi sulla logica proposizionale.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 7


Modulo 3— U.D. 3— Lez. 3

Chiusura

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 8


Modulo 3— U.D. 3— Lez. 4

Lezione 4 - Esercizi di logica


proposizionale

Fondamenti di Informatica per la Sicurezza

Modulo 3 - Elaborazione delle informazioni

Unità didattica 3 - Logica proposizionale

Stefano Ferrari

Università degli Studi di Milano - Ssri - CDL ONLINE

Formalizzazione (1)

Formalizzare le seguenti proposizioni:


a) se Aldo e Bruno non mangiano insieme, Carlo
cucina
b) se Aldo mangia, Bruno digiuna
c) Carlo cucina
d) se Carlo cucina, Bruno e Aldo mangiano
e) Bruno non mangia e Carlo cucina

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 1


Modulo 3— U.D. 3— Lez. 4

Formalizzazione (2)

Definiamo i seguenti simboli enunciativi:


a = “Aldo mangia”
b = “Bruno mangia”
c = “Carlo cucina”

Formalizzazione (3)

Le frasi date possono essere formalizzate come:


a) ¬(a ∧ b) → c
b) a → ¬b
c) c
d) c → (b ∧ a)
e) ¬b ∧ c

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 2


Modulo 3— U.D. 3— Lez. 4

Tavola di verità

(¬r ∧ (¬p ∨ (¬q ∧ r))) ↔ (p ∨ q) è una tautologia?


p q r ¬q ¬q ∧ r ¬p ¬p ∨ α ¬r ¬r ∧ β p ∨ q γ ↔ δ
F F F V F V V V V F F
F F V V V V V F F F V
F V F F F V V V V V V
F V V F F V V F F V F
V F F V F F F V F V F
V F V V V F V F F V F
V V F F F F F V F V F
V V V F F F F F F V F
α β γ δ

Non è una tautologia.

Teorema 1

Dimostrare la validità del seguente teorema:


Ip1 ¬a → (b ∧ c)
Ip2 ¬b
Tesi a

(1) (¬a → b) ∧ (¬a → c) distrib. conseg. di Ip1


(2) ¬a → b elim. di cong. in (1)
(3) ¬b → a contrapp. di (2)
(4) a MP da (3) e Ip2

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 3


Modulo 3— U.D. 3— Lez. 4

Teorema 2

Dimostrare la validità del seguente teorema:


Assunzioni
• Mario è architetto oppure è geometra.

• Se Mario fosse architetto, allora Mario sarebbe


laureato.
• Mario non è laureato.

Tesi
• Mario è geometra.

Formalizzazione del teorema 2

Formalizziamo il problema come segue:


a = “Mario è architetto”
g = “Mario è geometra”
l = “Mario è laureato”

Il teorema può essere riscritto come:


Ip1 a ∨ g
Ip2 a → l
Ip3 ¬l
Tesi g

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 4


Modulo 3— U.D. 3— Lez. 4

Dimostrazione del teorema 2

(1) ¬¬a ∨ g equiv. logica di Ip1


(2) ¬a → g equiv. logica di 1
(3) ¬l → ¬a contrapp. di Ip2
(4) ¬a MP da Ip3 e 3
(5) g MP da (4) e 2

Altri esercizi

Altri esercizi si possono trovare su:


• sito del corso online;
• http://www.dti.unimi.it/∼ferrari.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 5


Modulo 3— U.D. 3— Lez. 4

Prossimi passi

Qualche approfondimento su:


• logica proposizionale;
• logica dei predicati.

Chiusura

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 6


Modulo 3— U.D. 3— Lez. 5

Lezione 5 - Note aggiuntive sulla


logica proposizionale

Fondamenti di Informatica per la Sicurezza

Modulo 3 - Elaborazione delle informazioni

Unità didattica 3 - Logica proposizionale

Stefano Ferrari

Università degli Studi di Milano - Ssri - CDL ONLINE

Connettivi binari

A parte la negazione, un connettivo logico è un


operatore binario.
Ogni connettivo binario ha 22 = 4 possibili
interpretazioni.
Ogni interpretazione può assumere 2 valori.
Quindi esistono 24 = 16 connettivi logici (binari).
Analogamente, si può vedere che esistono 4
connettivi logici unari, e che la negazione è uno
di questi.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 1


Modulo 3— U.D. 3— Lez. 5

Funzione logica

Una funzione logica è una funzione


{F, V }n → {F, V }.
z = f (a1 , a2 , · · · , an ) è una legge che fa
corrispondere ad ogni combinazione di valori
logici di a1 , · · · , an uno e un solo valore di z .
Esempi:
• una proposizione con n simboli enunciativi è una

funzione logica {F, V }n → {F, V };


• il connettivo binario ∨ è una funzione logica
{F, V }2 → {F, V }.

Connettivi usati

Perché su 4 connettivi unari e 16 connettivi


binari sono stati scelti proprio ¬, ∨, ∧, → e ↔?

Perché tramite di essi si possono ottenere tutte


le funzioni logiche.

Per esempio, il connettivo Y


a b Y
descritto dalla tabella di verità
a lato equivale a F F F
(a ∧ ¬b) ∨ (¬a ∧ b). F V V
V F V
Esso è conosciuto anche come
V V F
aut, XOR, o OR esclusivo.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 2


Modulo 3— U.D. 3— Lez. 5

Insiemi funzionalmente completi (1)

Gli insiemi di connettivi che permettono di


ottenere una qualsiasi funzione logica si dicono
insiemi funzionalmente completi.
Sono funzionalmente completi gli insiemi:
• {¬, ∨}
• {¬, ∧}
• {¬, ∧, ∨}

Insiemi funzionalmente completi (2)

Anche gli insiemi di connettivi:


• ¯ , dove a∨b
{∨} ¯ ≡ ¬(a ∨ b) (NOR o OR negato)
• ¯ , dove a∧b
{∧} ¯ ≡ ¬(a ∧ b) (NAND o AND negato)

sono insiemi funzionalmente completi.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 3


Modulo 3— U.D. 3— Lez. 5

Motivazioni

Perché usare cinque connettivi quando ne basta


uno?
I motivi sono (almeno) due:
• formale: benché equivalenti, non tutti i connettivi
hanno le stesse proprietà;
• pratico: alcuni connettivi hanno un significato più
intuitivo.

Logica proposizionale e algebra booleana

Si può dimostrare che

h{F, V }, {¬, ∨, ∧}i


rispetta gli assiomi dell’algebra booleana.

In particolare:
• K = {F, V }, dove 0 ≡ F e 1 ≡ V
• ∨ ≡ +
• ∧ ≡ ·
• ¬ ≡¯

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 4


Modulo 3— U.D. 3— Lez. 5

Logica e intuitività

Alcuni connettivi hanno un significato più


intuitivo di altri.

Questo può essere fatto derivare dalla nostra


cultura, ma ha anche delle basi fisiologiche.

Wason (fine anni ‘60) ha condotto degli studi a


riguardo.

Un suo famoso esperimento richiede un mazzo di


carte con una lettera su una faccia ed un numero
sull’altra.

Esperimento di Wason (1)

Date le carte:

A R 6 7

Quali carte è necessario voltare per poter


affermare che la regola
“se c’è una vocale su una faccia,
allora sull’altra c’è un numero pari”
sia vera?

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 5


Modulo 3— U.D. 3— Lez. 5

Esperimento di Wason (2)

Una percentuale molto bassa di soggetti


risponde correttamente al test di Wason.
È però sorprendente che lo stesso test con una
mazzo di carte con un’età ed una bevanda sulle
due facce, le carte

Whisky Aranciata 19 16

e con la regola
“se la bevanda è un superalcolico,
allora l’età deve essere maggiore di 18”
riceva una risposta corretta dalla maggior parte
dei soggetti!

Implicazione

L’implicazione viene generalmente associata


all’inferenza.
La proposizione “se oggi è martedì, domani piove
oppure se domani piove, oggi è martedì” non
pare aver senso.
Eppure la sua formalizzazione ((a → b) ∨ (b → a))
è una tautologia.
Istintivamente associamo la proposizione data a
ciò che dovremmo formalizzare come:
(a ⇒ b) ∨ (b ⇒ a)

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 6


Modulo 3— U.D. 3— Lez. 5

Limiti del calcolo proposizionale

La logica proposizionale si limita allo studio degli


schemi di composizione di asserzioni.
Non entra nel merito della semantica delle
singole asserzioni.
Non permette deduzioni legate solo ad alcuni
elementi del dominio considerato.
Per esempio, il famoso sillogismo
“Tutti gli uomini sono mortali
e Socrate è un uomo,
quindi Socrate è mortale”
può solo essere formalizzato come: a ∧ b → c

In sintesi

La logica proposizionale:
• permette una formalizzazione dei ragionamenti;
• si avvale dei teoremi validi per le algebre di Boole;
• non modella il comportamento intuitivo umano;
• non modella la totalità delle deduzioni matematiche.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 7


Modulo 3— U.D. 3— Lez. 5

Chiusura

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 8


Modulo 3— U.D. 4— Lez. 1

Lezione 1 - Logica dei predicati

Fondamenti di Informatica per la Sicurezza

Modulo 3 - Elaborazione delle informazioni

Unità didattica 4 - Approfondimenti

Stefano Ferrari

Università degli Studi di Milano - Ssri - CDL ONLINE

Indovinello

Frase 1, 8, 5, 5

∃x(¬f reddo(y) ∧ piace(x, y))

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 1


Modulo 3— U.D. 4— Lez. 1

Limiti del calcolo proposizionale

Alcune inferenze logiche non possono venire


giustificate sulla base del calcolo proposizionale.

Esempi:
• Ogni architetto è laureato.
Pietro non è laureato, quindi Pietro non è architetto.
• Nessun coccodrillo è un’orata.
Le orate sono pesci, quindi qualche pesce non è un
coccodrillo.

Calcolo dei predicati (1)

Estensione della logica delle proposizioni:


• costanti: sono gli elementi dell’universo del discorso;
– esempio: se si esprimono ragionamenti sulle persone, ogni
singola persona è una costante;
• variabili: assumono un valore nell’universo del
discorso;
– esempio: nei discorsi comuni, gli ipotetici Tizio, Caio e
Sempronio assumono la funzione di variabili;
• funzioni: combinano gli elementi dell’universo del
discorso;
– esempio: “la moglie di Tizio” è una funzione che applicata ad
una persona restituisce un’altra persona;

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 2


Modulo 3— U.D. 4— Lez. 1

Calcolo dei predicati (2)

• predicati: sono funzioni logiche che si applicano ad


elementi dell’universo del discorso;
– esempio: “Tizio è un architetto”, “Caio e Sempronio sono
amici”;
• quantificatori: precisano l’estensione di un predicato
(vincolano i valori assumibili dagli argomenti);
quantificatore universale ∀, per ogni:
– esempio: “Tutti i nuotatori sono sportivi”;

quantificatore esistenziale ∃, esiste (almeno un):


– esempio: “a qualcuno piacciono gli spinaci”.

Esempi

• “Lassù qualcuno mi ama” (1956):

∃x(lassu0 (x) ∧ ama(x, Io))

• “Tutti pazzi per Mary” (1998):

∀x(uomo(x) → pazzo(x, M ary))

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 3


Modulo 3— U.D. 4— Lez. 1

Quantificatori (1)

I quantificatori non sono commutativi.


Esempio:
Ognuno degli iscritti ha un numero di matricola.
∀persona ∃numero (
iscritto(persona) ∧ matricola(numero) →
immatricolato(persona, numero))
È diverso da:
∃numero ∀persona (
iscritto(persona) ∧ matricola(numero) →
immatricolato(persona, numero))
Tutti gli iscritti hanno lo stesso numero di
matricola.

Quantificatori (2)

Sarebbe sufficiente definire un solo


quantificatore:
• ∃x A(x) ⇔ ¬∀x ¬A(x)
• ∀x A(x) ⇔ ¬∃x ¬A(x)

Esempi:
• “tutti i palloni sono tondi” ⇔ “non esiste un pallone
che non sia tondo”
• “esiste un mammifero che vola” ⇔ “non tutti i
mammiferi non sanno volare”

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 4


Modulo 3— U.D. 4— Lez. 1

Descrizione formale (1)

La descrizione formale della sintassi della logica


dei predicati è basata sulla definizione di termini
e formule.

Sono termini:
• una costante;
• una variabile;
• una funzione n-aria f (t1 , . . . , tn ), dove t1 , . . . , tn
sono termini.

Descrizione formale (2)

Sono formule:
• il predicato p(t1 , . . . , tn ), dove t1 , . . . , tn sono
termini;
• le espressioni del tipo:
– A∨B
– A∧B
– ¬A
– ∀x A
– ∃x A
dove A e B sono formule e x è una variabile.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 5


Modulo 3— U.D. 4— Lez. 1

Definizioni

Nella formula ∀x A:
• A si chiama ambito o campo d’azione del
quantificatore ∀;
• x si dice variabile vincolata (o quantificata).

Una variabile non vincolata di dice libera.

Una formula che non contiene variabili libere si


dice chiusa.

Una formula che non contiene variabili si dice


ground.

Dimostrazioni formali

Possono essere eseguite usando le regole di


inferenza della logica proposizionale e con le
seguenti regole di inferenza aggiuntive:
• ∀x A(x) ⇒ A(t) (specializzazione);
• A ⇒ ∀x A (generalizzazione);
• (A(x) ∧ x = t) ⇒ A(t), se tutte le occorrenze libere
di t rimangono libere in A(t) (sostituzione).

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 6


Modulo 3— U.D. 4— Lez. 1

In sintesi

La logica dei predicati permette di analizzare gli


elementi di cui la proposizione è composta.

Essa è quindi uno strumento più potente (e più


complesso) della logica proposizionale.

Soluzione dell’indovinello
∃x(¬f reddo(y) ∧ piace(x, y)):
• A qualcuno piace caldo (Some Like It Hot, 1959)

Prossimi passi

Relazione tra predicati e insiemi.

Metodi grafici per le dimostrazioni.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 7


Modulo 3— U.D. 4— Lez. 1

Chiusura

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 8


Modulo 3— U.D. 4— Lez. 2

Lezione 2 - Predicati ed insiemi

Fondamenti di Informatica per la Sicurezza

Modulo 3 - Elaborazione delle informazioni

Unità didattica 4 - Approfondimenti

Stefano Ferrari

Università degli Studi di Milano - Ssri - CDL ONLINE

Predicati ed insiemi

Esiste una corrispondenza tra i predicati e gli


insiemi:
• i predicati definiscono insiemi;
– esempio: gli elementi, x, per cui il predicato architetto(x) è
vero, costituiscono l’insieme degli architetti;
• la disgiunzione definisce un’unione;
– esempio: gli elementi, x, che rendono vero il predicato
architetto(x) ∨ ingegnere(x), costituiscono l’insieme delle
persone che sono architetto o ingegnere (o entrambi);
• la congiunzione definisce un’intersezione;
– esempio: gli elementi, x, che rendono vero il predicato
architetto(x) ∧ biondo(x), costituiscono l’insieme delle
persone che sono architetto e che sono bionde.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 1


Modulo 3— U.D. 4— Lez. 2

Dimostrazioni grafiche

Sfruttando la corrispondenza tra formule di


logica posizionale e insiemi, è possibile
effettuare o confutare la validità di inferenze con
il solo supporto dei grafici di Eulero-Venn.
In particolare:
• le costanti e le variabili sono punti del piano;
• i predicati sono regioni del piano;
• le operazioni logiche combinano le regioni del piano
come nei diagrammi di Eulero-Venn.
Un’inferenza sarà valida se il grafico delle
assunzioni descrive una situazione compatibile
con la tesi, ma non con la sua negazione.

Esempio 1

Ip1: Gli uomini sono mortali.


Ip2: Socrate è un uomo.
Tesi: Socrate è mortale.
M
U
Ip1: ∀x(U (x) → M (x))
Ip2: U (s)
s
Tesi: M (s)

Ip1: U ⊆ M
Ip2: s ∈ U
Tesi: s ∈ M

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 2


Modulo 3— U.D. 4— Lez. 2

Esempio 2

Ip1: Tutte le api ronzano.


Ip2: Qualche insetto non ronza.
Tesi: Qualche insetto non è un’ape.

Ip1: ∀x(A(x) → R(x)) A R


Ip2: ∃x(I(x) ∧ ¬R(x))
Tesi: ∃x(I(x) ∧ ¬A(x))

Ip1: A ⊆ R
x I
Ip2: ∃x ∈ I − R
Tesi: ∃x ∈ I − A

In sintesi

La logica dei predicati permette di analizzare gli


elementi di cui la proposizione è composta.

I predicati possono essere messi in


corrispondenza con opportuni insiemi.

Questa corrispondenza può, in alcuni casi, essere


sfruttata per effettuare delle dimostrazioni.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 3


Modulo 3— U.D. 4— Lez. 2

Chiusura

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 4


Modulo 3— U.D. 4— Lez. 3

Lezione 3 - Reti logiche

Fondamenti di Informatica per la Sicurezza

Modulo 3 - Elaborazione delle informazioni

Unità didattica 4 - Approfondimenti

Stefano Ferrari

Università degli Studi di Milano - Ssri - CDL ONLINE

Algebre booleane

Sono algebre booleane:


Boole insiemi proposizioni commutazione
K P(U ) {F, V } {aperto, chiuso}
· ∩ ∧ serie
+ ∪ ∨ parallelo
¯ ¯ ¬ invertitore
0 ∅ F aperto
1 U V chiuso

Esempio:
• Idempotenza (a + a = a): mettere in parallelo due
interrutori abbinati, equivale a usarne uno solo.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 1


Modulo 3— U.D. 4— Lez. 3

Algebra di commutazione

Claude Shannon (1938) ha


constatato che un circuito dotato
di interrutori (switch) si comporta
secondo le leggi dell’algebra
booleana.
Questa proprietà è indipendente
dalla tecnologia usata, e infatti
vale per circuiti:
• elettrici;
• pneumatici;
• ottici.

Reti logiche

I circuiti degli attuali elaboratori digitali sono


costituiti da componenti elementari, detti porte
logiche, che realizzano i connettivi logici.

Questi dispositivi, detti reti logiche, si dividono


in due famiglie:
• reti combinatorie:
– circuiti descrivibili in termini di porte logiche senza
retroconnessioni (comportamento ingresso/uscita)
• reti sequenziali:
– circuiti con retroconnessioni;
– in ogni istante, il valore di uscita dipende sia dagli ingressi,
sia dallo stato del circuito nell’istante precedente (memoria).

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 2


Modulo 3— U.D. 4— Lez. 3

Approfondimenti

Il corso di “Architetture e reti logiche” copre


approfonditamente questi temi.

In sintesi

Le reti logiche consentono di realizzare una


macchina dotata di:
• capacità di effettuare calcoli;
• memoria.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 3


Modulo 3— U.D. 4— Lez. 3

Chiusura

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 4


Modulo 4— U.D. 1— Lez. 1

Lezione 1 - Architettura di
von Neumann

Fondamenti di Informatica per la Sicurezza

Modulo 4 - Sistemi di elaborazione

Unità didattica 1 - Architettura di von Neumann

Stefano Ferrari

Università degli Studi di Milano - Ssri - CDL ONLINE

Scomposizione funzionale

Il calcolatore può essere descritto


scomponendolo iterativamente in una gerarchia
di sottosistemi.
Ogni componente:
• è responsabile di una funzionalità;
• interagisce con gli altri componenti e con l’ambiente;
• è, a sua volta, dotato di una struttura interna.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 1


Modulo 4— U.D. 1— Lez. 1

Funzionalità principali

Le funzionalità principali sono:


• scambio dati con l’esterno;
• memorizzazione;
• elaborazione;
• controllo.

Trasferimento dati

È la funzionalità che consente di scambiare dati


con l’esterno: input/output (I/O).

Si realizza mediante:
• dispositivi di I/O;
• connessione in rete.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 2


Modulo 4— U.D. 1— Lez. 1

Memorizzazione

Vi sono almeno due tipi di memorizzazione:


• a breve termine;
• a lungo termine.

Elaborazione

Risulta come compromesso tra le diverse


caratteristiche di un calcolatore:
• flessibilità;
• modularità;
• scalabilità;
• standardizzazione;
• costo;
• semplicità;
• disponibilità di applicazioni.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 3


Modulo 4— U.D. 1— Lez. 1

Controllo

È esercitato da:
• utente (ad alto livello);
• CPU (a basso livello);
• unità di controllo (a bassissimo livello).

Calcolatore programmabile

Il calcolatore è una macchina estremamente


flessibile:
• le funzionalità vengono fornite dall’hardware;
• la specializzazione viene fornita dal software.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 4


Modulo 4— U.D. 1— Lez. 1

Architettura di von Neumann

La cosidetta architettura di von Neumann si


compone di:
• una unità elaborazione centrale (Central Processing
Unit — CPU);
• un dispositivo di memoria, costituito da un insieme di
elementi identificabili tramite il loro indirizzo;
• alcuni dispositivi, detti periferiche, per l’interazione
con l’esterno;
• una linea di interconnessione, detta bus, con
modalità master/slave.

CPU

È il componente principale, a cui sono affidate le


funzioni di:
• controllo;
• coordinamento;
• elaborazione.

La tecnologia realizzativa è la microelettronica,


le CPU vengono chiamate microprocessori.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 5


Modulo 4— U.D. 1— Lez. 1

Memoria centrale

La memoria centrale:
• ospita i dati coinvolti nell’elaborazione (talvolta anche
quelli delle periferiche);
• è costituita da insieme di celle adiacenti, ognuna
delle quali è identificata da un indirizzo numerico.

Periferiche

Le periferiche:
• interagiscono con l’utente (e l’ambiente);
• comunicano tramite l’interfaccia di I/O.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 6


Modulo 4— U.D. 1— Lez. 1

Bus

Il bus è una linea a cui sono collegate


contemporaneamente diverse unità:
• la CPU svolge il ruolo di master;
• le altre unità funzionano da slave.

Architettura master/slave

vantaggi svantaggi
• semplicità; • lentezza;
• estendibilità; • capacità del canale limitante;
• standardizzabilità; • sovraccarico CPU.

In sintesi

L’architettura di von Neumann:


• descrive le funzionalità dei calcolatori:
– elaborazione;
– scambio dati;
– memorizzazione;
– controllo;
• si compone di:
– CPU;
– memoria;
– periferiche;
– bus.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 7


Modulo 4— U.D. 1— Lez. 1

Prossimi passi

Il funzionamento dei componenti della macchina


di von Neumann.

Chiusura

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 8


Modulo 4— U.D. 1— Lez. 2

Lezione 2 - Bus e CPU

Fondamenti di Informatica per la Sicurezza

Modulo 4 - Sistemi di elaborazione

Unità didattica 1 - Architettura di von Neumann

Stefano Ferrari

Università degli Studi di Milano - Ssri - CDL ONLINE

Bus

Sul bus transitano informazioni di tre tipi:


• dati;
• indirizzi;
• segnali di controllo.

Esse viaggiano su linee separate.

Pertanto, il bus è scomponibile in:


• bus dati;
• bus indirizzi;
• bus controllo.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 1


Modulo 4— U.D. 1— Lez. 2

Esecutore

L’idea fondamentale ancora oggi seguita nella


realizzazione dei sistemi di calcolo:
• codificare le istruzioni in forma numerica;
• inserirle nella memoria centrale.

Nella macchina di von Neumann:


• dati e istruzioni memorizzati in un’unica memoria che
permette lettura e scrittura;
• la memoria è costituita da celle uguali, indirizzate
dalla loro posizione;
• le istruzioni vengono eseguite in modo sequenziale.

Linguaggio macchina

I programmi vengono codificati in un linguaggio


detto linguaggio macchina, o assembly,
caratterizzato da:
• assenza di struttura o tipo di dato;
• istruzioni semplici e in numero ridotto;
• istruzioni composte dall’identificativo dell’operazione
più eventuali operandi:
– esempio: <Somma> <Reg1> <Reg2>.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 2


Modulo 4— U.D. 1— Lez. 2

Codice operativo

Il codice operativo è il valore numerico che


identifica l’operazione effettuata da una
istruzione assembly.

Si ha che:
• CPU della stessa famiglia hanno lo stesso codice
operativo;
• CPU di diversi produttori possono adottare lo stesso
codice operativo (compatibilità).

Esecuzione del programma

Quando il programma e i dati risiedono in


memoria, la CPU opera in modo ciclico:
• viene recuperata dalla memoria l’istruzione da
eseguire (fetch);
• viene decodificata (decode);
• vengono eseguite le operazioni che compongono
l’istruzione (execute).

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 3


Modulo 4— U.D. 1— Lez. 2

CPU

È composta da: bus dati


bus indirizzi
• ALU (Arithmetic-Logic Unit) bus controllo

• registri: MDR MAR


– Program Counter (PC)
PC
– Instruction Register (IR) IR UC
PSW
– Memory Address Register (MAR)
– Memory Data Register (MDR)
REG1
– Processor Status Word (PSW) ...
ALU
REGN
– Registri di lavoro
CPU
• unità di controllo

Fetch

bus dati
bus indirizzi
bus controllo
Nella fase di fetch:
MDR MAR
1. l’UC mette PC in MAR;
PC
2. l’UC mette il comando di IR UC
PSW
lettura sul bus controllo;
3. MDR viene messo in IR — REG1
...
incremento di PC. ALU
REGN

CPU

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 4


Modulo 4— U.D. 1— Lez. 2

In sintesi

La macchina di von Neumann si basa su:


• compresenza di dati e istruzioni in memoria;
• sequenzialità dei programmi;
• ruolo di master della CPU.

Prossimi passi

Gli altri componenti della macchina descritta da


von Neumann:
• la memoria;
• le periferiche.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 5


Modulo 4— U.D. 1— Lez. 2

Chiusura

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 6


Modulo 4— U.D. 1— Lez. 3

Lezione 3 - Memoria e periferiche

Fondamenti di Informatica per la Sicurezza

Modulo 4 - Sistemi di elaborazione

Unità didattica 1 - Architettura di von Neumann

Stefano Ferrari

Università degli Studi di Milano - Ssri - CDL ONLINE

Memoria

Si divide in:
• memoria centrale;
• memoria di massa.

Si classifica per:
• velocità d’accesso;
• densità;
• volatilità;
• costo per bit.

Diverse tecnologie hanno caratteristiche diverse.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 1


Modulo 4— U.D. 1— Lez. 3

Gerarchia di memoria

Dalla più rapida alla più lenta:


• memoria interna alla CPU: registri, cache (a volte è
esterna, ma non passa per il bus);
• memoria interna al calcolatore: memoria centrale;
• memoria esterna al calcolatore: memoria di massa
(dischi, nastri).

L’uso della della cache è motivato dalle proprietà


di località spaziale e temporale degli accessi a
memoria.

Periferiche

Modalità:
• seriale (USB, Firewire, Bluetooth);
• parallelela.

Interfaccia di I/O è composta da:


• registro dati;
• registro di controllo;
• registro di stato.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 2


Modulo 4— U.D. 1— Lez. 3

Controllo delle periferiche

Ci sono due modalità di controllo delle


periferiche:
• in modalità memory mapped, la CPU accede ai
registri della periferica con un’operazione di lettura o
scrittura in memoria, ma lo fa in indirizzi che la
memoria non riconosce come propri;
• tramite istruzioni dedicate, previste nell’instruction
set della CPU.

Modalità di I/O

Gestione I/O a controllo di programma:


• la CPU controlla direttamente lo stato della periferica
(polling).

Gestione I/O a interrupt:


• la periferica avvisa la CPU.

Gestione I/O tramite DMA:


• la CPU controlla il controllore DMA.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 3


Modulo 4— U.D. 1— Lez. 3

Approfondimento

Istruzioni particolari possono alterare il prelievo


delle istruzioni da celle consecutive (e quindi la
sequenzialità):
• istruzioni di salto;
• istruzioni di chiamata a sotto-programmi;
• istruzioni di interruzione.

In sintesi

La macchina di von Neumann si basa su:


• compresenza di dati e istruzioni in memoria;
• sequenzialità dei programmi;
• ruolo di master della CPU.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 4


Modulo 4— U.D. 1— Lez. 3

Prossimi passi

Elementi software dei calcolatori:


• elementi di programmazione;
• cenni di sistemi operativi.

Chiusura

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 5


Modulo 4— U.D. 2— Lez. 1

Lezione 1 - Soluzione automatizzata di


problemi

Fondamenti di Informatica per la Sicurezza

Modulo 4 - Sistemi di elaborazione

Unità didattica 2 - Elementi di programmazione

Stefano Ferrari

Università degli Studi di Milano - Ssri - CDL ONLINE

Definizione

virtuale [vir-tu-à-le] agg.


1. Che esiste in potenza, ma non si è ancora
realizzato;
2. Fittizio, non reale.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 1


Modulo 4— U.D. 2— Lez. 1

Macchina virtuale

Si usa il termine macchina virtuale per indicare


l’astrazione della macchina fisica realizzata dal
software ai vari livelli.

Esempio:
• per le periferiche mappate in memoria si usano delle
operazioni che non hanno nulla a che vedere con la
realtà fisica, ma facilitano l’uso dei dispositivi.

Virtualizzazione

A livello di utente:
• sistema operativo;
• interfaccia:
– tira l’angolino;
– schiaccia il pulsante.

A livello di programmatore:
• paradigmi di programmazione;
• linguaggi.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 2


Modulo 4— U.D. 2— Lez. 1

Risolvere un problema

Dato un problema, l’individuazione delle


procedure necessarie alla sua soluzione richiede
le seguenti fasi:
• descrizione dei requisiti che la soluzione dovrà
soddisfare per essere considerata corretta
(specifiche);
• procedimento con cui si individua o si inventa una
soluzione (progetto);
• tecnica che consente di risolvere il problema
(soluzione).

Nell’informatica, la soluzione è espressa tramite


un algoritmo.

Algoritmo

Dato un problema e un esecutore, l’algoritmo:


• è una successione finita di passi elementari
(direttive);
• eseguibile senza ambiguità dall’esecutore;
• risolve il problema dato.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 3


Modulo 4— U.D. 2— Lez. 1

Caratteristiche di un algoritmo

Ogni algoritmo possiede le seguenti


caratteristiche:
• sequenzialità:
– viene eseguito un passo dopo l’altro secondo un ordine
specificato (flusso di esecuzione);

• univocità:
– i passi elementari devono poter essere eseguiti in modo
univoco dall’esecutore, e quindi devono essere descritti in
una forma eseguibile per l’esecutore.

Algoritmo e programmazione

Un buon algoritmo deve prevedere tutti i casi


significativi che derivano dall’esecuzione di ogni
passo elementare.

La descrizione di un algoritmo per un esecutore


automatico deve avere una formulazione
generale: la soluzione individuata non deve
dipendere solo da valori predefiniti dei dati.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 4


Modulo 4— U.D. 2— Lez. 1

Esempi

Esempio negativo:
• programma che calcola l’area del cerchio di raggio 3
cm.

Esempio positivo:
• programma che calcola l’area del cerchio di raggio
dato dall’utente.

Elementi di un algoritmo

“Oggetti”: le entità su cui opera l’algoritmo vengono


generalmente chiamate dati, e comprendono sia i
dati iniziali del problema che i risultati intermedi.
Operazioni: gli interventi che si possono effettuare
sugli oggetti, cioè sui dati sono calcoli, confronti,
assegnamenti ed operazioni di I/O.
Flusso di controllo: indica le possibili evoluzioni
dell’esecuzione delle operazioni, cioè le possibili
successioni dei passi dell’algoritmo.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 5


Modulo 4— U.D. 2— Lez. 1

Esempi di algoritmi

Algoritmi adatti ad un esecutore umano:


• ricette di cucina;
• spartiti musicali;
• istruzioni di montaggio di un mobile.

Generalmente contengono riferimenti a:


• quantità soggettive;
• descrizioni approssimative;
• informazioni mancanti perché implicite.

In sintesi

L’individuazione di una soluzione prevede tre


fasi:
• specifica;
• progetto;
• realizzazione.

Una soluzione adatta ad un esecutore automatico


deve essere:
• sequenziale;
• non ambigua.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 6


Modulo 4— U.D. 2— Lez. 1

Prossimi passi

Elementi di programmazione di un calcolatore.

Chiusura

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 7


Modulo 4— U.D. 2— Lez. 2

Lezione 2 - Programmazione di un
calcolatore

Fondamenti di Informatica per la Sicurezza

Modulo 4 - Sistemi di elaborazione

Unità didattica 2 - Elementi di programmazione

Stefano Ferrari

Università degli Studi di Milano - Ssri - CDL ONLINE

Descrizione di un algoritmo

Un algoritmo adatto per un esecutore automatico


deve essere descritto tramite un formalismo
(linguaggio) rigoroso e non ambiguo costituito
da:
• vocabolario: insieme di elementi per la descrizione
di oggetti, operazioni e flusso di controllo;
• sintassi: insieme di regole per la composizione degli
elementi del linguaggio in frasi eseguibili e costrutti
di controllo;
• semantica: insieme di regole per l’interpretazione
degli elementi e delle istruzioni sintatticamente
corrette.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 1


Modulo 4— U.D. 2— Lez. 2

Linguaggio di programmazione

In un linguaggio di programmazione:
• gli oggetti vengono descritti tramite nomi simbolici
(detti anche identificatori);
• le operazioni vengono descritte tramite operatori,
funzioni e procedure;
• il flusso di controllo viene descritto tramite opportuni
costrutti di controllo.

Flusso di controllo vs. flusso di esecuzione

Il flusso di controllo è differente dal flusso di


esecuzione.

Il flusso di controllo descrive tutte le possibili


successioni di operazioni che possono essere
realizzate dal programma nella sua esecuzione.

Il flusso di esecuzione è la sequenza di


operazioni percorsa durante una particolare
esecuzione del programma.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 2


Modulo 4— U.D. 2— Lez. 2

Linguaggi di programmazione (1)

I linguaggi di programmazione sono classificabili


in almeno quattro grandi categorie, parzialmente
sovrapposte:
Imperativi: le istruzioni descrivono in modo
esplicito le modifiche del contenuto della
memoria;
• esempi: Basic, Pascal, C, Fortran, Cobol;

Funzionali: il programma è costituito da una


funzione che ha per argomenti altre
sottofunzioni;
• esempio: Lisp;

Linguaggi di programmazione (2)

Dichiarativi (o logici): il programma è costituito


da una serie di asserzioni e di regole, e la sua
esecuzione consiste in una dimostrazione di
veridicità di un’asserzione, senza indicare il
flusso di esecuzione;
• esempio: Prolog;

Orientati agli oggetti: il programma è costituito


da entità (oggetti) che comunicano tra loro
scambiandosi messaggi e che godono delle
proprietà di incapsulamento, ereditarietà e
polimorfismo;
• esempi: Ada, Smalltalk, Java.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 3


Modulo 4— U.D. 2— Lez. 2

Linguaggi di descrizione

I linguaggi semiformali hanno regole ben


definite, ma permettono descrizioni in linguaggio
naturale, non rigorose.
Sono usati nella fase di sviluppo di algoritmi:
schema a blocchi (diagramma di flusso): usa
blocchi di varie forme geometriche connessi
da archi orientati la cui direzione indica il
flusso di controllo, mentre la forma dei blocchi
indica la natura del blocco stesso (operazione,
confronto, operazione di I/O);
pseudocodice: usa strutture di controllo di un
linguaggio di programmazione e operazioni
descritte in linguaggio naturale.

Sottoprogrammi

Programmi complessi vengono progettati


seguendo uno schema gerarchico in cui il
problema iniziale viene suddiviso in
sottoproblemi e così via (metodologia
top-down).

Questo approccio ha i seguenti vantaggi:


• chiarezza del programma principale;
• sintesi;
• efficienza.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 4


Modulo 4— U.D. 2— Lez. 2

Vantaggi

Chiarezza: i dettagli di basso livello sono


descritti a parte nei sottoprogrammi,
evidenziando la struttura di controllo
generale;
Sintesi: per i sottoproblemi presenti in più parti
del problema principale, richiamando il
sottoprogramma, si evitano di ripetere le
stesse sequenze di operazioni;
Efficienza: sottoproblemi di uso comune sono
disponibili, già risolti da esperti
programmatori, raccolti nelle cosiddette
librerie.

Programma eseguibile

Perché un algoritmo sia eseguibile da un


calcolatore, esso deve essere tradotto in una
sequenza di istruzioni codificate nel codice
operativo caratteristico della CPU del calcolatore
che lo eseguirà (binario).

L’operazione di traduzione da un linguaggio di


programmazione ad un altro è una procedura
ripetitiva, che può essere automatizzata.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 5


Modulo 4— U.D. 2— Lez. 2

Traduzione in binario

La traduzione in codice eseguibile è effettuata da


un programma apposito, che può essere di due
tipi:
• interprete: traduce solo le istruzioni del flusso di
esecuzione;
– la traduzione viene effettuata ad ogni esecuzione;

• compilatore: traduce l’intero programma;


– la traduzione viene effettuata una sola volta.

In sintesi

I programmi per i calcolatori devono essere


espressi in forma rigorosa e non ambigua.

I linguaggi di programmazione rispettano queste


caratteristiche.

I paradigmi e le metodologie di programmazione


aiutano a sviluppare programmi corretti e
facilmente gestibili.

I programmi devono infine essere tradotti nel


codice binario della macchina esecutrice.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 6


Modulo 4— U.D. 2— Lez. 2

Prossimi passi

La catena di programmazione, ovvero come si


produce un programma eseguibile.

Chiusura

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 7


Modulo 4— U.D. 2— Lez. 3

Lezione 3 - Catena di programmazione

Fondamenti di Informatica per la Sicurezza

Modulo 4 - Sistemi di elaborazione

Unità didattica 2 - Elementi di programmazione

Stefano Ferrari

Università degli Studi di Milano - Ssri - CDL ONLINE

Programmare

La generazione di un programma eseguibile


consiste nella traduzione automatica
• di un algoritmo espresso in un linguaggio simbolico
(programma sorgente)
• nello stesso algoritmo espresso in codice macchina
(programma eseguibile).

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 1


Modulo 4— U.D. 2— Lez. 3

Catena di programmazione

Le fasi che portano un algoritmo ad essere


eseguito sono:
editing: composizione del programma sorgente;
compiling: traduzione in codice binario;
linking: collegamento con i sottoprogrammi di
libreria;
loading: caricamento in memoria;
esecuzione: esecuzione del programma.

Editing

Generalmente un algoritmo viene codificato in un


programma sorgente.

Lo strumento utilizzato per la scrittura è un


apposito programma chiamato editor.

Questa fase ha termine con la produzione di un


file di testo detto file programma sorgente.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 2


Modulo 4— U.D. 2— Lez. 3

Compiling

La fase di traduzione, o compilazione, utilizza un


programma (detto compilatore).

Esso elabora il file sorgente, riconoscendo i


simboli, le parole e i costrutti del linguaggio e
producendo:
• la forma binaria del codice macchina corrispondente
(file programma oggetto);
• oppure, una segnalazione degli errori sintattici.

Errore sintattico

Gli errori sintattici sono violazioni delle regole


sintattiche del linguaggio di programmazione.

Essi rendono il programma non associabile ad un


significato e quindi ne impediscono la traduzione.

Esempio:
3 * (5 +/ 2)

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 3


Modulo 4— U.D. 2— Lez. 3

Linking

Nella fase di linking (collegamento), un


programma (detto linker) collega il file oggetto
con le funzioni di libreria.

Esso produce:
• un programma eseguibile;
• oppure, una segnalazione di errore nella citazione
delle routine di libreria (linker error).

Loading

Per poter essere eseguito, un file eseguibile deve


essere caricato in memoria centrale.

Questa funzione viene svolta da un programma


chiamato loader (caricatore), che individua una
regione di memoria adeguata all’esecuzione del
programma.

Se tale spazio in memoria non esiste, segnala un


errore di caricamento per memoria insufficiente.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 4


Modulo 4— U.D. 2— Lez. 3

Esecuzione

Il programma in esecuzione elabora i dati in


ingresso e produce i risultati in uscita.

Possibili errori (non di tipo sintattico!):


• calcoli matematicamente impossibili (run-time error);
– esempio: divisione per zero;
• operazioni fisicamente impossibili (run-time error);
– esempio: memoria insufficiente;
• calcoli scorretti;
– esempio: overflow;
• errori semantici;
– esempio: errore nella scrittura di un’operazione.

In sintesi

Il percorso che porta un algoritmo ad essere


eseguito è scandito dalle seguenti fasi:
• editing;
• compiling;
• linking;
• caricamento;
• esecuzione.

In ogni fase, la descrizione dell’algoritmo subisce


una trasformazione.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 5


Modulo 4— U.D. 2— Lez. 3

Prossimi passi

Alcuni cenni sui principi di funzionamento dei


sistemi operativi.

Chiusura

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 6


Modulo 4— U.D. 3— Lez. 1

Lezione 1 - Struttura del sistema


operativo

Fondamenti di Informatica per la Sicurezza

Modulo 4 - Sistemi di elaborazione

Unità didattica 3 - Cenni di sistemi operativi

Stefano Ferrari

Università degli Studi di Milano - Ssri - CDL ONLINE

Motivazioni

Il sistema operativo (SO) è un insieme di


programmi che:
• gestiscono l’hardware;
• forniscono un’interfaccia semplificata all’utente ed ai
programmi utente verso l’hardware.

Il SO è utile perché:
• l’uso diretto dell’HW non è agevole;
• i programmi devono essere riscritti se si cambia
l’HW;
• la gestione della macchina è trasparente per l’utente.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 1


Modulo 4— U.D. 3— Lez. 1

Modello a buccia di cipolla

Il modello di SO più diffuso ha una struttura


modulare a strati (modello a buccia di cipolla):

utente/programmi utente
interprete dei comandi (shell)
file system
gestore della periferiche SO
gestore della memoria
nucleo (kernel)
hardware

Ogni strato fornisce un’astrazione (macchina


virtuale) agli strati più esterni.

Kernel

Il kernel:
• è lo strato a contatto diretto con la CPU (se si cambia
HW, solo il kernel va modificato);
• gestisce l’uso della CPU da parte dei programmi;
• permette ad ogni processo (programma+dati)/utente
di considerarsi unico utilizzatore della CPU.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 2


Modulo 4— U.D. 3— Lez. 1

Gestore della memoria

Il gestore della memoria:


• fornisce uno spazio virtuale di indirizzamento;
• protegge dati/istruzioni;
• maschera la collocazione fisica (e.g., swap);
• controlla la sovrapposizione degli spazi di memoria
associati ai vari programmi.

Gestore delle periferiche

Il gestore delle periferiche:


• fornisce una visione semplificata delle periferiche;
• fornisce ai programmi delle primitive ad alto livello
per l’uso delle periferiche;
• gestisce i conflitti nell’uso delle periferiche (ogni
programma “vede” un insieme di periferiche
dedicate).

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 3


Modulo 4— U.D. 3— Lez. 1

File system

Il file system:
• è uno strato dedicato ad una classe di periferiche
peculiari;
• organizza i dispositivi di memoria di massa;
• gestisce la corrispondenza tra locazione fisica e
identificatore del file;
• gestisce i permessi di uso dei file.

Shell

L’interprete dei comandi (shell):


• è il modulo accessibile all’utente (tramite le
periferiche);
• interpreta i comandi dell’utente;
• si occupa del caricamento e dell’esecuzione dei
programmi.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 4


Modulo 4— U.D. 3— Lez. 1

Rete

La connessione di rete non è stata considerata:


quando il modello è stato formulato, la rete
veniva vista come una una funzionalità
aggiuntiva esterna al SO.

La rete può essere considerata


semplicisticamente come una periferica
particolare.

Tuttavia, l’appartenenza ad una rete di


calcolatori è un aspetto che investe i vari strati
del SO.

In sintesi

Il sistema operativo è un insieme di programmi


che facilitano l’uso del calcolatore.

Il suo scopo è:
• gestire l’hardware;
• fornire un’interfaccia semplificata per l’utente.

Una struttura gerarchica di moduli fornisce


diversi gradi di astrazione.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 5


Modulo 4— U.D. 3— Lez. 1

Prossimi passi

Classificazione dei vari tipi di sistema operativo.

Cenni sul funzionamento dei moduli principali.

Chiusura

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 6


Modulo 4— U.D. 3— Lez. 2

Lezione 2 - Classificazione dei sistemi


operativi

Fondamenti di Informatica per la Sicurezza

Modulo 4 - Sistemi di elaborazione

Unità didattica 3 - Cenni di sistemi operativi

Stefano Ferrari

Università degli Studi di Milano - Ssri - CDL ONLINE

Tipi di SO

I SO si possono classificare a seconda delle loro


caratteristiche:
• monoutente monoprogrammato;
• monoutente multiprogrammato;
• multiutente multiprogrammato.

Fra i sistemi multiprogrammati sono diffusi:


• time-sharing (i processi usano alternativamente la
CPU per un quanto di tempo);
• real-time.

Inoltre, ci sono sistemi dedicati.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 1


Modulo 4— U.D. 3— Lez. 2

Parallelismo

L’architettura di von Neumann prevede


un’esecuzione sequenziale dedicata.

Alcune operazioni, però, possono essere eseguite


in parallelo.

Il parallelismo può essere individuato a diversi


livelli:
• dati (esempio: cambiare la luminosità a tutti i pixel
dell’immagine);
• istruzioni (a=b+c e z =1);
• programmi (lettore mp3 e word processing).

Parallelismo: motivazioni

I principali motivi a supporto del parallelismo


sono:
• efficienza: mentre un processo attende un input,
può lasciare l’uso della CPU ad un altro;
• interattività: l’interazione con l’utente richiede
brevi, ma frequenti intervalli di utilizzo della CPU;
• sincronizzazione/cooperazione: si può
semplificare la descrizione di molti programmi
utilizzando attività concorrenti, aumentando anche
l’efficienza della CPU (e.g., modello
produttore-consumatore).

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 2


Modulo 4— U.D. 3— Lez. 2

In sintesi

I sistemi operativi si differenziano per la


modalità con cui gestiscono le risorse.

Particolare attenzione su come viene gestita la


CPU.

Una gestione multiprocesso favorisce un alto


utilizzo della CPU.

Prossimi passi

Cenni sul funzionamento di:


• kernel;
• gestore della memoria;
• file system.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 3


Modulo 4— U.D. 3— Lez. 2

Chiusura

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 4


Modulo 4— U.D. 3— Lez. 3

Lezione 3 - Gestione dei processi

Fondamenti di Informatica per la Sicurezza

Modulo 4 - Sistemi di elaborazione

Unità didattica 3 - Cenni di sistemi operativi

Stefano Ferrari

Università degli Studi di Milano - Ssri - CDL ONLINE

Processo

Un processo (entità dinamica) è un programma


(entità statica) in esecuzione.

Il dinamismo è espresso da:


• evoluzione dei dati;
• flusso di esecuzione.

Ad ogni programma possono corrispondere più


processi (figli): ognuno afferisce a diverse
sezioni del programma (processo padre).

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 1


Modulo 4— U.D. 3— Lez. 3

Stati di un processo (1)

Un processo si trova in uno dei seguenti tre stati:


• pronto — ready (coda dei processi pronti)
• esecuzione — running (uso della CPU)
• attesa — waiting (code delle periferiche)

selezione per esecuzione


inizio esecuzione terminazione
pronto esecuzione
interrupt esterno

evento esterno interrupt interno

attesa

Stati di un processo (2)

Il processore viene utilizzato a turno dai processi


in esecuzione, ciclando fra i tre stati:
• la transizione da pronto a esecuzione avviene quando
il processo prende uso della CPU (scheduler);
• transita da esecuzione a pronto quando lo scheduler
gli toglie l’uso della CPU (e.g., quando scade il suo
quanto di tempo, evento esterno da gestire);
• passa da esecuzione a attesa quando il processo
deve attendere un evento (e.g., carattere da
tastiera);
• passa da attesa a pronto quando l’evento atteso si è
verificato.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 2


Modulo 4— U.D. 3— Lez. 3

Classificazione dei processi

I processi si dividono in due categorie:


• I/O bound, caratterizzati da frequenti operazioni di
I/O (e.g., programma di scrittura);
– lunghi periodi di attesa di eventi esterni intervallati da brevi
elaborazioni;
• CPU bound, che fanno calcoli (e.g., simulazione);
– lunghi periodi di calcolo intervallati da brevi operazioni di I/O.

Multiprogrammazione

La multiprogrammazione è vantaggiosa perché:


• sfrutta i tempi morti;
– mentre un processo attende un carattere da tastiera, la CPU
può continuare ad eseguire un programma di puro calcolo;

• esegue lo switch tra processi già in memoria;


– l’operazione di cambio di contesto (salvataggio dei valori dei
registri del processo che lascia la CPU e ripristino di tali valori
per il processo che subentra) è relativamentre veloce perché
avviene per processi che sono già in memoria centrale.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 3


Modulo 4— U.D. 3— Lez. 3

Politiche di scheduling

L’obiettivo dello scheduling è la massimizzazione


dell’utilizzo della CPU.

I più diffusi algoritmi di scheduling sono:


• round robin: ad ogni processo è assegnata la CPU
per un quanto di tempo prefissato (sufficientemente
grande rispetto al tempo di cambio del contesto);
• priorità statica: priorità fissata alla creazione dei
processi in base alle loro caratteristiche (altà priorità
per i processi interattivi, bassa priorità per i processi
CPU bound);
• priorità dinamica: la priorità può essere modificata
durante l’esecuzione dei processi.

Vantaggi della concorrenza

L’esecuzione concorrente di processi ha diversi


vantaggi, tra i quali:
• aumento del tempo di utilizzo effettivo della CPU;
• suddivisione dei processi su più CPU o su più
calcolatori;
• condivisione (controllata) delle stesse risorse.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 4


Modulo 4— U.D. 3— Lez. 3

Problemi della concorrenza

Le interazioni tra processi concorrenti possono


causare due problemi:
• starvation (morte per inedia): processi di priorità
più elevata possono ritardare indefinitamente
l’esecuzione di un processo a bassa priorità;
• deadlock (blocco infinito): se due processi
richiedono entrambi una risorsa (o un risultato)
occupata dall’altro, nessuno dei due processi può
terminare.
Esempio: un idraulico ed un elettricista devono
rifare gli impianti di una casa, ma entrambi esigono
che sia prima sistemato l’altro impianto.

Processi concorrenti

La concorrenza tra processi assume la forma di:


• competizione per le risorse, quando i processi
devono svolgere compiti differenti, con lo scopo di
portare a termine il loro compito il prima possibile;
• cooperazione, quando i compiti che devono portare a
termine sono tra loro correlati (per esempio, spooling
di stampa); in questo caso si presentano problemi di:
– sincronizzazione delle attività: sono necessari dispositivi per
controllare l’ordinamento degli eventi (semafori);
Esempio: non versare l’acqua se non c’è sotto il bicchiere;
– comunicazione: serve per lo scambio di dati tra i processi
(memoria condivisa, messaggi).

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 5


Modulo 4— U.D. 3— Lez. 3

In sintesi

Il processo è una entità dinamica prodotta


dall’esecuzione di un programma.

L’esecuzione concorrente di più processi


permette un maggiore sfruttamento della CPU,
ma causa i problemi di:
• competizione (starvation, deadlock);
• cooperazione (sincronia,comunicazione).

Prossimi passi

Cenni sul funzionamento di:


• gestore della memoria;
• file system.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 6


Modulo 4— U.D. 3— Lez. 3

Chiusura

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 7


Modulo 4— U.D. 3— Lez. 4

Lezione 4 - Gestore della memoria

Fondamenti di Informatica per la Sicurezza

Modulo 4 - Sistemi di elaborazione

Unità didattica 3 - Cenni di sistemi operativi

Stefano Ferrari

Università degli Studi di Milano - Ssri - CDL ONLINE

Gestione della memoria centrale

Il gestore della memoria è il modulo di sistema


operativo che fornisce ad ogni processo uno
spazio di indirizzamento virtuale.

Per ottimizzare l’utilizzo della memoria, il


gestore della memoria consente:
• il caricamento di un programma a partire da un
qualsiasi indirizzo;
• il caricamento in memoria (fisica) solo di porzioni di
programma o dati;
• la condivisione di istruzioni da parte di processi
differenti (generati dallo stesso programma).

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 1


Modulo 4— U.D. 3— Lez. 4

Spazio di indirizzamento

La memoria disponibile per un programma può


essere descritta in termini di:
• spazio logico: è lo spazio di indirizzamento virtuale in
cui gli indirizzi delle celle partono da 0;
• spazio fisico: è lo spazio di indirizzamento del
dispositivo di memoria.

Rilocabilità del codice

La rilocazione della memoria:


• è realizzata dal gestore della memoria;
• consiste in un mappaggio degli indirizzi da logici a
fisici;
• permette di eseguire un processo in qualsiasi zona
della memoria fisica;
• definisce lo spiazzamento di un processo: indirizzo
fisico della cella 0 dello spazio logico.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 2


Modulo 4— U.D. 3— Lez. 4

Rilocazione

La rilocazione può essere:


• statica, quando lo spiazzamento viene calcolato al
momento del linking;
• dinamica, quando:
– i programmi vengono caricati in memoria con gli indirizzi
calcolati da 0;
– il contenuto di un particolare registro (registro base) viene
aggiunto ad ogni istruzione.

Rilocazione dinamica

La rilocazione dinamica:
• è necessaria in sistemi multiprogramma;
• richiede la disponibilità di apposito HW;
• può essere effettuata separatamente su dati e
istruzioni mediante due registri base (diversi processi
possono avere lo stesso registro base istruzioni).

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 3


Modulo 4— U.D. 3— Lez. 4

Memoria virtuale

La memoria è una risorsa preziosa.

Generalmente, si dispone di meno memoria di


quanta ne sarebbe necessaria ai processi attivi.

La memoria virtuale è una tecnica che consente


di ampliare lo spazio di indirizzamente usando
una parte della memoria di massa (swap) per
coprire la mancanza di memoria centrale.

Se un processo richiede più memoria di quanta


ne sia disponibile al momento, il gestore della
memoria salva i dati di uno dei processi in attesa
nell’area di swap, liberando così la memoria da
essi occupata.

Stati di un processo con swapping

interrupt esterno e carica su disco


inizio esecuzione

selezione per esecuzione


em oria
in m
carica terminazione
pronto esecuzione
disco disco interrupt esterno
a su
pronto caric

evento esterno interrupt interno


evento esterno
attesa

co
dis
disco su
ica
attesa car

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 4


Modulo 4— U.D. 3— Lez. 4

Frammentazione

Il gestore della memoria


assegna la memoria
disponibile ai P1 P1 P1 P1
programmi che devono
essere eseguiti.

Si può verificare una


situazione in cui vi è P2 P2 P2
sufficiente memoria P5
disponibile, ma non P4 P4
essendo contigua non
P3
può essere utilizzata.

t1 t2 t3 t4

Paginazione

Si suddivide la memoria (sia fisica che logica) in


blocchi di ugual dimensione (pagine).

Ad ogni processo si allocano solo un numero


intero di pagine.

In questo modo:
• si guadagna la possibilità di allocare zone non
contigue di memoria;
• si può attenuare il problema della frammentazione
della memoria.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 5


Modulo 4— U.D. 3— Lez. 4

Segmentazione

La segmentazione è una tecnica basata sulla


suddivisione della memoria usata da un
programma a secondo il tipo di informazione
contenuta:
• segmento codice;
• segmento dati;
• segmento pila.

Ogni segmento viene trattato in modo


indipendente dal gestore della memoria.

Permette la condivisione dello stesso segmento


codice da parte di più processi.

In sintesi

La memoria è una risorsa costosa.

Il gestore della memoria ne ottimizza


l’assegnazione ai processi:
• rendendo trasparente al processo la sua locazione
fisica;
• mantenendo in memoria solo la porzione di dati e di
istruzioni necessarie all’esecuzione;
• evitando la duplicazione di informazioni.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 6


Modulo 4— U.D. 3— Lez. 4

Prossimi passi

Cenni sulla struttura e sulle funzioni del file


system.

Chiusura

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 7


Modulo 4— U.D. 3— Lez. 5

Lezione 5 - File system

Fondamenti di Informatica per la Sicurezza

Modulo 4 - Sistemi di elaborazione

Unità didattica 3 - Cenni di sistemi operativi

Stefano Ferrari

Università degli Studi di Milano - Ssri - CDL ONLINE

File system

Presenta all’utente e ai programmi una visione


semplificata ed omogenea dei dispositivi per la
memoria di massa:
• attraverso un’organizzazione logica (directory,
volumi);
• mediante operazioni sui dati memorizzati, quali:
– il recupero;
– la cancellazione;
– la modifica;
– la copia.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 1


Modulo 4— U.D. 3— Lez. 5

Dati e metadati

Oltre ai dati ed i programmi degli utenti, la


memoria di massa deve memorizzare anche
informazioni che riguardano il file system stesso:
• aree libere o allocate;
• directory.

Allocazione

L’allocazione dello memoria di massa condivide i


problemi di allocazione della memoria centrale.

Per esempio:
• frammentazione;
• allocazione contigua (supporti write-once);
• allocazione a blocchi (supporti riscrivibili).

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 2


Modulo 4— U.D. 3— Lez. 5

Allocazione a lista concatenata

Un file è una concatenazione di blocchi.

Ciò comporta che:


• una porzione di ogni blocco è impegnata dalla

posizione fisica del blocco seguente;


• l’accesso al blocco N -esimo richiede l’accesso a
N − 1 blocchi;
• il danneggiamento di un blocco impedisce di
recuperare il resto del file.

File Allocation Table

La File Allocation Table (FAT) è una mappa di


allocazione dei blocchi della memoria di massa.

FAT 0 3 5 6 -1 9 0 -1 8
1 2 3 4 5 6 7 8 9

Ogni elemento della mappa contiene uno fra i


seguenti valori:
• l’identificatore di blocco vuoto;
• la posizione del prossimo blocco del file;
• l’identificatore di ultimo blocco.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 3


Modulo 4— U.D. 3— Lez. 5

Svantaggi della FAT

L’approccio basato su FAT comporta i seguenti


svantaggi:
• per essere efficiente, la FAT deve stare in memoria;
• l’accesso al blocco N -esimo richiede N accessi in
memoria centrale (più uno in memoria di massa);
• la dimensione della FAT cresce più che linearmente
con la dimensione del dispositivo.
Esercizio: Quanto occupa la FAT di un disco da 20 GiBi, con
blocchi da 2 KiBi?
– Il disco dato ha 10 · 220 blocchi: la FAT avrà 10 · 220 elementi.
– Ciascun elemento richiede almeno 24 bit, quindi la FAT
occuperà non meno di 30 MiBi.

Allocazione indicizzata

Con l’allocazione indicizzata, ogni file è descritto


da un blocco detto blocco indice.

Il blocco indice contiene l’elenco dei blocchi che


compongono il file.

L’approccio può essere gerarchizzato


(indicizzazione multilivello):
• nei file piccoli, il blocco indice punta ai blocchi dati;
• nei file grandi, il blocco indice punta a blocchi indice
di livello inferiore.

Solo i blocchi indice dei file aperti devono stare


in memoria.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 4


Modulo 4— U.D. 3— Lez. 5

File system di rete

I sistemi distribuiti presentano problemi


aggiuntivi nei seguenti campi:
• denominazione dei file;
• accesso remoto trasparente all’utente;
• consistenza dei dati;
• sicurezza.

In sintesi

Il file system deve assicurare:


• un’organizzazione logica semplice per gli utenti;
• accesso ai dati efficente, ma controllato.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 5


Modulo 4— U.D. 3— Lez. 5

Approfondimenti

Sciuto ed altri, "Introduzione ai sistemi


Informatici", McGraw Hill, 1997, seconda
edizione:
• architetture: cap. 4 , pagg. 111–180;
• programmazione: cap. 2, pagg. 17–62;
• sistema operativo: cap. 5 , pagg. 181–242.

Chiusura

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 6


Modulo 5— U.D. 1— Lez. 1

Lezione 1 - Teoria computazionale

Fondamenti di Informatica per la Sicurezza

Modulo 5 - Elementi di teoria computazionale

Unità didattica 1 - Inquadramento storico-scientifico

Stefano Ferrari

Università degli Studi di Milano - Ssri - CDL ONLINE

Aforisma

Computer Science is no more about computers

than astronomy is about telescopes.

Edsger Dijkstra

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 1


Modulo 5— U.D. 1— Lez. 1

Scienza informatica

Ogni disciplina scientifica richiede un


inquadramento teorico che ne definisca:
• gli scopi;
• i limiti;
• le potenzialità.

La nascita dell’informatica risale agli anni ’30.

Dagli anni ’40 la tecnologia ha prodotto


strumenti di calcolo sempre più potenti.

È una mera (e fortunata) coincidenza.

Scopi e potenzialità dell’informatica


L’informatica descrive:
• la codifica
• l’analisi
• la manipolazione
• la trasmissione

dell’informazione a prescindere dal particolare


strumento di calcolo.

I principi dell’informatica saranno validi anche


per i calcolatori che soppianterano gli attuali.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 2


Modulo 5— U.D. 1— Lez. 1

Storia della matematica

Semplificando e senza pretese di completezza:


• Greci:
– numeri: entità di interesse pratico (pitagorici a parte);
– geometria: entità intuitive e assiomi ragionevoli;

• Descartes, Newton e tanti altri (1600–1700):


– geometria analitica;
– calcolo differenziale e integrale;

• Lobacevskij, Cantor, Boole (1700–1900):


– geometrie non euclidee;
– assiomatizzazione degli insiemi;
– infinito.

Quadro storico del 1900

• Hilbert (1879)
Programma formalista della matematica:
– una teoria matematica formata da un insieme di assiomi e di
regole di deduzione;
– una teoria coerente e completa;
– sviluppo meccanico della matematica.

• Russel (1902)
Paradosso che mina la coerenza della teoria degli
insiemi (sui quali è costruito tutto il resto!):
– l’insieme degli insiemi che non hanno se stessi come
elemento, ha se stesso come elemento?

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 3


Modulo 5— U.D. 1— Lez. 1

Incompletezza

• Gödel (1931)
Creare un sistema matematico completo e coerente è
impossibile:
– è possibile formulare asserzioni che non possono essere
dimostrate né vere, né false;
– non si può esser certi che gli assiomi dell’aritmetica non
portino a contraddizioni.

In altre parole: non si può ridurre la matematica


al calcolo automatico di teoremi a partire da
assiomi e regole di deduzione.

Ma allora cosa è calcolabile?

Teoria computazionale

• Turing, Church (1936)


Formalizzazione del processo di calcolo:
– macchina calcolatrice ideale;
– sistemi formali di calcolo;
– esistenza di funzioni non calcolabili.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 4


Modulo 5— U.D. 1— Lez. 1

Tesi di Church

Tesi di Church-Turing
La classe delle funzioni intuitivamente calcolabili
coincide con quella delle funzioni calcolabili dalla
macchina di Turing.

È un’asserzione praticamente indimostrabile!

Ciò è dovuto all’impossibilità di formalizzare il


concetto di “calcolabilità intuitiva”.

È possibile dimostrarne la falsità, però nessuno


c’è ancora riuscito.

Viene comunemente utilizzata come ipotesi.

Formulazioni equivalenti

• λ-calcolo (Church, 1936);


• macchina di Turing (Turing, 1936);
• funzioni ricorsive parziali (Kleene, 1936);
• macchina di Post (Post, 1936);
• calcolo dei combinatori (Schofinkel, 1924; Curry,
1958);
• algoritmi di Markov (Markov, 1960).

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 5


Modulo 5— U.D. 1— Lez. 1

Calcolabilità e algoritmi

Ci sono diversi gradi di calcolabilità:


• funzioni facili da calcolare;
• funzioni difficili da calcolare;
• funzioni che non si sa come calcolare:
(
1 esistono almeno x “5” in π
f (x) =
0 altrimenti

• funzioni che non si sa se si possono calcolare:


(
1 esistono esattamente x “5” in π
g(x) =
0 altrimenti

In sintesi

La teoria della computazione dice che:


• esistono funzioni definibili matematicamente che non
si possono calcolare;
• esistono diversi formalismi (equivalenti) per la
descrizione del calcolo;
• esistono funzioni calcolabili che non si sanno
calcolare;
• esistono funzioni che non si sa se si possono
calcolare;
• esistono diversi gradi di calcolabilità.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 6


Modulo 5— U.D. 1— Lez. 1

Prossimi passi

Approfondimento sulla calcolabilità.

Elementi della teoria computazionale:


• linguaggi;
• grammatiche;
• automi;
• classi di complessità.

Chiusura

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 7


Modulo 5— U.D. 1— Lez. 2

Lezione 2 - Computabilità

Fondamenti di Informatica per la Sicurezza

Modulo 5 - Elementi di teoria computazionale

Unità didattica 1 - Inquadramento storico-scientifico

Stefano Ferrari

Università degli Studi di Milano - Ssri - CDL ONLINE

Algoritmi e funzioni

Un algoritmo è una sequenza univoca di


istruzioni che manipola i dati in ingresso e
fornisce i dati in uscita.

Come tale, è rappresentabile come una funzione.

Non è restrittivo limitare i dati in ingresso e in


uscita ai soli numeri naturali.

Quindi un algoritmo, A, realizza una funzione su


N, fA : N → N.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 1


Modulo 5— U.D. 1— Lez. 2

Relazione algoritmo-funzione

Una funzione f associa ad un valore x un valore


f (x).

Un algoritmo che calcola f è un metodo per


trovare f (x) dato x.

È una relazione simile a quella che lega un


teorema e una sua dimostrazione:
• possono esserci più algoritmi che calcolano la stessa
funzione;
• se non conosciamo un algoritmo di calcolo, non è
detto che la funzione non sia calcolabile.

Numerabilità degli algoritmi

Gli algoritmi sono composti da una successione


finita di istruzioni.

Ci sono un numero finito di istruzioni.

È quindi possibile assegnare un codice ad ogni


algoritmo.

Indicheremo con Pn , l’n-esimo algoritmo.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 2


Modulo 5— U.D. 1— Lez. 2

Funzioni calcolabili

Non tutte le funzioni su N sono calcolabili.

Definiamo la funzione h : N → N come:

1. input k;
2. trova Pk ;
3. output Pk (k) + 1.

Non esiste j tale che Pj calcola h(·)!

Infatti Pj (j) varrebbe Pj (j) + 1: impossibile.

Alcune considerazioni

Abbiamo definito una funzione su N che non è


possibile calcolare.

Tale funzione sembrerebbe ben definita:


• ogni singolo passo è matematicamente ben definito;
• ogni singolo passo è intuitivamente calcolabile.

La conclusione è:
• non tutto ciò che possiamo definire
matematicamente è calcolabile;
• serve qualche definizione più formale di ciò che è
intuitivamente calcolabile.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 3


Modulo 5— U.D. 1— Lez. 2

Teoria della computazione

La teoria della computazione studia le funzioni


astrattamente calcolabili, senza preoccuparsi
dell’efficienza dell’algoritmo che le computa.

Nasce negli anni ’30, a seguito dell’esigenza,


sorta nell’ambito degli studi di logica:
• di fornire un equivalente rigoroso al concetto di
algoritmo;
• di indagare le possibilità ed i limiti dei metodi di
calcolo effettivi.

Caratteristiche della computazione (1)

Il processo di calcolo è definito dalle seguenti


caratteristiche:

1. un algoritmo è di lunghezza finita;


2. esiste un esecutore che può effettuare le istruzioni
dell’algoritmo;
3. il calcolo è deterministico;
4. l’esecuzione avviene per passi discreti;
5. l’esecutore dispone di una memoria ausiliaria per
immagazzinare i risultati intermedi
dell’elaborazione;

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 4


Modulo 5— U.D. 1— Lez. 2

Caratteristiche della computazione (2)

6. non c’è limite alla lunghezza dei dati;


7. non c’è limite alla quantità di memoria ausiliaria;
8. le istruzioni hanno una complessità finita;
9. l’esecuzione termina dopo un numero di passi
finito, ma illimitato;
10. l’esecuzione può non terminare.

Nota: la caratteristica 10 dice che una funzione


calcolabile può essere non definita per alcuni
elementi del dominio.

In sintesi

Non tutte le funzioni sono calcolabili.

La teoria computazionale studia i limiti dei


metodi di calcolo.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 5


Modulo 5— U.D. 1— Lez. 2

Prossimi passi

Elementi della teoria computazionale:


• linguaggi;
• grammatiche;
• automi;
• classi di complessità.

Chiusura

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 6


Modulo 5— U.D. 2— Lez. 1

Lezione 1 - Linguaggi

Fondamenti di Informatica per la Sicurezza

Modulo 5 - Elementi di teoria computazionale

Unità didattica 2 - Linguaggi formali

Stefano Ferrari

Università degli Studi di Milano - Ssri - CDL ONLINE

Alfabeto

Un alfabeto è un insieme finito e non vuoto di


simboli.

Esempi:
• A = {a, b, c}
• A = { 0, 1}

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 1


Modulo 5— U.D. 2— Lez. 1

Stringa

Una stringa (o parola) è una sequenza finita di


simboli.

Esempio:
• se A = {a, b, c}, aaabacab è una stringa su A.

La lunghezza di una stringa w, denotata con |w|,


è il numero di simboli che la compongono.
Esempio:
• |aaabacab| = 8

La stringa vuota  è composta da zero simboli:

|| = 0

Sottostringhe

Sia w = a1 · · · an :
• a1 · · · aj , con j ∈ {1, . . . , n} è un prefisso di w;
• aj · · · an , con j ∈ {1, . . . , n} è un suffisso di w;
• ai · · · aj , con i, j ∈ {1, . . . , n} è una sottostringa di
w;
•  è prefisso, suffisso e sottostringa di w.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 2


Modulo 5— U.D. 2— Lez. 1

Concatenazione

La concatenazione di v e w è vw:
• la concatenazione è un’operazione associativa;
•  ne è l’elemento neutro.

La concatenazione si estende agli alfabeti.

Per esempio, se A = {a, b, c}:


• A0 = {}
• A1 = {a, b, c}
• A2 = {aa, ab, ac, . . . , cc}
• A∗ = A0 ∪ A1 ∪ A2 ∪ A3 ∪ · · · = ∪i Ai (chiusura di A)

Linguaggio

Un linguaggio (formale) L definito su un alfabeto


A è un sottoinsieme di A∗ .

Una frase di un linguaggio è una stringa


appartenente al linguaggio stesso.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 3


Modulo 5— U.D. 2— Lez. 1

Esempi

Esempi:
• il linguaggio delle frasi in italiano:
– alfabeto: A = {a, b, . . . , z, <spazio>}
– stringhe su A: cosa, il porto, ghsde af e li
– frasi: la gatta corre

• il linguaggio delle espressioni aritmetiche:


– alfabeto: A = {0, . . . , 9, +, −, :, ×, (, )}
– stringhe su A: 980, 34 + 61, : ()345+)
– frasi: (25 + 12) : 3

Operazioni sui linguaggi (1)

Se L, L1 e L2 sono linguaggi su Σ, si possono


definire le seguenti operazioni:
unione , L1 ∪ L2 :
• L1 ∪ L2 = {w | w ∈ L1 ∨ w ∈ L2 }
• |L1 ∪ L2 | ≤ |L1 | + |L2 |

intersezione , L1 ∩ L2 :
• L1 ∩ L2 = {w | w ∈ L1 ∧ w ∈ L2 }
• |L1 ∩ L2 | ≤ min(|L1 |, |L2 |)

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 4


Modulo 5— U.D. 2— Lez. 1

Operazioni sui linguaggi (2)

differenza , L1 − L2 :
• L1 − L2 = {w | w ∈ L1 ∧ w 6∈ L2 }
• |L1 − L2 | ≤ |L1 |

complemento , L:
• Σ∗ − L
• |L| ≤ ∞

Operazioni sui linguaggi (3)

concatenazione , L1 L2 :
• L1 L2 = {vw | v ∈ L1 , w ∈ L2 }
• |L1 L2 | = |L1 | · |L2 |

potenza , Ln :
• L0 = {}
• L1 = L
• Lk = {v1 v2 . . . vk | v1 , v2 , . . . , vk ∈ L}
• |Lk | = |L|k

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 5


Modulo 5— U.D. 2— Lez. 1

Operazioni sui linguaggi (4)

chiusura (di Kleene) , L∗ :


• L∗ = ∪ Li
i

• se L = {}, |L∗ | = 1
• altrimenti, |L∗ | = ∞

chiusura positiva , L+ :
• L+ = ∪i Li , i > 0
• L∗ = L+ ∪ {}
• |L+ | = ∞

In sintesi

Le parole:
• sono sequenze di simboli di un alfabeto finito;
• supportano l’operazione di concatenazione.

I linguaggi:
• sono insiemi di parole;
• supportano l’operazione di concatenazione;
• supportano il concetto di chiusura.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 6


Modulo 5— U.D. 2— Lez. 1

Prossimi passi

Come definire e classificare i linguaggi:


• grammatiche;
• automi.

Chiusura

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 7


Modulo 5— U.D. 2— Lez. 2

Lezione 2 - Grammatiche

Fondamenti di Informatica per la Sicurezza

Modulo 5 - Elementi di teoria computazionale

Unità didattica 2 - Linguaggi formali

Stefano Ferrari

Università degli Studi di Milano - Ssri - CDL ONLINE

Grammatica

Una grammatica (formale) definisce in modo


rigoroso un linguaggio su un alfabeto, Σ.

Tecnicamente è una quadrupla hΣ, V, P, Si:


• Σ, insieme finito di simboli terminali:
– può anche includere la stringa vuota,  ;
• V , insieme finito di simboli non terminali:
– sono meta-simboli di appoggio (V ∩ Σ = ∅);
– rappresentano categorie sintattiche;
• P , insieme di regole di riscrittura del tipo α → β , con
α, β stringhe su Σ ∪ V , con α 6= ;
• S ∈ V , simbolo iniziale, detto scopo.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 1


Modulo 5— U.D. 2— Lez. 2

Generazione del linguaggio

Per ottenere una frase del linguaggio:

1. si parte dallo scopo, S ;


2. si applica una regola di produzione α → β :
(a) si cerca la presenza della sotto-sequenza α;
(b) la si sostituisce con β ;
(c) α e β sono chiamate forme di frase;
3. si procede finché non si ottiene una stringa con soli
simboli terminali.

Tutte le frasi del linguaggio si ottengono con


questo procedimento.

Esempio

Grammatica: hΣ, V, P, Si
• Σ = {0, 1}
• V = {X}
• P = {X → 0, X → 1X, X → 0X}
• S=X

Linguaggio: {0, 10, . . . , 0110, . . . }


• S=X→0
• S = X → 1X → 10
• S = X → 0X → 01X → 011X → 0110

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 2


Modulo 5— U.D. 2— Lez. 2

Grammatiche BNF

La notazione BNF (Backus-Naur Form) è più


conveniente per rappresentare le grammatiche:
• le regole di produzione sono della forma α ::= β ;
• i meta-simboli in V sono della forma hnomei;
• il meta-simbolo speciale | (pipe) è usato per
l’alternativa:
– α ::= β1 , α ::= β2 , . . . , α ::= βn ;
– α ::= β1 |β2 | . . . |βn .

Su http://www.faqs.org/rfcs/rfc2234.html si
trova la definizione di Augmented BNF (ABFN).

Esempio
Grammatica: hΣ, V, P, Si
– Σ = {il, gatto, topo, sasso, mangia, beve}
– V = {hf rasei, hsoggi, harti, hnomei, hverboi, hc_oggi}
– P ={
hf rasei ::= hsoggihverboihc_oggi
hsoggi ::= hartihnomei
harti ::= il
hnomei ::= gatto|topo|sasso
hverboi ::= mangia|beve
hc_oggi ::= hartihnomei }
– S = hf rasei

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 3


Modulo 5— U.D. 2— Lez. 2

Albero sintattico
Esempio: il gatto mangia il sasso
S

hf rasei

hsoggi hc_oggi
hverboi

harti hnomei harti hnomei

il gatto mangia il sasso

In sintesi

Una grammatica:
• definisce un insieme di regole per generare un
linguaggio;
• fa uso di metasimboli;
• fa uso di regole di produzione.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 4


Modulo 5— U.D. 2— Lez. 2

Prossimi passi

Una classificazione delle grammatiche e dei


linguaggi da esse generati.

Chiusura

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 5


Modulo 5— U.D. 2— Lez. 3

Lezione 3 - Classificazione di Chomsky

Fondamenti di Informatica per la Sicurezza

Modulo 5 - Elementi di teoria computazionale

Unità didattica 2 - Linguaggi formali

Stefano Ferrari

Università degli Studi di Milano - Ssri - CDL ONLINE

Classificazione di Chomsky

È possibile caratterizzare le grammatiche sulla


base della forma delle loro regole di produzione:
• Tipo 3 (regolari);
• Tipo 2 (context-free);
• Tipo 1 (context-sensitive);
• Tipo 0 (a struttura di frase).

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 1


Modulo 5— U.D. 2— Lez. 3

Grammatiche di tipo 3

Le grammatiche regolari si dividono in:


• lineari a destra, F ::= α, F ::= αG;
• lineari a sinistra, F ::= α, F ::= Gα;
con F, G ∈ V, α ∈ Σ∗ .

Esempi:
• F ::= aG|a, G ::= bG|b|aF
• F ::= F a|a

Il linguaggio generato si dice di tipo 3 (o


linguaggio regolare).

Grammatiche di tipo 2

Le grammatiche context-free (libere dal


contesto) hanno produzioni della forma:
F ::= α, con F ∈ V e α ∈ (Σ ∪ V )∗ .

Esempi:
• F ::= aG|a, G ::= Gb|b|F c
• F ::= aF c|b

Si dice che il linguaggio è di tipo 2 (o linguaggio


libero dal contesto).
Tipicamente, i linguaggi di programmazione
appartengono a questo tipo.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 2


Modulo 5— U.D. 2— Lez. 3

Grammatiche di tipo 1

Le grammatiche context-sensitive (dipendenti


dal contesto) hanno produzioni della forma:
• αF β ::= αγβ , α, β, γ ∈ (Σ ∪ V )∗ , γ 6= , F ∈ V ;
• S ::= .

Note:
• α e β definiscono il “contesto” in cui la sostituzione
F ::= γ può avvenire;
• per una produzione della prima forma, la lunghezza
della stringa generata non può diminuire.

Esempio: aF b ::= aF bGb

Grammatiche di tipo 0

Le grammatiche di tipo 0 ammettono produzioni


di qualsiasi forma:
• α ::= β , con α, β ∈ (Σ ∪ V )∗ .

Nota: sono ammesse anche produzioni che possono


diminuire la lunghezza della stringa generata.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 3


Modulo 5— U.D. 2— Lez. 3

Gerarchia di grammatiche e linguaggi

Ogni grammatica di tipo n è anche una


grammatica di tipo n − 1.

Un linguaggio è di tipo n se esiste una


grammatica di tipo n che lo genera, ma non
nessuna di tipo n + 1 è in grado di generarlo.

Esempi:
• linguaggio di tipo 3: {am bn | m, n ≥ 0}
• linguaggio di tipo 2: {an bn | n ≥ 0}
• linguaggio di tipo 1: {an bn cn | n ≥ 0}
• linguaggio di tipo 0: {an | n è un numero primo}

Grammatiche ambigue

Una grammatica si dice ambigua se qualche


stringa del linguaggio da essa generato può
essere generata mediante più alberi sintattici.

Esempio: con la regola F ::= F aF |F bF |f , la


generazione della stringa f af bf non è univoca.
Infatti:
• F → F aF → f aF → f aF bF → f af bF → f af bf
• F → F bF → F bf → F aF bf → f aF bf → f af bf

Un linguaggio si dice inerentemente ambiguo se


non esiste alcuna grammatica non ambigua che
lo generi.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 4


Modulo 5— U.D. 2— Lez. 3

In sintesi

Le grammatiche sono descrizioni induttive di


linguaggi.

Secondo la classificazione di Chomsky, esse


costituiscono una gerarchia di quattro livelli.

Ogni livello:
• è caratterizzato da qualche vincolo alle regole di
produzione;
• genera una classe di linguaggi.

Prossimi passi

Esercizi su linguaggi e grammatiche.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 5


Modulo 5— U.D. 2— Lez. 3

Chiusura

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 6


Modulo 5— U.D. 2— Lez. 4

Lezione 4 - Esercizi su linguaggi e


grammatiche

Fondamenti di Informatica per la Sicurezza

Modulo 5 - Elementi di teoria computazionale

Unità didattica 2 - Linguaggi formali

Stefano Ferrari

Università degli Studi di Milano - Ssri - CDL ONLINE

Esercizio 1 (1)

Definiti i linguaggi:
• L1 = {aa, ab, bc, c}
• L2 = {1, 22, 31}

descrivere i linguaggi:

a) L3 = L∗1 d) L6 = L1 ∪ L2
b) L4 = L1 L2 e) L7 = (L1 L2 )∗
c) L5 = L1 L∗2 f) L8 = (L1 ∪ L2 )∗

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 1


Modulo 5— U.D. 2— Lez. 4

Esercizio 1 (2)

a) L3 = L∗1 è formato dalla concatenazione di un


numero arbitrario (anche nullo) di elementi di L1 .
L3 = {, aa, c, cababc, . . . }
b) L4 = L1 L2 è formato dalla concatenazione di un
elemento di L1 con un elemento di L2 .
L4 = {aa1, ab1, bc1, c1, aa22, ab22,
bc22, c22, aa31, ab31, bc31, c31}
c) L5 = L1 L∗2 è formato dalla concatenazione di un
elemento di L1 con un numero arbitrario (anche
nullo) di elementi di L2 .
L5 = {aa, . . . , c, bc1223131, ab111312222, . . . }

Esercizio 1 (3)

d) L6 = L1 ∪ L2 è l’unione di L1 e L2 .
L6 = {aa, ab, bc, c, 1, 22, 31}
e) L7 = (L1 L2 )∗ è la chiusura di L4 .
È pertanto formato da una sequenza
(eventualmente vuota) di elementi di L4 .
L7 = {, aa22c1, ab1aa1, . . . }
f) L8 = (L1 ∪ L2 )∗ è la chiusura di L6 .
È pertanto formato da una sequenza
(eventualmente vuota) di elementi di L6 .
L8 = {, c1122aaccbc, 22131311aa, aa, 1, . . . }

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 2


Modulo 5— U.D. 2— Lez. 4

Esercizio 2 (1)

Data la grammatica G = hΣ, V, P, Si:


• Σ = {a, b}
• V = {S, A, B}
• P = {S ::= B|a, B ::= bA|aA, A ::= aB|b}

mostrare la sequenza di regole da applicare per


generare le seguenti frasi:

a) bb
b) aababb
c) babaab

Esercizio 2 (2)

a) bb S ::= B|a, B ::= bA|aA, A ::= aB|b

bb
S
S ::= B B
B ::= bA bA
A ::= b bb

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 3


Modulo 5— U.D. 2— Lez. 4

Esercizio 2 (3)

b) aababb S ::= B|a, B ::= bA|aA, A ::= aB|b

aababb
S
S ::= B B
B ::= aA aA
A ::= aB aaB
B ::= bA aabA
A ::= aB aabaB
B ::= bA aababA
A ::= b aababb

Esercizio 2 (4)

c) babaab S ::= B|a, B ::= bA|aA, A ::= aB|b

babaab
S
S ::= B B
B ::= bA bA
A ::= aB baB
B ::= bA babA
A ::= aB babaB
B ::= aA babaaA
A ::= b babaab

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 4


Modulo 5— U.D. 2— Lez. 4

Esercizio 3 (1)

Data la grammatica G = hΣ, V, P, Si:


• Σ = {a, b, c}
• V = {S, A, B}
• P = {S ::= A|aA, A ::= Ab|bAB|b, B ::= cB|c}

mostrare la sequenza di regole da applicare per


generare le seguenti frasi:

a) bbb
b) abbcc
c) abbbcc

Esercizio 3 (2)

a) bbb S ::= A|aA, A ::= Ab|bAB|b, B ::= cB|c

bbb
S
S ::= A A
A ::= Ab Ab
A ::= Ab Abb
A ::= b bbb

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 5


Modulo 5— U.D. 2— Lez. 4

Esercizio 3 (3)

b) abbcc S ::= A|aA, A ::= Ab|bAB|b, B ::= cB|c

abbcc
S
S ::= aA aA
A ::= bAB abAB
A ::= b abbB
B ::= cB abbcB
B ::= c abbcc

Esercizio 3 (4)

c) abbbcc S ::= A|aA, A ::= Ab|bAB|b, B ::= cB|c

abbbcc abbbcc
S S
S ::= aA aA S ::= aA aA
A ::= bAB abAB A ::= bAB abAB
A ::= bAB abbABB A ::= Ab abAbB
A ::= b abbbBB A ::= b abbbB
B ::= c abbbcB B ::= cB abbbcB
B ::= c abbbcc B ::= c abbbcc

Ambigua!

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 6


Modulo 5— U.D. 2— Lez. 4

Esercizio 4 (1)

Data la grammatica G = hΣ, V, P, Si:


• Σ = {a, b, c}
• V = {S, A, B}
• P = {S ::= A|aA, A ::= aAb|b|AB, B ::= b|ABa|c}

mostrare la sequenza di regole da applicare per


generare le seguenti frasi:

a) aabbcbb
b) aabbbca

Esercizio 4 (2)

a) b)

aabbcbb aabbbca
S S
S ::= A A S ::= aA aA
A ::= aAb aAb A ::= AB aAB
A ::= aAb aaAbb B ::= ABa aAABa
A ::= AB aaABbb B ::= c aAAca
B ::= c aaAcbb A ::= b aAbca
A ::= AB aaABcbb A ::= aAb aaAbbca
A ::= b aabBcbb A ::= b aabbbca
B ::= b aabbcbb

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 7


Modulo 5— U.D. 2— Lez. 4

In sintesi

La descrizione insiemistica di linguaggi.

Le grammatiche come descrizione generativa di


linguaggi:
• sequenze di regole di produzione per la generazione
di stringhe di un linguaggio.

Se la grammatica è regolare, la generazione è


semplice.

Se la grammatica non è regolare, la generazione


è complicata.

Prossimi passi

Modelli di macchine da calcolo.

Espressioni regolari.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 8


Modulo 5— U.D. 2— Lez. 4

Chiusura

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 9


Modulo 5— U.D. 3— Lez. 1

Lezione 1 - Automi a stati finiti

Fondamenti di Informatica per la Sicurezza

Modulo 5 - Elementi di teoria computazionale

Unità didattica 3 - Automi

Stefano Ferrari

Università degli Studi di Milano - Ssri - CDL ONLINE

Automa a stati finiti (1)

Un automa a stati finiti è un modello matematico


caratterizzato da:
• un input costituito da una sequenza di elementi
discreti;
• eventualmente, un output (anch’esso a valori
discreti);
• un insieme finito di stati nei quali l’automa può
trovarsi durante l’esecuzione.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 1


Modulo 5— U.D. 3— Lez. 1

Automa a stati finiti (2)

Un automa a stati finiti si può immaginare come


un dispositivo dotato di una testina.

L’automa legge spostandosi sempre nella stessa


direzione lungo un nastro di lunghezza illimitata
contenente dei simboli.

A seconda del simbolo letto, l’automa si porta in


un altro stato.

Ripete queste operazioni fino a quando non legge


un simbolo terminale.

Definizione formale

Un automa a stati finiti deterministico (DFA) è


una quintupla hQ, Σ, δ, q0 , F i dove:
• Q è l’insieme degli stati (finito);
• Σ è l’alfabeto di input;
• δ : Q × Σ → Q è la funzione di transizione;
• q0 è lo stato iniziale;
• F ⊂ Q è l’insieme degli stati finali.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 2


Modulo 5— U.D. 3— Lez. 1

Funzione di transizione

La funzione di transizione può essere


rappresentata in forma tabellare.

Esempio:

δ a b c d e
dove:
q0 q0 q0 q2 q1 q1
q1 q1 q3 q1 q1 q1 • Q = {q0 , q1 , q2 , q3 }
q2 q3 q2 q2 q0 q1 • Σ = {a, b, c, d, e}
q3 q0 q1 q1 q0 q1

Rappresentazione grafica

Un DFA può essere rappresentato da un grafo:

a, b a, c, d, e
d, e
q0 q1
c
dove:
b • Q = {q0 , q1 , q2 , q3 }
a, d e
b, c, e • Σ = {a, b, c, d, e}

d
• F = {q1 }
q3 a q2

b, c

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 3


Modulo 5— U.D. 3— Lez. 1

Linguaggio accettato da un DFA (1)

Il concetto di funzione di transizione può essere


estesa in modo da essere applicata
ripetutamente ad una successione di simboli in
input.

Si dice che un DFA accetta una stringa se, dopo


averla letta, esso si ritrova in uno stato finale.

L’insieme delle stringhe accettate da un DFA


viene detto linguaggio accettato dal DFA stesso.

Linguaggio accettato da un DFA (2)

Più formalmente:
• l’estensione di δ alle stringhe, δ̂ : Q × Σ∗ → Q, si
definisce in modo univoco come:
(
q se x = 
δ̂(q, x) =
δ(δ̂(q, w), y) se x = wy, w ∈ Σ∗ , y ∈ Σ

• una stringa x viene accettata dal DFA


M = hQ, Σ, δ, q0 , F i se δ̂(q0 , x) ∈ F ;
• il linguaggio L(M ) = {x ∈ Σ∗ | δ̂(q0 , x) ∈ F } è il
linguaggio accettato da M .

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 4


Modulo 5— U.D. 3— Lez. 1

Automa non-deterministico

Un automa a stati finiti non-deterministico (NFA)


è una quintupla hQ, Σ, δ, q0 , F i dove:
• Q è un insieme finito di stati;
• Σ è un alfabeto (alfabeto di input);
• δ : Q × Σ → ℘(Q) è la funzione di transizione;
• q0 è lo stato iniziale;
• F ⊂ Q è l’insieme degli stati finali.

Nota: ora è ammesso δ(q, a) = ∅ per qualche


q ∈ Q e a ∈ Σ.

Linguaggio accettato da un NFA

Dalla funzione δ si definisce in modo univoco


δ̂ : Q × Σ∗ → ℘(Q):


{q} se x = 
δ̂(q, x) = S
δ(p, y) se x = wy, w ∈ Σ∗ , y ∈ Σ

p∈δ̂(q, w)

Una stringa x viene accettata dal NFA


M = hQ, Σ, δ, q0 , F i se δ̂(q0 , x) ∩ F 6= ∅.

Il linguaggio L(M ) = {x ∈ Σ∗ | δ̂(q0 , x) ∩ F 6= ∅} è il


linguaggio accettato da M .

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 5


Modulo 5— U.D. 3— Lez. 1

Confronto DFA-NFA

La “potenza di calcolo” di un NFA è la stessa di


un DFA.

Ciò significa che per ogni linguaggio accettato da


un NFA, esiste un DFA che accetta lo stesso
linguaggio.

La classe di linguaggi accettati dai DFA è la


classe dei linguaggi regolari.

Si può generare in modo automatico il DFA


equivalente di un dato NFA.

A volte è più comodo progettare un NFA e poi


convertirlo.

Limiti dei DFA

Un DFA è un dispositivo a memoria finita, quindi


è adatto a risolvere solo quei problemi che
consentono di limitare a priori la lunghezza delle
sequenze d’ingresso di cui tenere memoria.

Da cosa deriva la mancanza di espressività?


• Il numero di stati è fissato a priori non consente di
trattare quei problemi che richiedono un conteggio
senza limite fissato.
– Esempio: un DFA a 4 stati può riconoscere aaacbbb ma non
aaaacbbbb.
• Rendere il numero degli stati infinito non è
praticabile.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 6


Modulo 5— U.D. 3— Lez. 1

In sintesi

Un automa a stati finiti è un modello di calcolo


che permette di effettuare semplici elaborazioni
su una stringa di simboli data di ingresso.

L’elaborazione più semplice è il riconoscimento


di una stringa come appartenente ad un dato
linguaggio.

Esistono varianti del DFA, ma tutte hanno la


stessa espressività.

Prossimi passi

Esercizi sui DFA.

Modelli di calcolo più potenti.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 7


Modulo 5— U.D. 3— Lez. 1

Chiusura

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 8


Modulo 5— U.D. 3— Lez. 2

Lezione 2 - Esercizi sugli automi a


stati finiti

Fondamenti di Informatica per la Sicurezza

Modulo 5 - Elementi di teoria computazionale

Unità didattica 3 - Automi

Stefano Ferrari

Università degli Studi di Milano - Ssri - CDL ONLINE

Esercizio 1 (1)

Costruire un DFA su Σ = {0, 1} che accetti


l’insieme di tutte le stringhe aventi tre 0
consecutivi.

Osservazioni:
• l’alfabeto è dato (Σ = {0, 1});
• si possono individuare le seguenti possibili situazioni:

(a) sono già stati letti tre (o più) “0” consecutivi;


(b) gli ultimi due simboli letti sono “0”;
(c) l’ultimo simbolo letto è “0”;
(d) l’ultimo simbolo letto è “1”.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 1


Modulo 5— U.D. 3— Lez. 2

Esercizio 1 (2)

Indicando con qi lo stato in cui l’automa si


troverà dopo aver letto i simboli “0” consecutivi:
• situazione (a) ↔ q3 ; • situazione (c) ↔ q1 ;
• situazione (b) ↔ q2 ; • situazione (d) ↔ q0 ;

Note:
• dopo aver letto tre “0”, l’automa accetterà la stringa
qualunque siano i simboli ancora da leggere;
• q3 assume quindi il ruolo di stato finale;
• q0 assume il ruolo di stato iniziale;
• uno stato dal quale non si esce viene detto “pozzo”.

Esercizio 1 (3)

La funzione di transizione δ 0 1
può essere:
q0 q1 q0
q1 q2 q0
q2 q3 q0
q3 q3 q3

e il grafico:
1 0, 1
0 0 0
q0 q1 q2 q3
1
1

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 2


Modulo 5— U.D. 3— Lez. 2

Esercizio 2 (1)

Costruire un DFA su Σ = {0, 1} che accetti


l’insieme di tutte le stringhe che se interpretate
in notazione binaria risultino divisibili per 2.

Osservazioni:
• l’alfabeto è dato (Σ = {0, 1});
• i numeri pari in notazione binaria terminano per 0;
• un numero in notazione binaria che termina per 0 è
pari;
• il problema diventa costruire l’automa che accetta
solo le stringhe binarie che terminano per 0.

Esercizio 2 (2)

Se, banalmente, indichiamo con qi lo stato in cui


viene a trovarsi l’automa dopo aver letto il
simbolo i:
• ponendo q0 come unico stato finale facciamo sì che
l’automa accetti la stringa solo se l’ultimo simbolo
che ha letto è stato 0;
• ponendo q1 come stato iniziale evitiamo che venga
accettata la stringa vuota.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 3


Modulo 5— U.D. 3— Lez. 2

Esercizio 2 (3)

Quindi, l’automa può essere formalizzato come:


• F = {q0 }
• Q = {q0 , q1 }
• Σ = {0, 1}
• δ 0 1
q0 q0 q1
• q1 è lo stato iniziale q1 q0 q1

1 0
0
q1 q0
1

Esercizio 3 (1)

Costruire un DFA su Σ = {0, 1} che accetti


l’insieme di tutte le stringhe che hanno come
penultimo simbolo “0”.

Osservazioni:
• l’alfabeto è dato (Σ = {0, 1});
• abbiamo bisogno di una finestra di due simboli (gli
ultimi due simboli letti);
• consideriamo quindi quattro situazioni: 00, 01, 10 e
11.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 4


Modulo 5— U.D. 3— Lez. 2

Esercizio 3 (2)

Ad esempio, se l’automa si trova nello stato 01 e


legge “1”, si deve portare nello stato
corrispondente a 11.

Con questa regola:


• le situazioni accettate saranno 00 e 01;
• scegliendo 11 come situazione iniziale, evitiamo di
accettare stringhe con meno di due caratteri;
• codifichiamo con lo stato qi la situazione in cui gli
ultimi due simboli letti sono interpretati come la
rappresentazione binaria di i.

Esercizio 3 (3)

Quindi, l’automa può essere formalizzato come:

• Q = {q0 , q1 , q2 , q3 } • δ 0 1
• Σ = {0, 1} q0 q0 q1
q1 q2 q3
• q3 è lo stato iniziale q2 q0 q1
• F = {q0 , q1 } q3 q2 q3

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 5


Modulo 5— U.D. 3— Lez. 2

In sintesi

Progettazione di automi su stringhe binarie con


semplici regole di accettazione.

Altri esercizi:
• regole più complesse:
– accettare le stringhe binarie divisibili per 3;

• alfabeti più estesi:


– accettare le stringhe decimali divisibili per 2 (o per 3);

• casi reali:
– unità per il controllo di un distributore di bevande.

Prossimi passi

Modelli di calcolo più espressivi.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 6


Modulo 5— U.D. 3— Lez. 2

Chiusura

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 7


Modulo 5— U.D. 3— Lez. 3

Lezione 3 - Altri modelli di calcolo

Fondamenti di Informatica per la Sicurezza

Modulo 5 - Elementi di teoria computazionale

Unità didattica 3 - Automi

Stefano Ferrari

Università degli Studi di Milano - Ssri - CDL ONLINE

Automa a pila (1)

Un automa a pila è una macchina ideale che


estende le possibilità degli automi a stati finiti.

Si tratta di un automa a stati finiti dotato di una


struttura dati aggiuntiva per la memorizzazione
delle informazioni, la pila:
• struttura dati di tipo Last In First Out (LIFO).

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 1


Modulo 5— U.D. 3— Lez. 3

Automa a pila (2)

Un automa a pila è quindi composto da:


• controllo (stati + funzione di transizione);
• input (nastro);
• output (pila):
– push(w): pone la stringa w sulla pila;
– pop(w): preleva la stringa in testa alla pila;
– empty: verifica se la pila è vuota (restituisce un valore
booleano).

Funzionamento dell’automa a pila

L’automa legge dal nastro e dalla pila


contemporaneamente.

Ogni passo di esecuzione comporta:


• la lettura di un simbolo da nastro e l’avanzamento
della testina di una posizione;
• la lettura di un simbolo dalla testa della pila;
• il cambio dello stato di controllo;
• la scrittura in testa alla pila.

Nota: alcune operazioni possono essere saltate


(lettura/scrittura della stringa vuota).

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 2


Modulo 5— U.D. 3— Lez. 3

Stringhe accettate dall’automa a pila

L’automa ha due possibili condizioni per


l’accettazione della stringa:
• se si trova in uno stato finale;
• se la pila è vuota.

Le due condizioni sono equivalenti:


• dato un automa che termina per pila vuota, se ne
può costruire uno che termina per stato finale.

Linguaggi accettati dall’automa a pila

Il non-determinismo, aggiunge potenza


espressiva all’automa a pila.

L’automa a pila deterministico riconosce un


sottoinsieme dei linguaggi context-free (tipo 2).

L’automa a pila non-deterministico riconosce i


linguaggi context-free.

Per esempio:
• un automa a pila riesce a riconoscere le parentesi
ben accoppiate (an bn );
• solo un automa non-deterministico riesce a
riconoscere le stringhe palindrome.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 3


Modulo 5— U.D. 3— Lez. 3

Limiti degli automa a pila

Da cosa deriva la mancanza di espressività?


• la struttura dati di supporto, la pila, ha un accesso
limitato, che si limita alla testa della pila;
– come accedere al primo degli elementi inseriti?

Per poter riconoscere linguaggi di tipo 1 o 0


bisogna disporre di una struttura dati più
flessibile.

Macchina di Turing

Macchina ideale pensata da Alan Turing negli


anni ’30 per formalizzare la nozione di agente di
calcolo (computer).

Una macchina di Turing (MdT) è composta da:


• nastro: infinito, abilitato alla lettura ed alla
scrittura;
• controllo: automa a stati finiti deterministico.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 4


Modulo 5— U.D. 3— Lez. 3

Funzionamento della MdT

Ad ogni passo di computazione, una MdT:


• legge il simbolo sul nastro in corrispondenza della
testina;
• in base alla coppia stato-simbolo:
– eventualmente modifica il simbolo;
– sposta il nastro di una casella, a destra o a sinistra;
– eventualmente cambia lo stato.

La computazione della MdT termina quando non


è definita alcuna transizione per la coppia
stato-simbolo.

Varianti della MdT

Esistono diverse varianti della MdT


deterministica.

Ad esempio:
• multinastro;
• multitestina;
• nastro semi-infinito;
• non-deterministica.

Si può dimostrare che per ognuna di queste


varianti si può costruire una MdT deterministica
equivalente.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 5


Modulo 5— U.D. 3— Lez. 3

MdT universale

È possibile costruire una MdT che simuli una


qualsiasi MdT!

Questa MdT viene detta universale.

All’inizio, sul nastro della MdT universale,


opportunamente codificati, si trovano:
• la descrizione della MdT da simulare (cioè della parte
di controllo);
• il suo input.

Linguaggi accettati

Una MdT riconosce i linguaggi di tipo 0.

Una MdT non deterministica con lunghezza del


nastro limitata in modo proporzionale alla
lunghezza dell’input riconosce i linguaggi di tipo
1.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 6


Modulo 5— U.D. 3— Lez. 3

In sintesi

Gli automi a pila e la MdT sono potenziamenti


degli automi a stati finiti.

Gli automi a pila non-deterministici sono


abbastanza potenti da riconoscere i linguaggi
context free.

La macchina di Turing non-deterministica con


nastro limitato è in grado di riconoscere i
linguaggi dipendenti dal contesto.

La macchina di Turing è in grado di riconoscere i


linguaggi di tipo 0.

Prossimi passi

Qualche osservazione aggiuntiva su linguaggi,


grammatiche e computabilità.

Approfondimento sui linguaggi regolari:


espressioni regolari.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 7


Modulo 5— U.D. 3— Lez. 3

Chiusura

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 8


Modulo 5— U.D. 3— Lez. 4

Lezione 4 - Linguaggi e computabilità

Fondamenti di Informatica per la Sicurezza

Modulo 5 - Elementi di teoria computazionale

Unità didattica 3 - Automi

Stefano Ferrari

Università degli Studi di Milano - Ssri - CDL ONLINE

Caratteristiche della MdT (1)

La MdT è stata ideata per modellare il processo


di calcolo.

Infatti, ha le seguenti caratteristiche:


1. il controllo è costituito da un numero finito di
istruzioni;
– un algoritmo è di lunghezza finita;
2. la MdT è l’agente di calcolo che esegue
l’elaborazione;
– esiste un esecutore che può effettuare le istruzioni
dell’algoritmo;
3. il controllo è affidato ad un automa deterministico;
– il calcolo è deterministico;

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 1


Modulo 5— U.D. 3— Lez. 4

Caratteristiche della MdT (2)

4. la MdT opera per passi discreti;


– l’esecuzione avviene per passi discreti;
5. il nastro è un dispositivo di memorizzazione per
l’MdT;
– l’esecutore dispone di una memoria ausiliaria per
immagazzinare i risultati intermedi dell’elaborazione;
6. i dati sono memorizzati sul nastro, il quale è
illimitato;
– non c’è limite alla lunghezza dei dati;
7. la capacità del nastro è illimitata;
– non c’è limite alla quantità di memoria ausiliaria;

Caratteristiche della MdT (3)

8. le istruzioni che la MdT può eseguire ad ogni passo


sono semplici e ben definite;
– le istruzioni hanno una complessità finita;
9. non esiste nessuna limitazione al numero di passi di
calcolo;
– l’esecuzione termina dopo un numero di passi finito, ma
illimitato;
10. è possibile creare una MdT che continua ad eseguire
delle istruzioni senza terminare mai;
– l’esecuzione può non terminare.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 2


Modulo 5— U.D. 3— Lez. 4

Calcolo

Una MdT calcola funzioni (su N):


• funzioni intuitivamente calcolabili;
• l’input è sul nastro all’inizio del calcolo;
• l’output è sul nastro alla fine del calcolo.

Anche gli altri automi meno potenti possono


essere modificati per effettuare dei calcoli (cioè
generare un output).

Terminazione

La computazione di un automa a stati finiti o a


pila termina sempre.

La computazione di una MdT per un certo dato di


input può non terminare.

È l’equivalente algoritmico di una funzione non


definita per un dato argomento (funzione
parziale).

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 3


Modulo 5— U.D. 3— Lez. 4

Linguaggi, grammatiche, automi (1)

Le grammatiche danno una descrizione


generativa dei linguaggi.

Una grammatica è simile ad una teoria:


• assiomi (simboli iniziali);
• regole di inferenza (regole di produzione);
• predicati validi (stringhe del linguaggio);
• dimostrazioni (produzioni).

Linguaggi, grammatiche, automi (2)

Un automa realizza una funzione di


riconoscimento della stringa come appartenente
al linguaggio.

La MdT ha la potenza computazionale necessaria


e sufficiente per l’accettazione dei linguaggi di
tipo 0:
• se G è una grammatica di tipo 0 e L = L(G) è il
linguaggio da essa generato, allora esiste una MdT,
ML , che accetta L;
• se L è un linguaggio accettato da una MdT, ML ,
allora esiste una grammatica di tipo 0, G, tale che
L = L(G).

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 4


Modulo 5— U.D. 3— Lez. 4

Linguaggi e computabilità

Restringere lo studio della computabilità ai


linguaggi non è restrittivo.

Inoltre, lo studio dei vari tipi di linguaggi è utile


perché fornisce:
• una scala di complessità di calcolo;
• uno strumento di descrizione di algoritmi:
– riconoscibilità (sintassi);
– interpretazione (semantica).

Accettabilità e decidibilità
La non terminazione rende necessaria una
ulteriore distinzione:
• un linguaggio viene detto accettabile (o riconoscibile)
da un automa se esso è in grado di accettare tutte le
sue parole;
– nulla viene richiesto se la parola in input non appartiene al
linguaggio dato;

• un linguaggio viene detto decidibile da un automa se


esso è in grado di accettare tutte le sue parole e di
rifiutare tutte le altre parole.

In altri termini, se un linguaggio è decidibile, lo


deve essere anche il suo complemento.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 5


Modulo 5— U.D. 3— Lez. 4

Decidibilità dei linguaggi

I linguaggi di tipo 1, 2 e 3 sono decidibili.

I linguaggi di tipo 0 sono riconoscibili.

Tuttavia esistono linguaggi decidibili che non


sono di tipo 1.

Ogni definizione finita della decidibilità non può


comprendere tutti gli insiemi decidibili.

In sintesi

Lo studio dei linguaggi non è riduttivo nel


contesto della calcolabilità.

La non terminazione della MdT:


• rende possibile il calcolo delle funzioni parziali (e,
quindi, di tutte le funzioni intuitivamente calcolabili);
• evidenzia l’esistenza di funzioni non calcolabili;
• evidenzia l’esistenza di linguaggi riconoscibili, ma
non decidibili.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 6


Modulo 5— U.D. 3— Lez. 4

Prossimi passi

Dalla calcolabilità alla complessità.

Chiusura

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 7


Modulo 5— U.D. 3— Lez. 5

Lezione 5 - Decidibilità e complessità

Fondamenti di Informatica per la Sicurezza

Modulo 5 - Elementi di teoria computazionale

Unità didattica 3 - Automi

Stefano Ferrari

Università degli Studi di Milano - Ssri - CDL ONLINE

Problemi indecidibili (1)

È noto un certo insieme di problemi non


decidibili:
• halting problem: non esiste alcuna MdT, MH , che,
data la descrizione di una MdT, M , e una stringa di
input, w, decida se la computazione M (w) termina,
oppure no;
• non esiste nessuna MdT, ME , che, data la descrizione
di una MdT, M , possa decidere se il linguaggio
riconosciuto da M , L(M ), sia vuoto, oppure no;
• non esiste alcuna MdT, MR , che, data la descrizione
di una MdT, M , decida se il linguaggio da essa
riconosciuto, L(M ), sia di un tipo dato;

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 1


Modulo 5— U.D. 3— Lez. 5

Problemi indecidibili (2)

Anche nella pratica si incontrano problemi


indecidibili:
• un programma chiamerà una sua procedura nel corso
dell’esecuzione per un dato input?
• una variabile assumerà un dato valore durante
l’esecuzione?
– uscirà dal ciclo?

• un dato programma, in presenza di un dato input,


fornirà un particolare output?
• due programmi dati calcolano la stessa funzione?

Problemi indecidibili (3)

• un programma calcola una funzione costante?


– il suo output è indipendente dall’input?

• un programma calcola una funzione totale?


– termina per ogni input?

• un programma calcola una funzione positiva?


• una data formula del calcolo dei predicati è un
teorema?
• una data formula dell’aritmetica, è un teorema?

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 2


Modulo 5— U.D. 3— Lez. 5

Limite del calcolo

La MdT rappresenta il limite per i dispositivi finiti.

Non è l’unico paradigma del genere, ma tutti gli


altri si sono dimostrati equivalenti.

La dimostrazione dell’indecidibilità di alcuni


problemi equivale infatti al teorema di Gödel.

Tuttavia, tra la maggior parte dei problemi


pratici sono decidibili (e, quindi, calcolabili).

Teoria della complessità

Nella pratica dato un problema computabile:


• bisogna sapere come calcolare la soluzione
(algoritmo);
• bisogna sapere scegliere la soluzione meno onerosa.

La teoria della computazione non tiene conto


dell’efficienza: ogni computazione è istantanea
perché ogni passo di computazione è tale.

La teoria della complessità studia le risorse


computazionali necessarie per l’esecuzione di un
algoritmo.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 3


Modulo 5— U.D. 3— Lez. 5

Complessità

La complessità di un algoritmo è definibile


principalmente in due modi:
• come il numero di operazioni che esso deve fare per
giungere alla soluzione (complessità temporale);
• come il numero di celle di memoria necessarie per il
calcolo (complessità spaziale).

È evidente che in entrambi i casi la misura della


complessità dipenda da:
• l’agente di calcolo impiegato;
• la dimensione del dato di input.

Misura di complessità

Il paradigma di calcolo di riferimento è la MdT.

Tipicamente, l’attenzione è posta sulle misure di


complessità temporale:
• la complessità spaziale non può superare quella
temporale;
• nella pratica, generalmente lo spazio è una risorsa
meno preziosa del tempo;
– però, per esempio, a volte è utile usare la compressione dei
dati!

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 4


Modulo 5— U.D. 3— Lez. 5

Misura di complessità

La complessità viene misurata con la notazione


O(·), in relazione alla dimensione dei dati iniziali.

Tale notazione indica il comportamento


asintottico rispetto alla dimensione dell’input.

Per esempio, se gli algoritmi A1 , A2 e A3 sono,


rispettivamente, O(n), O(n2 ) e O(2n ), sono di
complessità, lineare, quadratica ed esponenziale.

Perciò, se per elaborare una lista di 10 nomi


impiegano tutti 1 s, dobbiamo aspettarci che per
30 nomi A1 impieghi 3 s, A2 9 s e A3 260 s.

Classificazione dei problemi

Ci sono infinite classi di complessità:



O(1) < O(log n) < O( n) < O(n) < O(n log n) <

< O(n n) < O(n2 ) < O(n3 ) < O(2n ) < O(n2n ) < . . .

Però, la classificazione principale è in problemi:


• trattabili: O(nk ), per qualche k;
• intrattabili: O(f (n)), con f (n) > nk ∀k, n → ∞.

La suddivisione è arbitraria, ma ben motivata:


a. l’insensibilità degli algoritmi O(k n ) al progresso;
b. l’invarianza delle classi rispetto ai differenti
paradigmi di calcolo.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 5


Modulo 5— U.D. 3— Lez. 5

Problemi intrattabili
a. A fronte di un progresso tecnologico che renda i
calcolatori 1000 volte più veloci, le nuove
dimensioni dei problemi risolubili in 1 s dagli
algoritmi A1 , A2 e A3 precedenti, sarebbero:
– A1 , O(n): 10 000 nomi;
– A2 , O(n2 ): 100 nomi;
– A3 , O(2n ): 20 nomi.

b. La complessità di conversione di una MdT in un


paradigma di calcolo equivalente è polinomiale.
Anche cambiando il paradigma di riferimento la
trattabilità di un algoritmo non può cambiare.

Problemi P e N P

La trattabilità dei problemi si formalizza con le


classi di problemi P e N P :
• P : classe dei problemi risolvibili in tempo
polinomiale da una MdT deterministica;
• N P : classe dei problemi risolvibili in tempo
polinomiale da una MdT non-deterministica.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 6


Modulo 5— U.D. 3— Lez. 5

P vs NP problem

Uno dei problemi aperti dell’informatica è:

P 6= N P ?

È uno dei sette Millennium Problems posti dal


Clay Mathematics Institute (USA):
• un premio da un milione di dollari a chi lo risolve;
• http://www.claymath.org/millennium/

Esistono problemi detti N P -completi a cui


possono essere ricondotti gli altri problemi N P .
Dimostrare che un problema N P -completo è in P
implicherebbe P = N P .

In sintesi

I problemi si dividono in:


• indecidibili;
• intrattabili;
• trattabili.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 7


Modulo 5— U.D. 3— Lez. 5

Prossimi passi

Le espressioni regolari.

Chiusura

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 8


Modulo 5— U.D. 4— Lez. 1

Lezione 1 - Espressioni regolari

Fondamenti di Informatica per la Sicurezza

Modulo 5 - Elementi di teoria computazionale

Unità didattica 4 - Espressioni regolari

Stefano Ferrari

Università degli Studi di Milano - Ssri - CDL ONLINE

Espressioni regolari

Le espressioni regolari (ER) sono un metodo


alternativo per descrivere i linguaggi regolari.
L’insieme delle ER descrive quindi la stessa
classe di linguaggi delle grammatiche regolari e
degli automi a stati finiti.

Esse presentano i seguenti vantaggi:


• offrono una notazione compatta;
• sono facilmente intelleggibili;
• offrono una descrizione di tipo
costruttivo/operazionale.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 1


Modulo 5— U.D. 4— Lez. 1

Alfabeto di una espressione regolare

Una espressione regolare:


• è una stringa su un alfabeto Σ ∪ {∅, +, ∗ , (, )};
• denota un insieme di stringhe di Σ∗ .

Una espressione regolare è dunque composta di:


• simboli dell’alfabeto su cui definito il linguaggio da
essa descritto, Σ;
• un insieme di metasimboli usati per indicare le
operazioni sui linguaggi,{∅, +, ∗ , (, )}.

Sintassi e semantica delle ER

L’insieme delle stringhe denotate da una ER è


definito ricorsivamente come:
espressione insieme
note
regolare descritto

∅ ∅
 {}
a {a} a∈Σ

(r + s) R∪S r e s sono ER che


(rs) RS denotano
rispettivamente gli
(r ∗ ) R∗ insiemi R e S

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 2


Modulo 5— U.D. 4— Lez. 1

Esempio 1

L’ER (0 + 1)∗ 0 indica le stringhe binarie pari.

Infatti:
• 0 + 1 è l’insieme dei simboli binari;
• (0 + 1)∗ è una qualsiasi stringa binaria
(eventualmente vuota);
• (0 + 1)∗ 0 è una qualsiasi stringa binaria terminata
con 0.

Esempio 2

L’ER (0 + 1)∗ 111(0 + 1)∗ indica le stringhe binarie


che contengono almeno tre simboli 1 consecutivi.

Infatti:
• (0 + 1)∗ è una qualsiasi stringa binaria;
• 111 è la stringa costituita da tre 1 consecutivi.

L’ER data descrive anche:


• le stringhe che iniziano per 111;
• le stringhe che terminano per 111;
• la stringa 111.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 3


Modulo 5— U.D. 4— Lez. 1

Esempio 3

L’ER ((0 + 1)2 )∗ (0 + 1) indica le stringhe binarie di


lunghezza dispari.

Infatti:
• (0 + 1)2 è una qualsiasi stringa binaria di lunghezza
2;
• ((0 + 1)2 )∗ è una qualsiasi stringa binaria di
lunghezza pari;
• ((0 + 1)2 )∗ (0 + 1) è una qualsiasi stringa binaria di
lunghezza dispari.

L’ER data descrive anche le stringhe di lunghezza


1.

Estensioni

La sintassi ER può essere arricchita:


ER insieme descritto note
(r + ) R+ = R∗ − {} r denota
(r?) R ∪ {} l’insieme R

Inoltre, a seconda delle situazioni d’uso:


• metasimboli per l’indicazione di Σ o di suoi
sottoinsiemi;
• altri operatori (complemento, sottoespressioni);
• eliminazione di parentesi superflue (regole di
precedenza, associatività di alcune operazioni).

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 4


Modulo 5— U.D. 4— Lez. 1

Uso delle espressioni regolari

Le ER vengono utilizzate in diversi ambienti:


• linguaggi di programmazione (Perl, PHP, Python,
JavaScript, Java);
• shell (DOS, bash);
• programmi di utilità (grep, expr, sed, awk).

Esempi:
• lista di tutti i file eseguibili (in DOS shell):
C:> dir *.EXE

• lista degli accessi dal dominio 159.149 (con grep):


grep -E "^159\.149(\.[0-9]{1,3}\){2}" access.log

In sintesi

Le espressioni regolari:
• descrivono i linguaggi regolari;
• sono costituite da stringhe di simboli e metasimboli;
• nella pratica, sono di più facile utilizzo rispetto a
grammatiche e automi;
• vengono usate in molteplici ambienti.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 5


Modulo 5— U.D. 4— Lez. 1

Prossimi passi

Utilizzo di espressioni regolari:


• esercizi;
• esempi d’uso pratico.

Chiusura

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 6


Modulo 5— U.D. 4— Lez. 2

Lezione 2 - Esercizi sulle espressioni


regolari

Fondamenti di Informatica per la Sicurezza

Modulo 5 - Elementi di teoria computazionale

Unità didattica 4 - Espressioni regolari

Stefano Ferrari

Università degli Studi di Milano - Ssri - CDL ONLINE

Esercizio 1 (1)

Scrivere una espressione regolare (ER) per


stringhe binarie che descriva tutte le stringhe
che contengono almeno tre 1.

Soluzione

L’ER richiesta può essere descritta


discorsivamente come una stringa che ha tre
simboli 1:
• intervallati da una qualsiasi stringa binaria;
• preceduti da una qualsiasi stringa binaria;
• seguiti da una qualsiasi stringa binaria.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 1


Modulo 5— U.D. 4— Lez. 2

Esercizio 1 (2)

Quindi, una ER che risponde ai requisiti è:

(0 + 1)∗ 1(0 + 1)∗ 1(0 + 1)∗ 1(0 + 1)∗


che può essere scritta più sinteticamente come:

((0 + 1)∗ 1)3 (0 + 1)∗


o, equivalentemente:

(0 + 1)∗ (1(0 + 1)∗ )3

Tuttavia, tale descrizione è ridondante: alcuni


simboli delle generiche stringhe binarie
intercalanti potrebbero essere 1.

Esercizio 1 (3)

Quindi, la descrizione informale può diventare:


• una stringa che ha tre simboli 1;
• intervallati da una qualsiasi sequenza di 0;
• preceduti da una qualsiasi sequenza di 0;
• seguiti da una qualsiasi stringa binaria.

Usando la sintassi ER:

(0∗ 1)3 (0 + 1)∗

Con ragionamento analogo: (0 + 1)∗ (10∗ )3 .

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 2


Modulo 5— U.D. 4— Lez. 2

Esercizio 2 (1)

Scrivere una espressione regolare per stringhe di


testo che descriva le date in formato
GG/MM/AAAA.

Soluzione

Per comodità, definiamo l’insieme delle cifre


decimali:

D = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
e l’espressione regolare corrispondente:

D = (0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9)

Esercizio 2 (2)

L’espressione regolare cercata può ora essere


espressa come:
D 2 /D 2 /D 4
Nota: Oltre alle date, l’ER data descrive anche
stringhe che non hanno significato, se interpretate
come date.
Per esempio, 00/00/0000 o 62/91/3456.

È possibile costruire una ER che descriva tutte e sole


le date significative, ma non è semplice.
Tale ER dovrebbe incorporare tutte le regole per il
numero di giorni per mese e per gli anni bisestili.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 3


Modulo 5— U.D. 4— Lez. 2

Esercizio 3 (1)

Scrivere una espressione regolare per i numeri


telefonici italiani di sei o otto cifre, che
comprenda recapiti del tipo:
• 0039 0373 89 80 62;
• +39 0373 89 80 62;
• 02 50 33 00 62;

Soluzione

Per comodità, riutilizziamo l’insieme D e


definiamo S = {“ ”} e P = {“+”}.

Esercizio 3 (2)

Il prefisso internazionale può essere in due


forme:
• 02 39
• P 39

Il prefisso urbano può essere costituito da una a


tre cifre, precedute da 0:
• 0(D + D 2 + D 3 )

Infine, il numero può essere composto da tre o


da quattro coppie di decimali, separate da uno
spazio:
• ((D 2 S)2 + (D 2 S)3 )D 2

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 4


Modulo 5— U.D. 4— Lez. 2

Esercizio 3 (3)

Per unire il tutto bisogna tener conto che:


• il prefisso internazionale può non esserci;
• tra le varie parti del numero ci vanno gli spazi.

Quindi:

(02 39+P 39+)S0(D +D 2 +D 3 )S((D 2 S)2 +(D 2 S)3 )D 2

Esercizio 4 (1)

Sia data l’espressione regolare su Σ = {a, b, c}:

E = (a∗ b2 )∗ (b + abc∗ )∗

Quali fra le seguenti stringhe vengono descritte


da E ?

a) aabc d) bac
b) bb e) abbabbbabc
c) abc

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 5


Modulo 5— U.D. 4— Lez. 2

Esercizio 4 (2)

Soluzione
Si può notare che E = E1 E2 , dove E1 = (a∗ b2 )∗ e
E2 = (b + abc∗ )∗ .

a) aabc
aabc non può essere descritta da E perché:
• la c finale potrebbe essere generata solo da E ,
2
ma può esserlo solo se preceduta da ab;
• la sottostringa abc potrebbe essere descritta da
E2 , ma in nessun modo la singola a potrebbe
essere ricavata.

Esercizio 4 (3)

b) bb
L’espressione regolare bb può essere coinvolta nella
catena di inclusioni:
bb = b2 ⊂ a∗ b2 ⊂ (a∗ b2 )∗ ⊂ (a∗ b2 )∗ (b + abc∗ )∗
c) abc
L’espressione regolare abc può essere coinvolta
nella catena di inclusioni:
abc ⊂ abc∗ ⊂ b + abc∗ ⊂ (b + abc∗ )∗ ⊂
(a∗ b2 )∗ (b + abc∗ )∗

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 6


Modulo 5— U.D. 4— Lez. 2

Esercizio 4 (4)

d) bac
bac non può essere descritta da E perché la c finale
potrebbe essere generata solo da E2 , ma può
esserlo solo se preceduta da ab.
e) abbabbbabc
L’espressione regolare abbabbbabc può essere
coinvolta nella catena di inclusioni:
abbabbbabc = (abb)(abb)(b)(abc) =
(ab2 )(ab2 )(b)(abc) = (ab2 )2 (b)(abc) ⊂
(a∗ b2 )2 (b)(abc∗ ) ⊂ (a∗ b2 )∗ (b + abc∗ )2 ⊂
(a∗ b2 )∗ (b + abc∗ )∗

Esercizio 5 (1)

Indicare una ER su Σ = {a, b, c} che descriva le


seguenti stringhe:
• bbccaaa • bbcca
• bbb • bbbaa
ma non le seguenti:
• bbcbac • cbbaa
• bbcabc • abbcab

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 7


Modulo 5— U.D. 4— Lez. 2

Esercizio 5 (2)

Soluzione
Soluzioni banali (da non considerare):
• {bbccaaa, bbb, bbcca, bbbaa}
• Σ∗ − {bbcbac, bbcabc, cbbaa, abbcab}

Si può notare che le stringhe da includere sono


tutte composte da:
• una sequenza di b,
• seguita eventualmente da una sequenza di c,
• terminata da un’eventuale sequenza di a.

Esercizio 5 (3)

Queste caratteristiche possono essere descritte


dall’espressione regolare b∗ c∗ a∗ :
• sequenza iniziale di b come prefisso: b∗ c∗ a∗ ;
• eventuale sequenza di c: b∗ c∗ a∗ ;
• ed eventuale sequenza di a: b∗ c∗ a∗ .

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 8


Modulo 5— U.D. 4— Lez. 2

Esercizio 5 (4)

Nessuna delle stringhe del secondo gruppo viene


descritta da b∗ c∗ a∗ :
• bbcbac: ha una c che inframezza la potenziale
sequenza di b;
• bbcabc: dopo la sequenza bbca iniziale (che verrebbe
descritta dall’espressione regolare considerata) inizia
una nuova sequenza bc;
• cbbaa: antepone c alla sequenza di b;
• abbcab: antepone a alla sequenza di b iniziale.

Prossimi passi

Esempi di applicazioni che usano le espressioni


regolari.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 9


Modulo 5— U.D. 4— Lez. 2

Chiusura

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 10


Modulo 5— U.D. 4— Lez. 3

Lezione 3 - Uso di espressioni regolari

Fondamenti di Informatica per la Sicurezza

Modulo 5 - Elementi di teoria computazionale

Unità didattica 4 - Espressioni regolari

Stefano Ferrari

Università degli Studi di Milano - Ssri - CDL ONLINE

Pattern matching

Le espressioni regolari (ER) sono lo strumento


ideale per le operazioni di pattern matching
(corrispondenza al modello) su informazioni
testuali.

L’ER descrive un modello e i programmi cercano


nei dati le stringhe che corrispondono a tale
modello.

Esempi:
• analisi di log;
• sostituzione di stringhe di testo;
• ricerca in database.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 1


Modulo 5— U.D. 4— Lez. 3

Motivazioni

Le espressioni regolari (ER) permettono di


specificare un insieme di stringhe in modo:
• compatto:
– ripetizioni, alternative;
• simile all’oggetto descritto:
– l’alfabeto delle stringhe è parte dell’alfabeto delle ER;
• costruttivo:
– combinazione di ER mediante operatori di stringhe.

Dove si usano le espressioni regolari

Le ER sono comunemente usate in molti ambiti:


• linguaggi di programmazione:
– C, Java, PHP, Python, Perl;
• shell:
– DOS, bash;
• file di configurazione:
– apache, procmail, majordomo;
• programmi di utilità:
– sed, awk, grep;
• programmi avanzati di elaborazione testi:
– vi, emacs.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 2


Modulo 5— U.D. 4— Lez. 3

Espressioni regolari standard

Non esiste uno standard, ma molte convenzioni


sono condivise.

IEEE POSIX 1003.2 definisce:


• basic regular expression (BRE);
• extended regular expression (ERE).

Nota: POSIX sta per Portable Operating System


Interface.

Faremo riferimento principalmente alla


notazione ERE.

Metasimboli

In un file di testo possono essere utilizzati tutti i


caratteri consentiti dalla codifica.

L’alfabeto delle ER è composto dall’alfabeto delle


stringhe da specificare e da metasimboli.

Le ER sono specificate tramite caratteri di testo.

Questo comporta che alcuni simboli devono


essere realizzati tramite una coppia di caratteri
consecutivi: le sequenze di escape.

Esempio: “\*” può significare “*”.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 3


Modulo 5— U.D. 4— Lez. 3

Operazioni di base

Gli operatori di base delle ER si traducono:


• potenza: la ripetizione di una sottoespressione si
indica con il numero di ripetizioni fra parentesi graffe;
– esempio: ab{3} corrisponde all’ER ab3 = abbb;
• chiusura: analogamente, la chiusura viene indicata
con l’asterisco;
– esempio: ab* corrisponde all’ER ab∗ ;
• sottoespressioni: le sottoespressioni si delimitano
con le parentesi tonde;
– esempio: (ab)*cd corrisponde all’ER (ab)∗ cd;
• unione: sottoespressioni alternative vengono
indicate con il simbolo “pipe”;
– esempio: a|b corrisponde all’ER a + b.

Estensioni

Le estensioni facilitano la specifica dei pattern:


• Σ: un qualsiasi carattere di testo viene indicato
tramite il punto;
– esempio: .* corrisponde all’ER Σ∗ ;
• : la stringa nulla si indica come una
sottoespressione vuota;
– esempio: (a|()) corrisponde all’ER (a + );
• corrispondenze multiple:
– “+”: a+b corrisponde all’insieme (a∗ − )b;
– “?”: a?b corrisponde all’ER (a + )b;
– “{n,}”: a{2,}b corrisponde all’insieme (a∗ − a − )b;
– “{n,m}”: a{2,4}b corrisponde all’insieme (a2 + a3 + a4 )b.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 4


Modulo 5— U.D. 4— Lez. 3

Sottoinsiemi di caratteri
• elenco di caratteri: una sequenza di caratteri fra
una coppia di parentesi quadre indica un insieme;
– esempio: [abd] corrisponde all’insieme {a, b, d};
• intervallo: sfruttando l’ordinamento dei caratteri
ASCII, si possono indicare intervalli di caratteri;
– esempio: [a-d] corrisponde all’insieme {a, b, c, d};
• complemento: l’operatore di complemento
insiemistico si indica ponendo l’accento circonflesso
come primo elemento di un sottoinsieme di caratteri;
– esempio: [^abd] corrisponde all’insieme Σ − {a, b, d};
• classi: esistono identificatori per i sottoinsiemi
comunemente utilizzati;
– esempio: [:digit:] corrisponde all’insieme {0, . . . , 9}.

Ancoraggi

La posizione di una stringa nel testo può essere


un fattore discriminante.

Esempio: l’IP del client viene posto all’inizio


della riga di log.

I metasimboli di ancoraggio servono per indicare


una posizione relativa all’interno del testo:
• “^” indica l’inizio della riga;
• “$” indica la fine della riga;
– e “\^” e “\$” indicano, rispettivamente, i caratteri “^” e “$”.

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 5


Modulo 5— U.D. 4— Lez. 3

Riferimenti

I riferimenti a precedenti sottospressioni (solo


BRE) sono usati per poter usare la sottostringa
che corrisponde al sottomodello.

Esempio:
• (a*)b\1 corrisponde ad aabaa, ma non ad aaba.

I riferimenti vengono utilizzati soprattutto per le


sostituzioni.

Esempio:
• cambiare il path a tutti i file di un file di
configurazione;
– sed ’s/olddir\/\(.*\)/newdir\/\1/g’ config.txt

Esempi

Alcuni esempi di impiego delle ER:


• analisi degli accessi (grep):
grep -E "^159\.149(\.[:digit:]{1,3}){2}" access.log

• controllo (php):
eregi ("(ozilla.[23]|MSIE.3)", $HTTP_USER_AGENT);
/* Returns true if client browser is
Netscape 2, 3 or MSIE 3. */

• rewriting (apache):
RewriteRule ^/rim(/.*)? http://rim.dti.unimi.it/$1

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 6


Modulo 5— U.D. 4— Lez. 3

In sintesi

Le espressioni regolari sono un utile e pratico


strumento per indicare pattern di caratteri.

Sono utilizzate in:


• linguaggi di programmazione;
• shell;
• file di configurazione;
• programmi di utilità;
• programmi di elaborazione testi.

Chiusura

Stefano Ferrari— Fondamenti di Informatica per la Sicurezza 7