Verifica di programmi C con SPIN

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Verifica di programmi C con SPIN"

Transcript

1 Verifica di programmi C con SPIN

2 Importanza delle astrazioni Astrazione (perdita di dettaglio) è un concetto cruciale nella verifica Per individuare una buona astrazione bisogna tener conto sia della proprietà da verificare che delle risorse a disposizione Non tutto può essere automatizzato il giudizio umano è necessario per effettuare delle scelte effettuate le scelte il resto del procedimento di astrazione può essere meccanizzato Obiettivo: estrarre automaticamente un modello astratto dal source code, seguendo funzioni di astrazione definite dall'utente

3 Estrazione di modelli PROMELA da C #include <stdio.h> int main(void) { int lower, upper, step; float fahr, celsius; lower = 0; upper = 300; step = 20; fahr = lower; } while (fahr <= upper) { } celsius = (5.0/9.0) * (fahr ); printf("%4.0f %6.1f\n", fahr, celsius); fahr = fahr + step;

4 Control-flow: nessun problema Strutture di controllo di Promela (eccetto chiamate ricorsive) sono tipiche della programmazione strutturata fahr = lower; do od :: (fahr <= upper) -> celsius = (5/9) * (fahr-32); printf("%d %d\n", fahr, celsius); fahr = fahr + step; :: else -> break

5 Costrutti e definizioni non supportate in Promela Occorre basarsi sull'astrazione Ad es. possiamo definire un'astrazione del tipo: "ogni float è mappato a int" o addirittura "a bool" Questo non è sempre la cosa più conveniente a volte è preferibile avere un modello che sia il più vicino possibile al sistema ad es. possiamo mantenere i dati e le computazioni su float Possiamo sfruttare il fatto che SPIN genera codice C da Promela (pan.c) per eseguire la verifica Infatti, è possibile includere parti di codice C in un programma Promela con l'istruzione c_code

6 Parole chiave c_code e c_expr c_code { celsius = (5/9) * (fahr-32); }; il codice contenuto nel blocco preceduto da c_code, viene considerato trusted da SPIN è quindi non viene verificato e non viene neanche analizzato dal suo parser versione con guardia: c_code [fahrtocelsius]{ celsius = (5/9) * (fahr-32); }; dove fahrtocelsius è una qualsiasi espressione condizionale se fahrtocelsius è vera, allora si esegue il codice in {.. } altrimenti, l'esecuzione prosegue come se si violasse un'asserzione c_expr è analogo a c_code, usato per espressioni che non possono essere espresse direttamente in Promela

7 Parola chiave c_state possiamo includere variabili usate nella porzione di codice in C nello stato del modello Promela c_state "float fahr" "Local main" c_state "float celsius" "Local main" dicono che le dichiarazioni "float fahr" e "float celsius" devono essere inserite nella dichiarazione del proctype main con visibilità locale in questo caso, il blocco c_code di prima va modificato per dire che celsius e fahr sono variabili importate definite localmente in proctype main c_code { Pmain->celsius = (5/9) * (Pmain->fahr-32); } c_state può comparire solo fuori da ogni proctype (globale);

8 Parola chiave c_state c_state può essere seguito da 2 o 3 stringhe tra doppi apici la prima riporta la dichiarazione in C della variabile la seconda riporta lo scope della variabile la terza è opzionale e viene usata per specificare un valore iniziale sono possibili 3 scope: Global, Local e Hidden. se viene usato Local, questo deve essere seguito dal nome del proctype in cui la dichiarazione deve comparire se viene usato "Hidden" la variabile sarà dichiarata globale ma ma non farà parte dello stato del modello

9 Parola chiave c_decl c_decl è usato per dichiarare nuovi tipi in C che vengono usati in altri punti del codice (tipi definiti con typedef) ad es. c_decl { typedef struct Pair { int x; int y;} Pair; } ma anche c_decl { \#include "types.h"} può comparire solo fuori da ogni proctype (globale);

10 Parola chiave c_track c_track è usato per dichiarare che una variabile (definita in qualsiasi modo) o più in generale un pezzo di memoria fa parte dello stato del modello ha due parametri: indirizzo iniziale e taglia (in numero di byte) della memoria da considerare ad es. c_code { Pair p;} ; c_track "&p" "sizeof(pair)" può comparire solo fuori da ogni proctype (globale); SPIN codifica il verificatore in modo che ogni variabile dichiarata c_track viene copiata e cancellata dallo stato del modello nelle esplorazioni dello spazio degli stati cancellazioni/copie impiegano tempo preferibile usare c_state se possibile

11 Note le primitive di Promela per includere codice C sono pensate per l'estrazione di modelli da programmi C i frammenti di codice C non sono analizzati da SPIN né come parsing né come verifica il codice viene inglobato nel verificatore generato da SPIN e quindi vengono dati in pasto direttamente al compilatore (il significato è ottenuto tramite il compilatore C) quando viene eseguita una traccia d'errore tuttavia questi frammenti di codice C vengono eseguiti e quindi gli stati (incluse le variabili importate dai frammenti) possono essere visualizzati in tutte le componenti

12 Estrazione automatica di modelli: Modex Modello estratto con Modex da esempio conversione temperature: c_state "float fahr" "Local main" c_state "float celsius" "Local main" active proctype main() { } int lower; int upper; int step; c_code { Pmain->lower=0; }; c_code { Pmain->upper=300; }; c_code { Pmain->step=20; }; c_code { Pmain->fahr=Pmain->lower; }; do :: c_expr { (Pmain->fahr <= Pmain->upper) }; c_code { Pmain->celsius = ((5.0/9.0)*(Pmain->fahr-32.0)); }; c_code { Printf("%4.0f %6.1f\n", Pmain->fahr, Pmain->celsius); }; c_code { Pmain->fahr = (Pmain->fahr+Pmain->step); }; :: else -> break od

13 Note modello costruito da Modex: fa in modo che tutte le variabili abbiano il prefisso appropriato usa Printf una funzione predefinita di SPIN che: sopprime le chiamate a printf quando SPIN visita lo state space durante la verifica esegue printf quando avviene simulazione su traccia d'errore con file.trail SPIN non controlla il contenuto del codice C incorporato nel modello Promela (possono annidarsi errori) le versioni di c_code e c_expr con condizione, possono essere usate per testare precondizioni (embedded assertions)

14 Embedded assertion c_state "int *ptr;" "Local main"... c_code [Pmain->ptr!= NULL] { *(Pmain->ptr) = 5; }; codice viene eseguito a patto che il puntatore non sia nullo c_code { int *ptr; int x[256]; int j; };... c_code { ptr = x; }; if :: c_expr [j >= 0 && j < 256] { x[j]!= 25 } -> c_code [ptr >= x && ptr < &(x[256])] { *ptr = 25; } :: else fi prima condizione testa che indice array è entro i limiti seconda condizione stessa cosa ma per accesso tramite puntatore

15 Traduzione di default di Modex Modex se non vengono passate delle astrazioni definite dall'utente esegue una trasformazione di default: ogni instruzione del codice che non ha un equivalente in Promela viene semplicemente inglobata usando le primitive c_code, c_expr, c_state, c_decl e c_track le astrazioni per le istruzioni non esprimibili in Promela possono essere espresse in forma tabulare (lookup table) prima colonna contiene l'istruzione C seconda colonna come lo vogliamo rimpiazzare nel modello

16 Modex lookup table di default tavola usata da Modex per l'estrazione del modello dal programma di conversione temperature: 1. (fahr<=upper) 2.!(fahr<=upper) 3. lower=0 4. upper= step=20 6. fahr=lower 7. fahr=(fahr+step) 8. celsius=((5/9)*(fahr-32)) 9. printf("%4.0f %6.1f\n",fahr,celsius) c_expr { (Pmain->fahr<=Pmain->upper) } else c_code { Pmain->lower=0; } c_code { Pmain->upper=300; } c_code { Pmain->step=20; } c_code { Pmain->fahr=Pmain->lower; } c_code { Pmain->fahr=(Pmain->fahr+Pmain->step); } c_code { Pmain->celsius=((5.0/9.0)*(Pmain->fahr-32.0)); } c_code { Printf("%4.0f %6.1f\n", \ Pmain->fahr, Pmain->celsius); }

17 Sovrascrittura delle traduzioni di default ogni regola di default usata da Modex può essere forzata stabilendo una nuova regola di conversione Ad es. rimpiazziamo le variabili con una versione int: Declare int fahr main Declare int celsius main Declare int upper Declare int lower Declare int step main main main Declare deve essere seguito da tre campi separati da tab nome tipo di dati nome variabile scope della variabile (se è locale indicare nome proctype, si usa la parola chiave Global per globale)

18 Sovrascrittura delle traduzioni di default per effetto della nuova definizione molte istruzioni del programma C possono essere interpretate direttamente in Promela si usa la parola chiave keep Le prime 7 entry della tabella diventano: 1. (fahr<=upper) 2.!(fahr<=upper) 3. lower=0 4. upper= step=20 6. fahr=lower 7. fahr=(fahr+step) keep else keep keep keep keep keep

19 Sovrascrittura delle traduzioni di default l'istruzione "celsius=((5/9)*(fahr-32))" deve essere modificata in "celsius=((fahr-32)*5)/9" in quanto ora "/" è una divisione intera nella printf occorre sostituire i marcatori di conversione con %d 8. celsius=((5/9)*(fahr-32)) 9. printf("%4.0f %6.1f\n",fahr,celsius) regola seguita da Modex: cerca per una entry nella prima colonna della tabella fornita dall'utente se trova il testo ricercato, usa la traduzione data altrimenti usa la regola di default celsius=((fahr-32)*5)/9 printf("%d %d\n",fahr,celsius)

20 Modello ottenuto con nuove regole active proctype main() { int step; int lower; int upper; int celsius; int fahr; lower = 0; upper = 300; step = 20; fahr = lower; do :: (fahr<=upper); celsius = ((fahr-32)*5)/9; printf("%d %d\n", fahr, celsius); fahr=(fahr+step) :: else -> break od }

21 Astrazione di programmi astrazione è una funzione α: dominio concreto dominio astratto ad es.: funzione definita tramite una Modex lookup table P: programma del dominio concreto ad es.: programma C α(p): programma del dominio astratto ottenuto tramite α ad es.: modello Promela di P ottenuto tramite la lookup table α L: proprietà logica ad es.: formula LTL su simboli di P per effetto dell'astrazione L può non essere definita per α(p) e può necessitare trasformare consistentemente L in α(l) ad es.: L può far riferimento ad una program location cancellata da α α(l) è quindi un'astrazione di L, il corrispondente di L tramite α nel dominio astratto

22 Astrazione di programmi denotato con α l'inverso di un'astrazione α, si ha che per ogni istruzione s: s α(α(s)) Vale quanto segue: per ogni computazione π di P, α(π) definisce un'unica computazione di α(p) corrispondente e per ogni esecuzione di π' in α(p), α(π') definisce un insieme di sequenze di istruzioni di P corrispondenti Un'astrazione rimuove dettaglio: una sequenza di α(π') può non corrispondere ad alcuna esecuzione di P in ogni caso, esiste almeno una sequenza di α(π') che corrisponde ad esecuzione di P

23 Correttezza logica (soundness) Definizione: α è logicamente corretta rispetto a P e L se per ogni computazione π di P che soddisfa L la computazione α(π) di α(p) anche soddisfa α(l) un'astrazione che è logicamente corretta esclude i falsi positivi (se il modello astratto rivela un bug allora il programma concreto ha quel bug)

24 Correttezza logica (completeness) Definizione: α è logicamente completa rispetto a P e L se per ogni computazione astratta π di α(p) che soddisfa α(l) ogni computazione concreta di P in α(π) soddisfa L un'astrazione che è logicamente completa esclude i falsi negativi (se il modello astratto non presenta bug allora anche il programma concreto è esente da bug)

25 Selective data hiding metodo di astrazione corretto e completo rispetto ad ogni proprietà espressa in LTL si basa sulla capacità di individuare dei dati che sono irrilevanti rispetto alla proprietà da verificare e che quindi possono essere rimossi dal modello (insieme alle istruzioni che li usano) questo metodo può essere automatizzato attraverso un semplice algoritmo di slicing (SPIN ne implementa uno) si parte dalla formula e si individuano tutti i dati che sono direttamente utilizzati (simboli, etichette, variabili) poi si seguono le dipendenze nel programma e si accumulano nuovi dati fino a che non se possono più aggiungere tutti gli dati che non sono stati inseriti sono irrilevanti vengono cancellati insieme alle operazioni collegate

26 Selective data hiding con Modex cancellazione avviene rimpiazzando espressioni irrilevanti con true istruzioni irrilevanti con skip la caratteristica positiva di questo metodo è che le astrazioni ottenute sono sia corrette che complete la caratteristica negativa è che questo non necessariamente vale per proprietà che non possono essere espresse come LTL (ad es. assenza di deadlock)

27 Esempio: word count 1 chan STDIN; 2 int c, nl, nw, nc; 3 4 init { 5 bool inword = false; 6 7 do 8 :: STDIN?c -> 9 if 10 :: c == -1 -> break /* EOF */ 11 :: c == '\n' -> nc++; nl++ 12 :: else -> nc++ 13 fi; 14 if 15 :: c == ' ' c == '\t' c == '\n' -> 16 inword = false 17 :: else -> 18 if 19 ::!inword -> 20 nw++; inword = true 21 :: else /* do nothing */ 22 fi 23 fi 24 od; 25 assert(nc >= nl); 26 printf("%d\t%d\t%d\n", nl, nw, nc) 27 }

28 Modello ottenuto con SPIN 1 chan STDIN; 2 int c, nl, nw, nc; 3 4 init { do 8 :: STDIN?c -> 9 if 10 :: c == -1 -> break /* EOF */ 11 :: c == '\n' -> nc++; nl++ 12 :: else -> nc++ 13 fi; 14 if 15 :: true -> 16 skip 17 :: true -> 18 if 19 :: true-> 20 skip ; skip 21 :: true 22 fi 23 fi 24 od; 25 assert(nc >= nl); 26 printf("%d\t%d\n", nl, nc) 27 }

29 Selective restriction metodo di astrazione né corretto né completo può essere ugualmente utile in caso non esista un metodo sound/complete oppure non consente di ottenere modelli trattabili consiste nel limitare la verifica ad una restrizione del problema di partenza ad es. limitare la capacità dei buffer o il numero massimo di processi attivi è molto utile nella fase iniziale della verifica per studiare il problema su una variante del sistema di minore complessità

30 Data type abstraction metodo di astrazione logicamente corretto ma non necessariamente completo consiste nel ridurre il dominio di alcuni dati selezionati ad esempio modellare floating point con interi oppure interi con tre valori (positivo, zero, negativo) una simile astrazione può essere motivata dalla considerazione che le proprietà da verificare non dipendono dai valori effettivi ma dai valori astratti individuati astrarre i valori di alcune variabili può avere conseguenze anche su altre variabili si effettua un analisi delle dipendenze tra variabili e eventualmente si procede ad una modifica

31 Galois connection Siano: (V, ), (A, ): insiemi dotati di ordinamento parziale α: V A (astrazione) β: A V (concretizzazione) la coppia (α, β) è una Galois connection se: per ogni x V e per ogni y A, α(x) y sse x β(y) Sia γ una concretizzazione definita in modo che γ(y) α(y) Ogni astrazione α tale che (α, γ) è una Galois connection è logicamente completa

32 Esempio consideriamo la formula: nota: nella formula è importante il segno non il valore consideriamo il frammento di codice: (x>5); x=0; x++; possiamo usare una funzione di astrazione α che mappa ogni intero negativo a true e ogni altro intero a false definiamo la funzione di concretizzazione γ tale che: γ(true)=-1 e γ(false)=0 consideriamo come relazione d'ordine: per il dominio concreto : ordinamento per interi crescenti per il dominio astratto : true precede false Si può verificare che (α, γ) è una Galois connection, e quindi l'astrazione definita da α è logicamente completa

33 Esempio: trasformazione del codice tabella trasformazione codice: la formula diventa

34 Falsi negativi utilizzando metodi di astrazione che non sono logicamente completi (incomplete) si possono verificare dei falsi negativi i falsi positivi non sono un grosso problema in genere: con la simulazione guidata del controesempio trovato si può subito individuare l'informazione mancante che ha generato il falso positivo si modifica di conseguenza l'astrazione e si ripete l'analisi analizzare i falsi negativi è in genere molto più complicato

35 Esercizi verificare la correttezza di un programma C a scelta verificare la correttezza di un programma C che implementa il quicksort

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

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

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto: Tipi primitivi Il linguaggio Java offre alcuni tipi di dato primitivi Una variabile di tipo primitivo può essere utilizzata direttamente. Non è un riferimento e non ha senso tentare di istanziarla mediante

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

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori Gli array Array e puntatori Laboratorio di Informatica I un array è un insieme di elementi (valori) avente le seguenti caratteristiche: - un array è ordinato: agli elementi dell array è assegnato un ordine

Dettagli

Variabili e tipi di dato

Variabili e tipi di dato Variabili e tipi di dato Tutte le variabili devono essere dichiarate, specificandone il tipo La dichiarazione deve precedere l uso Il tipo è un concetto astratto che esprime: L allocazione di spazio per

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

Fasi di creazione di un programma

Fasi di creazione di un programma Fasi di creazione di un programma 1. Studio Preliminare 2. Analisi del Sistema 6. Manutenzione e Test 3. Progettazione 5. Implementazione 4. Sviluppo 41 Sviluppo di programmi Per la costruzione di un programma

Dettagli

Linguaggio C. Fondamenti. Struttura di un programma.

Linguaggio C. Fondamenti. Struttura di un programma. Linguaggio C Fondamenti. Struttura di un programma. 1 La storia del Linguaggio C La nascita del linguaggio C fu dovuta all esigenza di disporre di un Linguaggio ad alto livello adatto alla realizzazione

Dettagli

Analizzatore lessicale o scanner

Analizzatore lessicale o scanner Analizzatore lessicale o scanner Lo scanner rappresenta un'interfaccia fra il programma sorgente e l'analizzatore sintattico o parser. Lo scanner, attraverso un esame carattere per carattere dell'ingresso,

Dettagli

Algoritmi di Ricerca. Esempi di programmi Java

Algoritmi di Ricerca. Esempi di programmi Java Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare

Dettagli

Esempio. chan request = [0] of { byte }; active proctype Server() { byte client; end: do :: request? client -> printf("client %d\n", client); od }

Esempio. chan request = [0] of { byte }; active proctype Server() { byte client; end: do :: request? client -> printf(client %d\n, client); od } Canali in Promela Sistemi distribuiti un sistema distribuito è costituito da un insieme di processi e un insieme di canali di comunicazione ogni processo rappresenta un nodo di computazione del sistema

Dettagli

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1) Strutture Strutture e Unioni DD cap.10 pp.379-391, 405-406 KP cap. 9 pp.361-379 Strutture Collezioni di variabili correlate (aggregati) sotto un unico nome Possono contenere variabili con diversi nomi

Dettagli

Prof. Giuseppe Chiumeo. Avete già studiato che qualsiasi algoritmo appropriato può essere scritto utilizzando soltanto tre strutture di base:

Prof. Giuseppe Chiumeo. Avete già studiato che qualsiasi algoritmo appropriato può essere scritto utilizzando soltanto tre strutture di base: LA STRUTTURA DI RIPETIZIONE La ripetizione POST-condizionale La ripetizione PRE-condizionale INTRODUZIONE (1/3) Avete già studiato che qualsiasi algoritmo appropriato può essere scritto utilizzando soltanto

Dettagli

Inizializzazione, Assegnamento e Distruzione di Classi

Inizializzazione, Assegnamento e Distruzione di Classi Inizializzazione, Assegnamento e Distruzione di Classi Lezione 9 Operazioni Automatiche In ogni programma C++ oggetti classe vengono gestiti automaticamente dal compilatore Inizializzati al momento della

Dettagli

Esempi di algoritmi. Lezione III

Esempi di algoritmi. Lezione III Esempi di algoritmi Lezione III Scopo della lezione Implementare da zero algoritmi di media complessità. Verificare la correttezza di un algoritmo eseguendolo a mano. Imparare a valutare le prestazioni

Dettagli

LABORATORIO DI PROGRAMMAZIONE 2012 2013 EDIZIONE 1, TURNO B

LABORATORIO DI PROGRAMMAZIONE 2012 2013 EDIZIONE 1, TURNO B LABORATORIO DI PROGRAMMAZIONE 2012 2013 EDIZIONE 1, TURNO B 23.XI.2012 VINCENZO MARRA Indice Esercizio 1 1 Menu 1 Tempo: 35 min. 2 Commento 1 2 Esercizio 2 2 Ordinamento e ricerca binaria con la classe

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

FONDAMENTI di INFORMATICA L. Mezzalira

FONDAMENTI di INFORMATICA L. Mezzalira FONDAMENTI di INFORMATICA L. Mezzalira Possibili domande 1 --- Caratteristiche delle macchine tipiche dell informatica Componenti hardware del modello funzionale di sistema informatico Componenti software

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

Interpretazione astratta

Interpretazione astratta Interpretazione astratta By Giulia Costantini (819048) e Giuseppe Maggiore (819050) Contents Interpretazione astratta... 2 Idea generale... 2 Esempio di semantica... 2 Semantica concreta... 2 Semantica

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

INFORMATICA 1 L. Mezzalira

INFORMATICA 1 L. Mezzalira INFORMATICA 1 L. Mezzalira Possibili domande 1 --- Caratteristiche delle macchine tipiche dell informatica Componenti hardware del modello funzionale di sistema informatico Componenti software del modello

Dettagli

Allocazione dinamica della memoria - riepilogo

Allocazione dinamica della memoria - riepilogo Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica In breve Storage duration Allocazione dinamica della

Dettagli

GESTIONE INFORMATICA DEI DATI AZIENDALI

GESTIONE INFORMATICA DEI DATI AZIENDALI GESTIONE INFORMATICA DEI DATI AZIENDALI Alberto ZANONI Centro Vito Volterra Università Tor Vergata Via Columbia 2, 00133 Roma, Italy zanoni@volterra.uniroma2.it Rudimenti di programmazione Programming

Dettagli

Definizione di nuovi tipi in C

Definizione di nuovi tipi in C Definizione di nuovi tipi in C typedef Ancora sui tipi di dato Ogni elaboratore è intrinsecamente capace di trattare domini di dati di tipi primitivi numeri naturali, interi, reali caratteri e stringhe

Dettagli

DI D AGRA R MM M I M A BLOCC C H C I TEORI R A E D D E SERC R I C ZI 1 1

DI D AGRA R MM M I M A BLOCC C H C I TEORI R A E D D E SERC R I C ZI 1 1 DIAGRAMMI A BLOCCHI TEORIA ED ESERCIZI 1 1 Il linguaggio dei diagrammi a blocchi è un possibile formalismo per la descrizione di algoritmi Il diagramma a blocchi, o flowchart, è una rappresentazione grafica

Dettagli

Correttezza. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 10. A. Miola Novembre 2007

Correttezza. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 10. A. Miola Novembre 2007 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 10 Correttezza A. Miola Novembre 2007 http://www.dia.uniroma3.it/~java/fondinf1/ Correttezza 1 Contenuti Introduzione alla correttezza

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

( x) ( x) 0. Equazioni irrazionali

( x) ( x) 0. Equazioni irrazionali Equazioni irrazionali Definizione: si definisce equazione irrazionale un equazione in cui compaiono uno o più radicali contenenti l incognita. Esempio 7 Ricordiamo quanto visto sulle condizioni di esistenza

Dettagli

Tipi di Dato Ricorsivi

Tipi di Dato Ricorsivi Tipi di Dato Ricorsivi Luca Abeni September 2, 2015 1 Tipi di Dato Vari linguaggi di programmazione permettono all utente di definire nuovi tipi di dato definendo per ogni nuovo tipo l insieme dei suoi

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

Excel avanzato. I nomi. Gli indirizzi e le formule possono essere sostituiti da nomi. Si creano tramite Inserisci Nome Definisci

Excel avanzato. I nomi. Gli indirizzi e le formule possono essere sostituiti da nomi. Si creano tramite Inserisci Nome Definisci Excel avanzato I nomi marco.falda@unipd.it Gli indirizzi e le formule possono essere sostituiti da nomi documentazione astrazione Si creano tramite Inserisci Nome Definisci Vengono raccolti nell area riferimento

Dettagli

Sottoprogrammi: astrazione procedurale

Sottoprogrammi: astrazione procedurale Sottoprogrammi: astrazione procedurale Incapsulamento di un segmento di programma presente = false; j = 0; while ( (j

Dettagli

EXCEL FUNZIONI PRINCIPALI

EXCEL FUNZIONI PRINCIPALI EXCEL FUNZIONI PRINCIPALI Funzione SE() Sintassi: SE(VERIFICA, VALORE SE VERO, VALORE SE FALSO): verifica un valore e ritorna una risposta in base al risultato vero/falso Esempio: =SE(A2=15; "OK"; "NO")

Dettagli

Le variabili. Olga Scotti

Le variabili. Olga Scotti Le variabili Olga Scotti Cos è una variabile Le variabili, in un linguaggio di programmazione, sono dei contenitori. Possono essere riempiti con un valore che poi può essere riletto oppure sostituito.

Dettagli

Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main

Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main Paolo Torroni Dipartimento di Elettronica, Informatica e Sistemistica Università degli

Dettagli

CAPITOLO 7 - SCAMBIO DI MESSAGGI

CAPITOLO 7 - SCAMBIO DI MESSAGGI CAPITOLO 7 - SCAMBIO DI MESSAGGI Lo scambio di messaggi è una forma di comunicazione nel quale un processo richiede al sistema operativo di mandare dei dati direttamente ad un altro processo. In alcuni

Dettagli

Luigi Piroddi piroddi@elet.polimi.it

Luigi Piroddi piroddi@elet.polimi.it Automazione industriale dispense del corso 10. Reti di Petri: analisi strutturale Luigi Piroddi piroddi@elet.polimi.it Analisi strutturale Un alternativa all analisi esaustiva basata sul grafo di raggiungibilità,

Dettagli

Una funzione è detta ricorsiva se chiama, direttamente o indirettamente, se stessa. In C tutte le funzioni possono essere usate ricorsivamente.

Una funzione è detta ricorsiva se chiama, direttamente o indirettamente, se stessa. In C tutte le funzioni possono essere usate ricorsivamente. Ricorsione Funzioni ricorsive Una funzione è detta ricorsiva se chiama, direttamente o indirettamente, se stessa. In C tutte le funzioni possono essere usate ricorsivamente. Un esempio di funzione ricorsiva

Dettagli

Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it www.cs.unicam.it/massimo.callisto

Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it www.cs.unicam.it/massimo.callisto Università degli studi di Camerino Scuola di scienze e tecnologia - Sezione Informatica Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it www.cs.unicam.it/massimo.callisto LEZIONE

Dettagli

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware COS È UN LINGUAGGIO? Un linguaggio è un insieme di parole e di metodi di combinazione delle

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

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

10 - Programmare con gli Array

10 - Programmare con gli Array 10 - Programmare con gli Array Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it

Dettagli

Funzioni funzione dominio codominio legge argomento variabile indipendente variabile dipendente

Funzioni funzione dominio codominio legge argomento variabile indipendente variabile dipendente Funzioni In matematica, una funzione f da X in Y consiste in: 1. un insieme X detto dominio di f 2. un insieme Y detto codominio di f 3. una legge che ad ogni elemento x in X associa uno ed un solo elemento

Dettagli

Definire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12};

Definire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12}; ESERCIZI 2 LABORATORIO Problema 1 Definire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12}; Chiede all'utente un numero e, tramite ricerca

Dettagli

Introduzione ai Metodi Formali

Introduzione ai Metodi Formali Intruzione ai Meti Formali Sistemi software anche molto complessi regolano la vita quotidiana, anche in situazioni life-critical (e.g. avionica) e business-critical (e.g. operazioni bancarie). Esempi di

Dettagli

Matlab: Strutture di Controllo. Informatica B

Matlab: Strutture di Controllo. Informatica B Matlab: Strutture di Controllo Informatica B Tipo di dato logico È un tipo di dato che può avere solo due valori true (vero) 1 false (falso) 0 I valori di questo tipo possono essere generati direttamente

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

Esercizi di programmazione in C

Esercizi di programmazione in C Esercizi di programmazione in C Esercizio 1 Scrivere un programma in linguaggio C che legga da tastiera una sequenza di lunghezza ignota a priori di numeri interi positivi. Il programma, a partire dal

Dettagli

I file di dati. Unità didattica D1 1

I file di dati. Unità didattica D1 1 I file di dati Unità didattica D1 1 1) I file sequenziali Utili per la memorizzazione di informazioni testuali Si tratta di strutture organizzate per righe e non per record Non sono adatte per grandi quantità

Dettagli

Introduzione al Linguaggio C

Introduzione al Linguaggio C Introduzione al Linguaggio C File I/O Daniele Pighin April 2009 Daniele Pighin Introduzione al Linguaggio C 1/15 Outline File e dati Accesso ai file File I/O Daniele Pighin Introduzione al Linguaggio C

Dettagli

LE SUCCESSIONI 1. COS E UNA SUCCESSIONE

LE SUCCESSIONI 1. COS E UNA SUCCESSIONE LE SUCCESSIONI 1. COS E UNA SUCCESSIONE La sequenza costituisce un esempio di SUCCESSIONE. Ecco un altro esempio di successione: Una successione è dunque una sequenza infinita di numeri reali (ma potrebbe

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

Algebra booleana. Si dice enunciato una proposizione che può essere soltanto vera o falsa.

Algebra booleana. Si dice enunciato una proposizione che può essere soltanto vera o falsa. Algebra booleana Nel lavoro di programmazione capita spesso di dover ricorrere ai principi della logica degli enunciati e occorre conoscere i concetti di base dell algebra delle proposizioni. L algebra

Dettagli

Elementi di semantica operazionale

Elementi di semantica operazionale Elementi di semantica operazionale 1 Contenuti sintassi astratta e domini sintattici un frammento di linguaggio imperativo semantica operazionale domini semantici: valori e stato relazioni di transizione

Dettagli

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory FILE SYSTEM : INTERFACCIA 8.1 Interfaccia del File System Concetto di File Metodi di Accesso Struttura delle Directory Montaggio del File System Condivisione di File Protezione 8.2 Concetto di File File

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

ALGEBRA DELLE PROPOSIZIONI

ALGEBRA DELLE PROPOSIZIONI Università di Salerno Fondamenti di Informatica Corso di Laurea Ingegneria Corso B Docente: Ing. Giovanni Secondulfo Anno Accademico 2010-2011 ALGEBRA DELLE PROPOSIZIONI Fondamenti di Informatica Algebra

Dettagli

APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2014 2015 17.XI.2015

APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2014 2015 17.XI.2015 APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2014 2015 17.XI.2015 VINCENZO MARRA Indice Esercizio 1 1 Conversione di un numero naturale in base b.

Dettagli

CHIUSURE di MAGAZZINO di FINE ANNO

CHIUSURE di MAGAZZINO di FINE ANNO CHIUSURE di MAGAZZINO di FINE ANNO Operazioni da svolgere per il riporto delle giacenze di fine esercizio Il documento che segue ha lo scopo di illustrare le operazioni che devono essere eseguite per:

Dettagli

dall argomento argomento della malloc()

dall argomento argomento della malloc() Allocazione dinamica Quando? Tutte le volte in cui i dati possono crescere in modo non prevedibile staticamente a tempo di sviluppo Un array con dimensione i fissata a compile-time non è sufficiente È

Dettagli

La struttura dati ad albero binario

La struttura dati ad albero binario La struttura dati ad albero binario L albero è una struttura dati nella quale le informazioni sono organizzate in modo gerarchico, dall alto verso il basso. Gli elementi di un albero si chiamano nodi,

Dettagli

Introduzione agli Abstract Data Type (ADT)

Introduzione agli Abstract Data Type (ADT) Introduzione agli Abstract Data Type (ADT) La nozione di tipo di dato astratto Sappiamo già che quando si affrontano problemi complessi è necessario procedere in due fasi: Specifica dell algoritmo Implementazione

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

RICORSIVITA. Vediamo come si programma la soluzione ricorsiva al problema precedente: Poniamo S 1 =1 S 2 =1+2 S 3 =1+2+3

RICORSIVITA. Vediamo come si programma la soluzione ricorsiva al problema precedente: Poniamo S 1 =1 S 2 =1+2 S 3 =1+2+3 RICORSIVITA 1. Cos è la ricorsività? La ricorsività è un metodo di soluzione dei problemi che consiste nell esprimere la soluzione relativa al caso n in funzione della soluzione relativa al caso n-1. La

Dettagli

[MANUALE VISUAL BASIC SCUOLA24ORE PROF.SSA PATRIZIA TARANTINO] 14 dicembre 2008

[MANUALE VISUAL BASIC SCUOLA24ORE PROF.SSA PATRIZIA TARANTINO] 14 dicembre 2008 Se devo memorizzare più valori che sono in qualche modo parenti dal punto di vista logico, posso usare il concetto di vettore di variabili (array). Ad esempio, se devo memorizzare le temperature di tutti

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

Concetto di Funzione e Procedura METODI in Java

Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Metodi e Sottoprogrammi Mentre in Java tramite le classi e gli oggetti è possibile

Dettagli

Fondamenti di Informatica e Laboratorio T-AB Ingengeria dell Automazione a.a. 2008/2009. Lab 02 Tipi semplici in C

Fondamenti di Informatica e Laboratorio T-AB Ingengeria dell Automazione a.a. 2008/2009. Lab 02 Tipi semplici in C Fondamenti di Informatica e Laboratorio T-AB Ingengeria dell Automazione a.a. 2008/2009 Lab 02 Tipi semplici in C Obiettivo dell esercitazione Acquistare familiarità con i tipi di dato semplici supportati

Dettagli

Dall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Dall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni Dall Algoritmo al Programma Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni IL PROGRAMMA Gli algoritmi sono modelli di descrizione astratti e per controllarne il funzionamento devono essere

Dettagli

Automatizzare i compiti ripetitivi. I file batch. File batch (1) File batch (2) Visualizzazione (2) Visualizzazione

Automatizzare i compiti ripetitivi. I file batch. File batch (1) File batch (2) Visualizzazione (2) Visualizzazione Automatizzare i compiti ripetitivi I file batch Anno accademico 2000-01 1 Spesso capita di dover eseguire ripetutatmente una data sequenza di comandi Introdurli uno a uno da tastiera è un processo lento

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

Modulo 3 - Elaborazione Testi 3.5 Stampa unione

Modulo 3 - Elaborazione Testi 3.5 Stampa unione Università degli Studi dell Aquila Corso ECDL programma START Modulo 3 - Elaborazione Testi 3.5 Stampa unione Maria Maddalena Fornari Stampa Unione Processo che permette di unire dati provenienti da tipi

Dettagli

OTTAVA ESPERIENZA DI LABORATORIO. L elaborazione dei files in C

OTTAVA ESPERIENZA DI LABORATORIO. L elaborazione dei files in C CORSO DI LABORATORIO DI INFORMATICA CORSO DI LAUREA IN SDM ANNO ACCADEMICO 2011-2012 Docente: R. Sparvoli Esercitazioni: R. Sparvoli, F. Palma OTTAVA ESPERIENZA DI LABORATORIO L elaborazione dei files

Dettagli

Elementi di semantica denotazionale ed operazionale

Elementi di semantica denotazionale ed operazionale Elementi di semantica denotazionale ed operazionale 1 Contenuti! sintassi astratta e domini sintattici " un frammento di linguaggio imperativo! semantica denotazionale " domini semantici: valori e stato

Dettagli

Algoritmi e Strutture Dati & Laboratorio di Algoritmi e Programmazione

Algoritmi e Strutture Dati & Laboratorio di Algoritmi e Programmazione Algoritmi e Strutture Dati & Laboratorio di Algoritmi e Programmazione Esercizi II parte Esercizio 1 Discutere la correttezza di ciascuna delle seguenti affermazioni. Dimostrare formalmente la validità

Dettagli

Tabelle Pivot - DISPENSE

Tabelle Pivot - DISPENSE Tabelle Pivot - DISPENSE Definizione Pivot Table: strumento che permette di riepilogare ed analizzare i dati di una tabella dinamicamente. Sono utilità che consentono di aggregare i dati secondo i criteri

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 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

Le funzioni in C. I programmi C sono costituiti da definizioni di variabili e funzioni.

Le funzioni in C. I programmi C sono costituiti da definizioni di variabili e funzioni. Le funzioni in C I programmi C sono costituiti da definizioni di variabili e funzioni. Una definizione di funzione ha il seguente formato: tipo-ritornato nome-funzione(lista-parametri) { dichiarazioni

Dettagli

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati Condizione di sincronizzazione Qualora si voglia realizzare una determinata politica di gestione delle risorse,la decisione se ad

Dettagli

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2010-11 13 settembre 2011

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2010-11 13 settembre 2011 Cognome Nome Matricola Postazione PC Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2010-11 13 settembre 2011 Testo Il database di un videonoleggio è costituito da due vettori paralleli.

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

per immagini guida avanzata Organizzazione e controllo dei dati Geometra Luigi Amato Guida Avanzata per immagini excel 2000 1

per immagini guida avanzata Organizzazione e controllo dei dati Geometra Luigi Amato Guida Avanzata per immagini excel 2000 1 Organizzazione e controllo dei dati Geometra Luigi Amato Guida Avanzata per immagini excel 2000 1 Il raggruppamento e la struttura dei dati sono due funzioni di gestione dati di Excel, molto simili tra

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

Convertitori numerici in Excel

Convertitori numerici in Excel ISTITUTO DI ISTRUZIONE SUPERIORE G. M. ANGIOY CARBONIA Convertitori numerici in Excel Prof. G. Ciaschetti Come attività di laboratorio, vogliamo realizzare dei convertitori numerici con Microsoft Excel

Dettagli

Cluster. Vicino alla temperatura critica gli spin formano grandi gruppi (cluster)

Cluster. Vicino alla temperatura critica gli spin formano grandi gruppi (cluster) Cluster Vicino alla temperatura critica gli spin formano grandi gruppi (cluster) all interno di ogni gruppo è molto improbabile riuscire a flippare uno spin perché ci sarebbe una grande perdita di energia,

Dettagli

Tipicamente un elaboratore è capace di trattare domini di dati di tipi primitivi

Tipicamente un elaboratore è capace di trattare domini di dati di tipi primitivi TIPI DI DATO Tipicamente un elaboratore è capace di trattare domini di dati di tipi primitivi numeri naturali, interi, reali caratteri e stringhe di caratteri e quasi sempre anche collezioni di oggetti,

Dettagli

Sono casi particolari di MCF : SPT (cammini minimi) non vi sono vincoli di capacità superiore (solo x ij > 0) (i, j) A : c ij, costo di percorrenza

Sono casi particolari di MCF : SPT (cammini minimi) non vi sono vincoli di capacità superiore (solo x ij > 0) (i, j) A : c ij, costo di percorrenza Il problema di flusso di costo minimo (MCF) Dati : grafo orientato G = ( N, A ) i N, deficit del nodo i : b i (i, j) A u ij, capacità superiore (max quantità di flusso che può transitare) c ij, costo di

Dettagli

Esercizi su. Funzioni

Esercizi su. Funzioni Esercizi su Funzioni ๒ Varie Tracce extra Sul sito del corso ๓ Esercizi funz_max.cc funz_fattoriale.cc ๔ Documentazione Il codice va documentato (commentato) Leggibilità Riduzione degli errori Manutenibilità

Dettagli

Gestione dei File in C

Gestione dei File in C Gestione dei File in C Maurizio Palesi DIIT Università di Catania Viale Andrea Doria 6, 95125 Catania mpalesi@diit.unict.it http://www.diit.unict.it/users/mpalesi Sommario In questo documento saranno introdotte

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

GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL

GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL GUIDA RAPIDA BOZZA 23/07/2008 INDICE 1. PERCHÉ UNA NUOVA VERSIONE DEI MODULI DI RACCOLTA DATI... 3 2. INDICAZIONI GENERALI... 4 2.1. Non modificare la struttura dei fogli di lavoro... 4 2.2. Cosa significano

Dettagli

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica Fondamenti di Informatica Algebra di Boole: Concetti di base Fondamenti di Informatica - D. Talia - UNICAL 1 Algebra di Boole E un algebra basata su tre operazioni logiche OR AND NOT Ed operandi che possono

Dettagli

Gestione della memoria. Paginazione Segmentazione Segmentazione con paginazione

Gestione della memoria. Paginazione Segmentazione Segmentazione con paginazione Gestione della memoria Paginazione Segmentazione Segmentazione con paginazione Modello di paginazione Il numero di pagina serve come indice per la tabella delle pagine. Questa contiene l indirizzo di base

Dettagli

Arduino: Programmazione

Arduino: Programmazione Programmazione formalmente ispirata al linguaggio C da cui deriva. I programmi in ARDUINO sono chiamati Sketch. Un programma è una serie di istruzioni che vengono lette dall alto verso il basso e convertite

Dettagli

Studente: SANTORO MC. Matricola : 528

Studente: SANTORO MC. Matricola : 528 CORSO di LAUREA in INFORMATICA Corso di CALCOLO NUMERICO a.a. 2004-05 Studente: SANTORO MC. Matricola : 528 PROGETTO PER L ESAME 1. Sviluppare una versione dell algoritmo di Gauss per sistemi con matrice

Dettagli

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14. Pietro Frasca.

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14. Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14 Pietro Frasca Lezione 11 Martedì 12-11-2013 1 Tecniche di allocazione mediante free list Generalmente,

Dettagli