Università Politecnica delle Marche Porting di
Transcript
Università Politecnica delle Marche Porting di
Università Politecnica delle Marche FACOLTÀ DI INGEGNERIA Corso di Laurea in Ingegneria Informatica e dell’Automazione Dipartimento di Ingegneria dell’Informazione Tesi di Laurea Porting di applicazioni per l’ambiente su firmware proprietario Laureando: Riccardo Mataloni Relatore: Prof. Aldo Franco Dragoni Anno Accademico 2010 – 2011 Indice Introduzione 2 Capitoli 1 - Delphi 3 1.1 1.2 1.3 1.4 1.5 – Presentazione del Linguaggio – Caratteristiche – IDE – Versioni – Sintassi e Struttura del Codice 3 4 5 6 9 Capitolo 2 – DiaCli 12 2.1 – Manuale 2.2 – Indici e Diagrammi 2.3 – Codice 12 14 33 Capitolo 3 – Database 38 3.1 – Popolamento del Database 39 Capitolo 4 – V.i.a.100% 44 4.1 – Manuale 4.2 – Esempio di Report 45 47 1 Introduzione Questa tesi illustra il lavoro svolto durante il tirocinio previsto nel piano di studi presso la Microsoftware di Ancona. Fondata nel 1982, da Gennaio 2010 la Microsoftware è stata incorporata all'interno di Namirial S.p.A. , società che sviluppa, distribuisce e produce software e servizi ad alto contenuto tecnologico per Professionisti, Enti ed Aziende. La nuova Technical Unit Microsoftware della Namirial S.p.A. opera nello sviluppo di software tecnico rivolto ad imprese edili ed è oggi leader in Italia per la gestione della sicurezza nei cantieri, per la contabilità lavori, la manutenzione degli edifici, la contabilità industriale di cantiere e la termotecnica. I programmi presi in esami saranno il DiaCli (Diagrammi Climatici) e il V.i.a.100% (Valutazione Impatto Ambientale) entrambi sviluppati dalla società Russi Software di Bolzano ed ora commercializzati della Namirial S.p.A. all’interno del pacchetto “Ambiente”, nuova famiglia di software dedicata agli utenti che si occupano di progettazione di impianti ad energie rinnovabili, delle problematiche connesse agli studi di Impatto Ambientale e della Certificazione di Sostenibilità Ambientale. Entrambi i programmi presentano parti di codice non ottimizzato e ormai superato (i programmi risalgono al 2001 circa), in particolare il V.i.a.100% non veniva supportato dai sistemi Windows Vista e Windows 7 su cui si è testato il codice originale. Si è quindi operato un aggiornamento e ottimizzazione del vecchio codice; nel caso del DiaCli questo ha comportato una riscrittura completa del programma prendendo solo come modello l’interfaccia originale. Infine si è provveduto alla creazione del database richiesto dal DiaCli che, comprensivo degli 8035 record e quasi 80 campi, completamente compilato raggiunge un accettabile peso di 12 Mb. 2 1 - Delphi 1.1 – Presentazione del linguaggio Il Delphi nasce come evoluzione del "Borland Turbo Pascal". Il Pascal è un linguaggio ad alto livello che è stato sviluppato alla fine degli anni sessanta dal professor Niklaus Wirth a Zurigo. Il suo scopo era quello di realizzare un linguaggio comprendente un piccolo numero di concetti fondamentali di programmazione sufficienti ad insegnarla in forma di disciplina logica e sistematica; nello stesso tempo voleva un linguaggio che fosse facile ed efficiente da implementare sulla maggior parte dei calcolatori. Il suo successo nel conseguire questo obiettivo può essere misurato dalla rapida diffusione dell'uso del PASCAL sia come linguaggio usato nella didattica dei principi di programmazione, sia come linguaggio effettivo per scrivere software di base ed applicativo. L' evoluzione del Pascal negli anni successivi al suo sviluppo, lo ha portato alla definizione della versione 7.0 (includente la v. 2.0 del Turbo Vision) completamente orientata agli oggetti che a tutt'oggi viene ancora utilizzato per la realizzazione di software per DOS. Con l'avvento di Windows la Borland rilasciò il Borland Pascal pacchetto basato sul linguaggio Object Pascal, naturale evoluzione del Turbo Pascal. La stesura di applicazioni in ambiente Windows rimaneva comunque alquanto lenta e complessa; era necessario conoscere molto bene la programmazione in Object Pascal e le immancabili API di Windows. Fu così che la Borland rilasciò la prima versione del Delphi, la 1.0 appunto. Dal 1996 in poi il Delphi si è evoluto ad una velocità impressionante. Con il Delphi la Borland ha introdotto il concetto di sviluppo Visuale RAD (Rapid Application Development) orientato alla gestione degli eventi come nel Visual Basic, senza perdere però i vantaggi della compilazione Pascal. E’ da notare che il codice scritto in Delphi è conforme all'Object Pascal di cui ha anche ereditato il numero di versione; la versione 8.0 per Delphi 1.0, la 9.0 per Delphi 2.0 etc. Ciò è confermato dal fatto che è possibile compilare vecchie applicazioni in Object Pascal tramite il compilatore Delphi. Come l'Object Pascal, il Delphi è un linguaggio GP (General Purpose) ovvero un tool di sviluppo che permette di realizzare applicazioni di qualsiasi tipo, più o meno complesse e tutto questo con una semplicità estrema. Nel 2001 è stata rilasciata una versione per Linux conosciuta come Kylix (coppa greca da vino). 3 Per ogni versione di Delphi sono disponibili tre differenti edizioni (a parte Delphi 1.0 che ne conta solamente due, Client e Server): Le versioni "Standard" sono, come dice il nome stesso, il livello base di Delphi per la realizzazione di applicazioni semplici che non richiedono l'utilizzo di database e l'accesso ad Internet, perlopiù indirizzate a studenti, hobbisti, principianti. Le versioni "Developer" o "Professional" sono rivolte a coloro che utilizzano il Delphi per lavoro e che necessitano di supporto per database e internet. Le versioni "Enterprise", come dice il nome, sono rivolte alle aziende che necessitano del supporto per il controllo di versione, accesso a database sever, internet, internazionalizzazione del software. 1.2 – Caratteristiche Le caratteristiche degne di nota del linguaggio Delphi includono: La manipolazione trasparente degli oggetti tramite riferimenti/puntatori; Le proprietà come costrutti del linguaggio, che permettono la lettura e la scrittura in modo trasparente attraverso l'accesso alle variabili membro. Proprietà di tipo "indice" e le proprietà di default che permettono un accesso alle collezioni di oggetti in modo semplice e trasparente. Delegati, ossia puntatori a metodi con controllo del tipo, che vengono usati per collegare gli eventi notificati dai componenti. Delegazione dell'implementazione di interfaccia ad una variabile membro o una proprietà della classe. Facile implementazione di gestori per i messaggi di Windows tramite legame tra un metodo della classe con il numero o nome del messaggio Windows da gestire. Pieno supporto a Unicode. Molte delle funzionalità precedentemente elencate sono state prima introdotte da Delphi ed in seguito adottate anche in altri linguaggi. Le componenti principali degli ambienti di lavoro Delphi e Kylix sono il linguaggio, Delphi, la VCL (Visual Component Library) e CLX (Component Library for Cross Platform), e una facile e robusta connettività ai database, combinati con un potente IDE (Integrated Development Environment) e altri strumenti di supporto. Fra i vari vantaggi su cui il linguaggio Delphi può contare va citata la possibilità di compilare in un singolo eseguibile, semplificando la distribuzione e riducendo i problemi di diverse versioni delle DLL, la disponibilità di VCL e componenti di altri produttori insieme al codice sorgente, compilazione per diverse piattaforme dallo 4 stesso codice sorgente, oltre ad un ottimo ambiente di sviluppo di cui parleremo successivamente 1.3 – IDE Embarcadero RAD Studio, introdotto con il passaggio di Delphi da Codegear a Embarcadero, è una suite completa per lo sviluppo e per sviluppare in modo visuale GUI-intensive, data-driven application per Windows, .NET, PHP e il Web. RAD Studio include Delphi, C++Builder, Delphi Prism, e RadPHP; fornendo un potente supporto ad un linguaggio compilato, managed e dinamico, una connettività eteregonea per i database, un completo framework visuale di componenti e un vasto ecosistema di componenti di terze parti permettendo di produrre applicazioni fino a 5 volte più veloci, per Windows, Web e piattaforme database. L’ambiente di sviluppo di RAD Studio semplifica drammaticamente e velocizza lo sviluppo di applicazioni visuali e data- intensive per desktop GUI e touch-screen. L’IDE include tutti gli strumenti necessari per iniziare la progettazione di applicazioni, quali: 5 Form Designer, una finestra vuota, detta anche scheda, in cui progettare l’interfaccia utente (UI) dell’applicazione. Component palette per la visualizzazione di componenti visuali e non, che è possibile utilizzare per progettare l’interfaccia utente. Object Inspector per esaminare e modificare le proprietà e gli eventi degli oggetti. Object TreeView per visualizzare e modificare le relazioni logiche dei componenti. Code editor per la stesura e la modifca della logica sottostante di un programma. Project Manager per gestire i file che costituiscono uno o più progetti. Debugger integrato per ricercare e corregere gli errori nel codice. Molti altri strumenti, come gli editor di proprietà per modificare i valori delle properietà di un oggetto. Strumenti per la riga comandi che comprendono compilatori, linker e altri programmi di utilità. Complete librerie di classi con moltissimi oggetti riutilizzabili. La maggior parte degli oggetti forniti nella libreria di classi sono accessibili nell’IDE dalla Component palette. Per convenzione, i nomi degli oggetti nella libreria di classi iniziano con una T, come TStatusBar. I nomi degli oggetti che cominciano con la lettera Q sono basati sulla libreria Qt e vengono utilizzati per applicazioni multipiattaforma. 1.4 – Versioni Elenco Completo delle versioni rilasciate: Borland Delphi 1: Rilasciato nel 1995 per Windows 3.1 16 bit, fu il primo esempio di ambiente di sviluppo RAD. Nato come successore del Turbo Pascal e Borland Pascal, si fece subito conoscere per le performance del suo compilatore e per la potenza del suo integrated development environment (IDE). Il linguaggio utilizzato (Delphi) venne anche chiamato Object Pascal. Borland Delphi 2: Rilasciato nel 1996, permetteva di realizzare applicazioni a 32 bit e veniva venduto insieme a Delphi 1 per lo sviluppo di applicazioni a 16 bit. Borland Delphi 3: Rilasciato nel 1997, portava con se ancora Delphi 1 per lo sviluppo di applicazioni a 16 bit. La versione 3.0 introduce una novità 6 interessante non presente nelle versioni precedenti: il supporto per i packages. Al pari delle librerie DLL permettono di raggruppare del codice e permetterne il caricamento solo quando se ne ha la necessità; e di condividere, magari con altre applicazioni, il codice in esse contenuto. Borland Delphi 4: Rilasciato nel 1998. Borland Delphi 5: Rilasciato nel 1999. Kylix: la versione di Delphi per Linux, venne rilasciato nel 2001. Il Kylix, per chi già conosce Delphi, ne è la riproduzione esatta: stessa interfaccia grafica, stessi tools, stesse impostazioni e disposizione dei comandi. La cosa più importante è che il codice compilato con il Kylix è nativo per Linux ovvero in formato ELF. Per permettere il porting nella maniera più semplice possibile la Borland ha dovuto riscrivere l'intera VCL (Visual Component Library, ovvero la libreria dei componenti visuali di Delphi) in maniera tale che fosse indipendente dalla piattaforma. Ciò è stato realizzato creando una nuova libreria la CLX (si legge clix) che si basa per la parte grafica sulle librerie Qt (oggetti multipiattaforma della trolltech) le stesse utilizzate anche per la realizzazione della parte grafica di KDE. Borland Delphi 6: Rilasciato nel 2002. Borland Delphi 7: Rilasciato nell'agosto del 2002 è divenuta la versione più utilizzata dalla maggior parte degli utenti. Il successo di questo ambiente di sviluppo era dovuto alla sua stabilità, velocità e bassissime richieste di hardware per poter funzionare degnamente. In Delphi 7 è stata introdotta la possibilità di sviluppare anche applicazioni web. Borland Delphi 8: Rilasciato nel dicembre 2003, è stata l'unica versione di Delphi che permette di compilare codice sorgente Delphi (Object Pascal) tramite il framework .Net di Microsoft. E' stata la versione meno apprezzata soprattutto per il fatto di non poter scrivere e compilare applicazioni native (*.exe). Borland Delphi 2005: Chiamato anche Delphi 9 o Borland Developer Studio 3.0, ha finalmente riunito in un unico ambiente di sviluppo il supporto a Delphi per Win32, Delphi per .NET e C#. Borland Delphi 2006: Alla fine del 2005 è stato rilasciato Delphi 2006 che includeva la possibilità di sviluppare applicazioni in C#, Delphi.NET, Delphi Win32 e C++ tramite un unico IDE. In febbraio del 2006, Borland annunciò la volontà di vendere il suo IDE e la sua linea di prodotti per database. Nel 7 settembre del 2006, uno spin-off di Borland, formato per lo più dagli sviluppatori degli IDE di Borland stessa, rilasciò la versione "Turbo" dell'IDE che offrono solo una singola personalità, rendendo così disponibili i nuovi prodotti Turbo Delphi per Win32, Turbo Delphi per .NET, Turbo C++ e Turbo C#. Per ogni ambiente furono rilasciate due versioni: "Explorer" (versione gratuita) e "Professional" (a pagamento ma ad un costo molto ridotto rispetto ai precedenti ambienti di sviluppo). La particolarità era che la versione "Explorer" permetteva anche lo sviluppo di applicazioni commerciali. Il 14 novembre del 2006, Borland vendette i suoi IDE a CodeGear. Codegear Delphi 2007: Delphi 2007 (Delphi 11), la prima versione realizzata da CodeGear, fu rilasciato il 16 marzo del 2007. La versione 2007 ha aggiunto, funzionalità specifiche per Windows Vista, una nuova versione di dbExpress interamente in Object Pascal, librerie web con supporto per AJAX, e, limitatamente alla versione .NET, i generici. Delphi 2007 è disponibile standalone, o come parte di RAD Studio 2007 (che include anche il supporto allo sviluppo in C++). CodeGear vendette la linea di IDE appena acquisita a Embarcadero Technologies nel 2008. Embarcadero Delphi 2009: Delphi 2009 (Delphi 12, nome in codice Tiburón), aggiunse molte nuove features, tra cui la riscrittura completa della VCL e il pieno supporto a UNICODE. Embarcadero Delphi 2010: Delphi 2010 (Delphi 14, nome in codice Weaver; la versione 13 è stata saltata) è stato rilasciato il 25 agosto 2009. Embarcadero Delphi XE: Delphi XE (Delphi 2011/Delphi 15, nome in codice Fulcrum) è stato rilasciato il 30 agosto 2010. Delphi Starter Edition: Il 27 Gennaio, 2011 Embarcadero ha annunciato la disponibilità di una nuova Starter Edition, che ha lo scopo ad hobbisti e le aziende in startup ad ottenere una versione con caratteristiche leggermente ridotte ad un prezzo basso. Embarcadero Delphi XE2: Delphi XE2 (Delphi 2012/Delphi 16). Il 1 settembre 2011 Embarcadero ha rilasciato RAD Studio XE2 che comprendeva Delphi XE2 con C + + Builder, Prism XE2 e RadPHP XE2. Delphi XE2 supporta la piattaforma x64. Delphi XE2 include anche una libreria multipiattaforma chiamato FireMonkey. E aprire la strada alla portabilità delle applicazioni Delphi a Mac OS X e Ios. 8 1.5 - Sintassi e struttura del codice Un'applicazione Delphi consiste di due tipi di codice sorgente: una o piu' unit e un file di programma. Le unit possono essere considerate files secondari, i quali sono legati alla parte principale dell'applicazione, il programma, In teoria, questo e' vero. In pratica, il file di programma e' normalmente generato automaticamente, ed ha un ruolo secondario. Semplicemente fa partire il programma e visualizza il form principale. Il codice del file di programma, o progetto (DPR), puo' essere editato manualmente o manipolato tramite il Project Manager o i settaggi del Project Options relativi al programma o ai form dell'applicazione. La struttura del file di programma e' normalmente piu' semplice della struttura delle unit. program Project1; uses Forms, Unit1 in ‘Unit1.PAS’ {Form1DateForm}; begin Application.Initialize; Application.CreateForm (TForm1, Form1); Application.Run; end. Le applicazioni Delphi fanno un intensivo uso delle unit, o moduli di programma. Le unit, di fatto, sono le basi della modularizzazione nel linguaggio prima che le classi fossero introdotte. In un'applicazione Delphi, ogni form ha una corrispondente unit dietro ad esso anche se non è detto che ogni unit abbia una form associata. Quando si aggiunge un nuovo form ad un progetto Delphi in realta' aggiunge una nuova unit, che definsce la classe del nuovo form. Il concetto di una unit e' semplice. Una unit ha un nome univoco che corrisponde al nome del file (con estensione .PAS), una sezione d'interfaccia che dichiara cosa e' visibile alle altre unit e una sezione d'implementazione con il codice reale e altre dichiarazioni nascoste. Infine, la unit puo' avere una sezione di inizializzazione (opzionale) con codice che viene eseguito quando il programma e' caricato in memoria e una sezione di finalizzazione (opzionale) con codice che viene eseguito quando il programma viene terminato. Unit Unit1; {Intestazione} Interface Uses {Lista di unit} Implementation 9 Uses {Lista di unit} {Codice per la definizione di tipi, variabili, funzioni e procedure} Initialization {Codice di inizializzazione della unit} Finalization {Codice di finalizzazione della unita} End. L'interfaccia di una unit puo' dichiarare numerosi elementi differenti, incluso procedure, funzioni, varabili globali e tipi. Nelle applicazioni Delphi, i tipi di dato sono probabilmente i piu' usati. Delphi automaticamente crea una nuova classe in una unit ogni volta che si crea un form. Comunque, la dichiarazione di un form non e' certamente la sola funzione delle unit in Delphi. Si possono avere ancora le unit tradizionali, con funzioni e procedure e si possono avere unit con classi che non hanno a che fare con i form o gli elementi visuali. La seconda clausola uses, all'inizio della sezione d'implementazione, indica ulteriori unit che servono solo nel codice di implementazione. Per quanto riguarda la sintassi il Delphi, come il Pascal, usa il set di caratteri ASCII, comprendente le lettere dalla A alla Z e dalla a a alla z, le cifre da 0 a 9 e gli altri caratteri standard. Non fa distinzione tra maiuscole e minuscole, come il C++ o il Java o Javascript. Gli identificatori per variabili, costanti, procedure, ecc… possono avere una lunghezza qualunque, non devono contenere spazi e devono iniziare con una lettere (minuscola o maiuscola) o con un sottotratto. I numeri possono essere scritti in forma decimale e esadecimale; quelli reali inoltre possono essere rappresentati dalla forma esponenziale inserendo E (o e) seguito dal numero dell’esponente. Nel Delphi le stringhe di caratteri vengono racchiuse fra apostrofi semplici (‘); alcuni casi particolari sono: stinga null, composta esclusivamente da due apostrofi (‘’); presenza di apostrofi all’interno della stringa, rappresentati con un apostrofo doppio (‘all’’interno’); stringa di un solo apostrofo, composta da quattro apostrofi consecutivi, il primo e l’ultimo per identificare la stringa e i due centrali per il carattere dell’apostrofo singolo (‘’’’). I commenti vanno preceduti da // o racchiusi fra parentesi graffe {}. Ogni singola istruzione deve terminare con il carattere ; . Di seguito una lista degli operatori del linguaggio Delphi: 10 11 2 - DiaCli Programma per la generazione di diagrammi ed il calcolo di indici climatici a partire dai dati del database incluso, contenente informazioni su tutti i comuni italiani: altitudine, quota, provincia, precipitazioni mensili, ecc…. 2.1 - Manuale GESTIONE ARCHIVIO permette di creare/aggiornare/cancellare un file dati. La finestra relativa alla gestione dell’archivio presenta tre sezioni. Nella prima, oltre al bottone per l’uscita, è possibile digitare il nome della Stazione da ricercare per eventuali modifiche o cancellazioni, oppure da creare per l’inserimento di nuovi dati. La ricerca delle stazioni già registrate è automatica ed avviene anche per lettere parziali (per es.: digitando un’iniziale il cursore si posizionerà sulla prima stazione nel relativo ordine alfabetico). Inoltre, utilizzando le frecce è possibile effettuare lo scrolling dell’elenco di stazioni. I dati relativi alla stazione indicata dal cursore sono visualizzati nell’ultima sezione per consentire un immediato riscontro e permetterne l’aggiornamento o l’eliminazione. Nel caso dell’aggiornamento si procederà all’inserimento dei dati da variare posizionandosi direttamente col cursore e cliccando sulla finestra corrispondente oppure con l’impiego di tabulazione. Al termine delle variazioni si dovrà confermare o meno per registrare i nuovi dati. Nel caso in cui si desidera eliminare l’intera Stazione, dati i possibili rischi d’errore, dopo aver cliccato su “elimina” si dovrà confermare l’operazione. IMPOSTA STAMPANTE permette l’accesso alla routine di gestione stampanti del S.O. Windows. Pertanto è possibile selezionare diverse stampanti, modificare i parametri di orientamento, dimensioni, alimentazione dei fogli, ecc. 12 VISUALIZZAZIONE I diagrammi visualizzabili sono i seguenti: - Diagramma Pluviometrico - Diagramma Termometrico - Diagramma Termopluviometrico - Diagramma Ombrotermico - Climogramma Precipitazioni-Temperature - Climogramma di Peguy - Diagramma di Walter&Lieth Dopo aver cliccato sul diagramma scelto viene visualizzata la relativa finestra, che riporta due sezioni. Nella prima è possibile scegliere la Stazione da visualizzare digitando le iniziali o effettuando lo scrolling con l’uso delle frecce. Nella seconda sezione il grafico e le relative tabelle si aggiorneranno automaticamente. Per tornare al Menu principale cliccare sull’icona “Uscita”. STAMPE Analogamente a quanto visto nel paragrafo precedente, con questa opzione è possibile stampare i seguenti diagrammi e le relative tabelle di dati: - Diagramma Pluviometrico - Diagramma Termometrico - Diagramma Termopluviometrico - Diagramma Ombrotermico - Climogramma Precipitazioni-Temperature - Climogramma di Peguy - Diagramma di Walter&Lieth Dopo aver cliccato sul diagramma scelto viene visualizzata una finestra che consente di scegliere la Stazione da stampare digitando le iniziali o effettuando lo scrolling con l’uso delle frecce (inizio-avanti-indietro-fine). 13 2.2 - Indici e Diagrammi Diagramma termometrico Andamento delle T (°C) in 12 mesi Diagramma pluviometrico Andamento delle P (mm) in 12 mesi 14 Diagramma termo-pluviometrico. Andamento congiunto delle P (mm) e T (°C) in 12 mesi Diagramma ombrotermico Andamento congiunto delle P (mm) e T (°C) in 12 mesi, ideato da Bagnouls & Gaussen, è tra i più utilizzati al mondo negli studi di ecologia applicata. Il diagramma individua il periodo annuale da considerare “arido”, che è quello in cui la curva delle precipitazioni scende al di sotto di quella delle temperature, ossia quando la quantità delle precipitazioni è inferiore al valore doppio della temperatura (P<2T). 15 Diagramma di Peguy Andamento congiunto delle P e T in 12 mesi, ideato da Peguy, è utilizzato negli studi ambientali ed ecologici. Questi diagrammi riassumono sinteticamente le condizioni termo-pluviometriche delle diverse località considerate e sono costruiti a partire dai dati medi mensili di temperatura media e precipitazioni cumulate. Sulle ascisse è riportata la scala delle T (°C), mentre sulle ordinate quella delle P (mm). Dall’unione dei 12 punti relativi a ciascun mese, si ottiene un poligono la cui forma e dimensione rappresentano le caratteristiche climatiche della stazione. Sul diagramma è anche riportata un’area triangolare di riferimento che distingue una situazione di clima temperato (all’interno dell’area stessa), glaciale, freddo e umido, caldo ed arido, caldo ed umido. Il triangolo è costruito sulla base delle seguenti coordinate dei vertici: (0 °C, 0 mm); (23, 4 °C, 40 mm); (15 °C, 200 mm). La posizione dell’area poligonale rispetto a quella triangolare di riferimento fornisce una rappresentazione immediata delle condizioni climatiche. Diagramma di Walter & Lieth Andamento congiunto delle P e T in 12 mesi, ideato da Walter & Lieth per migliorare le informazioni ottenibili dal diagrammaombrotermico di Bagnouls & Gaussen. Il layout di questo diagramma 16 (Fig.6) è ancora in elaborazione e sarà completato nei prossimi mesi, ma la fase di progettazione è già avviata e prevede: 1. Il diagramma riporta sull'ascissa i mesi dell'anno, sull'ordinata di destra le P medie del periodo di riferimento e a sinistra le T medie. I valori delle T sono riportati a scala doppia rispetto a quelli di precipitazioni (scala 1°C = 2 mm). 2. Quando i valori mensili delle precipitazioni superano i 100 mm il periodo piovoso viene rappresentato, oltre questo valore, in nero e a scala dieci volte più piccola di quella precedentemente adottata per le precipitazioni mensili minori di 100 mm. 3. Legenda del grafico 17 Pluviofattore di Lang Il Pluviofattore di Lang (o Regenfaktor) mette in relazione precipitazioni e temperature in modo estremamente semplice ma efficace. Esso è definito come: 18 Con: P = precipitazioni medie annue (mm) T = temperatura media annua (°C) Quest’indice ha un significato ecologico ed esprime l'umidità delle stazioni entro determinati limiti di temperatura. In effetti, ove non si tenesse conto di questi parametri termici, lo stesso valore del rapporto potrebbe risultare da valori, e quindi da climi, diversi. Per questo motivo, è importante considerare questo indice congiuntamente alla temperatura. Classi climatiche secondo Lang Umido > 160 Temperato umido 160 ÷ 100 Temperato caldo 100 ÷ 60 Semiarido 60 ÷ 40 Steppa < 40 Rapporto tra indice e caratteristiche pedologiche Indice di De Martonne. Anche l’indice di De Martonne, o Indice di aridità di De Martonne, mette in relazione precipitazioni e temperature in modo estremamente semplice ed efficace. La formula proposta da De Martonne è la seguente: 19 Con: P = precipitazioni medie annue (mm) T = temperatura media annua (°C) Questa formula è migliorativa rispetto a quella di Lang e tende a ridurre alcuni inconvenienti che si verificavano applicando P/T nelle località caratterizzate da clima freddo. Infatti, in tali situazioni, con temperature medie annue prossime a 0 °C si hanno valori troppo elevati, mentre per valori inferiori a 0 °C si ottengono dei valori negativi del pluviofattore di Lang. Classi climatiche secondo De Martonne Umido > 40 Temperato umido 40 ÷ 30 Temperato caldo 30 ÷ 20 Semiarido 20 ÷ 10 Steppa 10 ÷ 5 Deserto < 5 Rapporto tra indice e vegetazione deserto < 5 steppa 5 ÷ 10 prateria 10 ÷ 20 macchia 20 ÷ 30 foresta di duri legnose 30 ÷ 45 foresta di aestlilignosae > 45 Indice di De Martonne MENSILE Anche l’indice mensile di De Martonne, o Indice di aridità mensile di De Martonne, mette in relazione precipitazioni e temperature in modo estremamente semplice ed efficace. La formula proposta da De Martonne è la seguente: 20 Con: p = precipitazioni medie mensili (mm) t = temperatura media mensile (°C) L’andamento mensile dell’indice fornisce indicazioni circa il periodo di stasi vegetativa, infatti secondo Paterson la durata del periodo vegetativo coincide con il numero di mesi in cui l’indice supera la soglia di 20. Classi climatiche secondo De Martonne Deserto < 5 Steppa circumdesertica 5 ÷ 15 Prateria 15 ÷ 20 Macchia 20 ÷ 30 Foresta > 30 Indice di De Martonne & Gottmann Anche l’indice mensile di De Martonne & Gottmann mette in relazione precipitazioni e temperature in modo estremamente efficace. La formula proposta da De Martonne & Gottmann è da impiegarsi soprattutto quando non si è in presenza di zone con clima tipicamente mediterraneo ma con climi generalmente più continentali. La formula proposta da De Martonne & Gottmann è la seguente: Con: P = precipitazioni medie annue (mm) T = temperatura media annua (°C) p = precipitazioni medie del mese più arido (mm) t = temperatura media del mese più arido (°C) 21 Classi climatiche secondo De Martonne & Gottmann Umido > 40 Temperato umido 40 ÷ 30 Temperato caldo 30 ÷ 20 Semiarido 20 ÷ 10 Steppa 10 ÷ 5 Deserto < 5 Rapporto tra indice e vegetazione deserto < 5 steppa 5 ÷ 10 prateria 10 ÷ 20 macchia 20 ÷ 30 foresta di duri legnose 30 ÷ 45 foresta di aestlilignosae > 45 Indice di Fournier L’indice di Fournier, detto anche di capacità erosiva di Fournier, mette in relazione precipitazioni e temperature in modo estremamente efficace. La formula proposta da De Martonne & Gottmann è da impiegarsi soprattutto quando non si è in presenza di zone con clima tipicamente mediterraneo ma con climi generalmente più continentali. La formula proposta da De Martonne & Gottmann è la seguente: Con: p2 = precipitazioni del mese più piovoso (mm) P = precipitazioni medie annue (mm) Indice di Angot L’indice di Angot è utilizzato per evidenziare i regimi pluviometrici mensili. La formula proposta da Angot è la seguente: 22 Con: Pi = precipitazioni medie mensili (mm) gi = numero dei giorni di ciascun mese (n) P = precipitazioni medie annuali (mm) Indice di Gams L’indice di Gams, o indice di continentalità igrica, mette in relazione precipitazioni e quota ed è utilizzato soprattutto nelle aree montuose, dove i dati termici sono spesso insufficienti. La formula proposta da Gams è la seguente: Con: P = precipitazioni medie annue (mm) A = quota (m s.l.m.) Secondo Fenaroli, con indice inferiore a 20° sussistono le condizioni favorevoli per l'insediamento di specie vegetali termofile. Mentre con indice maggiore di 20 sussistono le condizioni favorevoli all’insediamento di specie sciafile e microterme. In stazioni del piano montano e subalpino con un indice di continentalità superiore a 50° presentano caratteristiche ottimali per le formazioni ascrivibili al larice-cembreto, mentre sono limitanti per abetine e peccete. Indici di Rivas Martinez Gli indici proposti da Rivas Martinez per la sua classificazione climatica sono di diverso tipo. La formula proposta da Rivas Martinez per l’ indice ombrotermico annuale è la seguente: Con: PM = somma delle precipitazioni medie dei mesi con temperatura T > 0° (mm) TM = somma delle temperature medie degli stessi mesi (°C) 23 Attraverso l’indice ombrotermico di Rivas-Martinez si può definire la regione mediterranea (IO < 1,5) oppure la regione temperata (IO >= 2). Invece, se 1,5 < IO < 2, si rende necessario calcolare l’indice ombrotermico estivo. La formula proposta da Rivas Martinez per l’ indice ombrotermico estivo è la seguente: Con: PE = somma delle precipitazioni medie dei mesi estivi (mm) TE = somma delle temperature medie dei mesi estivi (°C) Attraverso gli indici ombrotermici di Rivas-Martinez si può definire il macrobioclima della stazione, se temperato o mediterraneo. Quando IOE > 2, ci troviamo nella macroregione temperata, negli altri casi siamo nella regione temperata quando si verificano le seguenti condizioni. 24 Nell’ambito del macrobioclima temperato è possibile individuare una variante submediteranea che si realizza quando durante almeno un mese estivo P i > 2Ti o quando IOE2 < 2,5. La formula proposta da Rivas Martinez per l’ indice di continentalità è la seguente: Con: TC = temperatura media del mese più caldo dell’anno (°C) TF = temperatura media del mese più freddo dell’anno (°C) Quest’indice consente di inquadrare il tipo di continentalità secondo lo schema di seguito riportato. 25 La formula proposta da Rivas Martinez per l’ indice di termicità è la seguente: Con: T = temperatura media annua (°C) Tmin(f) = media delle temperature minime del mese più freddo (°C) Tmax(f) = media delle temperature massime del mese più freddo (°C) Quest’indice è stato successivamente corretto nel seguente modo: Con C che si calcola secondo il seguente schema: In base al Macrobioclima di riferimento è possibile individuare i vari orizzonti e piani, secondo lo schema di seguito riportato. 26 27 In base alla quantità di precipitazioni annuali e alla regione Macrobioclimatica di appartenenza, secondo lo schema seguente è possibile determinare l’ombrotipo proposto da Rivas-Martinez. Indici di Mitrakos Gli indici proposti da Mitrakos permettono di quantificare lo stress idrico (D) e quello termico (C), attraverso le seguenti formule. La formula proposta da Mitrakos per lo stress idrico è la seguente: Con: Pn = precipitazioni medie mensili (mm) 28 La formula proposta da Mitrakos per lo stress termico è la seguente: Con: Tm = temperatura media minima mensile (mm) Le due formule di D e C di Mitrakos vengono poi utilizzate per calcolare anche i seguenti parametri: 1) WCS (winter cold stress), pari alla Sommatoria dei valori di C dei mesi invernali: 2) YCS (year cold stress), pari alla Sommatoria dei valori di C dei 12 mesi: 3) SDS (summer drought stress), pari alla Sommatoria dei valori di D dei mesi estivi: 4) YDS (year drought stress), pari alla Sommatoria dei valori di D dei 12 mesi: 29 Mesi aridi secondo Köppen I mesi aridi secondo la classificazione di Köppen sono quelli in cui: Con: p = precipitazioni medie mensili (mm) Mesi aridi secondo Gaussen I mesi aridi secondo la classificazione di Gaussen sono quelli in cui: Con: p = precipitazioni medie mensili (mm) t = temperature medie mensili (°C) Quoziente pluviometrico di Emberger Il Quoziente pluviometrico di Emberger classifica il clima mediterraneo mediante un semplice calcolo. E’ definito come: Con: P = precipitazioni medie annue (mm) Tmax = media mensile delle temperature massime nel mese più caldo (°K, °C +273,15) Tmin = media mensile delle temperature minime nel mese più freddo (°K, °C +273,15) Quest’indice ha un significato per l’area mediterranea ed esprime l'umidità delle stazioni. È importante considerare questo indice congiuntamente alla temperatura. 30 Classi climatiche secondo Emberger (Mediterraneo) M.Umido > 90 M.Subumido 50 ÷ 90 M.Subarido 30 ÷ 50 M.Arido 20 ÷ 30 M.Sahariano < 20 Indice di aridità di Crowther Anche l’indice di Crowther, utile per la stima dell’aridità, mette in relazione precipitazioni e temperature in modo estremamente semplice ed efficace. La formula proposta da Crowther è la seguente: Con: P = precipitazione totale annua (cm) T = temperatura media annua (°C) Utile per valutare la necessità di irrigazione, l’indice è così classificato: Ia < -30 = deserto -30 < Ia < -15 = irrigazione continua (semiaridità) -15 < Ia < 0 = irrigazione necessaria 0 < Ia < 15 = irrigazione opportuna 15 < Ia < 40 = irrigazione stagionale Ia > 40 = autosufficienza idrica Indice bioclimatico di J.L.Vernet Anche l’indice di J.L.Vernet è relativo alla stima dell’aridità. L’indice mette in relazione precipitazioni e temperature in modo proporzionale al livello di umidità. La formula proposta da Vernet è la seguente: Con: H = precipitazioni medie della stagione più piovosa (cm) h = precipitazioni medie della stagione meno piovosa (cm) P = precipitazioni medie annuali (mm) Me = temperatura media massima estiva (°C) 31 Pe = precipitazioni medie estive Indice igrometrico di Amann L’indice di Amann è relativo all’oceanicità del clima. L’indice mette in relazione precipitazioni e temperature riferite all’escursione annua. La formula proposta da Amann è la seguente: Con: P = precipitazioni medie annuali (mm) T = temperatura media annuale (°C) E = escursione termica annuale, Tluglio-Tgennaio (°C) L’indice è così classificato: oceanico temperato > 500 intermedio 300 ÷ 500 continentale < 300 Indice FAO L’indice FAO, detto anche FAO-UNEP o indice di aridità e desertificazione FAO, è un indice bioclimatico che è stato introdotto in base alle convenzioni delle Nazioni Unite. L’indice mette in relazione precipitazioni ed evapotraspirazione. La formula proposta è la seguente: Con: P = precipitazioni medie annuali (mm) ETP = evapotraspirazione media annuale (mm) L’indice è così classificato: clima iperarido < 0,05 clima arido 0,05 ÷ 0,2 clima semiarido 0,2 ÷ 0,5 clima subumido secco 0,5 ÷ 0,65 clima umido > 0,65 Inoltre si avrà: - desertificazione se Ia < 0,03 - nessun rischio di desertificazione se Ia > 0,75 32 2.3 - Codice Estratto del codice dall’unità per la gestione dell’archivio “Archivio”: unit Archivio; interface uses Windows, Messages, SysUtils, Controls, Forms, Dialogs, DB, ADODB, Grids, ExtCtrls, Common, Mask, jpeg, DBTables; type TGArchivio = class(TForm) DBGrid1: TDBGrid; Source: TDataSource; Panel1: TPanel; Label1: TLabel; RicStazione: TEdit; DatabaseButton: TPanel; Navigator: TDBNavigator; 33 Variants, Classes, Graphics, DBGrids, DBCtrls, StdCtrls, ShowPanel: TPanel; Temperature: TGroupBox; Precipitazioni: TGroupBox; ChangeBtn: TButton; NewBtn: TButton; DeleteBtn: TButton; OkBtn: TButton; IgnoreBtn: TButton; lbStazione: TLabel; metri: TLabel; lbQuota: TLabel; Image1: TImage; Image2: TImage; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; Label8: TLabel; Label9: TLabel; Label10: TLabel; Label11: TLabel; Label12: TLabel; Label13: TLabel; Label14: TLabel; Label15: TLabel; Label16: TLabel; Label17: TLabel; Label18: TLabel; Label19: TLabel; Label20: TLabel; Label21: TLabel; Label22: TLabel; Label23: TLabel; Label24: TLabel; Label25: TLabel; Tempprec: TADOTable; PDBEdit0: TDBEdit; PDBEdit11: TDBEdit; PDBEdit1: TDBEdit; PDBEdit2: TDBEdit; PDBEdit3: TDBEdit; PDBEdit4: TDBEdit; PDBEdit5: TDBEdit; PDBEdit6: TDBEdit; PDBEdit7: TDBEdit; PDBEdit8: TDBEdit; PDBEdit9: TDBEdit; PDBEdit10: TDBEdit; TDBEdit0: TDBEdit; TDBEdit11: TDBEdit; 34 TDBEdit1: TDBEdit; TDBEdit2: TDBEdit; TDBEdit3: TDBEdit; TDBEdit4: TDBEdit; TDBEdit5: TDBEdit; TDBEdit6: TDBEdit; TDBEdit7: TDBEdit; TDBEdit8: TDBEdit; TDBEdit9: TDBEdit; TDBEdit10: TDBEdit; Quota: TDBEdit; Stazione: TDBEdit; procedure RicStazioneChange(Sender: TObject); procedure NewBtnClick(Sender: TObject); procedure ChangeBtnClick(Sender: TObject); procedure OkBtnClick(Sender: TObject); procedure IgnoreBtnClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var TCloseAction); procedure DeleteBtnClick(Sender: TObject); Action: private { Private declarations } public { Public declarations } end; var GArchivio: TGArchivio; ArrayTemp: array [0 .. 11] of TDBEdit; ArrayPrec: array [0 .. 11] of TDBEdit; S: string; implementation {$R *.dfm} procedure TGArchivio.ChangeBtnClick(Sender: TObject); begin ChangeMode(NewBtn, ChangeBtn, DeleteBtn, OkBtn, IgnoreBtn, ArrayTemp, ArrayPrec, Stazione, Quota, DBGrid1, RicStazione, Navigator); Tempprec.edit; Stazione.setFocus; end; procedure TGArchivio.DeleteBtnClick(Sender: TObject); 35 begin if Messagedlg('Cancellare il record mtConfirmation, mbYesNo, 0)= mryes then Tempprec.Delete; end; procedure TGArchivio.FormClose(Sender: TCloseAction); begin GArchivio.Free end; TObject; selezionato?', var Action: procedure TGArchivio.FormCreate(Sender: TObject); var i: integer; begin Tempprec.sort:='Stazione ASC'; Tempprec.Open; for i := 0 to 11 do begin ArrayTemp[i] := FindComponent(Format('TDBEdit%d', [i])) as TDBEdit; ArrayPrec[i] := FindComponent(Format('PDBEdit%d', [i])) as TDBEdit; end; end; procedure TGArchivio.IgnoreBtnClick(Sender: TObject); begin ChangeMode(NewBtn, ChangeBtn, DeleteBtn, OkBtn, IgnoreBtn, ArrayTemp, ArrayPrec, Stazione, Quota, DBGrid1, RicStazione, Navigator); Tempprec.Cancel; end; procedure TGArchivio.NewBtnClick(Sender: TObject); begin ChangeMode(NewBtn, ChangeBtn, DeleteBtn, OkBtn, IgnoreBtn, ArrayTemp, ArrayPrec, Stazione, Quota, DBGrid1, RicStazione, Navigator); Tempprec.Append; Stazione.setFocus; end; procedure TGArchivio.OkBtnClick(Sender: TObject); begin try ChangeMode(NewBtn, ChangeBtn, DeleteBtn, OkBtn, IgnoreBtn, ArrayTemp, ArrayPrec, Stazione, Quota, DBGrid1, RicStazione, Navigator); Tempprec.Post; Tempprec.sort:='Stazione ASC'; except Messagedlg('Errore! Dati mancanti o stazione già esistente', mtError, [mbOK], 0); 36 ChangeMode(NewBtn, ChangeBtn, DeleteBtn, OkBtn, IgnoreBtn, ArrayTemp, ArrayPrec, Stazione, Quota, DBGrid1, RicStazione, Navigator); end; end; procedure TGArchivio.RicStazioneChange(Sender: TObject); begin Tempprec.Locate('Stazione', RicStazione.Text, [loCaseInsensitive, loPartialKey]) end; end. 37 3 - Database Il database è stato creato a partire dai dati disponibili sul sito dell’E.N.E.A. (Ente per le Nuove tecnologie, l’Energia e l’Ambiente) all’indirizzo clisun.casaccia.enea.it/ per quanto riguarda le temperature 38 Scheda ENEA per Ancona Per le informazioni relative alle precipitazioni si è usato il database già completo fornito dalla società Microsoftware. 3.1 - Popolamento del Database Il procedimento seguito per la popolazione del database è il seguente: 1. Scaricamento di un file .txt per ognuno dei 120 comuni 2. Inserimento dei dati contenuti nei file .txt scaricati per mezzo di un semplice programma: procedure TForm1.Button2Click(Sender: TObject); var dati: TStringList; str: string; i, inizio, length: integer; miss: boolean; begin dati := TStringList.Create; length := 6; TempPrec.Open; TempPrec.First; while not TempPrec.eof do begin miss := false; 39 try dati.LoadFromFile('C:\Users\Riccardo\Downloads\Dati DIaCLI\'+TempPrec.Fieldbyname('Stazione').Value+'.txt'); except miss := true; end; if not miss then begin TempPrec.Edit; str := dati[2]; str:= stringreplace(str, '.',',', [rfReplaceAll]); for i := 0 to 11 do begin TempPrec.fields.FieldByNumber(i + 68).Value := strtofloat(copy(str, 10 + length*i, length)); end; str := ''; str := dati[4]; str:= stringreplace(str, '.',',', [rfReplaceAll]); for i := 0 to 11 do TempPrec.fields.FieldByNumber(i + 56).Value := strtofloat(copy(str, 10 + length*i, length)); str := ''; end; dati.Clear; TempPrec.Next; end; end; 3. Calcolo per estrapolazione dei valori relativi alle province mancanti per mezzo della normativa UNI 10349-1994: 40 Anche in questo caso si è sviluppata una semplice applicazione per automatizzare il procedimento: procedure TForm1.Button1Click(Sender: TObject); var i, vicino, delta: integer; temp, min, latT, latS, longT, longS: double; begin TempPrec.Open; Stazioni.Open; repeat if TempPrec.FieldByName('MaxEstrGennaio').isNull then begin min := 50.67; longT := TempPrec.FieldValues['Longitudine']; latT := TempPrec.FieldValues['Latitudine']; case TempPrec.FieldByName('Zona').Value of 1: delta := 178; 2: delta := 200; 3: delta := 147; 4: delta := 174; 5: delta := 192; end; Stazioni.First; repeat begin 41 if (TempPrec.FieldByName('Zona').Value = Stazioni.FieldByName('Zona').Value) then begin if not(Stazioni.FieldByName('MaxEstrGennaio').isNull) then begin longS := Stazioni.FieldValues['Longitudine']; latS := Stazioni.FieldValues['Latitudine']; temp := sqrt(power(longT - longS, 2) + power(latT latS, 2)); if (temp < min) then begin min := temp; vicino := Stazioni.FieldValues['ID']; end; end; end; Stazioni.Next; end; until Stazioni.eof; Stazioni.Locate('ID', vicino, []); TempPrec.Edit; i := 0; for i := 56 to 79 do begin TempPrec.fields.FieldByNumber(i).Value := Roundto(Stazioni.fields.FieldByNumber(i).Value ((TempPrec.FieldByName('Quota').Value Stazioni.FieldByName('Quota') .Value) / delta), -2); end; end; TempPrec.Next; until TempPrec.eof; end; Il risultato finale è il database voluto contenente tutti i dati richiesti dalle funzioni del programma riferiti a tutti gli 8094 comuni italiani: 42 43 4 - V.I.A.100% Programma per la Valutazione di Impatto Ambientali della Russi Software. La valutazione di impatto ambientale è una procedura amministrativa di supporto per l'autorità decisionale finalizzato a individuare, descrivere e valutare gli impatti ambientali prodotti dell'attuazione di un determinato progetto. La procedura di VIA è normata come strumento di supporto decisionale tecnico-amministrativo. Nella procedura di VIA la valutazione sulla compatibilità ambientale di un determinato progetto è svolta dalla pubblica amministrazione, che si basa sia sulle informazioni fornite dal proponente del progetto, sia sulla consulenza data da altre strutture della pubblica amministrazione, sia sulla partecipazione della gente e dei gruppi sociali. In questo contesto con "impatto ambientale" si intende un effetto causato da un evento, un'azione o un comportamento sullo stato di qualità delle componenti ambientali (non necessariamente componenti naturali). Gli impatti ambientali (da non confondere con inquinamenti o degradi o pressioni ambientali) mostrano quali modifiche di stato ambientale possono produrre le azioni e le pressioni antropiche. Nella VIA si cerca quindi di stimare quali sono gli impatti, cioè le modifiche, positive o negative, degli stati ambientali di fatto, indotti dall'attuazione di un determinato progetto. Un obiettivo importante delle procedure di VIA è quello di favorire la partecipazione della gente nei processi decisionali sull'approvazione dei progetti. La procedura di VIA è un insieme di: dati tecnico-scientifici su stato, struttura e funzionamento dell'ambiente; dati su caratteristiche economiche e tecnologiche dei progetti; previsioni sul comportamento dell'ambiente e interazioni tra progetto e componenti ambientali; procedure tecnico-amministrative; istanze partecipative e decisionali (partecipazione pubblica); sintesi e confronto fra costo del progetto e dei suoi impatti e benefici diretti/indiretti del progetto. Nella VIA sono valutati e computati impatti ambientali diretti o indiretti, a breve o lungo termine, permanenti o temporanei, singoli o cumulativi. La VIA viene effettuata considerando i seguenti fattori ambientali, anche in correlazione tra di loro: essere umano, fauna e flora; suolo, acqua, aria, fattori climatici e paesaggio; 44 beni materiali e patrimonio culturale. È evidente che, dovendo confrontare in termini monetari benefici e danni apportati da un progetto a questi fattori, un aspetto molto delicato è l'attribuzione di un valore economico ad essi. Per fare un esempio semplificato, nella VIA di una attività molto inquinante andrà dato un valore all'aumento dei posti di lavoro così come al probabile aumento di malattie nei residenti, ed i due valori andranno confrontati. 4.1 – Manuale CREA FILE FATTORI La fase di creazione del file permette di creare archivi specifici e archivi-tipo che, col tempo, vanno a realizzare una vera e propria banca dati di liste di fattori. Si richiede il numero dei fattori da registrare nel file e, per ognuno di loro, una relativa descrizione. Al termine si potranno registrare in un file i dati inseriti. In seguito è possibile inserire, modificare, visualizzare e stampare l’intera lista dei fattori. Al nome del file viene automaticamente assegnata l’estensione .FAT. CREAZIONE FILE COMPONENTI La fase di creazione del file componenti è del tutto analoga a quella del file fattori descritta al punto precedente. Anche questo file potrà essere modificato come quello relativo ai fattori in momenti successivi alla creazione. In questo caso l’estensione dei file sarà .CMP CALCOLA Per il calcolo degli impatti elementari vengono offerte due differenti procedure. La prima, valuta l’impatto elementare mediante un modello matriciale con valori d’influenza A=2B, B=2C e C=1; mentre l’influenza complessiva di tutti i valori è pari a 10. E’ una procedura semplificata ed è da preferire se non si è particolarmente esperti. La seconda, valuta l’impatto elementare mediante un modello matriciale con al massimo 7 valori d’influenza, tutti variabili. Anche l’influenza complessiva di tutti i valori prescelti è variabile. Dopo aver digitato le specifiche relative alla descrizione dell’opera, alla località , alla data e al redattore della V.I.A., si dovrà inserire il nome del file componenti e del file 45 fattori. Il programma permette anche il calcolo dei valori minimi e massimi degli impatti elementari per fornire un confronto con i risultati ottenuti. Nel caso di matrici a più livelli di correlazione, la fase relativa all’assegnazione delle magnitudo minima, propria e massima, che si sviluppa per ogni singolo fattore, è direttamente seguita dalla richiesta di input relativa al numero dei livelli di correlazione (per es. 4: A, B, C, D); ai loro coefficienti moltiplicativi (per es. A=2B, B=2C, C=2D, D=1) e alla sommatoria (per es. 10). La procedura di programma prosegue con l’assegnazione dei livelli di correlazione, effettuata per ogni componente. In caso di assenza di correlazione si dovrà digitare “0”. Terminata questa fase di inserimento compariranno all’interno di una finestra i risultati degli impatti elementari relativi ad ogni componente. E’ possibile scorrere l’elenco utilizzando le frecce poste sul lato destro del riquadro. A questo punto viene offerta sia l’opzione di stampa che quella di registrazione (dopo la registrazione è sempre possibile stampare il file utilizzando la procedura descritta al paragrafo 7). L’estensione dei file risultato è .RIS e la destinazione (drive e/o directory) può essere prescelta con modalità analoghe alla fase di ricerca. GRAFICO La rappresentazione grafica dei file elaborati avviene mediante il caricamento del file progetto prescelto dopo averne eseguito il calcolo degli impatti elementari. Il grafico è del tipo ad istogrammi paralleli, con le componenti in ascissa e gli impatti elementari in ordinata (Impatti elementari minimi, propri e massimi). 46 4.2 - Esempio di Report Ecco un esempio dei dati in uscita al termine dell’elaborazione della valutazione di impatto ambientale: 47 File Progetto: 48 49 50 51 52 53 File Componenti: 54 File Fattori: 55 File Grafico: 56