Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Algebre di Dati
Dati e rappresentazioni, requisiti delle astrazioni di dati, costrutti.
Astrazioni di dati e dati primitivi. Specifica sintattica e semantica. La
realizzazione.
Astrazione funzionale
Astrazione funzionale
Se Fatt(i) non disponibile necessario scrivere un sottoprogramma per ampliare il repertorio degli operatori
Astrazione funzionale
Astrazione funzionale
Astrazione funzionale /2
Astrazione dati
Astrazione dati
Astrazione dati /2
Astrazione dati /3
10
11
+,-,*,/
and , or , not
>,<,=
substr e &
stringhe
12
13
Gli operatori
14
Astrazione dati
una specifica
una realizzazione
15
Obiettivo
16
17
18
la cui parte reale la differenza tra il prodotto della parte reale del primo
numero per la parte reale del secondo numero e il prodotto della parte
immaginaria del primo numero per la parte immaginaria del secondo numero
e la cui parte immaginaria la somma del prodotto della parte reale del
primo numero per la parte immaginaria del secondo numero con il prodotto
della parte immaginaria del primo numero con la parte reale del secondo
numero
19
cxsum(c1, c2) = c3
somma di complessi
cxprod(c1, c2) = c3
prodotto di complessi
realpart(c) = r
immgpart(c) = i
conscx(r1, r2) = c
20
dimension c1(2), c2(2), c3(2), c4(2) la dichiarativa fortran per i vettori che
rappresentano i numeri complessi
subroutine sommacomplessi (c1(2), c2(2), c3(2))
La stessa cosa pu farsi per gli altri operatori.
Va, per, evidenziato che input a questa subroutine possono essere passati tutti i
vettori di interi a due elementi, anche quelli che non hanno nulla a che vedere con
la nostra astrazione
21
In pascal si pu dichiarare
TYPE
COMPLEX = ARRAY [2] OF REAL;
VAR
C1, C2, C3, C4 : COMPLEX;
PROCEDURE SOMMACOMPLESSI (
C1, C2 : COMPLEX;
VAR C3 :COMPLEX);
Oppure
TYPE
COMPLEX= RECORD OF
PARTEREALE : REAL;
PARTEIMMAGINARIA :REAL;
END;
22
Astrazione dati
23
Requisito di astrazione
24
Requisito di protezione
25
26
Specifica e Realizzazione
27
Specifica e Realizzazione /2
28
Specifica e Realizzazione /3
29
Specifiche: un esempio
Specifica sintattica
Tipi:
integer, boolean
Operatori:
+ , - : (integer, integer) integer
< , > : (integer, integer) boolean
and, or : (boolean, boolean) boolean
not : (boolean) boolean
seqcif : ( ) integer
true : ( ) boolean
false : ( ) boolean
30
Specifiche: un esempio /2
Specifica semantica
Tipi :
integer: l'insieme dei numeri interi
boolean: l'insieme dei valori di verit
Operatori:
+ e - : forniscono come risultato somme e differenze
< e > : danno vero se il primo operatore minore
(maggiore) del secondo
and e or: forniscono la congiunzione e la disgiunzione
logiche dei due operandi
31
Specifiche: un esempio /3
Operatori (cont.)
seqcif : fornisce l'intero secondo notazione decimale
true: corrisponde al valore di verit vero
false: corrisponde al valore di verit falso
32
Specifiche: un esempio /4
Specifica sintattica
Tipi:
integer, boolean
Operatori:
zero : ( )
true : ( )
false : ( )
succ : (integer)
pred : (integer)
iszero : (integer)
integer
boolean
boolean
integer
integer
boolean
33
Specifiche: un esempio /5
Specifica semantica
Tipi :
integer : l'insiemi dei numeri interi
boolean : l'insieme dei valori di verit
Operatori:
zero
true
false
succ (n)
pred (n)
iszero(n)
34
Realizzazione
35
Realizzazione
Si fa riferimento a
36
Realizzazione /2
37
Struttura di dati
38
Struttura di dati /2
39
Esempio
40
Esempio /2
Specifica sintattica
Tipi:
vettore, intero, tipoelem
Operatori:
creavettore : ( ) vettore
leggivettore : (vettore, intero) tipoelem
scrivivettore: (vettore, intero, tipoelem) vettore
41
Esempio /3
Specifica semantica
Tipi:
intero: l'insieme dei numeri interi
vettore: l'insieme delle sequenze di n elementi di tipo
tipoelem
Operatori:
creavettore = v
post: per ogni i, 1 i n, l'i-esimo elemento del vettore
v(i) uguale ad un definito elemento di tipo tipoelem
leggivettore(v, i) = e
pre: 1 i n
post: e = v(i)
scrivivettore(v, i, e) = v'
pre: 1 i n
post: v'(i) = e, v'(j) = v(j) per ogni j tale che 1 j n e j i
42
Esempio /4
Realizzazione
In fortran
43
Ulteriore Esempio
Specifica sintattica
Tipi :
matrice, intero, tipoelem
Operatori:
creamatrice: ( ) matrice
leggimatrice: (matrice, intero, intero, intero) tipoelem
scrivimatrice: (matrice, intero, intero, intero, tipoelem)
matrice
44
Ulteriore Esempio /2
Specifica semantica
Tipi :
intero: insieme di interi
matrice: insieme di n*m*p elementi di tipo tipoelem t.c.
l'elemento caratterizzato dagli indici i, j e k quello
nella i-esima riga, j-esima colonna e k-esima
dimensione in profondit
etc. .
45
Ulteriore Esempio /3
Realizzazione
46
Ulteriore Esempio /4
47
Ulteriore Esempio /5
48
Ulteriore Esempio /6
49
Ulteriore Esempio /7
Specifica sintattica
50
Ulteriore Esempio /8
Specifica semantica
eseguiprodotto (A, B, m , n , p) C
PRE:
A { A(i,k) t.c. i = 1,...,m e k = 1, ..., p }
B { B(k,j) t.c. k = 1,...,p e j = 1, ..., n }
POST:
C{
51
Ulteriore Esempio /9
Realizzazione
Definizione di costanti:
M = .. , P = .. ed N = ..
Definizione di variabili:
I intero in 1 . . M
J intero in 1 . . N
K intero in 1 . . P
...
52
Realizzazione
Definizione di costanti
Definizione di tipi
DIMMAX = 50
Definizione di variabili
NUMERO_RIGHE_PRIMA, NUMERO_COLONNE_PRIMA,
NUMERO_RIGHE_SECONDA, NUMERO_COLONNE_SECONDA: variabili
di tipo INDICE
53
54
Tecniche di specifica
55
dominio designato
domini ausiliari
d = Stack
{ItemType, Boolean}
56
Tipi di operatori
Di base
restituiscono una propriet della struttura (quanto oggetti ci sono nella struttura?)
Aggiuntivi
Iteratori (Iterators): sono usati per permettere all'utente di processare l'intera struttura,
componente per componente.
57
Stack(di ItemType)
interfaccia
Create
Push(Stack, ItemType)
Pop(Stack)
Top(Stack)
IsEmpty(Stack)
Stack
Stack
Stack
ItemType
Boolean
d = Stack(di ItemType)
D = {Stack, ItemType, Boolean}
F = {Create, Push, Pop, Top, IsEmpty}
Algoritmi e Strutture Dati A.A. 13/14, N. Di Mauro
58
59
60
IsEmpty(S)
Si dice che alcune funzioni sono parziali (-/>) e non totali (->)
not empty(S)
61
Specifica sintattica
struttura
Stack(di ItemType)
interfaccia
Create
Stack
Push(Stack, ItemType) Stack
Pop(Stack) Stack
Top(Stack) ItemType
IsEmpty(Stack) Boolean
d = Stack(di ItemType)
ItemType
Boolean
62
Specifica semantica
Precondizione
Postcondizione
63
Push(S, I) S'
PRE: -
Pop(S) S'
Top(S) I
64