GNU Linear Programming Kit

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "GNU Linear Programming Kit"

Transcript

1 GNU Linear Programming Kit Modeling Language GNU MathProg Versione 4.11 (Draft Edition, July 2006) (Traduzione in italiano, agosto 2007)

2 2 The GLPK package is part of the GNU Project released under the aegis of GNU. Copyright c 2000, 2001, 2002, 2003, 2004, 2005, 2006 Andrew Makhorin, Department for Applied Informatics, Moscow Aviation Institute, Moscow, Russia. All rights reserved. Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA , USA. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies. Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided also that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions.

3 3 Indice 1 Introduzione Problema di programmazione lineare Oggetti di un modello Struttura della descrizione di un modello Codifica della descrizione di un modello Nomi simbolici Stringhe numeriche Stringhe alfabetiche Parole-chiave Delimitatori Commenti Espressioni Espressioni numeriche Espressioni simboliche Espressioni indicizzanti e indici dummy Espressioni di insiemi Espressioni logiche Espressioni lineari Asserzioni Asserzione di insieme Asserzione di parametro Asserzione di variabile Asserzione di vincoli (lineari) Asserzione della funzione obiettivo Asserzione di soluzione Asserzione di controllo (check) Asserzione di display Asserzione di printf Asserzione di for Definizione dei dati di un modello Codifica della sezione dati Blocco dati di insiemi Blocco dati di parametro A Uso del traduttore di MathProg con le API di GLPK 45 B Risoluzione di modelli con il solver glpsol 46 C Esempio di descrizione di modello 47 C.1 Descrizione di modello scritto in GNU MathProg C.2 Problema LP generato C.3 Soluzione ottima del problem LP generato

4 4 1 Introduzione GNU MathProg è un linguaggio di modeling che permette di descrivere modelli matematici di programmazione lineare 1. La descrizione di un modello scritto nel linguaggio GNU MathProg consiste in un insieme di asserzioni (statements) e di blocchi di dati definiti dall utente usando gli elementi del linguaggio descritto in questo documento. Un programma, chiamato traduttore di modello, analizza il modello descritto con il linguaggio GNU MathProg e lo traduce in strutture dati interne, le quali possono essere usate sia per generare un instanza di un problema di programmazione matematica, sia per ottenere una soluzione numerica del problema. Per ottenere una soluzione numerica si deve usare un altro programma chiamato solver (risolutore). 1.1 Problema di programmazione lineare In MathProg si considera la formulazione di programmazione lineare (LP, Linear Programming) seguente: minimize (maximize) Z = c 1 x m+1 + c 2 x m c n x m+n + c 0 (1) rispettando i vincoli lineari: x 1 = a 11 x m+1 + a 12 x m a 1n x m+n x 2 = a 21 x m+1 + a 22 x m a 2n x m+n (2) x m = a m1 x m+1 + a m2 x m a mn x m+n e i limite (bounds) sulle variabili: l 1 x 1 u 1 l 2 x 2 u 2... l m+n x m+n u m+n (3) dove: x 1,x 2,...,x m sono variabili ausiliarie; x m+1,x m+2,...,x m+n sono variabili strutturali; Z è la funzione obiettivo; c 1,c 2,...,c n sono i coefficienti della funzione obiettivo; c 0 è il termine costante della funzione obiettivo; a 11, a 12,..., a mn sono i coefficienti dei vincoli; l 1,l 2,...,l m+n sono i lower bounds delle variabili; u 1,u 2,...,u m+n sono i upper bounds delle variabili. I bounds delle variabili possono essere sia limitati che illimitati. Inoltre, i bounds di una variabile potrebbero essere uguali tra loro. Quindi, i seguenti tipi di variabili sono possibili: Bounds di una variabile < x k < + l k x k < + < x k u k l k x k u k l k = x k = u k Tipo di variabile Variabile libera e illimitata Variabile con lower bound Variabile con upper bound Variabile con doppio bound Variabile fissata 1 Il linguaggio GNU MathProg è un sottoinsieme del linguaggio AMPL.

5 5 I tipi di variabili mostrati sopra sono validi sia per le variabili strutturalli che le variabili ausiliarie. Oltre a problemi di programmazione lineare puri, MathProg permette di definire problemi di programmazione lineare intera (MIP, Mathematical Integer Programming), dove alcune (o tutte) tra le variabili strutturali sono vincolate ad assumere valori interi. 1.2 Oggetti di un modello In MathProg il modello è descritto in termini di insiemi, parametri, variabili, vincoli, e obiettivi, che sono chiamati gli oggetti di un modello. L utente introduce dei particolari oggetti del modello usando le asserzioni del linguaggio. Ogni oggetto di un modello ha associato un nome simbolico che lo identifica unicamente ed è usato come riferimento all oggetto stesso. Gli oggetti di un modello, compresi gli insiemi, possono essere vettori multidimensionali indicizzati da elementi di un insieme. Formalmente, il vettore n-dimensionali A è la funzione: A : Ξ, (4) dove S 1 S 2... S n è un sottoinsieme del prodotto Cartesiano degli insiemi indice, ed Ξ è un insieme degli elementi del vettore. In MathProg l insieme è chiamato dominio dei pedici (subscript domain). I suoi elementi sono n-tuple (i 1,i 2,...,i n ), dove i 1 S 1, i 2 S 2,..., i n S n. Se n = 0, il prodotto cartesiano (4) ha esattamente un elemento (la 0-tupla), cosi che si può pensare ad oggetti scalari come vettori 0-dimensionali che hanno un solo elemento. Il tipo di elementi di un vettore è determinato dal tipo del corrispondente oggetto di modello come segue: Oggetto di modello Set Parameter Variable Constraint Objective Elemento del vettore Membro dell insieme Numero o simbolo Variabile strutturale Vincolo Funzione obiettivo Per poter accedere ad un particolare membro di un oggetto, l oggetto stesso deve essere provvisto di un pedice. Per esempio, se a è un vettore di parametri a due dimensioni costruito sul prodotto Cartesiano I J, un riferimento al suo particolare membro può essere scritto come a[i,j], dove i I e j J sono gli indici. Gli oggetti scalari essendo a 0-dimensione non hanno bisogno di pedici. 1.3 Struttura della descrizione di un modello È spesso auspicabile descrivere un modello che può usare dati diversi per ogni istanza di problema che si può risolvere usando quel modello. Per questo motivo in MathProg la descrizione del modello consiste di due parti: la sezione di modello e la sezione dati. Sezione di modello è la parte principale di descrizione del modello che contiene la dichiarazione degli oggetti di modello ed è comune per tutti i problemi che corrispondono a quel modello matematico. Sezione dati è una parte opzionale della descrizione del modello che contiene dati specifici per una particolare istanza del problema descritto dal modello.

6 6 Le sezione di modello e di dati possono essere incluse nello stesso file oppure in due file separati. Di solito conviene avere due file separati in modo da poter definire più istanze di uno stesso modello matematico, riutilizzando la stessa sezione di modello.

7 7 2 Codifica della descrizione di un modello La descrizione di un modello è codificata in semplice formato testo usando solo alcuni caratteri ASCII. I caratteri che possono essere usati nella descrizione di un modello sono i seguenti: i caratteri dell alfabeto (inglese): A B... Z a b... z _ i caratteri numerici: i caratteri speciali:! " # & ( ) * +, -. / : ; < = > [ ] ^ { } i caratteri di spaziatura (white-spaces): SP HT CR NL VT FF All interno dei commenti si può usare qualsiasi carattere ASCII (a parte i caratteri di controllo). I caratteri di spaziatura vengono ignorati, ma possono essere usati liberamente per migliorare la leggibilità della descrizione di un modello. Sintatticamente la descrizione di un modello è una sequenza di unità lessicali appartenenti ad una delle seguenti categorie: nomi simbolici; stringhe numeriche; stringhe alfabetiche; parole chiavi; delimitatori; commenti. Le unità lessicali del linguaggio sono descritte nei prossimi paragrafi. 2.1 Nomi simbolici I nomi simbolici consistono di stringhe di caratteri alfabetici e numerici, in cui il primo carattere deve essere obbligatoriamente alfabetico. Tutti i nomi simbolici sono diversi e case sensitive. alpha123 This_is_a_name _P123_abc_321 I nomi simbolici sono usati per identificare gli oggetti di modello (insiemi, parametri, variabili, vincoli, funzione obiettivo) e gli indici dummy. Tutti i nomi simbolici (eccetto gli indici dummy) devono essere unici, cioè la descrizione di un modello non deve avere oggetti con lo stesso nome. I nomi simbolici e gli indici dummy devono essere unici all interno della loro visibilità, ossia dove rimangono validi. 2.2 Stringhe numeriche Una stringa numerica ha la forma xxesyy, dove xx è un numero reale con eventualmente il punto per i decimali, s è il segno + oppure -, yy è un intero per l esponente decimale. La lettera E non è case sensitive e alternativamente può essere usata la e E+5.78

8 e-7 Le stringhe numeriche rappresentano quantità numeriche, ed hanno il loro ovvio significato matematico. 2.3 Stringhe alfabetiche Una stringa alfabetica è una sequenza di caratteri racchiusa tra virgolette singole o doppie. L uso di virgolette singole o doppie è equivalente. Se un virgoletta singola è parte di una stringa alfabetica racchiusa da virgolette singole, allora deve essere inserita due volte. Analogamente, se una virgoletta doppia è parte di una stringa alfabetica racchiusa da virgolette doppie, allora deve essere inserita due volte. This is a string "This is another string" = 3 That s all "She said: ""No""" Le stringhe alfabetiche sono usate per rappresentare quantità simboliche. 2.4 Parole-chiave Una parola-chiave è una sequenza di caratteri alfabetici ed eventualmente di qualche carattere speciale. Tutte le parole chiavi ricadono in due categorie: parole chiavi riservate, che non possono essere usate come nomi simbolici, e parole chiavi non riservate, le quali se riconosciute dal contesto possono essere usate come nomi simbolici. Le parole chiavi sono: and diff if less or union by div in mod symdiff within cross else inter not then Le parole chiavi non riservate sono descritte nelle sezioni seguenti. Tutte la parole chiavi hanno un significato ben preciso, che sarà spiegato quando verrano discussi i relativi costrutti sintattici, dove le parole chiavi sono usate. 2.5 Delimitatori Un delimitatore può essere sia un singolo carattere speciale, che una sequenza di due caratteri speciali: + ^ ==! : ) - & >= && ; [ * < > := ] / <= <>... { ** =!=, ( } Se un delimitatore consiste di due caratteri, non ci può essere nessuno spazio tra i due caratteri. Tutti i delimitatori hanno un significato preciso, che sarà spiegato quando verrano discussi i costrutti sintattici in cui sono usati.

9 9 2.6 Commenti Al fine di documentare la descrizione codificata di un modello matematico si possono inserire dei commenti in due possibili forme. La prima forma è quella di un commento su di una singola linea, che comincia con il carattere # e continua sino alla fine della linea. La seconda forma è una sequenza di commenti, la quale è una sequenza qualsiasi di caratteri racchiusa tra /* e */. set s{1..10}; # This is a comment /* This is another comment */ I commenti sono ignorati dal traduttore di modello e possono apparire in qualsiasi punto della descrizione di un modello, in cui sono consentiti i caratteri di spaziatura.

10 10 3 Espressioni Un espressione è una regola per calcolare un valore. Le espressioni nella descrizione di un modello sono usate come componenti di alcune asserzioni. Nel caso più generale le espressioni consistono di operandi e operatori. Le espressioni sono classificate in base al loro valore di ritorno nel modo seguente: espressioni numeriche; espressioni simboliche; espressioni di indicizzazione; espressioni di insiemi; espressioni logiche; espressioni lineari. 3.1 Espressioni numeriche Un espressione numerica è una regola per calcolare un singolo valore numerico rappresentato come numero in virgola mobile. L espressione numerica primaria può essere una stringa numerica, un indice dummy, un parametro non indicizzato (uno scalare), un parametro con indici, un riferimento ad una funzione interna, un espressione numerica iterata, un espressione numerica condizionale, oppure un altra espressione numerica racchiusa tra parentesi stringa numerica j indice dummy time parametro non indicizzato a[ May 2003,j+1] parametro con pedice (indice) abs(b[i,j]) riferimento a funzione interna sum{i in S diff T} alpha[i] * b[i,j] espressione iterata if i in I and p >= 1 then 2 * p else q[i+1] espressione condizionale (b[i,j] +.5 * c) espressione tra parentesi Espressioni numeriche più generali contenenti due o più espressioni numeriche primarie possono essere costruite usando degli opportuni operatori aritmetici. j+1 2 * a[i-1,j+1] - b[i,j] sum{j in J} a[i,j] * x[j] + sum{k in K} b[i,k] * x[k] (if i in I and p >= 1 then 2 * p else q[i+1]) / (a[i,j] + 1.5) Stringhe numeriche. Se l espressione numerica primaria è una stringa numerica, il valore risultante è ovvio. Indici dummy. Se l espressione numerica primaria è un indice dummy, il valore risultante è il valore corrente assegnato all indice dummy. Parametri senza indici. Se l espressione numerica primaria è un parametro senza indice (che deve essere 0-dimensionale), il valore risultante è il valore del parametro.

11 11 Parametri indicizzati. L espressione numerica primaria, che si riferisce ad un parametro indicizzato, ha la seguente forma sintattica: nome[i 1,i 2,...,i n ] dove nome è il nome simbolico di un parametro, e i 1, i 2,..., i n sono indici (pedici). Ogni indice deve essere un espressione numerica o simbolica. Il numero di indici n deve essere uguale alla dimensione del parametro alla quale la lista di indici è associato. I valori delle espressioni indice sono usati per identificare un particolare membro del parametro che determina il valore risultante dell espressione primaria. Riferimenti a funzioni. In MathProg esistono le seguenti funzioni interne che possono essere utilizzate in espressioni numeriche: abs(x) valore assoluto atan(x) arctan x (in radianti) atan(y,x) arctan y/x (in radianti) card(x) cardinalità (numero di elementi) di un insieme x ceil(x) il più piccolo intero non minore di x ( ceiling of x ) cos(x) cos x (in radianti) floor(x) il più grande intero non maggiore di x ( floor of x ) exp(x) esponenziale base-e: e x length(x) lunghezza della stringa di caratteri x log(x) logaritmo naturale log x log10(x) logaritmo decimale log 10 x max(x 1,x 2,...,x n ) il massimo tra x 1,x 2,...,x n min(x 1,x 2,...,x n ) il minimo tra x 1,x 2,...,x n round(x) arrotondamento di x all intero più vicino round(x,n) arrotondamento di x a n cifre decimali sin(x) sin x (in radianti) sqrt(x) radice quadrata x trunc(x) x arrotondato all intero più vicino trunc(x,n) x arrotondato alla n-essima cifra decimale Irand224() numero intero pseudo-casuale uniformemente distribuito in [0,2 24 ) Uniform01() numero pseudo-casuale uniformemente distribuito in [0,1) Uniform(a,b) numero pseudo-casuale uniformemente distribuito in [a,b) Normal01() numero pseudo-casuale con distribuzione gaussiana µ = 0 e σ = 1 Normal(µ,σ) numero pseudo-casuale con distribuzione gaussiana µ e σ Gli argomenti di queste funzioni (ad eccezione di card e length) devono essere espressioni numeriche. L argomento di card deve essere un espressione di insiemi. L argomento di length deve essere un espressione simbolica. Il valore risultante di un espressione numerica costituita da un riferimento ad una funzione è il risultato dell applicazione della funzione ai suoi argomenti. Si consideri che ogni funzione che genera un numero pseudo-casuale ha un argomento nascosto (un suo proprio stato interno), il quale viene modificato ogni volta che viene applicata la funzione stessa. Quindi, se la funzione è applicata ripetutamente anche con argomenti identici, il valore risultante cambia ogni volta.

12 12 Espressioni iterate. un espressione numerica iterata è un espressione primaria con la seguente forma sintattica: operatore-di-iterazione espressione-di-indici integrando dove operatore-di-iterazione è il nome simbolico dell operatore di iterazione da eseguire, espressione-di-indici è un espressione la quale introduce degli indici dummy e controlla le iterazioni, l integrando è un espressione numerica che partecipa nell operazizone. In MathProg ci sono quattro operatori di iterazione che possono essere usati in espressioni numeriche: sum sommatoria (i 1,...,i x(i n) 1,...,i n ) prod produttoria (i 1,...,i x(i n) 1,...,i n ) min minimo min (i1,...,i n) x(i 1,...,i n ) max massimo max (i1,...,i n) x(i 1,...,i n ) dove i 1,...,i n sono gli indici dummy introdotti dall espressione di indici; è il domino, un insieme di n-tuple specificate dall espressione indicizzante la quale definisce particolare valori assegnati agli indici dummy durante ogni singola iterazione; e x(i 1,...,i n ) è l integrando, un espressione numerica il cui valore risultante dipende dagli indici dummy. Il valore risultante di un espressione numerica iterata è il risultato dell applicazione di un operatore di iterazione ai suoi integrandi appartenenti a tutte le n-tuple contenute nel dominio. Espressioni condizionali. un espressione numerica condizionale è un espressione numerica primaria avente la seguente forma sintattica: if b then x else y if b then x dove b è un espressione logica, ed x e y sono espressioni numeriche. Il valore risultante di un espressione condizionale dipende dal valore dell espressione logica che segue la parola-chiave if. Se il suo valore è true, il valore dell espressione condizionale è il valore dell espressione che segue la parola-chiave then. Altrimenti, se il suo valore è false, il valore dell espressione condizionale è il valore dell espressione che segue la parola-chiave else. Se si usa la forma abbreviata dell espressione condizionale e il valore dell espressione logica è false, allora il valore risultante è zero. Espressioni tra parentesi. Qualsiasi espressione numerica può essere racchiusa tra parentesi che sintatticamente la rendono un espressione numerica primaria. Le parentesi possono essere usate in espressioni numeriche, come in algebra, per specificare l ordine desiderato con il quale le operazioni devono essere eseguite. Quando si usano le parentesi, l espressione tra parentesi viene valutata prima che il suo valore di ritorno sia utilizzato. Il valore di ritorno di un espressione tra parentesi è lo stesso dell espressione racchiusa tra parentesi.

13 13 Operazioni aritmetiche. In MathProg esistono le seguenti operazioni aritmetiche, le quali possono essere usate all interno di espressioni numeriche: x + y addizione x - y sottrazione + x addizione unaria (equivalente a 0+x) - x sottrazione unaria (equiavalente a 0-x) x less y differenza positiva (i.e., if x < y then 0 else x y) x * y moltiplicazione x / y divisione x div y quoziente di una divisione esatta x mod y resto di una divisione esatta x ** y, x ^ y esponenziale (elevazione a potenza) dove x e y sono espressioni numeriche. Se l espressione ha più di un operatore aritmetico, tutte le operazione sono calcolate da sinistra a destra secondo delle regole precise di precedenza (vedi sotto) con la sola eccezzione dell esponenziale che viene eseguito da destra verso sinistra. Il valore risultante di un espressione cha ha degli operatori aritmetici, è il risultato dell applicazione degli operatori ai suoi operandi. Regole di precedenza degli operatori aritmetici. La lista seguente definisce le regole di precedenza degli operatori aritmetici: Operazione Precedenza Valutazione di funzioni (abs, ceil, etc.) 1 Esponenziale (**, ^) 2 Addizione e sottrazione unaria (+, -) 3 Moltiplicazione e sottrazzione (*, /, div, mod) 4 Operatori di iterazioni (sum, prod, min, max) 5 Adddizione e sottrazione (+, -, less) 6 Espressioni condizionali (if...then...else) 7 Queste regole di precedenza definiscono quale tra due operazioni consecutive deve essere eseguita per prima. Se il primo operatore ha una precedenza maggiore o uguale al secondo, viene valutato per primo. Altrimenti, il secondo operatore è confrontato con il terzo, e cosi via. Quando si raggiunge la fine dell espressione, tutte le operazioni rimanenti sono eseguite in ordine inverso. 3.2 Espressioni simboliche Un espressione simbolica è una regola per calcolare un singolo valore simbolico rappresentato come stringa alfabetica. L espressione simbolica primaria può essere una stringa di carattei, un indice dummy, un parametro non indicizzato (una costante), un parametro indicizzato, un riferimento ad funzione interna, un espressione condizionale simbolica, oppure un altra espressione racchiusa tra parentesi. È anche possibile usare un espressione numerica come espressione primaria simbolica, in qual caso il valore risultante di un espressione numerica è automaticamente convertita nel suo tipo simbolico.

14 14 May 2003 stringa alfabetica j indice dummy p parametro non indicizzato s[ abc,j+1] parametro indicizzato substr(name[i],k+1,3) riferimento a funzione if i in I then s[i,j] & "..." else t[i+1] espressione condizionale ((10 * b[i,j]) &.bis ) espressione tra parentesi Espressioni simboliche più generali contenenti due o più espressioni primarie simboliche possono essere costruite utilizzanto degli operatori di concatenazione. abc[ & i &, & j & ] "from " & city[i] & " to " & city[j] I principi di valutazione di espressioni simboliche sono completamente analoghi a quelli dati per le espressioni numeriche (vedi sopra). Riferimenti a funzione. In MathProg ci sono le seguenti funzioni interne che possono essere utilizzate in espressioni simboliche: substr(x,y) substr(x,y,z) sottostringa di x che inizia alla posizione y sottostringa di x che inizia alla posizione y avendo lunghezza z Il primo argomento di substr deve essere un espressione numerica, mentre gli altri due devono essere delle espressioni numeriche. Il valore risultante di un espressioni simbolica costituita da un riferimento ad una funzione, è il risultato di appplicare la funzione ai suoi argomenti. Operatori simbolici. Attualmente in MathProg ci sono gli operatori simbolici seguenti: x & y dove x e y sono espressioni simboliche. Questo operatore concatena i suoi due operandi simbolici, che possono essere delle stringhe alfabetiche. Regole di precedenza delle operazioni La lista seguente definisce le regole di precedenza degli operatori simbolici: Operazione Precedenza Valutazione delle espressioni numeriche 1 7 Concatenazione (&) 8 Valutazione condizionale (if...then...else) 9 Queste regole di precedenza hanno lo stesso significato di quelle definite nella sottosezione Espressioni numeriche.

15 Espressioni indicizzanti e indici dummy Un espressione indicizzante è una costruzione ausiliaria che specifica un insieme di n-tuple e introduce degli indici dummy, e ha due forme sintattiche: {entry 1, entry 2,..., entry m } {entry 1, entry 2,..., entry m : predicato} (5) dove entry 1, entry 2,..., entry m sono entries di indici, e predicato è un espressione logica che specifica un predicato opzionale. Ogni entries di indici può avere una delle tre forme seguenti: t in S (t 1,t 2,...,t k ) in S S (6) dove t,t 1,t 2,...,t k sono indici, ed S è un espressione-insieme (discussa nella sezione seguente) che specifica gli elementi di un insieme. Il numero di indici nella entry indicizzante deve essere lo stesso della dimensione dell insieme base S, cioè se S consiste di 1-tuple, deve essere usate la prima forma, e se S consiste di n-tuple con n > 1 deve essere usata la seconda forma. Se si utilizza la prima forma, l indice t può solo essere un indice dummy. Se invece si usa la seconda forma, gli indici t 1,t 2,...,t k possono essere degli indici dummy o delle espressioni numeriche o simboliche, dove almeno un indice deve essere un indice dummy. La terza forma indicizzante ha lo stesso effetto come se ci fossero t (se S è 1-dimensionale) o t 1,t 2,...,t k (se S è n-dimensionale) elementi tutti specificati come indici dummy. Un indice dummy è un oggetto di modello ausiliare che agisce come una singola variable. I valori assegnati agli indici dummy sono compenenti di n-tuple di insiemi base, cioè sono quantità numeriche o simboliche. A scopi di riferimento, agli indici dummy possono essere dati dei nomi simbolici. Comunque, diversamente dagli oggetti di modello (insiemi, parametri,...) non devono essere esplicitamente dichiarati. Ogni nome simbolico non dichiarato, e usato come indice, è riconosciuto come nome simbolico del corrispondente indice dummy. I nomi simbolici di indici dummy sono validi solo all interno della visibilità delle espressioni indicizzanti, dove gli indici dummy sono introdotti. Al di fuori della loro visibilità gli indici dummy sono completamente inaccesibili, cosi che gli stessi nomi simbolici posson essere usati per altri scopi, in particolare per rappresentare indici dummy di altre espressioni indicizzanti. La visibilità di espressioni indicizzanti, dove la dicharazione implicita di indici dummy rimane valida, dipende dal contesto nel quale l espressione indicizzante è usata: 1. Se l espressione indicizzante è usata in operator di iterazione, la sua visibilità si estende sino alla fine dell integrando. 2. Se l espressione indicizzante è usata come espressione di insiemi primaria, la sua visibilità si estende sino alla fine della stessa espressione indicizzante. 3. Se l espressione indicizzante è usata per definire il dominio degli indici nella dichiarazione di qualche oggetto di modello, la sua visibilità si estende sino alla fine dell asserzione corrispondente. Il meccanismo di indicizzazione realizzato tramite le espressioni indicizzanti è spiegato meglio attraverso gli esempi mostrati sotto

16 16 Supponiamo di avere tre insiemi: A = {4,7,9} B = {(1,Jan),(1,Feb),(2,Mar),(2,Apr),(3, May),(3,Jun)} C = {a,b,c} (7) dove A e C consistono di 1-tuple (singoli valori), B consiste di 2-tuple (coppie). Considera la seguente espressione indicizzante: {i in A, (j,k) in B, l in C} (8) dove i, j, k, e l sono indici dummy. Anche se MathProg non è un linguaggio procedurale, per ogni espressione indicizzante può essere date una descrizione algoritmica-procedurale. In particolare, la descrizione algoritmica dell espressione indicizzante (8) è la seguente: for all i A do for all (j,k) B do for all l C do azione; dove agli indici dummy i, j, k, l sono assegnati consecutivamente gli elementi corrispondenti delle n-tuple dagli insiemi base A, B, C, e azione è una qualche azione che dipende dal contesto in cui l espressione indicizzante è usata. Per esempio, se l azione fosse la stampa a video dei valori correnti degli indici dummy, vedremmo: i = 4 j = 1 k = Jan l = a i = 4 j = 1 k = Jan l = b i = 4 j = 1 k = Jan l = c i = 4 j = 1 k = Feb l = a i = 4 j = 1 k = Feb l = b i = 9 j = 3 k = Jun l = b i = 9 j = 3 k = Jun l = c Suppponiamo di usare l espressione indicizzante (8) nella seguente operazione di iterazione: sum{i in A, (j,k) in B, l in C} p[i,j,k,l] ** 2 (9) dove p[i, j, k, l] può essere un parametro numerico 4-dimensionale oppure qualche espressione numerica il cui valore risultante dipende da i, j, k, e l. In questo caso l azione è una somma, e il valore risultante dell espressione numerica primaria (9) è : i A,(j,k) B,l C (p ijkl ) 2. Ora supponiamo che l espressione indicizzante (8) sia utilizzata come espressione primaria di insieme. In questo caso l azione è di raccogliere tutte le 4-tuple (quadruple) della forma (i, j, k, l) in un singolo insieme, il cui valore risulatante è semplicemente il prodotto cartesiano: A B C = {(i,j,k,l) i A,(j,k) B,l C}.

17 17 Si noti che in questo caso la stessa espressione indicizzante può essere scritta nella forma ridotta: {A, B, C} perchè gli indici dummy i,j,k,l non sono utilizzati e quindi il loro nome simbolico non è necessario. Infine, supponiamo che l espressione indicizzante (8) sia usata come il dominio di indici nella dichiarazione di un oggetto di modello 4-dimensionale, per esempio, di un parametro numerico: par p{i in A, (j,k) in B, l in C}... ; In questo caso l azione è di generare i membri del parametro, dove ogni membro ha la forma p[i, j, k, l]. Come detto prima, alcuni indici in (6) possono essere espressioni numeriche o simboliche, ma non indici dummy. In questo caso il valore risultante di tale espressione gioca il ruolo di qualche condizione logica di selezionare solo le n-tuple dal prodotto Cartesiano degli insiemi base, le quali soddisfano queste condizioni. Considera, per esempio, l espressione indicizzante seguente: {i in A, (i-1,k) in B, l in C} (10) dove i, k, l sono indici dummy, e i 1 è un espressione numerica. La descrizione algoritmica dell espressione indicizzante (10) è la seguente: for all i A do for all (j,k) B and j = i 1 do for all l C do action; Quindi, se l espressione indicizzante (10) è usata come set primario di base, il valore risultante è il seguente: {(4,May,a),(4,May,b),(4,May,c), (4,Jun,a),(4,Jun,b),(4,Jun,c)} Si noti che in questo caso l insieme risultante consiste di triple, e non di quadruple, perchè nell espressione indicizante (10) non c è un indice dummy che corrisponde al primo elemento delle coppie appartenenti all insieme B. La regola generale è : il numero di componenti di n-tuple definito da un espressione indicizzante è lo stesso del numero di indici dummy introdotti da quell espressione indicizzante, dove la corrispondenza tra indici dummy e componenti nelle n-tuple nell insieme risultante è posizionale, cioè il primo indice dummy corrisponde al primo elemento, il secondo indice dummy corrisponde al secondo elemento, e cosi via. In molti casi è necessario selezionare un sottoinsieme del prodotto Cartesiano di alcuni insiemi. Questo può essere ottenuto usando un predicato logico opzionale, il quale è specificato nell espressione indicizzante dopo l ultima o l unica entry indicizzante. Considera, per esempio, la seguente espressione indicizzante: {i in A, (j,k) in B, l in C: i <= 5 and k <> Mar } (11) dove l espressione logica che segue i due punti è un predicato. La descrizione algoritmica di questa espressione indicizzante è la seguente:

18 18 for all i A do for all (j,k) B do for all l C do if i 5 and k Mar then action; Quindi, se l espressione indicizzante (11) è usata come espressione primaria di un insieme, l insieme risultante è il seguente: {(4,1,Jan,a),(4,1,Feb,a),(4,2,Apr,a),...,(4,3,Jun,c)}. Se nessun predicato è specificato nell espressione indicizzante, ne è presente uno implicito di valore true. 3.4 Espressioni di insiemi Un espressione di insiemi è una regola per calcolare un insieme di elementi, ossia una collezione di n-tuple, dove i componenti delle n-tuple sono quantità numeriche o simboliche. L espressione primaria di insieme può essere un insieme alfa-numerico, un insieme non indicizzato, un insieme indicizzato, un insieme aritmetico, un espressione indicizzante, un espressione di insieme iterata, un espressione di insieme condizionale, o un altra espressione di insieme racchiusa tra parentesi. {(123, aaa ), (i+1, bbb ), (j-1, ccc )} insieme alfa-numerico I insieme non indicizzato S[i-1,j+1] insieme indicizzato 1..t-1 by 2 insieme aritmetico {t in 1..T, (t+1,j) in S: (t,j) in F} espressione indicizzante setof{i in I, j in J}(i+1,j-1) espressione iterata di insieme if i < j then S[i,j] else F diff S[i,j] espressione di insiemi condizionale (1..10 union ) espressione di insiemi tra parentesi Espressioni di insiemi più generali contenti due o più espressione primari di insiemi possono essere costruite usando alcuni operatori su insiemi. (A union B) inter (I cross J) cross (if i < j then { a, b, c } else { d, e, f }) Insiemi alfa-numerici. Un insieme alfa-numerico è un espressione primaria di insieme, la quale ha una delle due seguenti forme sintattiche: {e 1,e 2,...,e m } {(e 11,...,e 1n ),(e 21,...,e 2n ),...,(e m1,...,e mn )} dove e 1,..., e m, e 11,..., e mn sono espressioni numeriche o simboliche. Se si usa la prima forma, l insieme risultante consiste di 1-tuple enumerate all interno delle parentesi graffe. Si può specificare un insieme vuoto non avente 1-tuple. Se si usa la seconda forma, l insieme risultante consiste di n-tuple enumerate all interno delle parentesi graffe, dove una particolare n-tupla consiste degli elementi corrispondenti enumerati tra parentesi. Tutte le n-tuple devono avere lo stesso numero di componenti.

19 19 Insiemi non indicizzati. Se l espressione primaria di insieme è un insieme non indicizzato (il quale deve essere 0-dimensionale), l insieme risultante è un insieme di elementi associato con il corrispondente oggetto insieme. Insieme indicizzato. L espressione primaria di insieme, che si riferisce ad un insieme indicizzato, ha la seguente forma sintattica: nome[i 1,i 2,...,i n ] dove nome è un nome simbolico dell oggetto insieme, e i 1, i 2,..., i n sono i pedici (indici). Ogni pedice deve essere un espressione numerica o simbolica. Il numero di pedici nella lista di pedici deve essere della stessa dimensione dell oggetto insieme alla quale la lista è associata. I valori correnti delle espressioni di pedici sono usate per identificare un particolare membro dell insieme oggetto che determina l insieme risultante. Insiemi aritmetici. L espressione primaria di insieme, che costituisce un insieme aritmetico, ha una delle due seguenti forme sintattiche: t 0.. t f by δt t 0.. t f dove t 0, t 1, e δt sono espressioni numeriche (il valore di δt deve essere diverso da zero). La seconda forma è equivalente alla prima con δt = 1. Se δt > 0, l insieme risultante è determinato nel modo seguente: {t : k Z(t = t 0 + kδt, t 0 t t f )} Se δt < 0, l insieme risultante è determinato come segue: {t : k Z(t = t 0 + kδt, t f t t 0 )} Espressioni indicizzanti. Se l espressioni primaria di insieme è un espressione indicizzante, l insieme risultante è determinato come descritto nella sezione Espressioni indicizzanti e indici dummy (vedi sopra). Espressioni di iterazione. un espressione di insieme di iterazione è un espressione primaria di insieme avente una delle due forme seguenti: setof espressione-indicizzante integrando dove l espressione-indicizzante introduce gli indici dummy e controlla le iterazioni, l integrando è o un singolo valore numerico o simbolica, oppure una lista di espressioni numeriche o simboliche separate da virgole e racchiuse tra parentesi. Se l integrando è una singola espressione numerica o simbolica, l insieme risultante è costituito da 1-tuple ed è calcolato come segue: {x : (i 1,...,i n ) },

20 20 dove x è una valore dell integrando, i 1,...,i n sono indici dummy introdotti nell espressione indicizzante, è il dominio, un insieme di n-tuple specificato dall espressione indicizzante che definisce i valori specifici assegnati agli indici dummy durante l eseguzione dell operazione di iterazione. Se l integrando è una lista contente m espressioni numeriche o simboliche, l insieme risultante consiste di m-tuple ed è determinata come segue: {(x 1,...,x m ) : (i 1,...,i n ) }, dove x 1,...,x m sono valori di espressioni nella lista degli integrandi, i 1,...,i n e hanno lo stesso significato visto prima. Espressioni condizionali. Un espressione condizionale di insieme è un espressione primaria di insieme avente la seguente forma sintattica: if b then X else Y dove b è un espressione logica, X e Y sono espressioni di insieme, le quali devono definire insiemi della stessa dimensione. Il valore risultante delle espressione condizionale dipende dal valore dell espressione logica dell espressione condizionale che segue la parola-chiave if. Se il valore è true, l insieme risultante è il valore dell espressione che segue la parola-chiave then. Altrimenti, se l espressione logica assume il valore false, l insieme risultante è il valore dell espressione che segue la parola-chiave else. Espressioni tra parentesi. Qualsiasi espressione di insieme può essere racchiusa tra parentesi e diventare un espressione primaria di insieme. Le parentesi possono essere usate in espressioni di insiemi, come in algebra, per specificare l ordine desiderato in cui le operazioni deveno essere esguite. Dove le parentesi sono usate, l espressioni tra parentesi sono valutate prima di usare il valore di ritorno. Il valore risultante di un espressione tra parentesi è lo stesso del valore dell espressione racchiusa tra parentesi. Operatori di insieme. In MathProg ci sono i seguenti operatori di insieme che possono essere usati in espressioni di insiemi: X union Y X diff Y X symdiff Y X inter Y X cross Y unione X Y differenza X\Y differenenza simmetrica X Y intersezione X Y prodotto Cartesiano X Y dove X e Y sono espressioni di insiemi, i quali devono definire insiemi della stessa dimensione (ad eccezione del prodotto cartesiano). Se l espressione ha più di un operatore di insieme, tutti gli operatori sono eseguiti da sinistra verso destro secondo le regole di precedenza definite nel prossimo paragrafo (vedi sotto). Il valore risultante dell espressione, contenente degli operatori di insieme, è il risultato dell applicazione degli operatori ai loro operandi.

Rappresentazione dei numeri in un calcolatore

Rappresentazione dei numeri in un calcolatore Corso di Calcolatori Elettronici I A.A. 2010-2011 Rappresentazione dei numeri in un calcolatore Lezione 2 Università degli Studi di Napoli Federico II Facoltà di Ingegneria Rappresentazione dei numeri

Dettagli

4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0

4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0 Rappresentazione dei numeri I numeri che siamo abituati ad utilizzare sono espressi utilizzando il sistema di numerazione decimale, che si chiama così perché utilizza 0 cifre (0,,2,3,4,5,6,7,8,9). Si dice

Dettagli

Lezione 8. La macchina universale

Lezione 8. La macchina universale Lezione 8 Algoritmi La macchina universale Un elaboratore o computer è una macchina digitale, elettronica, automatica capace di effettuare trasformazioni o elaborazioni su i dati digitale= l informazione

Dettagli

Sistemi di Numerazione

Sistemi di Numerazione Fondamenti di Informatica per Meccanici Energetici - Biomedici 1 Sistemi di Numerazione Sistemi di Numerazione I sistemi di numerazione sono abitualmente posizionali. Gli elementi costitutivi di un sistema

Dettagli

MATLAB. Caratteristiche. Dati. Esempio di programma MATLAB. a = [1 2 3; 4 5 6; 7 8 9]; b = [1 2 3] ; c = a*b; c

MATLAB. Caratteristiche. Dati. Esempio di programma MATLAB. a = [1 2 3; 4 5 6; 7 8 9]; b = [1 2 3] ; c = a*b; c Caratteristiche MATLAB Linguaggio di programmazione orientato all elaborazione di matrici (MATLAB=MATrix LABoratory) Le variabili sono matrici (una variabile scalare equivale ad una matrice di dimensione

Dettagli

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo T3 1-Sottoprogrammi 1 Prerequisiti Tecnica top-down Programmazione elementare 2 1 Introduzione Lo scopo di questa Unità è utilizzare la metodologia di progettazione top-down

Dettagli

Funzioni in C. Violetta Lonati

Funzioni in C. Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Funzioni - in breve: Funzioni Definizione di funzioni

Dettagli

Alessandro Pellegrini

Alessandro Pellegrini Esercitazione sulle Rappresentazioni Numeriche Esistono 1 tipi di persone al mondo: quelli che conoscono il codice binario e quelli che non lo conoscono Alessandro Pellegrini Cosa studiare prima Conversione

Dettagli

Corso di Laurea in INFORMATICA

Corso di Laurea in INFORMATICA Corso di Laurea in INFORMATICA Algoritmi e Strutture Dati MODULO 2. Algebre di dati Dati e rappresentazioni, requisiti delle astrazioni di dati, costrutti. Astrazioni di dati e dati primitivi. Specifica

Dettagli

SISTEMI DI NUMERAZIONE DECIMALE E BINARIO

SISTEMI DI NUMERAZIONE DECIMALE E BINARIO SISTEMI DI NUMERAZIONE DECIMALE E BINARIO Il sistema di numerazione decimale (o base dieci) possiede dieci possibili valori (0, 1, 2, 3, 4, 5, 6, 7, 8 o 9) utili a rappresentare i numeri. Le cifre possiedono

Dettagli

la scienza della rappresentazione e della elaborazione dell informazione

la scienza della rappresentazione e della elaborazione dell informazione Sistema binario Sommario informatica rappresentare informazioni la differenza Analogico/Digitale i sistemi di numerazione posizionali il sistema binario Informatica Definizione la scienza della rappresentazione

Dettagli

Operazioni sui database

Operazioni sui database Operazioni sui database Le operazioni nel modello relazionale sono essenzialmente di due tipi: Operazioni di modifica della base di dati (update) Interrogazioni della base di dati per il recupero delle

Dettagli

Introduzione al MATLAB c Parte 2

Introduzione al MATLAB c Parte 2 Introduzione al MATLAB c Parte 2 Lucia Gastaldi Dipartimento di Matematica, http://dm.ing.unibs.it/gastaldi/ 18 gennaio 2008 Outline 1 M-file di tipo Script e Function Script Function 2 Costrutti di programmazione

Dettagli

Informatica. Rappresentazione dei numeri Numerazione binaria

Informatica. Rappresentazione dei numeri Numerazione binaria Informatica Rappresentazione dei numeri Numerazione binaria Sistemi di numerazione Non posizionali: numerazione romana Posizionali: viene associato un peso a ciascuna posizione all interno della rappresentazione

Dettagli

Elementi di informatica

Elementi di informatica Elementi di informatica Sistemi di numerazione posizionali Rappresentazione dei numeri Rappresentazione dei numeri nei calcolatori rappresentazioni finalizzate ad algoritmi efficienti per le operazioni

Dettagli

LE FUNZIONI A DUE VARIABILI

LE FUNZIONI A DUE VARIABILI Capitolo I LE FUNZIONI A DUE VARIABILI In questo primo capitolo introduciamo alcune definizioni di base delle funzioni reali a due variabili reali. Nel seguito R denoterà l insieme dei numeri reali mentre

Dettagli

(anno accademico 2008-09)

(anno accademico 2008-09) Calcolo relazionale Prof Alberto Belussi Prof. Alberto Belussi (anno accademico 2008-09) Calcolo relazionale E un linguaggio di interrogazione o e dichiarativo: at specifica le proprietà del risultato

Dettagli

I sistemi di numerazione

I sistemi di numerazione I sistemi di numerazione 01-INFORMAZIONE E SUA RAPPRESENTAZIONE Sia dato un insieme finito di caratteri distinti, che chiameremo alfabeto. Utilizzando anche ripetutamente caratteri di un alfabeto, si possono

Dettagli

Introduzione allo Scilab Parte 1: numeri, variabili ed operatori elementari

Introduzione allo Scilab Parte 1: numeri, variabili ed operatori elementari Introduzione allo Scilab Parte 1: numeri, variabili ed operatori elementari Felice Iavernaro Dipartimento di Matematica Università di Bari http://dm.uniba.it/ iavernaro 6 Giugno 2007 Felice Iavernaro (Univ.

Dettagli

LINGUAGGI DI PROGRAMMAZIONE

LINGUAGGI DI PROGRAMMAZIONE LINGUAGGI DI PROGRAMMAZIONE Il potere espressivo di un linguaggio è caratterizzato da: quali tipi di dati consente di rappresentare (direttamente o tramite definizione dell utente) quali istruzioni di

Dettagli

Richiesta pagina PHP (es: index.php)

Richiesta pagina PHP (es: index.php) PHP PHP = personal home page SERVER Richiesta pagina PHP (es: index.php) Server Web (Apache) in ascolto sulla porta 80, si accorge che la pagina richiesta è una pagina PHP in base all'estensione o con

Dettagli

SISTEMI DI NUMERAZIONE E CODICI

SISTEMI DI NUMERAZIONE E CODICI SISTEMI DI NUMERAZIONE E CODICI Il Sistema di Numerazione Decimale Il sistema decimale o sistema di numerazione a base dieci usa dieci cifre, dette cifre decimali, da O a 9. Il sistema decimale è un sistema

Dettagli

APPUNTI DI MATEMATICA ALGEBRA \ INSIEMISTICA \ TEORIA DEGLI INSIEMI (1)

APPUNTI DI MATEMATICA ALGEBRA \ INSIEMISTICA \ TEORIA DEGLI INSIEMI (1) ALGEBRA \ INSIEMISTICA \ TEORIA DEGLI INSIEMI (1) Un insieme è una collezione di oggetti. Il concetto di insieme è un concetto primitivo. Deve esistere un criterio chiaro, preciso, non ambiguo, inequivocabile,

Dettagli

Gli algoritmi: definizioni e proprietà

Gli algoritmi: definizioni e proprietà Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Gli algoritmi: definizioni e proprietà La presente dispensa e da

Dettagli

Calcolatori: Algebra Booleana e Reti Logiche

Calcolatori: Algebra Booleana e Reti Logiche Calcolatori: Algebra Booleana e Reti Logiche 1 Algebra Booleana e Variabili Logiche I fondamenti dell Algebra Booleana (o Algebra di Boole) furono delineati dal matematico George Boole, in un lavoro pubblicato

Dettagli

FORMULE: Operatori matematici

FORMULE: Operatori matematici Formule e funzioni FORMULE Le formule sono necessarie per eseguire calcoli utilizzando i valori presenti nelle celle di un foglio di lavoro. Una formula inizia col segno uguale (=). La formula deve essere

Dettagli

Sistemi di Numerazione Binaria NB.1

Sistemi di Numerazione Binaria NB.1 Sistemi di Numerazione Binaria NB.1 Numeri e numerali Numero: entità astratta Numerale : stringa di caratteri che rappresenta un numero in un dato sistema di numerazione Lo stesso numero è rappresentato

Dettagli

Algebra Booleana ed Espressioni Booleane

Algebra Booleana ed Espressioni Booleane Algebra Booleana ed Espressioni Booleane Che cosa è un Algebra? Dato un insieme E di elementi (qualsiasi, non necessariamente numerico) ed una o più operazioni definite sugli elementi appartenenti a tale

Dettagli

Il Modello Relazionale

Il Modello Relazionale Il Modello Relazionale Il modello relazionale 1 Il modello relazionale Proposto da E. F. Codd nel 1970 per favorire l indipendenza dei dati e reso disponibile come modello logico in DBMS reali nel 1981

Dettagli

2. Codifica dell informazione

2. Codifica dell informazione 2. Codifica dell informazione Codifica Una codifica è una regola per associare in modo univoco i valori di un dato da codificare con sequenze di simboli. La corrispondenza definita dalla codifica è arbitraria,

Dettagli

Cos è un Calcolatore?

Cos è un Calcolatore? Cos è un Calcolatore? Definizione A computer is a machine that manipulates data according to a (well-ordered) collection of instructions. 24/105 Riassumendo... Un problema è una qualsiasi situazione per

Dettagli

Informazione analogica e digitale

Informazione analogica e digitale L informazione L informazione si può: rappresentare elaborare gestire trasmettere reperire L informatica offre la possibilità di effettuare queste operazioni in modo automatico. Informazione analogica

Dettagli

SISTEMI INFORMATIVI AVANZATI -2010/2011 1. Introduzione

SISTEMI INFORMATIVI AVANZATI -2010/2011 1. Introduzione SISTEMI INFORMATIVI AVANZATI -2010/2011 1 Introduzione In queste dispense, dopo aver riportato una sintesi del concetto di Dipendenza Funzionale e di Normalizzazione estratti dal libro Progetto di Basi

Dettagli

1 Breve introduzione ad AMPL

1 Breve introduzione ad AMPL 1 Breve introduzione ad AMPL Il primo passo per risolvere un problema reale attraverso strumenti matematici consiste nel passare dalla descrizione a parole del problema al modello matematico dello stesso.

Dettagli

I database relazionali sono il tipo di database attualmente piu diffuso. I motivi di questo successo sono fondamentalmente due:

I database relazionali sono il tipo di database attualmente piu diffuso. I motivi di questo successo sono fondamentalmente due: Il modello relazionale I database relazionali sono il tipo di database attualmente piu diffuso. I motivi di questo successo sono fondamentalmente due: 1. forniscono sistemi semplici ed efficienti per rappresentare

Dettagli

Appunti di informatica. Lezione 2 anno accademico 2015-2016 Mario Verdicchio

Appunti di informatica. Lezione 2 anno accademico 2015-2016 Mario Verdicchio Appunti di informatica Lezione 2 anno accademico 2015-2016 Mario Verdicchio Sistema binario e logica C è un legame tra i numeri binari (0,1) e la logica, ossia la disciplina che si occupa del ragionamento

Dettagli

Operazioni Aritmetiche e Codici in Binario Giuseppe Talarico 23/01/2013

Operazioni Aritmetiche e Codici in Binario Giuseppe Talarico 23/01/2013 Operazioni Aritmetiche e Codici in Binario Giuseppe Talarico 23/01/2013 In questo documento vengono illustrate brevemente le operazioni aritmetiche salienti e quelle logiche ad esse strettamente collegate.

Dettagli

Algebra di Boole ed Elementi di Logica

Algebra di Boole ed Elementi di Logica Algebra di Boole ed Elementi di Logica 53 Cenni all algebra di Boole L algebra di Boole (inventata da G. Boole, britannico, seconda metà 8), o algebra della logica, si basa su operazioni logiche Le operazioni

Dettagli

Corrispondenze e funzioni

Corrispondenze e funzioni Corrispondenze e funzioni L attività fondamentale della mente umana consiste nello stabilire corrispondenze e relazioni tra oggetti; è anche per questo motivo che il concetto di corrispondenza è uno dei

Dettagli

CONCETTO DI LIMITE DI UNA FUNZIONE REALE

CONCETTO DI LIMITE DI UNA FUNZIONE REALE CONCETTO DI LIMITE DI UNA FUNZIONE REALE Il limite di una funzione è uno dei concetti fondamentali dell'analisi matematica. Tramite questo concetto viene formalizzata la nozione di funzione continua e

Dettagli

Introduzione alla programmazione in C

Introduzione alla programmazione in C Introduzione alla programmazione in C Testi Consigliati: A. Kelley & I. Pohl C didattica e programmazione B.W. Kernighan & D. M. Ritchie Linguaggio C P. Tosoratti Introduzione all informatica Materiale

Dettagli

+ / operatori di confronto (espressioni logiche/predicati) / + 5 3 9 = > < Pseudo codice. Pseudo codice

+ / operatori di confronto (espressioni logiche/predicati) / + 5 3 9 = > < Pseudo codice. Pseudo codice Pseudo codice Pseudo codice Paolo Bison Fondamenti di Informatica A.A. 2006/07 Università di Padova linguaggio testuale mix di linguaggio naturale ed elementi linguistici con sintassi ben definita e semantica

Dettagli

Corso di Programmazione I dati nei linguaggi di programmazione Tipi Semplici. I dati nei linguaggi di programmazione. Dati. Dott.

Corso di Programmazione I dati nei linguaggi di programmazione Tipi Semplici. I dati nei linguaggi di programmazione. Dati. Dott. Materiale didattico preparato dal dott. Stefano Ferilli Corso di Programmazione I dati nei linguaggi di programmazione Tipi Semplici Dott. Pasquale Lops lops@di.uniba.it Corso di Programmazione - DIB 1/49

Dettagli

Codifica binaria dei numeri relativi

Codifica binaria dei numeri relativi Codifica binaria dei numeri relativi Introduzione All interno di un calcolatore, è possibile utilizzare solo 0 e 1 per codificare qualsiasi informazione. Nel caso dei numeri, non solo il modulo ma anche

Dettagli

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI Indice 1 Le frazioni algebriche 1.1 Il minimo comune multiplo e il Massimo Comun Divisore fra polinomi........ 1. Le frazioni algebriche....................................

Dettagli

risulta (x) = 1 se x < 0.

risulta (x) = 1 se x < 0. Questo file si pone come obiettivo quello di mostrarvi come lo studio di una funzione reale di una variabile reale, nella cui espressione compare un qualche valore assoluto, possa essere svolto senza necessariamente

Dettagli

Progettaz. e sviluppo Data Base

Progettaz. e sviluppo Data Base Progettaz. e sviluppo Data Base! Progettazione Basi Dati: Metodologie e modelli!modello Entita -Relazione Progettazione Base Dati Introduzione alla Progettazione: Il ciclo di vita di un Sist. Informativo

Dettagli

Logica e codifica binaria dell informazione

Logica e codifica binaria dell informazione Politecnico di Milano Corsi di Laurea in Ingegneria Matematica e Ingegneria Fisica Dipartimento di Elettronica ed Informazione Logica e codifica binaria dell informazione Anno Accademico 2002 2003 L. Muttoni

Dettagli

Capitolo Quarto...2 Le direttive di assemblaggio di ASM 68000...2 Premessa...2 1. Program Location Counter e direttiva ORG...2 2.

Capitolo Quarto...2 Le direttive di assemblaggio di ASM 68000...2 Premessa...2 1. Program Location Counter e direttiva ORG...2 2. Capitolo Quarto...2 Le direttive di assemblaggio di ASM 68000...2 Premessa...2 1. Program Location Counter e direttiva ORG...2 2. Dichiarazione di dati: le direttive DS e DC...3 2.1 Direttiva DS...3 2.2

Dettagli

1 Giochi a due, con informazione perfetta e somma zero

1 Giochi a due, con informazione perfetta e somma zero 1 Giochi a due, con informazione perfetta e somma zero Nel gioco del Nim, se semplificato all estremo, ci sono due giocatori I, II e una pila di 6 pedine identiche In ogni turno di gioco I rimuove una

Dettagli

RISOLUTORE AUTOMATICO PER SUDOKU

RISOLUTORE AUTOMATICO PER SUDOKU RISOLUTORE AUTOMATICO PER SUDOKU Progetto Prolog - Pierluigi Tresoldi 609618 INDICE 1.STORIA DEL SUDOKU 2.REGOLE DEL GIOCO 3.PROGRAMMAZIONE CON VINCOLI 4.COMANDI DEL PROGRAMMA 5.ESEMPI 1. STORIA DEL SUDOKU

Dettagli

ESERCIZI DI PROBLEM SOLVING E COMPOSIZIONE DEI DIAGRAMMI DI FLUSSO per le classi terza

ESERCIZI DI PROBLEM SOLVING E COMPOSIZIONE DEI DIAGRAMMI DI FLUSSO per le classi terza ESERCIZI DI PROBLEM SOLVING E COMPOSIZIONE DEI DIAGRAMMI DI FLUSSO per le classi terza vers.3 in lavorazione Docente SAFFI FABIO Contenuti 01.Esercizi generici sul diagramma di flusso - flow chart... 2

Dettagli

Algebra Booleana 1 ALGEBRA BOOLEANA: VARIABILI E FUNZIONI LOGICHE

Algebra Booleana 1 ALGEBRA BOOLEANA: VARIABILI E FUNZIONI LOGICHE Algebra Booleana 1 ALGEBRA BOOLEANA: VARIABILI E FUNZIONI LOGICHE Andrea Bobbio Anno Accademico 2000-2001 Algebra Booleana 2 Calcolatore come rete logica Il calcolatore può essere visto come una rete logica

Dettagli

Regione Toscana. ARPA Fonte Dati. Manuale Amministratore. L. Folchi (TAI) Redatto da

Regione Toscana. ARPA Fonte Dati. Manuale Amministratore. L. Folchi (TAI) Redatto da ARPA Fonte Dati Regione Toscana Redatto da L. Folchi (TAI) Rivisto da Approvato da Versione 1.0 Data emissione 06/08/13 Stato DRAFT 1 Versione Data Descrizione 1,0 06/08/13 Versione Iniziale 2 Sommario

Dettagli

Corso di Matematica per la Chimica

Corso di Matematica per la Chimica Dott.ssa Maria Carmela De Bonis a.a. 203-4 I sistemi lineari Generalità sui sistemi lineari Molti problemi dell ingegneria, della fisica, della chimica, dell informatica e dell economia, si modellizzano

Dettagli

Alcune nozioni di base di Logica Matematica

Alcune nozioni di base di Logica Matematica Alcune nozioni di base di Logica Matematica Ad uso del corsi di Programmazione I e II Nicola Galesi Dipartimento di Informatica Sapienza Universitá Roma November 1, 2007 Questa é una breve raccolta di

Dettagli

Strutturazione logica dei dati: i file

Strutturazione logica dei dati: i file Strutturazione logica dei dati: i file Informazioni più complesse possono essere composte a partire da informazioni elementari Esempio di una banca: supponiamo di voler mantenere all'interno di un computer

Dettagli

Organizzazione degli archivi

Organizzazione degli archivi COSA E UN DATA-BASE (DB)? è l insieme di dati relativo ad un sistema informativo COSA CARATTERIZZA UN DB? la struttura dei dati le relazioni fra i dati I REQUISITI DI UN DB SONO: la ridondanza minima i

Dettagli

(71,1), (35,1), (17,1), (8,1), (4,0), (2,0), (1,0), (0,1) 0, 7155 2 = 1, 431 0, 431 2 = 0, 862 0, 896 2 = 1, 792 0, 724 2 = 1, 448 0, 448 2 = 0, 896

(71,1), (35,1), (17,1), (8,1), (4,0), (2,0), (1,0), (0,1) 0, 7155 2 = 1, 431 0, 431 2 = 0, 862 0, 896 2 = 1, 792 0, 724 2 = 1, 448 0, 448 2 = 0, 896 2 Esercizio 2.2 La rappresentazione esadecimale prevede 16 configurazioni corrispondenti a 4 bit. Il contenuto di una parola di 16 bit può essere rappresentato direttamente con 4 digit esadecimali, sostituendo

Dettagli

Comparatori. Comparatori di uguaglianza

Comparatori. Comparatori di uguaglianza Comparatori Scopo di un circuito comparatore é il confronto tra due codifiche binarie. Il confronto può essere effettuato per verificare l'uguaglianza oppure una relazione d'ordine del tipo "maggiore",

Dettagli

Laboratorio di Informatica

Laboratorio di Informatica Laboratorio di Informatica Introduzione a Python Dottore Paolo Parisen Toldin - parisent@cs.unibo.it Argomenti trattati Che cosa è python Variabili Assegnazione Condizionale Iterazione in una lista di

Dettagli

Algoritmo. I dati su cui opera un'istruzione sono forniti all'algoritmo dall'esterno oppure sono il risultato di istruzioni eseguite precedentemente.

Algoritmo. I dati su cui opera un'istruzione sono forniti all'algoritmo dall'esterno oppure sono il risultato di istruzioni eseguite precedentemente. Algoritmo Formalmente, per algoritmo si intende una successione finita di passi o istruzioni che definiscono le operazioni da eseguire su dei dati (=istanza del problema): in generale un algoritmo è definito

Dettagli

Dispensa 3. 1.1 YACC: generalità

Dispensa 3. 1.1 YACC: generalità Dispensa 3 1.1 YACC: generalità Il tool Yacc (acronimo per Yet Another Compiler Compiler) è uno strumento software che a partire da una specifica grammaticale context free di un linguaggio scritta in un

Dettagli

SISTEMI DI NUMERAZIONE IL SISTEMA DECIMALE

SISTEMI DI NUMERAZIONE IL SISTEMA DECIMALE SISTEMI DI NUMERAZIONE IL SISTEMA DECIMALE La base del sistema decimale è 10 I simboli del sistema decimale sono: 0 1 2 3 4 5 6 7 8 9 Il sistema di numerazione decimale è un sistema posizionale. L aggettivo

Dettagli

RAPPRESENTAZIONE GRAFICA DEGLI ALGORITMI

RAPPRESENTAZIONE GRAFICA DEGLI ALGORITMI RAPPRESENTAZIONE GRAFICA DEGLI ALGORITMI Diagramma di flusso L algoritmo può essere rappresentato in vari modi, grafici o testuali. Uno dei metodi grafici più usati e conosciuti è il cosiddetto diagramma

Dettagli

Database. Si ringrazia Marco Bertini per le slides

Database. Si ringrazia Marco Bertini per le slides Database Si ringrazia Marco Bertini per le slides Obiettivo Concetti base dati e informazioni cos è un database terminologia Modelli organizzativi flat file database relazionali Principi e linee guida

Dettagli

Esercizi Capitolo 6 - Alberi binari di ricerca

Esercizi Capitolo 6 - Alberi binari di ricerca Esercizi Capitolo 6 - Alberi binari di ricerca Alberto Montresor 23 settembre 200 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente, è possibile

Dettagli

Algoritmi e strutture dati. Codici di Huffman

Algoritmi e strutture dati. Codici di Huffman Algoritmi e strutture dati Codici di Huffman Memorizzazione dei dati Quando un file viene memorizzato, esso va memorizzato in qualche formato binario Modo più semplice: memorizzare il codice ASCII per

Dettagli

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi. Algoritmi 1 Sommario Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi. 2 Informatica Nome Informatica=informazione+automatica. Definizione Scienza che si occupa dell

Dettagli

LA NOTAZIONE SCIENTIFICA

LA NOTAZIONE SCIENTIFICA LA NOTAZIONE SCIENTIFICA Definizioni Ricordiamo, a proposito delle potenze del, che = =.000 =.000.000.000.000 ovvero n è uguale ad seguito da n zeri. Nel caso di potenze con esponente negativo ricordiamo

Dettagli

Librerie digitali. Video. Gestione di video. Caratteristiche dei video. Video. Metadati associati ai video. Metadati associati ai video

Librerie digitali. Video. Gestione di video. Caratteristiche dei video. Video. Metadati associati ai video. Metadati associati ai video Video Librerie digitali Gestione di video Ogni filmato è composto da più parti Video Audio Gestito come visto in precedenza Trascrizione del testo, identificazione di informazioni di interesse Testo Utile

Dettagli

TSP con eliminazione di sottocicli

TSP con eliminazione di sottocicli TSP con eliminazione di sottocicli Un commesso viaggiatore deve visitare 7 clienti in modo da minimizzare la distanza percorsa. Le distanze (in Km) tra ognuno dei clienti sono come segue: 7-8 9 7 9-8 79

Dettagli

Obiettivi dell Analisi Numerica. Avviso. Risoluzione numerica di un modello. Analisi Numerica e Calcolo Scientifico

Obiettivi dell Analisi Numerica. Avviso. Risoluzione numerica di un modello. Analisi Numerica e Calcolo Scientifico M. Annunziato, DIPMAT Università di Salerno - Queste note non sono esaustive ai fini del corso p. 3/43 M. Annunziato, DIPMAT Università di Salerno - Queste note non sono esaustive ai fini del corso p.

Dettagli

3 GRAFICI DI FUNZIONI

3 GRAFICI DI FUNZIONI 3 GRAFICI DI FUNZIONI Particolari sottoinsiemi di R che noi studieremo sono i grafici di funzioni. Il grafico di una funzione f (se non è specificato il dominio di definizione) è dato da {(x, y) : x dom

Dettagli

Capitolo 2. Operazione di limite

Capitolo 2. Operazione di limite Capitolo 2 Operazione di ite In questo capitolo vogliamo occuparci dell operazione di ite, strumento indispensabile per scoprire molte proprietà delle funzioni. D ora in avanti riguarderemo i domini A

Dettagli

Appunti sulla Macchina di Turing. Macchina di Turing

Appunti sulla Macchina di Turing. Macchina di Turing Macchina di Turing Una macchina di Turing è costituita dai seguenti elementi (vedi fig. 1): a) una unità di memoria, detta memoria esterna, consistente in un nastro illimitato in entrambi i sensi e suddiviso

Dettagli

SQL/OLAP. Estensioni OLAP in SQL

SQL/OLAP. Estensioni OLAP in SQL SQL/OLAP Estensioni OLAP in SQL 1 Definizione e calcolo delle misure Definire una misura significa specificare gli operatori di aggregazione rispetto a tutte le dimensioni del fatto Ipotesi: per ogni misura,

Dettagli

Matematica in laboratorio

Matematica in laboratorio Unità 1 Attività guidate Attività 1 Foglio elettronico Divisibilità tra numeri naturali Costruisci un foglio di lavoro per determinare se a è divisibile per b, essendo a e b due numeri naturali, con a

Dettagli

la scienza della rappresentazione e della elaborazione dell informazione

la scienza della rappresentazione e della elaborazione dell informazione Sistema binario Sommario informatica rappresentare informazioni la differenza Analogico/Digitale i sistemi di numerazione posizionali il sistema binario Informatica Definizione la scienza della rappresentazione

Dettagli

LE FUNZIONI E LE LORO PROPRIETÀ

LE FUNZIONI E LE LORO PROPRIETÀ LE FUNZIONI E LE LORO PROPRIETÀ LE FUNZIONI REALI DI VARIABILE REALE COSA SONO LE FUNZIONI Dati due sottoinsiemi A e B non vuoti di R, una FUNZIONE da A a B è una relazione che associa ad ogni numero reale

Dettagli

Modellazione dei dati in UML

Modellazione dei dati in UML Corso di Basi di Dati e Sistemi Informativi Modellazione dei dati in UML Angelo Montanari Dipartimento di Matematica e Informatica Università degli Studi di Udine Introduzione UML (Unified Modeling Language):

Dettagli

Progetto: ARPA Fonte Dati. ARPA Fonte Dati. Regione Toscana. Manuale Amministratore

Progetto: ARPA Fonte Dati. ARPA Fonte Dati. Regione Toscana. Manuale Amministratore ARPA Fonte Dati Regione Toscana 1 Redatto da L. Folchi (TAI) Rivisto da Approvato da Versione 1.1 Data emissione 09/10/13 Stato FINAL 2 Versione Data Descrizione 1,0 06/08/13 Versione Iniziale 1.1 09/10/2013

Dettagli

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo. DALLE PESATE ALL ARITMETICA FINITA IN BASE 2 Si è trovato, partendo da un problema concreto, che con la base 2, utilizzando alcune potenze della base, operando con solo addizioni, posso ottenere tutti

Dettagli

La selezione binaria

La selezione binaria Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Introduzione L esecuzione di tutte le istruzioni in sequenza può non è sufficiente per

Dettagli

Join in SQL (primo modo) Informatica. Tabella Dipartimento. Interrogazione 4a. Interrogazione 4b. Interrogazione 4a

Join in SQL (primo modo) Informatica. Tabella Dipartimento. Interrogazione 4a. Interrogazione 4b. Interrogazione 4a Join in SQL (primo modo) Informatica Lezione 7 Laurea magistrale in Psicologia Laurea magistrale in Psicologia dello sviluppo e dell'educazione Anno accademico: 09- Per formulare interrogazioni che coinvolgono

Dettagli

Sommario. Addizione naturale

Sommario. Addizione naturale Sommario Introduzione Rappresentazione dei numeri interi positivi Rappresentazione dei numeri interi Operazioni aritmetiche Modulo e segno Addizione e sottrazione urale Addizione e sottrazione in complemento

Dettagli

I NUMERI DECIMALI. che cosa sono, come si rappresentano

I NUMERI DECIMALI. che cosa sono, come si rappresentano I NUMERI DECIMALI che cosa sono, come si rappresentano NUMERI NATURALI per contare bastano i numeri naturali N i numeri naturali cominciano con il numero uno e vanno avanti con la regola del +1 fino all

Dettagli

Vettori ed assegnamenti in R

Vettori ed assegnamenti in R Università degli Studi di Milano Laurea Specialistica in Genomica Funzionale e Bioinformatica Corso di Linguaggi di Programmazione per la Bioinformatica Vettori ed assegnamenti in R Giorgio Valentini e

Dettagli

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI Prima di riuscire a scrivere un programma, abbiamo bisogno di conoscere un metodo risolutivo, cioè un metodo che a partire dai dati di ingresso fornisce i risultati attesi.

Dettagli

Architettura degli Elaboratori I Esercitazione 1 - Rappresentazione dei numeri

Architettura degli Elaboratori I Esercitazione 1 - Rappresentazione dei numeri Architettura degli Elaboratori I Esercitazione 1 - Rappresentazione dei numeri 1 Da base 2 a base 10 I seguenti esercizi richiedono di convertire in base 10 la medesima stringa binaria codificata rispettivamente

Dettagli

Descrizione di un algoritmo

Descrizione di un algoritmo Descrizione di un algoritmo Un algoritmo descrive due tipi fondamentali di oper: calcoli ottenibili tramite le oper primitive su tipi di dato (valutazione di espressioni) che consistono nella modifica

Dettagli

Verifica della correttezza formale del numero di partita IVA

Verifica della correttezza formale del numero di partita IVA Verifica della correttezza formale del numero di partita IVA A tutti i soggetti che intraprendono un attività rilevante ai fini Iva (impresa, arte, professione), al momento della presentazione della dichiarazione

Dettagli

Test Excel conoscenze di Base

Test Excel conoscenze di Base Test Excel conoscenze di Base 1)Che tipo di barra ha un foglio di calcolo, che un elaboratore testi non ha? a. La barra dei menu b. La barra della formula c. La barra del titolo d. La barra della formattazione

Dettagli

Capitolo 5. Funzioni. Grafici.

Capitolo 5. Funzioni. Grafici. Capitolo 5 Funzioni. Grafici. Definizione: Una funzione f di una variabile reale,, è una corrispondenza che associa ad ogni numero reale appartenente ad un insieme D f R un unico numero reale, y R, denotato

Dettagli

Introduzione. Rappresentazione di numeri in macchina, condizion

Introduzione. Rappresentazione di numeri in macchina, condizion Introduzione. Rappresentazione di numeri in macchina, condizionamento e stabilità Dipartimento di Matematica tel. 011 0907503 stefano.berrone@polito.it http://calvino.polito.it/~sberrone Laboratorio di

Dettagli

Soluzione dell esercizio del 2 Febbraio 2004

Soluzione dell esercizio del 2 Febbraio 2004 Soluzione dell esercizio del 2 Febbraio 2004 1. Casi d uso I casi d uso sono riportati in Figura 1. Figura 1: Diagramma dei casi d uso. E evidenziato un sotto caso di uso. 2. Modello concettuale Osserviamo

Dettagli

Funzioni. Funzioni /2

Funzioni. Funzioni /2 Funzioni Una funzione f è una corrispondenza tra due insiemi A e B che a ciascun elemento di A associa un unico elemento di B. Si scrive: f : A B l'insieme A si chiama il dominio della funzione f, l'insieme

Dettagli

APPUNTI SUL LINGUAGGIO DI PROGRAMMAZIONE PASCAL

APPUNTI SUL LINGUAGGIO DI PROGRAMMAZIONE PASCAL APPUNTI SUL LINGUAGGIO DI PROGRAMMAZIONE PASCAL In informatica il Pascal è un linguaggio di programmazione creato da Niklaus Wirth ed é un linguaggio di programmazione strutturata. I linguaggi di programmazione

Dettagli

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa 05 La rappresentazione dell informazione Carla Limongelli Ottobre 2011 http://www.dia.uniroma3.it/~java/fondinf/ La rappresentazione

Dettagli

MODELLO RELAZIONALE. Introduzione

MODELLO RELAZIONALE. Introduzione MODELLO RELAZIONALE Introduzione E' stato proposto agli inizi degli anni 70 da Codd finalizzato alla realizzazione dell indipendenza dei dati, unisce concetti derivati dalla teoria degli insiemi (relazioni)

Dettagli