Laboratorio di trattamento numerico dei dati sperimentali

Documenti analoghi
Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 4 24/10/2013

Laboratorio di Calcolo Numerico Laboratorio 4: Grafici di convergenza e functions

Programmazione in Java e gestione della grafica. Lezione 6

Le classi in java. Un semplice programma java, formato da una sola classe, assume la seguente struttura:

Matematica per Analisi dei Dati,

Computer Graphics. Mesh import. Piano: Let s Import Meshes! Guardiamo dentro la nostra mesh con un plain text editor. 1. Procurarsi alcune mesh

Introduzione al linguaggio C Primi programmi

Funzioni, Stack e Visibilità delle Variabili in C

Come personalizzare un input range con CSS

LABORATORIO 7 ARRAY. ATTENZIONE: argomenti da linea di comando!!!

Informazione binaria: - rappresentazione dei numeri naturali e interi relativi -

Prova di Laboratorio del [ Corso A-B di Programmazione (A.A. 2004/05) Esempio: Media Modalità di consegna:

L IDE NETBEANS. (slide: A. Baratè) Programmazione per la Musica Adriano Baratè

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

L'allocazione statica: L'allocazione automatica L'allocazione dinamica:

Esercizio 2: Algebra dei Puntatori e Puntatori a Puntatori

Python. Loriano Storchi.

Dal sito web all applicazione mobile

Il sistema C è formato dal linguaggio C, dal preprocessore, dal compilatore, dalle librerie e da altri strumenti di supporto.

1. Acquisire conoscenza dell ambiente TuProlog/SWI Prolog 2. Risolvere alcuni problemi mediante il linguaggio Prolog

Le basi del linguaggio Java

PREFAZIONE... IX Lo scopo di questo libro... ix La metodologia di insegnamento... ix Panoramica sul libro... xiii

Appunti di SISTEMI OPERATIVI

Programmazione in Java e gestione della grafica (I modulo) Lezione 2: Prime nozioni di Java

int main(){ int numero; /* numero di cui voglio calcolare il fattoriale */ int fatt; /* memorizzo il fattoriale di numero */ int somma=0;

Prova Pratica 019 turno 1 gruppo febbraio 20

Primi programmi in C

Introduzione alla programmazione in linguaggio C

Laboratorio di Calcolo Numerico Laboratorio 3: Algoritmi stabili e instabili Programma gnuplot

Linguaggi di Programmazione

Laboratorio di Algoritmi e Strutture Dati

Strutture Dati Dinamiche

Analisi del Segnale per le Telecomunicazioni Seconda esercitazione di laboratorio

Laboratorio 1. 20/21 febbraio 2019

Introduzione al MATLAB c Parte 2

Programmazione in Java (I modulo)

I puntatori /2. Ad esempio. // inizio codice. #include <stdio.h> void mostra(int); int main() {int a = 10; mostra(a); return 0;}

Laboratorio di Architettura degli Elaboratori LabArch 2006 Secondo Quadimestre, a.a Docente: H. Muccini

Esercizio 1. Programmazione I e Informatica II

Riprendiamo l esercizio calcolatrice

HTML 3. Liste puntate ed ordinate Immagini

d dx n 0. I polinomi di Legendre possono essere definiti (e, quindi, calcolati) in modo ricorsivo, come segue. Siano

Programmazione di base

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - Programma

Funzioni, Stack e Visibilità delle Variabili in C

Corso sul linguaggio C

Il linguaggio C. Puntatori e dintorni

9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Laboratorio di trattamento numerico dei dati sperimentali

Ambienti di Programmazione per il Software di Base

SEE Electrical Expert: FAQ COME MODIFICARE I DATI ALL INTERNO DEL CARTIGLIO DEL MODELLO

INTRODUZIONE ALLA PROGRAMMAZIONE

Problemi complessi devono essere decomposti via via in problemi sempre più semplici per poter essere risolti

1. ISTOGRAMMI E GRAFICI DI ALCUNE DENSITA (COMPLEMENTO ALLA LEZIONE PRECEDENTE)

Laboratorio su Programmazione Concorrente in C. Problemi classici e derivati Dalla Ottava lezione di laboratorio in avanti

Introduzione. Programma didattico

Programmazione I - corso B a.a prof. Viviana Bono

Nella propria home directory creare una sottodirectory chiamata es08, in cui metteremo tutti i file C di oggi.

Lab 1: Marzo 2013

Funzioni e moduli. Andrea Passerini Informatica. funzioni e moduli

Codifica binaria: - numeri interi relativi -

Fondamenti di Informatica T-1

Fondamenti di Programmazione

Fondamenti di informatica T-1 (A K) Esercitazione 2 Basi del linguaggio Java

Introduzione a Matlab

Introduzione alla programmazione

Esercitazioni di Informatica (CIV)

dt t z 1 exp( t). = π, Γ

Laboratorio di Algoritmi

Prova Pratica 015 turno 1 gruppo 2

Concetti base programmazione. Antonio Gallo

Istruzioni e linguaggio macchina

LABORATORIO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO V Indice

Università degli Studi di Ferrara

Perché il linguaggio C?

Esercitazione di Laboratorio - 4

Prova Pratica 020 turno 1 gruppo febbraio 20

Risoluzione di problemi ingegneristici con Excel

Introduzione alla compilazione ed esecuzione di programmi C con IDE Dev-C++

1. Passaggio dei parametri per valore/riferimento 2. Trattamento degli errori: funzioni che

Errori frequenti Cicli iterativi Array. Cicli e array. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A.

INTRODUZIONE A MATLAB. Introduzione. Calcolatrice base. Calcolatrice base. Variabili predefinite o speciali. Variabili predefinite o speciali

Unità Didattica 4 Linguaggio C. Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo.

Si definisce sito accessibile un sito web che consente l'accesso ai suoi contenuti a tutti gli utenti, indipendentemente dalla presenza di disabilità

Avviate Specifi dall icona presente sul vostro Desktop.

Programmazione Procedurale in Linguaggio C++

Laboratorio di Statistica e Analisi Dati: Lezione 4

Applicando lo stesso meccanismo al tipo puntatore, possiamo dichiarare un array di puntatori:

Programmazione in Java (I modulo) Lezione 4

Il calcolatore. Architettura di un calcolatore (Hardware)

Le strutture /2. Iniziamo ora a progettare il codice per la gestione del database. Quali sono le funzionalità da implementare?

Informatica B. Facoltà di Ingegneria Industriale Laurea in Ingegneria Energetica, Meccanica e dei Trasporti. Prof. Marco Masseroli

Perché il linguaggio C?

Transcript:

Laboratorio di trattamento numerico dei dati sperimentali Maurizio Tomasi turno A2 Giovedì 2 Novembre 2017

Premessa Negli esercizi di questa lezione è richiesto di prendere dimestichezza con l'ereditarietà multipla, un concetto della programmazione OOP. Il C++ è uno dei pochi linguaggi che supportano l'ereditarietà multipla: linguaggi più moderni hanno scelto di non supportarla es., C#, Java,. Per ulteriori informazioni, fare riferimento alla pagina What is the exact problem with multiple inheritance? In questo corso ne mostriamo l'uso, perché alcune librerie C++ sono basate su di essa ed è quindi importante conoscerla.

Esercizio 4.0 Campi vettoriali È richiesto di scrivere una classe CampoVettoriale, che rappresenti il valore di un campo vettoriale v( r ) in un punto r fissato. Esempi di campi vettoriali che ci serviranno: il campo elettrostatico; il campo gravitazionale. Questi due campi sono additivi. Ad esempio, il campo gravitazionale campi g i g dello spazio di una serie di cariche è dato dalla somma dei di ciascuna carica: N v g( r ) = g i( r) = G. r r i=1 N i=1 m i i 2

Esercizio 4.0 Campi vettoriali La classe CampoVettoriale deve implementare due metodi, Modulo e Somma. Usando la notazione della slide precedente: 1. Il metodo double Modulo() const deve restituire ; 2. Il metodo void Somma(const CampoVettoriale&) deve aggiornare il campo g g g una variabile interna alla classe CampoVettoriale sommando il contributo i esimo, g tipicamente dovuto a una delle particelle che compongono il campo. i

Esercizio 4.1 Campo di multipolo Per visualizzare rapidamente l'aspetto delle cariche, potete scrivere un semplice programma in Javascript formalmente noto come ECMAScript, usando direttamente il browser Firefox. Javascript è un linguaggio di programmazione che superficialmente assomiglia al C/C++, ed è usato nella programmazione dei siti web Gmail, Facebook, Instagram,. Esistono siti, come http://jsfiddle.net, che permettono di provare rapidamente brevi programmi in Javascript. Noi useremo Jsfiddle e la libreria Raphael.js per scrivere un piccolo programma con cui visualizzare la distribuzione delle cariche di un multipolo.

Esercizio 4.1 Campo di multipolo Nel riquadro «Javascript» di Jsfiddle digitate questo codice: var width = 320, height = 200; // No type is required var num_of_charges = 2; var r0 = 30, inner_radius = 6; // Create a «canvas» var paper = Raphael(0, 0, width, height); // Plot the charges for(i = 0; i < num_of_charges; i++) { ang = 2 * Math.PI * i / num_of_charges; var circle = paper.circle(width / 2 + r0 * Math.cos(ang), height / 2 + r0 * Math.sin(ang), inner_radius); // Use alternating colors: F00 (red) and 00F (blue) circle.attr("fill", (i % 2 == 0)? "#f00" : "#00f"); } Caricate «Raphael.js» v. slide successiva ed eseguite con CTRL+Invio.

Esercizio 4.1 Campo di multipolo Per vedere diversi multipoli, cambiate il valore della variable num_of_charges assicurandovi che sia sempre un numero pari. Dopo ogni modifica, premete CTRL+Invio.

Esercizio 4.1 Campo di multipolo L'esercizio richiede di stimare il coefficiente α nell'equazione E α R, verificando che α 2 + n/2. Il metodo più veloce è quello di fare in modo che il programma calcoli il campo per un certo numero di punti prefissati.

Esercizio 4.1 Campo di multipolo Come esempio, il programma potrebbe chiedere all'utente questi dati: 1. Numero di punti N, 2. Distanza R minima R, min 3. Distanza R massima R, max e poi calcolare il campo per punti collocati lungo l'asse x oppure y, oppure z: la scelta è ovviamente ininfluente : P i i = ( R min + (Rmax R min ), 0, 0 ), N 1 con i = 0 N 1.

Esercizio 4.1 Campo di multipolo Nell'ipotesi della slide precedente, il programma dovrebbe salvare in un file di testo N righe, ciascuna contenente: 1. La posizione xyz del punto i esimo 2. Il valore del campo nel punto i esimo In questo modo potete poi usare Gnuplot per visualizzare queste righe e verificare ad occhio per quali valori di R e R relazione diventa davvero esponenziale. Suggerimento: per usare assi con scala logaritmica, usare il comando set logscale, vedere il link per esempi d'uso. Una volta scelti R e R, fate calcolare al programma α e scrivetelo a video. min max min max

Esercizio 4.2 Satellite GOCE Ipotizzare che la fila di sfere sia allineata lungo un segmento di 100 km, e che ciascuna sfera tocchi l'adiacente. Il codice mostrato alla voce «Puntatori e vettori di puntatori» è solo un esempio, e non allinea le sfere come richiesto dall'esercizio.

Note finali Se l'idea di un «fiddle» come quello usato per eseguire codice Javascript nell'esercizio 4.1 vi piace, sappiate che esistono fiddle anche per altri linguaggi. Ad esempio, sul sito TutorialsPoint è disponibile un fiddle per programmi C++ che usa l'ultima versione del compilatore GCC.