Relazione di fine tirocinio
|
|
|
- Luisa Salerno
- 9 anni fa
- Просмотров:
Транскрипт
1 DIPARTIMENTO DI INGEGNERIA Laurea Magistrale in Ingegneria delle Infrastrutture Viarie e Trasporti Anno Accademico 2014/2015 Relazione di fine tirocinio Acquisizione delle competenze informatiche necessarie per la simulazione numerica del ballast ferroviario e la modellazione e processazione di segnali elettromagnetici acquisiti mediante indagine Georadar Tutor universitario: Prof. Ing. Andrea Benedetto Tirocinante: Maria Giulia Brancadoro
2 Sommario Premessa... 1 Introduzione... 2 Parte I: Apprendimento del Linguaggio di Programmazione C I.1 Invocazione delle librerie e delle funzioni... 6 I.2 Dichiarazione delle costanti e inizializzazione delle variabili... 9 I.3 Gli operatori e le istruzioni I.3.1 Gli operatori I.3.2 Le istruzioni L istruzione condizionale Le istruzioni di ciclo Compilazione ed esecuzione del programma Parte II: Acquisizione delle conoscenze necessarie per la simulazione mediante software E2GPR e GPRMax II.1 E 2 GPR CAD II.2 E 2 GPR PLOTTER Parte III: Apprendimento del linguaggio di programmazione MatLab III.1 Interfaccia grafica di MatLab III.2 Le variabili e gli operatori III.3 Elaborazione dei codici su piattaforma MatLab Conclusioni... 33
3 Premessa Premessa L attività di tirocinio si è svolta presso il Laboratorio di Infrastrutture Viarie del Dipartimento di Ingegneria dell Università degli Studi Roma Tre, ed ha interessato il periodo intercorso tra la data del 6 Ottobre 2015 ed il 7 Dicembre del medesimo anno, per una durata complessiva di 150 ore, corrispondenti a 6 CFU Crediti Formativi Universitari. Durante tale periodo ci si è focalizzati sull acquisizione delle competenze informatiche necessarie per la riproduzione e lo studio, in ambiente virtuale, dell inquinamento della sovrastruttura ferroviaria ed, in particolare, dello strato della massicciata ferroviaria. 1
4 Introduzione Introduzione L attività di tirocinio si inserisce all interno di un ampio progetto di ricerca finalizzato allo studio ed alla valutazione dei livelli di inquinamento ( fouling ) che possono interessare lo strato della massicciata ferroviaria, con conseguenti ripercussioni sulla regolarità e la sicurezza dell esercizio ferroviario. L inquinamento della massicciata provocato, in parte, dalla risalita di materiale fino dagli strati più profondi della sovrastruttura ferroviaria in seguito alle sollecitazioni di carico - scarico indotte dalla circolazione dei convogli, in parte dall abrasione delle traverse e dallo sfregamento delle ruote sui binari, può determinare, infatti, un occlusione dei vuoti presenti tra i grani di pietrisco che costituiscono lo strato, andandone a compromettere le caratteristiche di resistenza meccanica e di permeabilità. Il ballast ferroviario si presenta, infatti, come un materiale sciolto le cui caratteristiche di resistenza a taglio sono, quindi, direttamente attribuibili allo scheletro solido, aspetto che d altra parte spiega la prevalenza del contributo di resistenza attritiva piuttosto che di quella coesiva. La risposta del ballast alle sollecitazioni esterne è, infatti, connessa all attrito che si viene a generare tra le superfici di contatto dei singoli grani di pietrisco che costituiscono lo strato della massicciata. Il materiale fino, di cui sopra, interponendosi tra i singoli grani di pietrisco può assumere il ruolo di lubrificante comportando uno scorrimento tra essi, che si traduce in un inevitabile abbattimento delle caratteristiche di resistenza meccanica dello strato. L interposizione di materiale a grana fine determina, inoltre, una riduzione del volume dei vuoti presenti tra i grani di pietrisco, sfavorendo il regolare deflusso delle acque meteoriche che dovrebbero percolare attraverso il piano di regolamento ferroviario. Alla luce, quindi, delle ripercussioni che il manifestarsi del fenomeno del fouling ferroviario può avere sulla sicurezza dell esercizio, si rivela necessario, oggi, individuare delle tecnologie in grado di poterlo monitorare in continuo sulle intere tratte ferroviarie. 2
5 Introduzione A tal proposito, una strumento innovativo sotto il profilo tecnologico, impiegato nell ultimo ventennio per la valutazione dell idoneità granulometrica del ballast ferroviario, e solo in tempi più recenti per la quantificazione dei livelli di inquinamento dello strato della massicciata, è il GPR - Ground Penetrating Radar. L impiego di tale strumentazione assume un ruolo di significativa importanza nelle fasi di diagnostica e di monitoraggio della sovrastruttura ferroviaria ed è, oggi, argomento di forte interesse per i gestori delle infrastrutture ferroviarie, a fronte dei limiti delle procedure tradizionali e degli innumerevoli vantaggi che gli si possono attribuire. Il vantaggio primario è connesso alla capacità dello strumento di effettuare misure in velocità, quindi, di acquisire una quantità di dati significativi ed in tempi contenuti, senza la necessità di interrompere o di alterare la regolare circolazione ferroviaria. La tecnologia non distruttiva propria del georadar si contrappone, d altra parte, alle procedure di diagnosi tradizionale, le quali prevedono il prelievo puntuale di campioni di sovrastruttura, un metodo che, oltre ad intaccare l integrità dell opera, non è in grado, per sua natura, di fornire informazioni in continuo sull intero itinerario, dato che si rivela necessario se si considera la rigorosità degli standard prestazionali richiesti alle sempre più attuali linee ad Alta Velocità e, comunque, non affidabile di fronte alla significativa estensione longitudinale della rete ferroviaria. Alla luce dei pericoli connessi al potenziale manifestarsi del fenomeno del fouling ferroviario, e contando sulle potenzialità georadar, il progetto di ricerca ha posto le sue basi in una prima fase di sperimentazione finalizzata alla riproduzione in scala di laboratorio di un provino di ballast sul quale, provvedendo ad un graduale inquinamento, è stata ottenuta la risposta del Georadar, ancora oggi in fase di elaborazione e processazione. L analisi del fenomeno in ambiente reale ha, poi, posto le premesse per poter portare avanti la ricerca mediante una riproduzione ed analisi dello stesso in realtà virtuale. Un aspetto quest ultimo sicuramente significativo se si considera come la definizione di un modello in grado di replicare la realtà consenta di analizzare il fenomeno nel suo complesso, anche in condizioni non semplicemente riproducibili in una sperimentazione reale. 3
6 Introduzione Alla luce di tale di tale premessa è chiaro, quindi, come l'attività di tirocinio si sia concentrata sull acquisizione di tutte le competenze informatiche necessarie per riprodurre e studiare in ambiente virtuale l'inquinamento della sovrastruttura ferroviaria. L attività si è articolata in tre fasi: Una prima fase di conoscenza del Linguaggio di programmazione C++ per l'implementazione di un codice numerico in grado di simulare un provino di ballast in un dominio opportunamente definito. Una seconda fase di apprendimento del software E 2 GPR, ovvero di un software che lavora in ambiente GPRMax, ne facilita l'impiego ed i tempi di elaborazione. Una terza, ed ultima, fase volta alla conoscenza del Linguaggio di programmazione MatLab, necessario per l'elaborazione e la processazione dei segnali restituiti dal software GPRMax ed il confronto con quelli reali ottenuti nella sperimentazione effettuata in ambiente reale sui medesimi scenari. 4
7 Parte I: Apprendimento del Linguaggio di Programmazione C++ Parte I: Apprendimento del Linguaggio di Programmazione C++ La realizzazione di un codice di programmazione è un operazione complessa che richiede una chiara conoscenza dell obiettivo che si vuole raggiungere. Consiste, infatti, nella capacità di sviluppare un algoritmo o un insieme di algoritmi compositi la cui esecuzione da parte del compilatore permetta di ottenere il risultato voluto. L implementazione degli algoritmi avviene mediante l impiego di un opportuno linguaggio di programmazione ed il compito del programmatore è proprio quello di ricercare la migliore semantica del linguaggio che permette di eseguire le varie operazioni. Il linguaggio C++ è un linguaggio di programmazione nato nel 1983 e sviluppato da Bjarne Stroustrup, un ricercatore presso i Bell Laboratories. Erede del linguaggio C, il C++ viene definito un linguaggio di programmazione orientato agli oggetti basato sulla tipizzazione statica, ovvero quella politica di tipizzazione impiegata nei linguaggi di programmazione in cui si prevede l assegnazione tipi alle variabili. Come ogni linguaggio di programmazione, C++ richiede l acquisizione di un software che consenta di sviluppare il codice sorgente nel linguaggio voluto. Tra i numerosi IDE - Integrated Development Environment disponibili gratuitamente in commercio, nel caso specifico, è stato impiegato Dev-C++. Il software permette di Creare Progetti tramite il comando Consol Application e restituisce un file sorgente denominato, di default, main con estensione.cpp in cui è possibile sviluppare il codice di programmazione. 5
8 Parte I: Apprendimento del Linguaggio di Programmazione C++ Figura 1: Creazione progetto mediante Consol Application Figura 2: Area di programmazione C++ Si riporta di seguito una descrizione delle principali componenti del linguaggio, focalizzando l attenzione su quelle impiegate per l implementazione del codice di riproduzione del provino di ballast. I.1 Invocazione delle librerie e delle funzioni Il primo passo per la scrittura di un codice riguarda l invocazione delle librerie, ovvero un insieme di funzioni precompilate che possono essere richiamate nello sviluppo del codice, tramite il comando #include, per sfruttarne le funzionalità. L invocazione di una libreria permette, quindi, di usufruire delle funzioni e richiamare tipi di variabili che sono precompilate e predefinite al suo interno. 6
9 Parte I: Apprendimento del Linguaggio di Programmazione C++ Il linguaggio C++ è dotato di una Libreria Standard al cui interno vi sono classi e funzioni raggruppate in circa 50 header files, ovvero file di intestazione che hanno lo scopo di aiutare il programmatore nell utilizzo delle funzioni. Tali header files, generalmente denominati semplicemente come librerie, permettono quindi di facilitare lo sviluppo anche dei codici più complessi ed articolati. Si riportano di seguito alcuni header files, ovvero quelli principalmente impiegati per l implementazione del codice di programmazione necessario alla riproduzione del provino di ballast. Figura 3: Estratto del codice, invocazione degli header files iostream e cstdio: dichiarano funzioni e variabili che consentono la gestione delle informazioni di input ed output; stdlib: dichiara funzioni e variabili di utilità generale come la gestione della memoria e la conversione tra tipi di dato; math: dichiara funzioni che permettono di eseguire le più comuni operazioni e trasformazioni matematiche; time: fornisce un accesso alle funzioni di acquisizione e manipolazione del tempo. 7
10 Parte I: Apprendimento del Linguaggio di Programmazione C++ Durante lo sviluppo di un codice di programmazione complesso, sia per motivi di leggibilità del codice che per motivi di semplicità computazionale, si provvede alla definizione di funzioni scritte ad hoc che si vanno ad aggiungere a quelle predefinite presenti nelle librerie del linguaggio. Tali funzioni sono costituite da una serie di comandi che il software è in grado di compilare in sequenza semplicemente richiamando il nome della funzione stessa, e si rivelano essere particolarmente efficaci, soprattutto quando l operazione che la funzione è in grado di eseguire si ripete più volte all interno del codice. La struttura di un codice di programmazione prevede che venga definito, innanzi tutto, il cosiddetto prototipo di funzione per ogni nuova funzione definita nel codice, con il quale si evidenzia il tipo di variabile restituita dalla funzione, il nome della funzione e la lista dei parametri di input da implementare nella funzione stessa, specificando il tipo ed il nome del parametro. Prototipo funzione: tipo_parametro_output nome_della_funzione (tipo_parametri_input) Per comprendere dove vengono invocate le funzioni sopra citate è necessario spiegare come all interno di ogni codice di programmazione esiste una ed un unica funzione chiamata main. Questa non è una funzione di libreria, ma la funzione principale da cui parte l esecuzione del programma. Le funzioni definite dal programmatore vengono, quindi, invocate all interno della funzione main secondo una sintassi simile a quella impiegata per la definizione del prototipo di funzione, con l unica differenza che nella specifica dei parametri di input viene indicato solo il nome della variabile. La definizione vera e propria delle funzioni, quindi, il corpo della funzione, viene sviluppato, invece, al di fuori della funzione main, nel rispetto della seguente sintassi: tipo_parametro_output nome_della_funzione (tipo_parametri_input) { dichiarazione variabili istruzioni della funzione } Il corpo di ogni funzione si articola, quindi, in due parti, una prima in cui vengono dichiarate le variabili impiegate per l esecuzione della funzione, ed una seconda in cui si esplicitano le istruzioni, quindi la sequenza delle operazioni che la funzione dovrà svolgere. 8
11 Parte I: Apprendimento del Linguaggio di Programmazione C++ Sotto si riportano, in ordine, degli estratti del codice di programmazione generato dove si evidenziano i tre momenti di dichiarazione, invocazione e definizione di una funzione all interno del codice. I Dichiarazione della funzione II Invocazione della funzione nel corpo della funzione main III Definizione della funzione I.2 Dichiarazione delle costanti e inizializzazione delle variabili Prima di passare allo sviluppo del codice vero e proprio all interno del corpo della funzione main, si procede con la dichiarazione delle costanti e l inizializzazione delle variabili. Per inizializzazione delle variabili si intende quella procedura volta ad assegnare alle variabili stesse il primo valore che esse dovranno assumere nel codice. Le variabili vengono definite, infatti, come delle celle utilizzate per memorizzare un valore o il risultato di un operazione. Ogni variabile viene identificata mediante un nome, ed è caratterizzata da un tipo, ovvero il 9
12 Parte I: Apprendimento del Linguaggio di Programmazione C++ tipo di dato che è in grado di memorizzare e da un valore, ossia il dato che la variabile assume in un determinato istante e che le viene assegnato mediante l operatore di assegnazione =. Il C++ fornisce una serie di tipi standard che permettono di definire alcune tipologie base di variabili. Tra questi vi sono il tipo char, che definisce un singolo carattere, intendendo con esso, una lettera, un simbolo o un numero, il tipo int, utile a rappresentare l insieme dei numeri interi positivi e negativi, ed i tipi double e float, anche detti in virgola mobile, necessari per indicare i numeri reali. Ciò che distingue, quindi, le variabili dalle costanti è la possibilità di poterne aggiornare il valore durante lo sviluppo del programma. In conclusione, se le costanti vengono dichiarate nella fase iniziale della scrittura del codice ed il loro valore rimarrà invariato, le variabili vengono, invece, inizializzate ad un determinato valore che risulterà essere diverso alla fine del processo di esecuzione. Dichiarazione delle costanti Inizializzazione delle variabili Figura 4: Dichiarazione delle costanti e inizializzazione delle variabili 10
13 Parte I: Apprendimento del Linguaggio di Programmazione C++ I.3 Gli operatori e le istruzioni Come spiegato precedentemente, lo sviluppo vero e proprio del codice avviene all interno della funzione main in cui in sequenza vengono articolate le diverse operazioni che il programma dovrà eseguire. Il linguaggio C++ mette a disposizione del programmatore una serie di strumenti che gli consentono di elaborare anche i codici più complessi in maniera semplice ed efficiente. Tali strumenti possono distinguersi in operatori e istruzioni. I.3.1 Gli operatori Un operatore è un simbolo o un insieme di simboli che permettono di operare sulle variabili e sulle costanti. In C++ vengono distinte diverse tipologie di operatori, si riporta di seguito un elenco dei principali. Gli operatori matematici: sono i tradizionali simboli impiegati per l esecuzione dei calcoli aritmetici (+, addizione; -, sottrazione; *, moltiplicazione; /,divisione; %, resto della divisione). Gli operatori di incremento e decremento: consentono di semplificare la scrittura delle operazioni di incremento e decremento di una varabile di un unità. In particolare, se si considera una variabile intera di tipo int identificata mediante il nome c valgono le seguenti semplificazioni: c = c + 1 c++ c = c 1 c Gli operatori relazionali: permettono di verificare le condizioni che sussistono tra due variabili relazionate tra loro ( >, maggiore di; <, minore di, >=, maggiore o uguale a; <=, minore o uguale a; ==, uguale a;!=, diverso da). 11
14 Parte I: Apprendimento del Linguaggio di Programmazione C++ Figura 5: Esempio impiego dell operatore relazionale diverso Gli operatori logici o booleani: utili in quei casi in cui si devono relazionare tra loro 2 o più condizioni al fine di eseguire un istruzione. In particolare, si evidenziano: &&, l operatore and utile ad imporre che siano verificate contemporaneamente 2 o più condizioni; Figura 6: Esempio impiego dell'operatore logico end l operatore or, in presenza del quale si procede con l eseguire l istruzione anche se una delle condizioni imposte non è verificata;!: l operatore not necessario per invertire il risultato di una condizione. 12
15 Parte I: Apprendimento del Linguaggio di Programmazione C++ I.3.2 Le istruzioni Le istruzioni rappresentano quella serie di comandi che il programma è portato ad eseguire in seguito al verificarsi o al non verificarsi di una o più condizioni imposte. La definizione delle istruzioni costituisce, quindi, la fase cardine per lo sviluppo del codice. La corretta definizione di queste ed il rispetto della sintassi prevista dal linguaggio sono, di conseguenza, sinonimo della corretta esecuzione del codice stesso. L istruzione condizionale Il linguaggio C++ mette a disposizione del programmatore una forma di istruzione condizionale definita a partire dagli operatori if else che permette di eseguire un istruzione differente a seconda che sia soddisfatta la condizione iniziale. Si riporta, di seguito la sintassi propria dell istruzione condizionale: if ( condizione ) istruzione-if else istruzione-else Emerge, quindi, come procedendo in sequenza, il compilatore verifica inizialmente la condizione e, soltanto nel caso in cui essa sia verificata, procede con l esecuzione dell istruzione if, altrimenti esegue l istruzione else. 13
16 Parte I: Apprendimento del Linguaggio di Programmazione C++ Figura 7: Esempio blocco di istruzioni, istruzione if - else Nell estratto del codice sopra riportato viene proposto un esempio di blocco di istruzioni che interessa l istruzione condizionale. Si può osservare, infatti, come l istruzione sia costituita da una successione di comandi if / if-else che vengono verificati in sequenza. L istruzione si interrompe nel momento in cui la condizione imposta è verificata, di conseguenza, qualora procedendo verso il basso si verificasse che nessuna condizione sia vera, il compilatore esegue l ultima condizione ed esce dal blocco. Le istruzioni di ciclo L istruzione condizionale rientra all interno di quelle che vengono definite come istruzioni composte e strutturate. Tra esse vi sono anche le cosiddette istruzioni di ciclo, le quali possono essere distinte in istruzioni di ciclo definite o indefinite a seconda che sia noto a priori il numero di cicli che il compilatore deve eseguire, oppure, tale numero, sia funzione della verifica di soddisfazione di una condizione imposta all inizio del ciclo stesso. 14
17 Parte I: Apprendimento del Linguaggio di Programmazione C++ L istruzione di ciclo più semplice è l istruzione while. Questa è costituita da una parte centrale detta corpo del ciclo, che consente di eseguire in ripetizione l istruzione o il blocco di istruzioni presenti in esso, fin quando è soddisfatta la condizione del while. Si riporta di seguito la sintassi dell istruzione: while (condizione) istruzione Quindi, ad ogni iterazione, procedendo in ordine, il compilatore verifica la veridicità della condizione, qualora essa sia soddisfatta, esegue l istruzione, altrimenti, esce dal ciclo while eseguendo l istruzione ad esso successiva. Figura 8: Esempio istruzione di ciclo while Dall estratto del codice sopra riportato si può osservare come il corpo dell istruzione possa assumere una struttura complessa ed essere costituito, non solo da più istruzioni, ma anche da comandi di invocazioni di istruzioni (si veda la funzione appartenenza_dominio (x,y,d)). Vi sono dei casi in cui la condizione del ciclo while viene definita a partire dal valore assunto da una variabile chiamata contatore, inizializzata prima dell inizio del ciclo stesso. Il ciclo viene eseguito dal compilatore con le medesime modalità sopra spiegate, con la differenza che, alla fine di ogni iterazione, l ultima istruzione del corpo del ciclo prevede l aggiornamento della variabile contatore. La ripetitività del ciclo è quindi legata, di volta in volta, al valore assunto dalla variabile contatore aggiornata. Inizio del ciclo while, inizializzazione della variabile ed esplicitazione della condizione di ciclo 15
18 Parte I: Apprendimento del Linguaggio di Programmazione C++ Figura 9: Esempio inizializzazione variabile ed esplicitazione della condizione del ciclo while Aggiornamento della variabile contatore Figura 10: Esempio incremento della variabile contatore I due estratti proposti sono relativi alla parte iniziale e finale del corpo del ciclo while definito a partire dalla condizione imposta sulla variabile contatore incr, ovvero incremento. Ad ogni iterazione, quindi, il compilatore esegue il corpo del ciclo ed aggiorna la variabile incr di due unità, ed uscirà dal ciclo solo quando, in seguito all aggiornamento della variabile, si verificherà che la variabile incr >=53. Oltre all istruzione while il linguaggio C++ mette a disposizione del programmatore un altra istruzione che ha le medesime funzionalità ma una differente sintassi, l istruzione for: for (inizializzazione ; condizione ; incremento ) istruzione Si osserva, quindi, come l istruzione for sia dotata di una sintassi più semplice in cui le operazioni di ciclo, inizializzazione della variabile, condizione ed incremento risultano tutte accorpate e definite all inizio del ciclo stesso. 16
19 Parte I: Apprendimento del Linguaggio di Programmazione C++ Figura 11: Esempio istruzione del ciclo for 4 Compilazione ed esecuzione del programma Terminata la fase di sviluppo del programma il software Dev-C++ permette di compilare ed eseguire il codice tramite due semplici comandi: compila ed segui. Compila Esegui Figura 12: Indicazione dei comandi per la compilazione e l'esecuzione del codice Una volta eseguito il programma è possibile verificarne i risultati che possono essere consultati all intero di opportuni file. Durante lo sviluppo del codice, a seconda del software in cui i risultati devono essere implementati, il programmatore ha, infatti, la possibilità di esplicitare l estensione dei file di output in cui si vuole che i risultati vengano stampati e di scriverli nel rispetto della sintassi dell eventuale software di destinazione. Si riporta di seguito un esempio: 17
20 Parte I: Apprendimento del Linguaggio di Programmazione C++ Figura 13: Esplicitazione dell'estensione dei file di output del codice di programmazione Nel caso specifico le dimensioni dei singoli grani di ballast e le loro posizioni sono state stampate in file di output.txt e.scr: File script: fprintf(fp,"_circle\n"); fprintf(fp,"%-1.1f,%-1.1f\n",mat[i][1],mat[i][2]); fprintf(fp,"%-1.5f\n",mat[i][3]/2); File di testo: fprintf(ft,"#cylinder:%5.4f%5.4f%5.4fgrani_di_ballast\n",(mat[i][1]/100)+0.008, (mat[i][2]/100)+0.08,(mat[i][3]/2)/100) 18
21 Parte II: Parte II: Acquisizione delle conoscenze necessarie per la simulazione mediante software E2GPR e GPRMax Acquisizione delle conoscenze necessarie per la simulazione mediante software E2GPR e GPRMax Come spiegato nella parte introduttiva del presente lavoro la fase centrale dell attività di tirocinio è stata rivolta all acquisizione delle conoscenze necessarie per l impiego di due software di simulazione, GPRMax ed E2GPR. GPRMax è un software di simulazione open source, scritto in linguaggio C, e sviluppato da Antonis Giannopoulos nel 1996, che consente di simulare il fenomeno di propagazione delle onde elettromagnetiche in un mezzo. Nato originariamente con la finalità di simulare la propagazione delle onde emesse dal Ground Penetrating Radar viene oggi impiegato in innumerevoli campi di applicazione che riguardano sia l ambito della di ricerca scientifica che quello commerciale ed industriale. La simulazione si basa sull applicazione del Metodo delle Differenze Finite nel Dominio del Tempo (FDTD Finite Difference Time Domain) per la risoluzione delle Equazioni di Maxwell. Essa può avvenire sia in ambiente bidimensionale (GPRMax2D9 che tridimensionale (GPRMax3D), mediante l esecuzione di un file di input scritto secondo il codice di codifica ASCII - American Standard Code for Information Interchange, in cui devono essere definiti tutti i parametri del modello di analisi, necessari per una corretta esecuzione del codice. Al termine dell esecuzione di questo, il software restituisce un file di output che può essere memorizzato in formato ASCII o binario ed implementato in ambiente MATLAB per la restituzione dell A-scan e del B-scan del segnale simulato. Nel caso specifico la modellazione del segnale derivante dalla propagazione delle onde magnetiche emesse dal georadar è avvenuta mediante l ausilio di un altro software che lavora sempre in ambiente GPRMax ma ne rende più efficace e semplice l impiego, ovvero E 2 GPR. E 2 GPR è un software tool sviluppato da Daniele Pirrone nell ambito della COAST ACTION TU1208, che si propone il duplice obiettivo di, facilitare l uso del software GPRMax in ambiente bidimensionale mediante la disposizione di una finestra di interfaccia più semplice e intuitiva, e di rendere più efficiente la simulazione attraverso una riduzione dei tempi di esecuzione. 19
22 Parte II: Acquisizione delle conoscenze necessarie per la simulazione mediante software E2GPR e GPRMax Il software E 2 GPR si articola in un architettura di rete di tipo client/ server ed è costituito da tre scripts principali: CAD, che assiste l utente nella creazione dello scenario da far eseguire al software GPRMax; PROCESS, che permette di seguire più scan contemporaneamente; PLOTTER, che genera i file di output di GPRMax2D e restituisce l A-scan ed il B-scan del segnale simulato. Nel caso specifico è stata utilizzata una versione ridotta del software E 2 GPR costituita unicamente dagli scripts CAD e PLOTTER: Figura 14: Il software E 2 GPR II.1 E 2 GPR CAD Come spiegato nei paragrafi precedenti, l obiettivo principale del software E 2 GPR è quello di semplificare l impiego di GPRMax, in riferimento all ambiente bidimensionale. Il software si propone, infatti, di assistere l utente nella creazione e nell eventuale modifica degli scenari di simulazione, mediante un sistema CAD - Computer Aided Design system che si presenta tramite una semplice interfaccia grafica. Il sistema prevede che l utente, prima di accedere alla finestra di disegno vera e propria, si trovi di fronte ad una finestra di ingresso all area di disegno in cui può inserire i dati necessari per la 20
23 Parte II: Acquisizione delle conoscenze necessarie per la simulazione mediante software E2GPR e GPRMax creazione di un nuovo scenario di simulazione, oppure scegliere di aprire un file di input che gli consenta di modificare uno scenario precedentemente generato. Figura 15: Finestra di ingresso all'area di disegno di E 2 GPR Nel caso in cui si dovesse procedere con la creazione di un nuovo scenario l utente è tenuto ad inserire tre informazioni preliminari necessarie alla simulazione ed, in particolare: Figura 16: Inserimento dei dati di input per la creazione di un nuovo scenario le dimensioni del dominio (Domain) in cui lo scenario di simulazione dovrà essere implementato, espresse in metri; la discretizzazione spaziale del dominio (Dx, Dy), anch essa espressa in metri; la Time Window, ovvero la finestra temporale di emissione del segnale di simulazione, espressa in nanosecondi. Per quanto riguarda la i valori di DX e DY, questi sono relativi ad una discretizzazione spaziale interna che interessa il dominio di simulazione, e vengono definiti a partire da una relazione sperimentale funzione della frequenza di indagine. 21
24 Parte II: Acquisizione delle conoscenze necessarie per la simulazione mediante software E2GPR e GPRMax Ipotizzando, quindi, di considerare un dominio discretizzato mediante una griglia a maglie quadrate, le dimensioni di quest ultime possono essere definite mediante la seguente relazione: Con: λ lunghezza d onda del segnale; Dx = Dy = λ 10 = c ε r 3 f 10 c velocità della luce nel vuoto pari a 3 x 10 8 m/s; ε r permittività elettrica del materiale indagato; f frequenza centrale di indagine espressa in GHz. Definiti i parametri iniziali necessari per la rappresentazione e la caratterizzazione del dominio di indagine, si procede con la riproduzione vera e propria dello scenario. Questa avviene in una opportuna finestra di disegno: Figura 17: Finestra di disegno di E 2 GPR Come emerge dalla figura, sopra riportata, l interfaccia grafica del sistema CAD è costituita da: Un area centrale contenente un riquadro di dimensioni pari a quelle del dominio di indagine in cui, di default, si ipotizza essere in presenza di sola aria (free space). Due barre degli strumenti, verticale ed orizzontale, in cui sono contenuti tutti comandi utili alla riproduzione dello scenario di indagine; 22
25 Parte II: Acquisizione delle conoscenze necessarie per la simulazione mediante software E2GPR e GPRMax Una finestra di dialogo in cui è contenuto un elenco aggiornato degli oggetti inseriti all interno dello scenario, con esplicitazione della posizione di questi tramite le relative coordinate x-y (COMAND) ed un riquadro in cui è possibile controllare real-time le dimensioni degli oggetti da inserire nello scenario durante la loro riproduzione (SET PLANE & SHOW COORDINATE). La creazione dello scenario avviene per mezzo dei comandi presenti nella barra degli strumenti orizzontale posizionata nella parte alta della finestra di disegno. Figura 18: Barra degli strumenti orizzontale Il CAD permette, innanzi tutto all utente, di modificare la scala del dominio di indagine, un operazione che si rivela necessaria per una corretta riproduzione dello scenario, soprattutto quando si devono rappresentare oggetti di piccole dimensioni. Figura 19: Strumenti di scala I comandi Tx ed Rx permettono, invece, di posizionare e caratterizzare l antenna ricevente e trasmittente. Oltre, infatti, all esplicitazione delle coordinate delle due antenne, devono essere inserite le informazioni relative alla line source (nel caso specifico è stata considerata un unica linea di sorgente), alla frequenza di indagine dell antenna, espressa in GHz, ed alla tipologia di forma d onda del segnale. Figura 20: Comandi per il posizionamento della ricevente e della trasmittente 23
26 Parte II: Acquisizione delle conoscenze necessarie per la simulazione mediante software E2GPR e GPRMax Tx Ricevente Rx Ricevente Figura 21: Posizionamento e caratterizzazione dell'antenna ricevente e trasmittente La parte centrale della barra degli strumenti è, invece, destinata all introduzione ed alla caratterizzazione elettromagnetica dei materiali che devono essere inseriti all interno del dominio. Il sistema CAD fornisce, infatti, due unici materiali di default le cui proprietà elettromagnetiche sono predefinite, l aria (free space) ed il PEC, un conduttore elettrico perfetto in grado di riflettere totalmente il segnale emesso dall antenna. L inserimento di un nuovo materiale all interno del dominio avviene attraverso il comando add medium. Questo permette di identificare il materiale mediante un nome, di caratterizzarlo mediante le proprie proprietà dielettriche, permittività elettrica ε r e conducibilità elettrica σ, nonché di attribuire ad esso un colore con cui verrà visualizzato all interno dello scenario di simulazione. Figura 22: Comando add medium Aggiunti nel sistema tutti i materiali da utilizzare per la riproduzione dello scenario, si procede con la realizzazione dello scenario stesso. Questa avviene mediante l ausilio della barra degli strumenti verticale posizionata sulla destra della finestra di disegno. 24
27 Parte II: Acquisizione delle conoscenze necessarie per la simulazione mediante software E2GPR e GPRMax Figura 23: Barra degli strumenti verticale Selezionato il materiale che si vuole riprodurre nel dominio è possibile scegliere la forma che dovrà assumere l oggetto realizzato con quel materiale. Il software permette, inoltre, di inserire nello scenario i cosiddetti PML, ovvero strati di materiale assorbente in grado di annullare il campo elettromagnetico che giunge al contorno del dominio di simulazione. Figura 24: Inserimento dei PML Terminata la fase di realizzazione dello scenario di simulazione si procede con la generazione del file di input, di estensione.in, che dovrà essere fatto eseguire dal software GPRMax. Il sistema CAD consente, infatti, di creare un codice che traduce in linguaggio GPRMax i singoli elementi che compongono lo scenario di simulazione. Figura 25: Generazione del file di input da eseguire su GPRMax 25
28 Parte II: Acquisizione delle conoscenze necessarie per la simulazione mediante software E2GPR e GPRMax II.2 E 2 GPR PLOTTER Come spiegato nella parte conclusiva del precedente paragrafo, il sistema CAD è in grado di restituire un file di input scritto in linguaggio GPRMax che può essere compilato ed eseguito direttamente dal software. Dall esecuzione del file di estensione.in viene creato un file di output compatibile a sua volta con il software E 2 GPR. Infatti, semplicemente trascinando il file ottenuto all interno della finestra di Drug & Drop il PLOTTER script è in grado di stampare l A-scan ed il B-scan del segnale sintetico derivante dall esecuzione dello scenario di simulazione precedentemente realizzato. Figura 26: A-scan e B-scan del segnale simulato 26
29 Parte III: Apprendimento del linguaggio di programmazione MatLab Parte III: Apprendimento del linguaggio di programmazione MatLab L ultima fase dell attività di tirocinio è stata rivolta all acquisizione delle conoscenze necessarie per lavorare in ambiente MatLab. MatLab, abbreviazione di Matrix LABoratory fu creato alla fine degli anni 70 da Ceye Moler, presidente del dipartimento di scienze informatiche dell Università del Nuovo Messico. È un ambiente di sviluppo, scritto in linguaggio C, che integra il calcolo matematico, la grafica e la programmazione scientifica, oggi diffusamente impiegato in diverse discipline scientifiche. III.1 Interfaccia grafica di MatLab L interfaccia principale di MatLab è composta da: Una barra dei menù attraverso la quale accedere a tutte le funzioni di MatLab; Una barra degli strumenti che permette di accedere rapidamente alle funzioni principali maggiormente impiegate; La finestra Command Window impiegata per impartire comandi o per eseguire script e funzioni; La finestra Command History in cui viene tenuta memoria di tutti i comandi eseguiti all interno della Command Window; La finestra Workspace contenente l elenco delle variabili create in memoria; La finestra di Editor all interno della quale possono essere sviluppati e salvati i diversi script. Si riporta di seguito un immagine della struttura dell interfaccia MatLab che è stata impiegata durante lo studio. 27
30 Parte III: Apprendimento del linguaggio di programmazione MatLab Figura 27: Interfaccia dell'ambiente di sviluppo MatLab III.2 Le variabili e gli operatori Oltre ad un ambiente di sviluppo, MatLab viene considerato come un linguaggio di programmazione di alto livello e, in quanto tale, in esso possono essere distinti 15 tipi di variabili definite comunemente come delle celle di memoria contenenti un valore assegnato mediante un operazione di assegnamento. Differentemente a quanto avviene per il linguaggio C++, nel linguaggio MatLab i dati hanno tutti la medesima forma, ovvero l array; sono, di conseguenza, considerati come dei vettori costituiti da un insieme ordinato di dati in cui ogni elemento è univocamente definito mediante un indice di riga, il primo, e di colonna, il secondo. A seconda, quindi, del tipo di oggetti contenuti nell array si distinguono numeric array, character array, cell array etc 28
31 Parte III: Apprendimento del linguaggio di programmazione MatLab Alla luce di quanto precedentemente spiegato, nel linguaggio MatLab si possono definire, quindi: Scalari, gli array di due dimensioni formati da una sola riga e da una sola colonna; Vettori, gli array di due dimensioni formati o da una sola riga (vettore riga) o da una sola colonna (vettore colonna); Matrici, gli array di due dimensioni formati almeno da due righe e da due colonne. Per quanto riguarda gli operatori il linguaggio MatLab non differisce dai consueti impiegati anche nel linguaggio di programmazione C++. Si distinguono, infatti, anche in questo caso: Gli operatori matematici: +, -, x, /; Gli operatori relazionali: >, <, >=, <=, ==, ~=; Gli operatoti logici o bolleani: ~ not, end &, or ; III.3 Elaborazione dei codici su piattaforma MatLab Nella parte introduttiva del capitolo si è sottolineato come MatLab sia un ambiente di sviluppo ampiamente utilizzato anche in contesti non strettamente connessi al calcolo matematico. L attività di tirocinio è stata finalizzata, infatti, all acquisizione delle conoscenze necessarie per impiegare il linguaggio di programmazione per l elaborazione e la processazione dei segnali elettromagnetici. Sono stati, in particolare elaborati due differenti tipologie di codice. Il primo codice è stato implementato con il fine di riportare in ambiente MatLab il segnale risultante dalla simulazione con GPRMax. Si è proceduto, quindi, inizialmente con l isolare i valori contenuti nel file di output del software e nel tradurre tali valori in una matrice numerica che potesse essere letta in ambiente MatLab. Individuati, quindi, all interno della matrice i due vettori necessari per la ricostruzione del segnale, Tempo, espresso in nanosecondi ed Ampiezza espressa in Volt/metro, è stato sviluppato, nel rispetto della sintassi e della semantica del linguaggio, un codice per eseguire una procedura di processing definita alla luce del confronto con i segnali reali a disposizione. Si riporta di seguito un estratto del codice sopra citato in cui si evidenzia l articolazione dei passaggi necessari per riportare il segnale derivante da simulazione su piattaforma MatLab. 29
32 Parte III: Apprendimento del linguaggio di programmazione MatLab Figura 28; Estratto del codice MatLab per l acquisizione del segnale simulato Si deve sottolineare come gli script sviluppati nella finestra di Editor, sono dei codici generali che possono essere eseguiti ripetutamente su file differenti. Matlab richiede, infatti, all utente di specificare di volta in volta la cartella contenente le variabili da eseguire nel codice, le quali naturalmente dovranno essere indicate con lo stesso nome utilizzato nel codice stesso. Il secondo codice è stato sviluppato, invece, con il fine di definire una procedura di filtraggio del segnale reale. L implementazione del codice ha richiesto la generazione di una funzione (calcola_fft) in grado di calcolare la trasformata di Furier del segnale reale noto nel dominio del tempo, al fine di poterne effettuare un filtraggio mediante l applicazione di un filtro passa banda sul range di frequenze caratterizzanti il segnale. 30
33 Parte III: Apprendimento del linguaggio di programmazione MatLab Figura 29: Estratto del codice relativo alla funzione calcola_fft Dall immagine emerge come, similmente a quanto richiesto dalla sintassi del linguaggio C++, anche nell ambiente di sviluppo MatLab la definizione di una funzione avviene mediante l esplicitazione del nome e della lista dei parametri contenuti tra parentesi tonde. Si può notare, inoltre, come nella definizione della funzione calcola_fft, sia stata impiegata una funzione predefinita all interno del linguaggio MatLab fft che permette di calcolare la cosiddetta Trasformata Discreta di Furier. La funzione così definita viene invocata nel rispetto della medesima sintassi impiegata per la sua definizione all interno del codice sviluppato per l operazione di filtraggio. 31
34 Parte III: Apprendimento del linguaggio di programmazione MatLab Figura 30: Estratto del codice sviluppato per il filtraggio del segnale reale 32
35 Conclusione Conclusioni Al termine dell attività di tirocinio è possibile affermare come l acquisizione delle conoscenze connesse all utilizzo dei software descritti nella presente relazione abbia contribuito inevitabilmente ad ampliare il bagaglio di conoscenze personali in un ambito, come quello informatico, del quale non si aveva avuto occasione di approfondimento durante il percorso di studi universitario. Si ritiene, inoltre, necessario sottolineare come sia stata proprio la possibilità di far comunicare tra loro i software con i diversi linguaggi di programmazione ad aver permesso di perseguire l obiettivo dello studio portato avanti nella Tesi di Laurea.
Le basi del linguaggio Java
Le basi del linguaggio Java Compilazione e interpretazione Quando si compila il codice sorgente scritto in Java, il compilatore genera il codice compilato, chiamato bytecode. È un codice generato per una
Introduzione a Matlab
INFORMATICA B Ingegneria Elettrica Introduzione a Matlab Introduzione a Matlab Matlab (MATrix LABoratory) è uno strumento per il calcolo scientifico ed ingegneristico Matlab facilita lo sviluppo di programmi
Strutture dati e loro organizzazione. Gabriella Trucco
Strutture dati e loro organizzazione Gabriella Trucco Introduzione I linguaggi di programmazione di alto livello consentono di far riferimento a posizioni nella memoria principale tramite nomi descrittivi
Lezione 6 Introduzione al C++ Mauro Piccolo
Lezione 6 Introduzione al C++ Mauro Piccolo [email protected] Linguaggi di programmazione Un linguaggio formale disegnato per descrivere la computazione Linguaggi ad alto livello C, C++, Pascal, Java,
Fondamenti di Informatica
Fondamenti di Informatica AlgoBuild: Strutture selettive, iterative ed array Prof. Arcangelo Castiglione A.A. 2016/17 AlgoBuild : Strutture iterative e selettive OUTLINE Struttura selettiva Esempi Struttura
INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica
Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica - Programma Un programma è una formulazione
Algoritmi, Strutture Dati e Programmi. UD 2.b: Programmazione in Pascal
Algoritmi, Strutture Dati e Programmi : Programmazione in Pascal Prof. Alberto Postiglione AA 2007-2008 Università degli Studi di Salerno Il Linguaggio di Programmazione Pascal Esistono molti linguaggi
Introduzione alla programmazione in linguaggio C
Introduzione alla programmazione in linguaggio C Il primo programma in C commento Header della libreria Funzione principale Ogni istruzione in C va terminata con un ; Corso di Informatica AA. 2007-2008
INTRODUZIONE ALLA PROGRAMMAZIONE
INTRODUZIONE ALLA PROGRAMMAZIONE Prof. Enrico Terrone A. S: 2008/09 Definizioni Programmare significa risolvere problemi col computer, cioè far risolvere problemi al computer attraverso un insieme di informazioni
Programmazione con il linguaggio LibreOffice Basic
Programmazione con il linguaggio LibreOffice Basic L ambiente di programmazione Il software LibreOffice possiede un ambiente di programmazione in linguaggio Basic, che consente di creare procedure software
Rappresentazione degli algoritmi
Rappresentazione degli algoritmi Universitá di Ferrara Ultima Modifica: 21 ottobre 2014 1 1 Diagramma di flusso Utilizzare il diagramma di flusso per rappresentare gli algoritmi che risolvono i seguenti
Variabili. Unità 2. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER
Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Domenico Daniele Bloisi Docenti Metodi Numerici prof. Vittoria Bruni [email protected] Programmazione prof. Domenico
Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso
Obiettivi Di seguito vengono riportate una serie di domande che possono essere poste durante la prova formale del corso. Le seguenti domande non sono da ritenersi esaustive ma esemplificative. 1. Architettura
Linguaggi, Traduttori e le Basi della Programmazione
Corso di Laurea in Ingegneria Civile Politecnico di Bari Sede di Foggia Fondamenti di Informatica Anno Accademico 2011/2012 docente: Prof. Ing. Michele Salvemini Sommario Il Linguaggio I Linguaggi di Linguaggi
Unità F1. Obiettivi. Il linguaggio C. Il linguaggio C++ Linguaggio C. Pseudolinguaggio. Primi programmi
Obiettivi Unità F1 Primi programmi Conoscere il significato di dichiarazione e definizione di variabili Conoscere i tipi di dato numerici Essere in grado di realizzare semplici algoritmi in pseudolinguaggio
Evoluzione del FORTRAN 14/03/2016. LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 15 IL LINGUAGGIO FORTRAN
LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 15 IL LINGUAGGIO FORTRAN Marco Lapegna Dipartimento di Matematica e Applicazioni Universita degli Studi di Napoli Federico II wpage.unina.it/lapegna
Indice PARTE A. Prefazione Gli Autori Ringraziamenti dell Editore La storia del C. Capitolo 1 Computer 1. Capitolo 2 Sistemi operativi 21 XVII XXIX
Indice Prefazione Gli Autori Ringraziamenti dell Editore La storia del C XVII XXIX XXXI XXXIII PARTE A Capitolo 1 Computer 1 1.1 Hardware e software 2 1.2 Processore 3 1.3 Memorie 5 1.4 Periferiche di
STRUTTURE DI CONTROLLO DEL C++
STRUTTURE DI CONTROLLO DEL C++ Le istruzioni if e else Le istruzioni condizionali ci consentono di far eseguire in modo selettivo una singola riga di codice o una serie di righe di codice (che viene detto
Istituto Tecnico Industriale M. M. Milano Polistena. Classe III D a.s. 2015/2016 C++ Guida Base
Istituto Tecnico Industriale M. M. Milano Polistena Classe III D a.s. 2015/2016 C++ Guida Base Prof. Rocco Ciurleo - ITIS M. M. Milano Polistena - 3 D a.s. 2015/2016 1 Le Origini Il Linguaggio C++ è il
Il linguaggio di programmazione Python
Università Roma Tre Dipartimento di Matematica e Fisica Percorso Abilitante Speciale Classe A048 Matematica Applicata Corso di Informatica Il linguaggio di programmazione Python Marco Liverani ([email protected])
Primi passi col linguaggio C
Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Come introdurre un linguaggio di programmazione? Obiettivi: Introduciamo una macchina astratta
Costanti e Variabili
Parte 3 Costanti e Variabili Identificatori Un identificatore è un nome che viene associato a diverse entità (costanti, tipi, variabili, funzioni, ecc.) e serve ad identificare la particolare entità Gli
Fondamenti di Informatica 6. Algoritmi e pseudocodifica
Vettori e matrici #1 Fondamenti di Informatica 6. Algoritmi e pseudocodifica Corso di Laurea in Ingegneria Civile A.A. 2010-2011 1 Semestre Prof. Giovanni Pascoschi Le variabili definite come coppie
Introduzione alla programmazione strutturata
FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Prof. ELIO TOPPANO Facoltà di Ingegneria Università degli Studi di Udine Introduzione alla programmazione strutturata 2001 Pier Luca Montessoro, Elio
Linguaggio C - le strutture di controllo: sequenza, selezione, iterazione
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C - le strutture di controllo: sequenza, selezione, iterazione
Introduzione alla programmazione
Introduzione alla programmazione Risolvere un problema Per risolvere un problema si procede innanzitutto all individuazione Delle informazioni, dei dati noti Dei risultati desiderati Il secondo passo consiste
Studio degli algoritmi
COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI Fondamenti di Informatica a.a.2006/07 Prof. V.L. Plantamura Dott.ssa A. Angelini Studio degli algoritmi Dato un problema P, le problematiche riguardano: Sintesi
Metodi di Analisi dei Dati Sperimentali. AA 2009/2010 Pier Luca Maffettone. Elementi di Matlab
Metodi di Analisi dei Dati Sperimentali AA /2010 Pier Luca Maffettone Elementi di Matlab Sommario Introduzione Variabili Manipolazione di elementi Creazione di vettori/matrici Operazioni elementari Funzioni
L Allocazione Dinamica della Memoria
L Allocazione Dinamica della Memoria Maurizio Palesi DIIT Università di Catania Viale Andrea Doria 6, 95125 Catania [email protected] http://www.diit.unict.it/users/mpalesi Sommario Questo documento
Introduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software
Introduzione alla programmazione Algoritmi e diagrammi di flusso F. Corno, A. Lioy, M. Rebaudengo Sviluppo del software problema idea (soluzione) algoritmo (soluzione formale) programma (traduzione dell
Linguaggio C - sezione dichiarativa: costanti e variabili
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C - sezione dichiarativa: costanti e variabili La presente
VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole.
Excel VBA VBA Visual Basic for Application VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole. 2 Prima di iniziare. Che cos è una variabile?
#include <iostream> // libreria che gestisce flusso di input e output. using namespace std; // uso di librerie standard del C++
Qualsiasi programma in C++ segue lo schema: #include // libreria che gestisce flusso di input e output using namespace std; // uso di librerie standard del C++ int main() { // dichiarazioni
Il calcolatore. Architettura di un calcolatore (Hardware)
Il calcolatore Prima parlare della programmazione, e' bene fare una brevissima introduzione su come sono strutturati i calcolatori elettronici. I calcolatori elettronici sono stati progettati e costruiti
Funzioni, Stack e Visibilità delle Variabili in C
Funzioni, Stack e Visibilità delle Variabili in C Programmazione I e Laboratorio Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7
Un esempio per iniziare. Il controllo del programma in C. Altri cenni su printf() Esercizi (printf) printf( 8!=%d, fatt);
Un esempio per iniziare Il controllo del programma in C DD Cap.3 pp.91-130 /* calcolo di 8!*/ #include #define C 8 int main() int i=1; int fatt=1; while (i
Unità Didattica 1 Linguaggio C. Fondamenti. Struttura di un programma.
Unità Didattica 1 Linguaggio C Fondamenti. Struttura di un programma. 1 La storia del Linguaggio C UNIX (1969) - DEC PDP-7 Assembly Language BCPL - un OS facilmente accessibile che fornisce potenti strumenti
Linguaggi di Programmazione
Linguaggi di Programmazione Linguaggi di Programmazione Programmazione. Insieme delle attività e tecniche svolte per creare un programma (codice sorgente) da far eseguire ad un computer. Che lingua comprende
Cos è un algoritmo. Si dice algoritmo la descrizione di un metodo di soluzione di un problema che sia
Programmazione Un programma descrive al computer, in estremo dettaglio, la sequenza di passi necessari a svolgere un particolare compito L attività di progettare e realizzare un programma è detta programmazione
Matlab. Istruzioni condizionali, cicli for e cicli while.
Matlab. Istruzioni condizionali, cicli for e cicli while. Alvise Sommariva Università degli Studi di Padova Dipartimento di Matematica 17 marzo 2016 Alvise Sommariva Introduzione 1/ 18 Introduzione Il
Scrivere il software. Scrivere il software. Interprete. Compilatore e linker. Fondamenti di Informatica
FODAMETI DI IFORMATICA Prof. PIER LUCA MOTESSORO Prof. ELIO TOPPAO Facoltà di Ingegneria Università degli Studi di Udine Introduzione alla programmazione strutturata 2001 Pier Luca Montessoro, Elio Toppano
Indice. Prefazione. 3 Oggetti e Java 53
Prefazione xv 1 Architettura dei calcolatori 1 1.1 Calcolatori e applicazioni 1 1.1.1 Alcuni esempi di applicazioni 3 1.1.2 Applicazioni e interfacce 4 1.2 Architettura dei calcolatori 7 1.2.1 Hardware
Linguaggio C: introduzione
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C: introduzione La presente dispensa e da utilizzarsi
Corso di Matematica per la Chimica. Dott.ssa Maria Carmela De Bonis a.a
Dott.ssa Maria Carmela De Bonis a.a. 2013-14 Programmi Un elaboratore riceve dei dati in ingresso, li elabora secondo una sequenza predefinita di operazioni e infine restituisce il risultato sotto forma
L'Allocazione Dinamica della Memoria nel linguaggio C
L'Allocazione Dinamica della Memoria nel linguaggio C Prof. Rio Chierego [email protected] http://www.riochierego.it/informatica.htm Sommario Questo documento tratta l'allocazione dinamica della memoria
Linguaggio C. strutture di controllo: strutture iterative. Università degli Studi di Brescia. Docente: Massimiliano Giacomin
Linguaggio C strutture di controllo: strutture iterative Università degli Studi di Brescia Docente: Massimiliano Giacomin Elementi di Informatica e Programmazione Università di Brescia 1 Strutture iterative
Fondamenti di Informatica T-1
Fondamenti di Informatica T-1 Introduzione al linguaggio Java - Input/Output, Variabili, Tipi Tutor: Allegra De Filippo [email protected] a.a. 2015/2016 Fondamenti di Informatica T-1 Allegra De
1) Matlab e simulazione. 2) Esempi di utilizzo. Mauro De Sanctis corso di Informazione e Codifica Università di Roma Tor Vergata
Argomenti della Lezione 1) Matlab e simulazione 2) Esempi di utilizzo 1 Mauro De Sanctis corso di Informazione e Codifica Università di Roma Tor Vergata Matlab è un sistema di programmazione ad alto livello
Corso di Informatica. Problemi ed algoritmi. Ing Pasquale Rota
Corso di Problemi ed algoritmi Ing Pasquale Rota Argomenti Problemi ed algoritmi Proprietà degli algoritmi Pseucodice Diagrammi di flusso Problemi ed algoritmi - Ing. Pasquale Rota 2 Proprietà degli algoritmi
Introduzione al DEV C++
Introduzione al DEV C++ : Anno accademico 2006/2007 Fondamenti di informatica I Sommario 1. INTRODUZIONE... 3 2. SETUP... 5 2.1. Procedura di installazione... 5 2.2. Configurazione... 8 2.2.1. Opzioni
Algoritmi e soluzione di problemi
Algoritmi e soluzione di problemi Dato un problema devo trovare una soluzione. Esempi: effettuare una telefonata calcolare l area di un trapezio L algoritmo è la sequenza di operazioni (istruzioni, azioni)
Corso di Laurea Ingegneria Informatica Laboratorio di Informatica
Corso di Laurea Ingegneria Informatica Laboratorio di Informatica Capitolo 4 Traduzione ed esecuzione di programmi Ottobre 2006 Traduzione ed esecuzione di programmi 1 Nota bene Alcune parti del presente
Tipi di dati scalari (casting e puntatori) Alessandra Giordani Lunedì 10 maggio 2010
Tipi di dati scalari (casting e puntatori) Alessandra Giordani [email protected] Lunedì 10 maggio 2010 http://disi.unitn.it/~agiordani/ I tipi di dati scalari I tipi aritmetici, i tipi enumerativi
Introduzione a Visual Studio 2005
Fondamenti di Informatica e Laboratorio T-AB Ingengeria dell Automazione a.a. 2008/2009 Introduzione a Visual Studio 2005 Outline Solutions e Projects Visual Studio e il linguaggio C Visual Studio Schermata
Programmazione a blocchi. Algobuild Prof. Sergio Roselli
Programmazione a blocchi Algobuild Prof. Sergio Roselli Blocchi base Inizio programma I Fine programma F Input IN A Output Esecuzione OUT A A = 5 + 1 L interprete Algobuild Algobuildpermette di trascrivere
Elementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I
Lezione 4 Elementi lessicali e espressioni logiche Matricole 2-3 Elementi lessicali il linguaggio C ha un suo vocabolario di base i cui elementi sono detti token esistono 6 tipi di token: parole chiave
Gli Array. Dichiarazione di un array
Gli Array Un array rappresenta una variabile indicizzata (ovvero contenente un indice) che viene utilizzata per contenere più elementi dello stesso tipo. Ogni array ha un nome al quale viene associato
I.I.S. Federico II di Svevia - Melfi
I.I.S. Federico II di Svevia - Melfi Liceo Scientifico - Opzione Scienze Applicate Progettazione didattica a.s. 2016/2017 INFORMATICA Docente: Michele FICARAZZI Classe 2AA PREMESSA SULLA CLASSE: La classe
Introduzione alla programmazione Esercizi risolti
Esercizi risolti 1 Esercizio Si determini se il diagramma di flusso rappresentato in Figura 1 è strutturato. A B C D F E Figura 1: Diagramma di flusso strutturato? Soluzione Per determinare se il diagramma
Le Strutture di controllo Del Linguaggio C. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni
Le Strutture di controllo Del Linguaggio C Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni STRUTTURE DI CONTROLLO PRIMITIVE SEQUENZA SELEZIONE (o scelta logica) ITERAZIONE NON PRIMITIVE
19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
19 - Eccezioni 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 Corso
Corso di Informatica di Base
Corso di Informatica di Base A.A. 2011/2012 Algoritmi e diagrammi di flusso Luca Tornatore Cos è l informatica? Calcolatore: esecutore di ordini o automa Programma: insieme di istruzioni che possono essere
Appunti del corso di Informatica 1 (IN110 Fondamenti) 5 Rappresentazione delle informazioni
Università di Roma Tre Dipartimento di Matematica e Fisica Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 5 Rappresentazione delle informazioni Marco Liverani ([email protected])
Algoritmi e basi del C Struttura di un programma
Algoritmi e basi del C Struttura di un programma Marco D. Santambrogio [email protected] Ver. aggiornata al 17 Marzo 2015 Compitini Compitini di INFO: 24 Aprile 2015 4.15pm @ C.G.1 (Ed. 9) 21
A.S Classe III H Informatica. Programma didattico finale e indicazioni per il recupero estivo relativi all'insegnamento di Informatica
O. BELLUZZ I - L. DA VINCI Prot.8480/6.3 del 05/07/2017 A.S. 2016-2017 Classe III H Informatica Programma didattico finale e indicazioni per il recupero estivo relativi all'insegnamento di Informatica
Caratteristiche di un linguaggio ad alto livello
Caratteristiche di un linguaggio ad alto livello Un linguaggio ad alto livello deve offrire degli strumenti per: rappresentare le informazioni di interesse dell algoritmo definire le istruzioni che costituiscono
Sistemi Web per il turismo - lezione 3 -
Sistemi Web per il turismo - lezione 3 - Software Si definisce software il complesso di comandi che fanno eseguire al computer delle operazioni. Il termine si contrappone ad hardware, che invece designa
Laboratorio di programmazione
Laboratorio di programmazione Lezione II Tatiana Zolo [email protected] 1 IL PROGRAMMA C++ Istruzioni (espressioni terminate da ; ) istruzioni di dichiarazione (es. int x = 0;); istruzioni di assegnamento
UD 3.2b: Programmazione in Pascal (1)
UD 3.2b: Programmazione in Pascal (1) Il Linguaggio di Programmazione Pascal Esistono molti linguaggi di programmazione. Per motivi didattici utilizzeremo una versione ridotta di un linguaggio di programmazione
Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe.
Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe. 1) Comprendere il problema 2) Stabilire quali sono le azioni da eseguire per risolverlo 3) Stabilire la
Informatica Applicata al Suono Tutorial Matlab
Prof. Mario Malcangi [email protected] MATLAB è un linguaggio di alto livello e un ambiente interattivo per il calcolo numerico, l'analisi e la visualizzazione dei dati e la programmazione. MATLAB consente
6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
6 - Blocchi e cicli Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://pages.di.unipi.it/milazzo milazzo di.unipi.it
Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo
Programmazione Orientata agli Oggetti Emilio Di Giacomo e Walter Didimo Una metafora dal mondo reale la fabbrica di giocattoli progettisti Un semplice giocattolo Impara i suoni Dall idea al progetto Toy
Altrimenti, il M.C.D. di a e b è anche divisore di r (e.g. a=15,b=6,r=3 che è il M.C.D.)
Elaboratore Un elaboratore o computer è una macchina digitale, elettronica, automatica capace di effettuare trasformazioni o elaborazioni sui dati digitale l informazione è rappresentata in forma numerica
Sommario PREFAZIONE...XI CAPITOLO 1: INTRODUZIONE AI COMPUTER, A INTERNET E AL WEB... 1 CAPITOLO 2: INTRODUZIONE ALLA PROGRAMMAZIONE IN C...
Sommario PREFAZIONE...XI Aggiornamenti e novità... xi Lo scopo di questo libro... xii Diagramma delle dipendenze... xii La metodologia di insegnamento... xiii Panoramica sul libro... xvi Ringraziamenti...
Istruzioni iterative (o cicliche)
Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Istruzioni iterative (o cicliche) Corso di Fondamenti di Informatica Laurea in Ingegneria Informatica (Canale di Ingegneria
PROGRAMMAZIONE DISCIPLINARE LICEO SCIENTIFICO OPZIONE SCIENZE APPLICATE INFORMATICA CLASSE QUINTA
PROGRAMMAZIONE DISCIPLINARE PROGRAMMAZIONE DISCIPLINARE LICEO SCIENTIFICO OPZIONE SCIENZE APPLICATE INFORMATICA CLASSE QUINTA 1. Competenze: le specifiche competenze di base disciplinari previste dalla
Dati aggregati. Violetta Lonati
Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica - in breve: Definizione di tipi Array Stringhe Strutture
Lez. 5 La Programmazione. Prof. Salvatore CUOMO
Lez. 5 La Programmazione Prof. Salvatore CUOMO 1 2 Programma di utilità: Bootstrap All accensione dell elaboratore (Bootsrap), parte l esecuzione del BIOS (Basic Input Output System), un programma residente
Perché il linguaggio C?
Il linguaggio C 7 Perché il linguaggio C? Larga diffusione nel software applicativo Standard di fatto per lo sviluppo di software di sistema Visione a basso livello della memoria Capacità di manipolare
Definizione di metodi in Java
Definizione di metodi in Java Un metodo in Java definisce un operazione ad alto livello (sottoprogramma) che consente di manipolare dati e oggetti. Durante la computazione effettuata da un programma, un
ESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2008/2009. formalizzazione degli algoritmi in linguaggio C
Università degli Studi di Cagliari Corso di Laurea Specialistica in Ingegneria per l Ambiente ed il Territorio Corso di Laurea Specialistica in Ingegneria Civile - Strutture FONDAMENTI DI INFORMATICA 2
Esercizio 2 (punti 7) Dato il seguente programma C: #include <stdio.h> int swap(int * nome, int length);
Fondamenti di Informatica L-A (A.A. 004/005) - Ingegneria Informatica Prof.ssa Mello & Prof. Bellavista I Prova Intermedia del 11/11/004 - durata h - COMPITO B Esercizio 1 (punti 1) Una associazione di
COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI
COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI Fondamenti di Informatica a.a.200.2005/06 Prof. V.L. Plantamura Dott.ssa A. Angelini Confronto di algoritmi Uno stesso problema può essere risolto in modi diversi,
