Documente Academic
Documente Profesional
Documente Cultură
Stefano Ferrari
Citazione
Numeri
x x •
x x • •
x • •
Contare
Astrazione
Sistema di numerazione
Numerale
Sistemi di numerazione
1962
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
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
Lezione 2 - Rappresentazione
posizionale
Stefano Ferrari
Numeri e rappresentazione
Esempio:
+ + + o + o + o o o + o + o o o + o + o
Formalizzazione:
X
n
(an . . . a1 a0 )b ≡ ai · b i , b ≥ 2, ai ∈ {0, . . . , b − 1}
i=0
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 ...
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!
Numeri frazionari
In sintesi
Chiusura
Stefano Ferrari
Divisione
• b è il divisore;
• q è il quoziente (o quoto);
• r è il resto.
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
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.
In sintesi
Chiusura
Stefano Ferrari
Da base n a decimale
(412)5 = (107)10
Da decimale a base n
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
Da binario ad esadecimale
È un caso particolare di conversione da base m a
base n: 16 = 24 .
Esempio: (101001010)2 = (???)16
(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
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
Chiusura
Stefano Ferrari
Binario è bello!
Bit
Binary Digit
cifra binaria
Sequenze di bit
2 × 2 × ··· × 2
←−−−−−−−−− →
N volte
Byte
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).
Fonte: http://www.iec.ch/zone/si/si_bytes.htm
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
Chiusura
Stefano Ferrari
Citazione
Numeri naturali
Complemento a 2 (1)
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
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
Complemento a 2 (3)
In sintesi
Prossimi passi
Chiusura
Lezione 3 - Complemento a 2
Stefano Ferrari
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
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
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
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.
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
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
Chiusura
Stefano Ferrari
Codifica (1)
Codifica (2)
Codifica (3)
Decodifica (1)
Decodifica (2)
Inversione (1)
Inversione (2)
Somma (1)
Somma (2)
Sottrazione (1)
Sottrazione (2)
Prossimi passi
Chiusura
Stefano Ferrari
Numeri razionali
m bit k bit
←−−− −−→ ←−−−−−→
a n−1 · · · ak . ak−1 · · · a0
←−−−−−−−−−−−−−−− →
n bit
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
Esempio
32.1 può essere scritto come 0.321 · 102 .
m è detto mantissa, e è detto esponente.
Fissa o mobile?
In sintesi
Prossimi passi
Chiusura
Lezione 6 - Rappresentazione di
grandezze numerabili
Stefano Ferrari
Citazione
Insiemi numerabili
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
Grandezze continue
Campionamento
Quantizzazione
In sintesi
Prossimi passi
Chiusura
Lezione 7 - Rappresentazione di
grandezze continue
Stefano Ferrari
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.
Codifica di immagini
Bitmap (1)
Bitmap (2)
colori usati;
• gli elementi della bitmap non contengono un colore,
ma solo un riferimento ad un colore della tavolozza.
Immagini vettoriali
Animazioni
In sintesi
Prossimi passi
Chiusura
Lezione 1 - Permutazioni e
disposizioni
Stefano Ferrari
Permutazioni (1)
Permutazioni (2)
Esercizio 1 (1)
Esercizio 1 (2)
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
Disposizioni (1)
Disposizioni (2)
Esercizio 2
In sintesi
Prossimi passi
Chiusura
Stefano Ferrari
Esercizio 3
Combinazioni (1)
Combinazioni (2)
Esercizio 4
Esercizio 5
Riassumendo
In sintesi
Prossimi passi
Chiusura
Stefano Ferrari
Colori
Riassumendo ...
Regola generale
Sebbene:
Prossimi passi
Chiusura
Stefano Ferrari
# Qui 4 Qui
Quo 2 Quo
# Qua 4 Qua
Radio button Check box
Gelateria (1)
Gelateria (2)
Gelateria (3)
Gelateria (4)
Prossimi passi
Chiusura
Stefano Ferrari
Informazione
Informazione
Teoria dell’informazione
In sintesi
L’informazione:
• è di diversi tipi;
• è legata all’incertezza.
Prossimi passi
Chiusura
Stefano Ferrari
Misura dell’informazione
p(xi ) = 1 ⇒ I(xi ) = 0
p(xi ) → 0 ⇒ I(xi ) → ∞
Funzione informazione
Esempio
Risposta: 7.
Traccia:
• la conoscenza del numero porta 7 bit di
informazione;
• con ogni domanda possiamo ottenere 1 bit di
informazione.
Approfondimento
In sintesi
L’informazione:
• è legata all’incertezza;
• si misura in bit.
Chiusura
Stefano Ferrari
Esempi:
• {1, 2, 4, 7} descrizione intensionale
• {x | x ≤ 5} descrizione estensionale
4 1 2
7 diagrammi di Venn
5
grafi cartesiani
Insiemi particolari
Insieme universo
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
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
Operatori (4)
Operatori (5)
• 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
• 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
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.
In sintesi
Chiusura
Lezione 2 - Funzioni
Stefano Ferrari
Prodotto cartesiano
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
Funzione
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
Funzioni suriettive
Funzioni iniettive
Funzioni biiettive
Funzione inversa
Composizione di funzioni
f :A→B e g:B→C
f (f −1 (a)) = a
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)
In sintesi
Chiusura
Stefano Ferrari
Algebra booleana
Assiomi (1)
∃ a, b ∈ K : a 6= b
2. chiusura di +e·
∀ a, b ∈ K :
• a+b∈K
• a·b∈K
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)
6. proprietà distributiva
∀ a, b, c ∈ K :
• a + (b · c) = (a + b) · (a + c)
• a · (b + c) = (a · b) + (a · c)
Assiomi (3)
7. complemento
∀a ∈ K ∃a ∈ K :
• a+a=1
• a·a=0
Proprietà
Principio di dualità
I teoremi dell’algebra booleana possono essere
dimostrati a coppie, scambiando tra loro:
• le operazioni, + ↔ ·;
• gli elementi neutri, 0 ↔ 1.
X1 + X 2 + . . . + X n = X 1 · X 2 · . . . · X n
Dimostrazione per induzione:
• caso base:
• passo di induzione:
– si ipotizza vero il teorema per n − 1 elementi;
– si utilizza l’ipotesi aggiuntiva per dimostrare il teorema per n
elementi.
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à
Esempi
In sintesi
Le algebre booleane:
• sono uno strumento matematico per la
formalizzazione del ragionamento;
• sono regolate da 7 assiomi.
Prossimi passi
Chiusura
Stefano Ferrari
Logica formale
Formalizzazione
Logiche
Logica proposizionale
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.
Alfabeto
Proposizioni semplici
Esempi:
• ogni triangolo si può inscrivere in un cerchio vera
• Roma è in Francia falsa
Connettivi (1)
Connettivi (2)
Proposizioni composte
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.
Prossimi passi
Chiusura
Stefano Ferrari
Sintassi (1)
Sintassi (2)
Precedenze
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)
Semantica
Interpretazione (1)
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
Soddisfacibilità
Equivalenza logica :
a è logicamente equivalente a b se e solo se
a ↔ b è una tautologia: a ⇔ b
In sintesi
Prossimi passi
Schemi di inferenza.
Chiusura
Stefano Ferrari
• Introduzione di disgiunzione
a ⇒ (a ∨ b)
• Sillogismo disgiuntivo
(a ∨ b) ∧ ¬b ⇒ a
• Terzo escluso
a ∨ ¬a
• Non contraddizione
¬(a ∧ ¬a)
• 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 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))
• Doppia negazione
¬¬a ⇔ a
Teoremi
a1 ∧ · · · ∧ a n ⇒ t
Regole di inferenza
Dimostrazione di teoremi
• è un’assunzione;
• è una tautologia;
• è ottenuta per applicazione delle regole di inferenza;
• pm è la tesi.
Esempio — teorema
Esempio — formalizzazione
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
In sintesi
Prossimi passi
Chiusura
Stefano Ferrari
Formalizzazione (1)
Formalizzazione (2)
Formalizzazione (3)
Tavola di verità
Teorema 1
Teorema 2
Tesi
• Mario è geometra.
Altri esercizi
Prossimi passi
Chiusura
Stefano Ferrari
Connettivi binari
Funzione logica
Connettivi usati
Motivazioni
In particolare:
• K = {F, V }, dove 0 ≡ F e 1 ≡ V
• ∨ ≡ +
• ∧ ≡ ·
• ¬ ≡¯
Logica e intuitività
Date le carte:
A R 6 7
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
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.
Chiusura
Stefano Ferrari
Indovinello
Frase 1, 8, 5, 5
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.
Esempi
Quantificatori (1)
Quantificatori (2)
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”
Sono termini:
• una costante;
• una variabile;
• una funzione n-aria f (t1 , . . . , tn ), dove t1 , . . . , tn
sono termini.
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.
Definizioni
Nella formula ∀x A:
• A si chiama ambito o campo d’azione del
quantificatore ∀;
• x si dice variabile vincolata (o quantificata).
Dimostrazioni formali
In sintesi
Soluzione dell’indovinello
∃x(¬f reddo(y) ∧ piace(x, y)):
• A qualcuno piace caldo (Some Like It Hot, 1959)
Prossimi passi
Chiusura
Stefano Ferrari
Predicati ed insiemi
Dimostrazioni grafiche
Esempio 1
Ip1: U ⊆ M
Ip2: s ∈ U
Tesi: s ∈ M
Esempio 2
Ip1: A ⊆ R
x I
Ip2: ∃x ∈ I − R
Tesi: ∃x ∈ I − A
In sintesi
Chiusura
Stefano Ferrari
Algebre booleane
Esempio:
• Idempotenza (a + a = a): mettere in parallelo due
interrutori abbinati, equivale a usarne uno solo.
Algebra di commutazione
Reti logiche
Approfondimenti
In sintesi
Chiusura
Lezione 1 - Architettura di
von Neumann
Stefano Ferrari
Scomposizione funzionale
Funzionalità principali
Trasferimento dati
Si realizza mediante:
• dispositivi di I/O;
• connessione in rete.
Memorizzazione
Elaborazione
Controllo
È esercitato da:
• utente (ad alto livello);
• CPU (a basso livello);
• unità di controllo (a bassissimo livello).
Calcolatore programmabile
CPU
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.
Bus
Architettura master/slave
vantaggi svantaggi
• semplicità; • lentezza;
• estendibilità; • capacità del canale limitante;
• standardizzabilità; • sovraccarico CPU.
In sintesi
Prossimi passi
Chiusura
Stefano Ferrari
Bus
Esecutore
Linguaggio macchina
Codice operativo
Si ha che:
• CPU della stessa famiglia hanno lo stesso codice
operativo;
• CPU di diversi produttori possono adottare lo stesso
codice operativo (compatibilità).
CPU
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
In sintesi
Prossimi passi
Chiusura
Stefano Ferrari
Memoria
Si divide in:
• memoria centrale;
• memoria di massa.
Si classifica per:
• velocità d’accesso;
• densità;
• volatilità;
• costo per bit.
Gerarchia di memoria
Periferiche
Modalità:
• seriale (USB, Firewire, Bluetooth);
• parallelela.
Modalità di I/O
Approfondimento
In sintesi
Prossimi passi
Chiusura
Stefano Ferrari
Definizione
Macchina virtuale
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.
Risolvere un problema
Algoritmo
Caratteristiche di un algoritmo
• 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
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
Esempi di algoritmi
In sintesi
Prossimi passi
Chiusura
Lezione 2 - Programmazione di un
calcolatore
Stefano Ferrari
Descrizione di un algoritmo
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.
Linguaggi di descrizione
Sottoprogrammi
Vantaggi
Programma eseguibile
Traduzione in binario
In sintesi
Prossimi passi
Chiusura
Stefano Ferrari
Programmare
Catena di programmazione
Editing
Compiling
Errore sintattico
Esempio:
3 * (5 +/ 2)
Linking
Esso produce:
• un programma eseguibile;
• oppure, una segnalazione di errore nella citazione
delle routine di libreria (linker error).
Loading
Esecuzione
In sintesi
Prossimi passi
Chiusura
Stefano Ferrari
Motivazioni
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.
utente/programmi utente
interprete dei comandi (shell)
file system
gestore della periferiche SO
gestore della memoria
nucleo (kernel)
hardware
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.
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
Rete
In sintesi
Il suo scopo è:
• gestire l’hardware;
• fornire un’interfaccia semplificata per l’utente.
Prossimi passi
Chiusura
Stefano Ferrari
Tipi di SO
Parallelismo
Parallelismo: motivazioni
In sintesi
Prossimi passi
Chiusura
Stefano Ferrari
Processo
attesa
Multiprogrammazione
Politiche di scheduling
Processi concorrenti
In sintesi
Prossimi passi
Chiusura
Stefano Ferrari
Spazio di indirizzamento
Rilocazione
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).
Memoria virtuale
co
dis
disco su
ica
attesa car
Frammentazione
t1 t2 t3 t4
Paginazione
In questo modo:
• si guadagna la possibilità di allocare zone non
contigue di memoria;
• si può attenuare il problema della frammentazione
della memoria.
Segmentazione
In sintesi
Prossimi passi
Chiusura
Stefano Ferrari
File system
Dati e metadati
Allocazione
Per esempio:
• frammentazione;
• allocazione contigua (supporti write-once);
• allocazione a blocchi (supporti riscrivibili).
FAT 0 3 5 6 -1 9 0 -1 8
1 2 3 4 5 6 7 8 9
Allocazione indicizzata
In sintesi
Approfondimenti
Chiusura
Stefano Ferrari
Aforisma
Edsger Dijkstra
Scienza informatica
• 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?
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.
Teoria computazionale
Tesi di Church
Tesi di Church-Turing
La classe delle funzioni intuitivamente calcolabili
coincide con quella delle funzioni calcolabili dalla
macchina di Turing.
Formulazioni equivalenti
Calcolabilità e algoritmi
In sintesi
Prossimi passi
Chiusura
Lezione 2 - Computabilità
Stefano Ferrari
Algoritmi e funzioni
Relazione algoritmo-funzione
Funzioni calcolabili
1. input k;
2. trova Pk ;
3. output Pk (k) + 1.
Alcune considerazioni
La conclusione è:
• non tutto ciò che possiamo definire
matematicamente è calcolabile;
• serve qualche definizione più formale di ciò che è
intuitivamente calcolabile.
In sintesi
Prossimi passi
Chiusura
Lezione 1 - Linguaggi
Stefano Ferrari
Alfabeto
Esempi:
• A = {a, b, c}
• A = { 0, 1}
Stringa
Esempio:
• se A = {a, b, c}, aaabacab è una stringa su A.
|| = 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.
Concatenazione
La concatenazione di v e w è vw:
• la concatenazione è un’operazione associativa;
• ne è l’elemento neutro.
Linguaggio
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
intersezione , L1 ∩ L2 :
• L1 ∩ L2 = {w | w ∈ L1 ∧ w ∈ L2 }
• |L1 ∩ L2 | ≤ min(|L1 |, |L2 |)
differenza , L1 − L2 :
• L1 − L2 = {w | w ∈ L1 ∧ w 6∈ L2 }
• |L1 − L2 | ≤ |L1 |
complemento , L:
• Σ∗ − L
• |L| ≤ ∞
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
• 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.
Prossimi passi
Chiusura
Lezione 2 - Grammatiche
Stefano Ferrari
Grammatica
Esempio
Grammatica: hΣ, V, P, Si
• Σ = {0, 1}
• V = {X}
• P = {X → 0, X → 1X, X → 0X}
• S=X
Grammatiche BNF
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
Albero sintattico
Esempio: il gatto mangia il sasso
S
hf rasei
hsoggi hc_oggi
hverboi
In sintesi
Una grammatica:
• definisce un insieme di regole per generare un
linguaggio;
• fa uso di metasimboli;
• fa uso di regole di produzione.
Prossimi passi
Chiusura
Stefano Ferrari
Classificazione di Chomsky
Grammatiche di tipo 3
Esempi:
• F ::= aG|a, G ::= bG|b|aF
• F ::= F a|a
Grammatiche di tipo 2
Esempi:
• F ::= aG|a, G ::= Gb|b|F c
• F ::= aF c|b
Grammatiche di tipo 1
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.
Grammatiche di tipo 0
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
In sintesi
Ogni livello:
• è caratterizzato da qualche vincolo alle regole di
produzione;
• genera una classe di linguaggi.
Prossimi passi
Chiusura
Stefano Ferrari
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 )∗
Esercizio 1 (2)
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, . . . }
Esercizio 2 (1)
a) bb
b) aababb
c) babaab
Esercizio 2 (2)
bb
S
S ::= B B
B ::= bA bA
A ::= b bb
Esercizio 2 (3)
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)
babaab
S
S ::= B B
B ::= bA bA
A ::= aB baB
B ::= bA babA
A ::= aB babaB
B ::= aA babaaA
A ::= b babaab
Esercizio 3 (1)
a) bbb
b) abbcc
c) abbbcc
Esercizio 3 (2)
bbb
S
S ::= A A
A ::= Ab Ab
A ::= Ab Abb
A ::= b bbb
Esercizio 3 (3)
abbcc
S
S ::= aA aA
A ::= bAB abAB
A ::= b abbB
B ::= cB abbcB
B ::= c abbcc
Esercizio 3 (4)
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!
Esercizio 4 (1)
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
In sintesi
Prossimi passi
Espressioni regolari.
Chiusura
Stefano Ferrari
Definizione formale
Funzione di transizione
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
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
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 ∈ Σ
Automa non-deterministico
{q} se x =
δ̂(q, x) = S
δ(p, y) se x = wy, w ∈ Σ∗ , y ∈ Σ
p∈δ̂(q, w)
Confronto DFA-NFA
In sintesi
Prossimi passi
Chiusura
Stefano Ferrari
Esercizio 1 (1)
Osservazioni:
• l’alfabeto è dato (Σ = {0, 1});
• si possono individuare le seguenti possibili situazioni:
Esercizio 1 (2)
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
Esercizio 2 (1)
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)
Esercizio 2 (3)
1 0
0
q1 q0
1
Esercizio 3 (1)
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.
Esercizio 3 (2)
Esercizio 3 (3)
• 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
In sintesi
Altri esercizi:
• regole più complesse:
– accettare le stringhe binarie divisibili per 3;
• casi reali:
– unità per il controllo di un distributore di bevande.
Prossimi passi
Chiusura
Stefano Ferrari
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.
Macchina di Turing
Ad esempio:
• multinastro;
• multitestina;
• nastro semi-infinito;
• non-deterministica.
MdT universale
Linguaggi accettati
In sintesi
Prossimi passi
Chiusura
Stefano Ferrari
Calcolo
Terminazione
Linguaggi e computabilità
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;
In sintesi
Prossimi passi
Chiusura
Stefano Ferrari
Complessità
Misura di complessità
Misura di complessità
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.
Problemi P e N P
P vs NP problem
P 6= N P ?
In sintesi
Prossimi passi
Le espressioni regolari.
Chiusura
Stefano Ferrari
Espressioni regolari
∅ ∅
{}
a {a} a∈Σ
Esempio 1
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
Infatti:
• (0 + 1)∗ è una qualsiasi stringa binaria;
• 111 è la stringa costituita da tre 1 consecutivi.
Esempio 3
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.
Estensioni
Esempi:
• lista di tutti i file eseguibili (in DOS shell):
C:> dir *.EXE
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.
Prossimi passi
Chiusura
Stefano Ferrari
Esercizio 1 (1)
Soluzione
Esercizio 1 (2)
Esercizio 1 (3)
Esercizio 2 (1)
Soluzione
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)
Esercizio 3 (1)
Soluzione
Esercizio 3 (2)
Esercizio 3 (3)
Quindi:
Esercizio 4 (1)
E = (a∗ b2 )∗ (b + abc∗ )∗
a) aabc d) bac
b) bb e) abbabbbabc
c) abc
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∗ )∗
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)
Esercizio 5 (2)
Soluzione
Soluzioni banali (da non considerare):
• {bbccaaa, bbb, bbcca, bbbaa}
• Σ∗ − {bbcbac, bbcabc, cbbaa, abbcab}
Esercizio 5 (3)
Esercizio 5 (4)
Prossimi passi
Chiusura
Stefano Ferrari
Pattern matching
Esempi:
• analisi di log;
• sostituzione di stringhe di testo;
• ricerca in database.
Motivazioni
Metasimboli
Operazioni di base
Estensioni
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
Riferimenti
Esempio:
• (a*)b\1 corrisponde ad aabaa, ma non ad aaba.
Esempio:
• cambiare il path a tutti i file di un file di
configurazione;
– sed ’s/olddir\/\(.*\)/newdir\/\1/g’ config.txt
Esempi
• 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
In sintesi
Chiusura