SPECIFICA DELLE MAPPE FINITE Gianna Reggio

Slides:



Advertisements
Presentazioni simili
Programmazione ad oggetti
Advertisements

Definitezza Vogliamo poter richiedere la “definitezza” delle funzioni
Specifiche Algebriche ESERCIZI Versione 0.0
Conseguenza semantica
I numeri naturali ….. Definizione e caratteristiche
MATEMATICA PER L’ECONOMIA
SPECIFICA INIZIALE DELLE MAPPE FINITE v. 0.0 Gianna Reggio
Process synchronization
Nel C non esiste un dato primario di tipo stringa; queste sono rappresentate con un array monodimensionale di caratteri (tipo char). Così per definire.
Specifiche Algebriche
Algebra parziale con predicati
Semantica di linguaggi di programmazione Ne esistono differenti stili a seconda di paradigma di programmazione uso (validazione, prototyping, verifica.
SPECIFICA LOOSE DELLE MAPPE FINITE v. 1.1 Gianna Reggio
Specifiche Algebriche Modello Iniziale Versione 1.0 Gianna Reggio
Informatica Generale Marzia Buscemi
Lez. 31 Universita' di Ferrara Facolta' di Scienze Matematiche, Fisiche e Naturali Laurea Specialistica in Informatica Algoritmi Avanzati Programmazione.
Durante la lezione del 14 dicembre ho scoperto un altro modo per utilizzare il programma iplozero: la creazione di alcuni esercizi di Brain training.
Il linguaggio C Gli operatori e le espressioni C Language
1 Istruzioni, algoritmi, linguaggi. 2 Algoritmo per il calcolo delle radici reali di unequazione di 2 o grado Data lequazione ax 2 +bx+c=0, quali sono.
Interpretazione Astratta
Esercitazioni su circuiti combinatori
Caratteri e stringhe di caratteri
Algoritmi Politecnico di Milano C Primi programmi Politecnico di Milano.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – Ver. aggiornata al 20 Marzo 2013.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – Ver. aggiornata al 9 Agosto 2013.
Informatica 2. Concetti fondamentali di programmazione Programmare vuol dire scrivere un algoritmo in un linguaggio che faccia funzionare un calcolatore.
Corso di Informatica (Basi di Dati)
Corso di Informatica (Programmazione)
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Assegnamento di valore a una variabile Anno Accademico 2009/2010.
Corso di Laurea in Biotecnologie Informatica (Programmazione)
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Le stringhe di caratteri in Java Anno Accademico 2009/2010.
I NUMERI REALI (N, Z, Q, I, R) come ampliamenti successivi
Corso di Informatica A.A Corso di Informatica Laurea Triennale - Comunicazione&Dams Dott.ssa Adriana Pietramala Laurea.
Corso di Informatica A.A Corso di Informatica Laurea Triennale - Comunicazione&Dams Dott.ssa Adriana Pietramala Dott.ssa.
Istruzioni di selezione in Java Programmazione Corso di laurea in Informatica.
Heap binomiali Gli heap binomiali sono strutture dati su cui si possono eseguire efficientemente le operazioni: Make(H) : crea uno heap vuoto Insert(H,
Semantica di Tarski.
I numeri relativi by iprof.
Organizzazione del corso
Strutture di controllo in C -- Flow Chart --
Ingegneria della conoscenza e sistemi esperti Dario Bianchi, 1999 Conoscenza e ragionamento Logica dei predicati del primo ordine.
Ingegneria della conoscenza e sistemi esperti Dario Bianchi, 1999 Logica dei predicati del primo ordine.
I File.
SCOMPOSIZIONI.
4 Tipi di dati & variabili
Le operazioni aritmetiche con i numeri naturali e decimali
Logica Matematica Seconda lezione.
I primi insiemi che si incontrano in matematica sono quelli dei numeri;  daremo qui una breve descrizione dei principali insiemi numerici, delle loro operazioni.
Esercizio 10.* Un cassiere vuole dare un resto di n centesimi di euro usando il minimo numero di monete. a) Descrivere un algoritmo goloso per fare ciò.
Scomposizione polinomi
Introduzione ai linguaggi formali e alle stringhe
TEORIA DEGLI INSIEMI INIZIO.
BIOINFO3 - Lezione 201 Come in ogni corso di introduzione ad un linguaggio di programmazione, proviamo a scrivere lormai celebre primo programma di prova.
CALCOLO LETTERALE Perché?
MONOMI E POLINOMI.
Introduzione a Javascript
Rappresentazione dell’informazione nel calcolatore.
La ricorsione.
Calcolo letterale.
Fondamenti di Informatica II Ingegneria Informatica (A-I) Prof. M.T. PAZIENZA a.a – 3° ciclo.
1 Tipi di Dato §descrittori, tipi, controllo e inferenza dei tipi §specifica (semantica) e implementazione di tipi di dato l implementazioni “sequenziali”
Semantica dinamica Vogliamo definire una funzione che associ ad ogni termine corretto del mio linguaggio di programmazione un valore. Questa associazione.
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
Rappresentazione dell'informazione
OPERAZIONI CON I MONOMI
USO DEL DENARO A.Contardi “Verso l’autonomia” ed.Carocci 2004.
MASSIMO COMUNE DENOMINATORE (M.C.D)
Criteri di divisibilità
IL NUMERO …qualche idea…..
Transcript della presentazione:

SPECIFICA DELLE MAPPE FINITE Gianna Reggio

Applicazione/esempio grande Madre di tutti gli esercizi/esempi –la più usata specifica nelle applicazioni vere –dare la specifica della struttura dati mappe finite, per semplicità da stringhe di caratteri in naturali –si richiedono operazioni per rappresentare tutti i dati (caratteri, stringhe, naturali, mappe) costruttori –operazioni sulle mappe: mappa vuota (nessuna associazione) aggiungere/eliminare/modificare una associazione trovare il numero associato ad una stringa dominio/codominio di una mappa controllare se una mappa è vuota/è iniettiva

Come procedere scomporre modularmente il compito in –specificare i naturali –specificare le stringhe di caratteri –specificare la mappe basiche (cioè solo i costruttori e loperazione per ritrovare il numero associato ad una stringa) operazioni necessarie per costruire i termini per rappresentare tutti i valori di interesse –specificare una ad una le ulteriori operazioni e predicati

Linguaggio di specifica Utilizzeremo un semplicissimo linguaggio di specifica per presentare le varie specifiche Esercizio 24.5: individuare I vari costrutti di tale linguaggio, mano a mano che li utilizzeremo, precisandone sintassi e semantica.

Naturali spec NAT = Sorts nat Opns 0:nat succ: nat -> nat Axioms Def(0) Def(succ(x)) Consideriamo solo i modelli term-generated di NAT specG NATg = generated { NAT } Esercizio 25: aggiungere a NAT le 5 operazioni (somma, sottrazione, moltiplicazione, divisione intera e resto della divisione intera). Esercizio 26: aggiungere il predicato.

Aggiunta di < spec NAT1 = extend NAT Preds _<_: nat x nat Axioms x < succ(x) x < y x < succ(y) Esercizio 27: –0 < succ(x) è valida in NAT1 ? –0 < succ(x) è valida in generated { NAT1 } ?

Stringhe di caratteri spec STRING = Sorts char, string Opns : string -- stringa vuota _:_ :char x string -> string -- aggiunta elemento in testa A,…,Z: char -- le 26 lettere -- permettono di rappresentare tutte le stringhe Axioms -- tutte le operazioni sono totali Def( ) Def(c:s) Def(A) … Def(Z)

Esercizi Esercizio 28: Si consideri spec STRING1 = extend STRING Axioms c = A … Z s = ( c:char. s:string. s = c:s) è vero che i modelli di STRING1 e quelli di generated {STRING} sono gli stessi ? Soluzione. No, infatti lalgebra DOPPIA definita come segue char DOPPIA = { A, …., Z } string DOPPIA = { *, + } A DOPPIA = A... B DOPPIA = B DOPPIA = * DOPPIA (c,s) = s è un modello di STRING1 ma non è term-generated. Verificare per esercizio quanto affermato sopra.

Esercizi Esercizio 29: Ogni modello di generated {STRING} rappresenta ottimamente la struttura dati delle stringhe ? Soluzione. No, infatti unalgebra banale (cioè dove ogni carrier contiene esattamente un singolo elemento, e dove le operazioni sono totali e definite nel modo ovvio) è un modello di tale specifica, e non rappresenta per niente le stringhe.

Stringhe di caratteri 2 spec STRING2 = extend STRING Axioms AB … AZ … WZ c:s c 1 c 2 s 1 s 2 c 1 :s 1 c 2 :s 2 Esercizio 30: Ogni modello di generated {STRING2} rappresenta ottimamente la struttura dati delle stringhe ?

Mappe basiche (1) spec MAP = extend NAT, STRING2 Sorts map Opns []: map -- mappa che non contiene alcuna associazione _[_/_]: map x nat x string -> map -- aggiunta associazione o modifica associazione __[_]:map x string -> nat -- ritorna il naturale associato ad una stringa -- se esiste Axioms -- tutte le operazioni sono totali Def([]) Def(m[n/s]) [] m[n/s] (m 1 m 2 n 1 n 2 s 1 s 2 ) m 1 [n 1 /s 1 ] m 2 [n 2 /s 2 ] è accettabile ??? NO!

Mappe basiche (2) è possibile dare assiomi che richiedano tutte le possibili identificazioni sugli elementi rappresentati da [] e _[_/_] Esercizio 31: Dare tali assiomi. oppure è possibile definire prima loperazione _[_] e poi richiedere che due mappe sono uguali ses associano gli stessi naturali alle stesse stringhe

Mappe basiche (3) -- continuazione degli assiomi di MAP -- definizione di _[_] Def([][s]) m[n/s][s] = n s s m[n/s][s] = m[s] -- identificazioni sulle mappe ( s:string. m[s] = m[s]) m = m

Operazione xxxx sulle mappe