Presentazione del corso: Informatica Generale el… · La differenza sostanziale è che in Excel,...

59
Presentazione del corso: Presentazione del corso: Informatica Informatica Generale Generale Università degli Studi "G. d'Annunzio" – Chieti Facoltà di Medicina Prof. Antonio Manzo Laurea in Fisica indirizzo Elettronico Abilitazioni all'insegnamento di Matematica, Fisica, Informatica, Elettronica Docente di Sistemi Automatici ITIS Pescara Docente di Matematica e Fisica Liceo Da Vinci Pescara Referente e Esaminatore AICA per ECDL (European Computer Driving Licence) Patente Europea del Computer

Transcript of Presentazione del corso: Informatica Generale el… · La differenza sostanziale è che in Excel,...

Presentazione del corso:Presentazione del corso:

InformaticaInformatica GeneraleGenerale

Università degli Studi "G. d'Annunzio" – ChietiFacoltà di Medicina

Prof. Antonio ManzoLaurea in Fisica indirizzo Elettronico

Abilitazioni all'insegnamento di Matematica, Fisica, Informatica, Elettronica

Docente di Sistemi Automatici ITIS PescaraDocente di Matematica e Fisica Liceo Da Vinci

PescaraReferente e Esaminatore AICA per ECDL

(European Computer Driving Licence) Patente Europea del Computer

I FOGLIELETTRONICI

1. OpenOffice.calcExecel e OpenOffice.calc sono due fogli elettronici che nell'uso comune sono Equivalenti. La differenza sostanziale è che in Excel, al contrario di OpenOffice.calc, vi è incorporato un surrogato del linguaggio di programmazione Visual Basic VB chiamato VBA che è di proprietà della Microsoft. OpenOffice.calc ha un modulo per l'esecuzione delle procedure VBA ma non ha il modulo per generare le routine di programma. 1.1.Caratteristiche di base:

calc è un programma libero di OpenOffice che consente di lavorare su grandi quantità di dati numerici per effettuare operazioni matematiche o per realizzare tabelle e grafici. Può essere eseguito dal menù attivabile da pulsante di avvio o cliccando su un file che contiene un foglio di calcolo. I documenti realizzati con calc hanno estensione ods Esso è comunque in grado di aprire altri documenti realizzati con altri software di calcolo come Excel che hanno estensione xls, tabelle e grafici. Può essere eseguito dal menù attivabile da pulsante di avvio o cliccando su un file che contiene un foglio di calcolo. I documenti realizzati con calc hanno estensione ods. Esso è comunque in grado di aprire altri documenti realizzati con altri software di calcolo come Excel che hanno estensione xls.

Illustrazione 1: L'Editore di OpenOffice.calc

Campo dei riferimenti

Barra delle formule

Barra di selezione dei fogli

Intestazione delle colonne

Intestazione delle righe

Nuovo documento, apertura chiusura, salvataggioCon OpenOffice c'è la possibilità di scegliere quale tipo di documento si intende aprire con Nuovo. Con Apri si visualizzano i file scegliendo le diverse opzioni circa i formati e con la possibilità di ricerca fra le unità di memoria. Con Documenti recenti si accelera la ricerca. Quando si chiude il documento occorre precisare il percorso, cioè l'unità e la directory in cui salvare. La procedura per il salvataggio si distingue in Salva e Salva con nome. La prima opzione è analoga alla procedura di Chiudi mentre per la seconda si può scegliere il formato del file da salvare. Al proposito con Open Office c'è un'ampio ventaglio di formati finali.Barra delle formuleVisualizza il contenuto della cella selezionata.Se una cella ontiene una formula, visualizza la formula (da cui il nome), mentre nella cella viene visualizzato il risultato della stessa.Esso è comunque in grado di aprire altri documenti realizzati con altri software di calcolo come Excel che hanno estensione xls, tabelle e grafici. Può essere eseguito dal menù attivabile da pulsante di avvio o cliccando su un file che contiene un foglio di calcolo. I documenti realizzati con calc hanno estensione ods. Un documento calc è formato da fogli, ognuno dei quali ha una griglia paragonabile a quella di un foglio a quadretti. Ciascun quadretto è identificato con due riferimenti dati dagli identificativi della

Illustrazione 2: Il Menù di File di Calc

colonna e della riga di appartenenza (es. A2 oppure C2). L'etichetta del foglio riporta il nome del foglio che può essere personalizzato rinominandolo (ad es. “consumo di acqua calda” al posto di Foglio 1. Ciò si ottiene aprendo la finestra contestuale con il clic del pulsante destro del mouse sull'etichetta e poi cliccando sulla voce Rinomina.La cella è l'elemento corrispondente al singolo quadretto del foglio a quadretti. La cella ha dunque due riferimenti: uno per la riga ed uno per la Colonna numeri contenuti in altre celle. Una cella può contenere numeri, testo e formule. Le formule consentono di introdurre nella cella selezionata dove si trovano il risultato di calcoli basati su numeri contenuti in altre celle. Per poter operare su un documento occorre prima caricarlo nella memoria centrale, poi al termine, occorre salvarlo in una memoria di massa. Queste operazioni fondamentali sono realizzabili dal Menu alla voce File dalla barra delle unzioni - Le principali sono:Nuovo foglio elettronico – crea nuovo foglio di calcolo vuoto.Apri - apre un foglio di calcolo realizzato in precedenza, cioè lo carica in RAM per poterci lavorare. E' possibile tenere aperti più fogli contemporaneamente e passare dall'uno all'altro con l'uso della voceFinestra del Menu o attraverso i pulsanti della barra delle applicazioni chiede se si intende farlo adesso (se si risponde “no” il documento o le variazioni apportate andranno irrimediabilmente persi).Procedure guidate – consente di realizzare un documento secondo un percorso guidato che aiuta l'utente a scegliere le migliori impostazioni di stile per il tipo di documento voluto. Salva – registra il foglio di calcolo su una memoria di massa (in modo da renderlo inutilizzabile in seguito). Se il documento esisteva già, calc lo salva senza altri permessi, altrimenti si richiedono gli stessi passaggi richiesti con Salva con nome.Salva con nome – è soprattutto usato per creare una seconda copia del documento con nome diverso nella stessa cartella o in una diversa.Chiudi – chiude un foglio di calcolo, cioè lo cancella dalla memoria RAM. Se il documento non è stato salvato, calc chiede se si intende farlo adesso (se si risponde “no” il documento o le variazioni apportate andranno irrimediabilmente persi). Selezione celle, righe, colonne – Qualunque operazione in calc richiede che prima sia selezionata la cella o il gruppo di celle su cui l'operazione deve essere eseguita. La selezione può avvenire in diversi modi:Selezione di una cella – basta cliccare su di essa con ilmouse o spostarsi con i tasti cursore.

Selezione di un gruppo di celle Ci sono 2 modi:con il mouse - posizionarsi sulla prima cella e selezionare il gruppo tenendo premuto il tasto sinistro del mouse;con la tastiera – posizionarsi sulla prima cella e selezionare il gruppo con i tasti cursore tenendo premuto il tasto maiuscole; Selezione di gruppi di celle non vicine – selezionare i vari gruppi tenendo premuto il tasto Ctrl. Sezione di una riga o di una colonna – cliccare sull'intestazione di riga o di

colonna. L'intestazione è la parte grigia posta all'inizio delle righe e delle colonne contenente l'identificatore di riga (numero) o di colonna (lettera).Selezione di un intero Foglio - Cliccare sull'elemento grigio posto all'incrocio tra le intestazioni di riga e colonna.Togliere una selezione – è sufficiente cliccare in un punto esterno alla selezione o muoversi

con i tasti cursore.Il ridimensionamento righe - con il mouse – posizionarsi con il mouse sul bordo tra l'intestazione della riga che si vuol ridimensionare e la successiva, cliccare e trascinare il bordo;Da menu - selezionare una cella della riga da ridimensionare e scegliere il menù Formato - Riga-Altezza: viene mostrata una finestra di dialogo nella quale si può scrivere l'altezza voluta.Da menu contestuale - premere il tasto destro del mousesull'intestazione della riga da ridimensionare e scegliere la voce Altezza riga.Il ridimensionamento colonne -Con il mouse: posizionarsi con il mouse sul bordo tra l'intestazione della colonna che si vuol ridimensionare e la successiva, cliccare e trascinare il bordo.Il ridimensionamento righe - con il mouse – posizionarsi con il mouse sul bordo tra l'intestazione della riga che si vuol ridimensionare e la successiva, cliccare e trascinare il bordo;Da menu - selezionare una cella della riga da ridimensionare e scegliere il

Illustrazione 3: Selezione di celle non adiacenti

menù Formato - Riga - Altezza: viene mostrata una finestra di dialogo nella quale si può scrivere l'altezza voluta.Da menu contestuale - premere il tasto destro del mouse sull'intestazione della riga da ridimensionare e scegliere la voce Altezza riga.La figura a fianco mostra come selezionare gruppi di celle non adiacenti. Da menù: selezionare una cella della riga da ridimensionare e s'cegliere il menù Formato - Riga - Altezza: viene mostrata una finestra di dialogo nella quale si può scrivere la larghezza voluta.Da menù contestuale: premere il tasto destro del mouse sull'intestazione della riga da ridimensionare e scegliere la voce Larghezza colonna. Inserimento – eliminazione Fogli, righe, colonne, celle Inserimento di un nuovo Foglio -Selezionare il menù Inserisci-Foglio; inserire il nome del foglio e scegliere dove lo si vuol posizionare Eliminazione di un Foglio – selezionare il menù Modifica – Elimina Foglio.Inserimento di una riga o colonna – selezionare una cella della riga o della colonna nella cui posizione si vuole inserire, selezionare il menù Inserisci - Righe o Inserisci - Colonne a seconda che si voglia inserire una riga o una colonna. In alternativa premere il tasto destro del mouse sull'intestazione della riga o colonna in cui si vuol inserire e scegliere Inserisci dal menù contestuale.Eliminazione di una riga o colonna – selezionare la riga o la colonna da eliminare (cliccando sulla corrispondente intestazione riga o colonna), selezionare il menù Modifica - Elimina celle. In alternativa dopo essersi posizionati su una cella della riga o colonna da eliminare, premere il tasto destro del mouse sulla relativa intestazione e scegliere la voce Elimina.Inserimento di una cella o gruppo di celle - selezionare la cella o il gruppo di celle in cui si vuole, inserire, selezionare il menù Inserisci - Celle o premere il tasto destro del mouse e scegliere la voce Inserisci celle. Appare una finestra che chiede se le celle che attualmente occupano le posizioni in cui si vuol inserire devono essere spostate a destra o in basso. Scegliere l'opzione voluta e premere OK.Eliminazione di una cella o gruppo di celle - selezionare la cella o il gruppo di celle da eliminare, selezionare una finestra che chiede se le celle intorno a quelle da eliminare devono essere spostate a sinistra o in alto. Scegliere l'opzione voluta e premere OK. Inserimento - cancellazione - modifica del contenuto di una cellaInserimento - per inserire qualcosa in una cella è sufficiente selezionarla e scrivere; al termine premere il tasto Invio o selezionare un'altra cella. Se la cella contiene già qualcosa il nuovo testo cancellerà il vecchio. Se il testo

scritto supera le dimensioni della cella e la successiva è vuota, esso verrà

mostrato per intero. Se la cella successiva è piena, il testo verrà mostrato solo fino ai limiti della sua cella e vicino al bordo destro della cella verrà mostrato un triangoletto rosso che indica che il testo non è finito. Comunque il testo completo verrà mostrato nella barra delle formule ogni volta che si seleziona la cella. Cancellazione: è sufficiente selezionare la cella o il gruppo di celle di cui si vuol cancellare il contenuto e premere il tasto Canc.Modifica. Se si vuole modificare il contenuto di una cella senza doverlo riscrivere da capo, si deve: selezionare la cella, cliccare sulla barra delle formule, posizionarsi con i tasti cursore nel punto di modifica, cancellare con il tasto Canc o Backspace la parte da sostituire ed inserire il nuovo testo. Spostamento e copia di celle e aree Spostamento di una cella o gruppo di celle selezionare la cella o il gruppo da spostare; premere il pulsante Taglia sulla barra delle funzioni o scegliere il menù Modifica - Taglia o attivare il menù contestuale e scegliere la voce Taglia; posizionarsi nel punto in cui spostare, premere il pulsante Incolla o scegliere il menù Modifica - Incolla o attivare il menù contestuale e scegliere la voce Incolla. Copia di una cella o gruppo di celle : selezionare la cella o il gruppo da copiare; premere il pulsante Copia sulla barra degli strumenti o scegliere il menù Modifica – Copia o attivare il menù contestuale e scegliere la voce Copia; posizionarsi nel punto in cui copiare, premere il pulsante Incolla o scegliere il menù Modifica – Incolla o attivare il menù contestuale e scegliere la voce Incolla.

1.2.Copia intelligente di una cella o gruppo di celle Se si seleziona una cella o gruppo di celle e si preme e si trascina il quadratino nero che compare nell'angolo in basso a destra della selezione, si ottiene una copia “intelligente” del contenuto delle celle. Questo significa che calc cerca di interpretare il contenuto della/e cella/e e di

Illustrazione 4: La formula di D1 copiata in E3 si sposta di due righe e di una colonna)

inserire nelle nuove celle valori coerenti con quello della/e cella/e di partenza. Per esempio se scriviamo la cifra 1 in una cella e facciamo il trascinamento intelligente, le celle successive conterranno le cifre 2, 3, 4, 5 ecc. ecc.. Se scriviamo Gennaio e trasciniamo, nelle celle successive appariranno i mesi successivi (attenzione nel trascinare si è guidati da un'opportuna legenda di scorrimento dei mesi). Formato numerico - se la cella contiene un numero, è possibile scegliere il

formato in cui verrà visualizzato. Dalla barra degli strumenti si possono

selezionare i formati: valuta, percentuale standard; inoltre è possibile scegliere anche il numero di cifre decimali da visualizzare. Dal menù Formato-Celle-Numeri è possibile scegliere anche altri formati. Una formula consente di effettuare operazioni matematiche su numeri contenuti in altre celle del foglio di lavoro. In una cella possiamo fare un calcolo. Per

indicare a calc che si sta inserendo una formula occorre digitare prima ”=”. In A1 e in B1 vi sono numeri mentre in C1 vi è una formula (ill. 35). In C1 dopo aver premuto il tasto

Illustrazione 6: Effetto della copia della formula

Illustrazione 7: Riferimenti misti

Illustrazione 5: Effetto dei riferimenti misti sulla copia

Invio si formerà il risultato della somma dei numeri in A1 e B1 come si vede nella ill. 50 calc interpreta i simboli A1 e B1 come coordinate degli addendi. Se si cambiano i numeri in A1 e in B1 non occorre riscrivere la somma in C1 perché calc ricalcola in modo automatico la nuova somma. Naturalmente si possono eseguire calcoli in modo diretto.

1.3.Riferimenti relativi e assoluti . Quando si copia una cella che contiene una formula, i riferimenti di cella presenti in questa vengono modificati in base alla posizione finale della cella destinataria. Copiando la formula di C1 in C2, automaticamente la

formula diventa =A2+B2. I riferimenti si spostano di quanto è il salto (in termini di celle) tra la cella dove si copia e quella da cui si è copiata la formula. In tal caso i riferimenti alle colonne A e B non cambiano perché non è cambiata la colonna su cui si è copiata la formula stessa. Al contrario i riferimenti di riga sono slittati di 1. In questo caso i

riferimenti sono detti relativi (illustrazione 36). Si noti la differenza dei risultati fra la copia della stessa formula della cella C1 in C2 (foglio di sinistra) e in D3 (foglio di destra). I riferimenti di riga e di colonna slittano di una riga nel primo caso e di due righe e una colonna nel secondo caso, cioè tanto quanto è la differenza fra le

righe e le colonne di origine e quelle di destinazione. Se si vuole evitare

Illustrazione 8: Riferimenti assoluti

Illustrazione 9: Effetto dei riferimenti assoluti sulla copia

Illustrazione 10: Esempio di uso dei riferimenti misti

che i riferimenti di cella cambino nella copia di una formula è necessario mettere davanti alle coordinate di cella il simbolo “$”(dollaro) cioè trasformare la formula di C1 nei riferimenti nel modo seguente =$A$1+ $B$1. Il risultato di C1 è uguale a quello di C2. La copia è stata fatta alla stessa maniera ma il risultato è diverso perché durante la copia, grazie al simbolo “$”, non sono cambiati i riferimenti. In tal caso il riferimento si dice assoluto. In alcuni casi é necessario usare riferimenti misti. Nelle formule copiate da C3 in C4, C5, C6 (ill.38), vi é stato il salto di celle solo per le righe e non per le colonne (la colonna é sempre “C”). Pertanto il riferimento assoluto “$” va premesso solo al riferimento di riga (riferimento cosiddetto misto). Se la formula in C6 fosse stata =$B$1*B6 il risultato non sarebbe cambiato. Il riferimento assoluto è necessario quando le formule in diverse celle devono usare un valore contenuto in una sola cella come nel caso che segue. Nelle due figure successive si mostra come si trasforma la formula di D1 quando è copiata in E3.

1.4.Funzioni standard (predefinite)calc mette a disposizione un insieme di funzioni già pronte: Esse sono elencate nella finestra Creazione guidata formule che si apre cliccando la

Illustrazione 11: Finestra delle funzioni predefinite

voce Funzione del sotto menù Inserisci (fig. 13). Ad es. la funzione SOMMA() che calcola la somma dei contenuti delle celle. Ggli elementi fra parentesi sono detti argomenti. La stessa funzione è attivabile cliccando sul simbolo sommatoria Σ nella barra delle formule.Nella scheda delle “Funzioni” sono rappresentate quelle già implementate che sono raggruppate per facilitarne la ricerca suddivise in categorie e

nella scheda “Struttura” vi è una utile guida dell'uso. Nella parte finale della funzione vengono scritti, fra parentesi, gli argomenti. Ad esempio MEDIA(A1,A2,

A3), vuol dire che la media si effettua con i numeri inseriti nelle celle A1, A2,A3. Quando le celle sono contigue come in questo caso gli argomenti possono essere così indicati A1:A7. Anche se si è molto esperti capita sempre di dover consultare la Guida.

1.5.La funzione CONTA.SE(Intervallo;criterio)Si abbia un elenco di ricoverati (matrice A2:B8) con l'età.Per contare quanti ricoverati hanno l'età < =50 anni e quanti più di 50 anniutilizziamo la funzione conta.se. Gli argomenti della funzione sono: L'area dei valori che, in questo caso, avendo copiato la funzione in D2, colonna a fianco,

deve avere la colonna fissa (riferimento assoluto davanti). Per la riga non

Illustrazione 12: Esempio di uso della funzione CONTA.SE

Illustrazione 13: Esempio di uso della funzione SE

occorre invece il riferimento assoluto. L'altro argomento è il criterio che in questo caso è dinamico nel senso che cambia da C1 a D1.

1.6.La Funzione SESi desidera scrivere un' altra colonna accanto all'età con “giovane” se essa è <=50 oppure “anziano” in caso contrario.La sintassi della funzione SE è: =SE(test;se vero;se falso). La funzione scritta in B2 si copia in B3:B8 e in D2:D8. La formula in questo caso non deve avere riferimenti assoluti né per la colonna né per la riga.Cerca.Vert(criterio;intervallo;indice;vero(nel senso è ordinato))Sia dato l'orario di lavoro dei quattro dipendenti di un reparto:Bianchi, Rossi, Neri e Verdi come da fig. .Con la fotmula in A6 si determina il dipendente al lavoro in una certa data (es. 12/0/10) e in un determinato turno (es.3). Rispetto alle altre sintassi già viste c'è indice come argomento che indica il numero d'ordine della colonna. Con criteri analoghi può essere usata la funzione Cerca.Orizz. La differenza è che, per l'esempio

Illustrazione 14: Esempio di uso della funzione CERCA.VERT

fatto, la ricerca si fa sui turni mentre per la data occorrerebbe indicizzare la data (non conviene).

Illustrazione 15: La sintassi delle funzioni predefinite

1.7.ESEMPIO DI CALCOLO:Per la preparazione e la somministrazione di un farmaco. calcolare il numero di gocce al minuto da fare erogare da un micro gocciolatore una volta preparata la soluzione. La soluzione viene preparata tenendo conto del dosaggio, del peso del farmaco, del volume di soluzione a disposizione e del peso del paziente. I

parametri iniziali sono:• Il dosaggio del farmaco dato in microgrammi (della medicina) per

chilo (del paziente al minuto (velocità di erogazione) (mcg/Kg/min) in B1;

• Il volume del diluente in milli litri (ml) in B2;• Peso del farmaco nella fiala; (milligrammi mg) in B3;• Peso del paziente in Kg in B4;• Caratteristiche del gocciolatore (dimensione delle gocce: numero di

gocce per erogare 1 ml di soluzione);Le formule sono riportate sul foglio ill.57.

Illustrazione 16: Configurazione di un gocciolatore

1.8.Tabelle Pivot (per motivi non chiar Pilot in OpenOffice) Uso delle tabelle Pivot per analizzare i dati di un elenco. Selezionare l'elenco e poi dal Menù digitare Dati, DataPivot e Avvia. Dopo aver scelto se servirsi dell'elenco attuale oppure di un altro archiviato in qualche memoria, si arriva allo “schema guida” di figura.

Per compilare lo schema occorre aver chiaro l'obbiettivo da raggiungere e quindi individuare una voce dell'elenco da mettere al centro (Pivot). In

Illustrazione 17: Elenco di articoli vari

Illustrazione 18: Uso della tabella Pivot per organizzare i dati dell'ill.17

Si preme il pulsante “Filtro” e si estraggono i dati che interessano riportati sotto

questo esempio si è scelto “Importi Fattura”.

1.9.Risolvere un'equazione(se risolvibile) possiamo usare lo strumento Risolutore che si attiva con un

click su “Strumenti” del Menù. Si voglia risolvere l'equazione che si trova B1. Si definisce la cella A2 come “x” facendo click su “Inserisci”, “Nomi”, “Definisci”. Inizialmente A2=0 e quindi anche x = 0 e l'espressione (l'equazione senza 2°

membro) in B2 vale -2. Facendo click su “Strumenti” del Menù e poi click su”Ricerca valore di destinazione” si ha la seguente finestra di

dialogo, si inseriscano i valori visualizzati e “Ok”. Si ottiene il risultato il risultato 0,68 che appare nella cella A2. Se

l'equazione non ammette soluzioni apparirà un messaggio di avviso”.

Illustrazione 20: esempio di applicazione del Risolutore

Illustrazione 19: Esempio di applicazione del Riosolutore

Illustrazione 21: Finestra finale del Risolutore

2. I GraficiSpesso l'analisi e l'elaborazione dei dati numerici può essere aiutata da opportuni “diagrammi” (o grafici); I fogli di calcolo elettronico mettono a disposizione la possibilità di costruzione dei grafici. calc guida l'utente nel

loro utilizzo come si vede nella schermata:

Il grafico a TORTA mette bene in evidenza il confronto dei ricoveri nei diversi reparti. Il numero dei flaconi di acqua distillata può essere correlato al numero dei ricoverati e agli anni trascorsi.

Illustrazione 22: Finestra della guida per la scelta del tipo di grafico

Illustrazione 23: Grafico a "Torta"

In funzione dei dati da rappresentare, i diagrammi sono (devono) essere di tipi diversi. Si propone come esercitazione la costruzione dei grafici dei ricoveri dei vari reparti in funzione degli anni in base alla seguente tabella.

Annno Ortopedia Pediatria Medicina2000 235 234 120 2001 234 280 1242002 223 267 1122003 211 245 109 2004 218 289 145 2005 245 243 128 2006 300 269 136 2007 278 278 146 2008 209 282 112

totali 2263 2387 1132La composizione dei ricoveri di un ospedale sarà efficacemente

Illustrazione 24: Grafico XY e a Linea e linee di andamento

visualizzata confrontando le percentuali dei ricoveri nei vari reparti per mese ( scrivere il primo mese e poi trascinare la cella) come nell'ill.24.Il seguente esempio mostra una tabella dove sono riportati i consumi di flaconi di acqua e i ricoveri in due reparti. Sono riportati due tipi di grafico, il primo Linea, il secondo Colonne per gli stessi dati. Sul primo è riportata la linea di andamento e sul secondo la linea media dei flaconi. Le linee di tendenza evidenziano che il consumo di flaconi è in controtendenza rispetto al numero dei ricoveri (anomalia che andrebbe approfondita). Notare che la base dei dati è la colona dei mesi anziché quella della numerazione delle righe come è per default. Con il tipo a “Linea” il confronto fra gli andamenti appare più evidente che non nel tipo a “Colonne”. Nell'esempio seguente la tabella riporta il tasso di mortalità per tumori per fasce d'età. In tal caso il grafico più opportuno è a Dispersione o XY. Il risultato è un insieme di punti sul piano cartesiano. In tal caso, applicando la funzione Correlazione si ottiene il risultato 0,81 che implica una scarsa relazione diretta fra le misure statistiche. Fare click Dx

su un punto del grafico e si apre il menù contestuale, si seleziona “linea di tendenza” , quindi click su tipo “Esponenziale” si ottiene la linea di andamento esponenziale che è molto prossima all'andamento dei punti.In tal caso si sceglie come linea di andamento quella lineare e si ottiene

Illustrazione 25: L'andamento viene approssimato con una curva esponenziale

che la linea di andamento approssima bene l'insieme dei punti ed che il coefficiente di correlazione r = 0,98 . Ciò mostra una relazione convincente fra le due variabili. Il risultato che si può trarre è quindi che il tasso di mortalità è dipendente esponenzialmente con le fasce di età.Negli esempi che seguono si mostra come si possano fare le simulazioni utilizzando il calcolo automatico di un foglio elettronico.

Illustrazione 26: La curva è approssimata con un'altra ad andamento lineare

ESEMPIO: Determinazione delle traiettorie sul piano di corpi di massa ms con velocità Velx, Vely iniziali e nella posizione (posx,posy) in un piano cartesiano dove all'origine è posto un corpo di massa MT.La costante gravitazionale è in H2 e l'intervallo di empo della rilevazione è in J2. Partendo dall'stante 0 in A4 con l'applicazione delle formule esposte nelle note si rideterminano la nuova velocità e la nuova posizione del

corpo ms. L'esempio è puramente qualitativo. Sul grafico di tipo XY sono riportati le posizioni posx(t) e posy(t) di ms.(azzurro) e in giallo sono riportati gli istanti in funzione della posizione posx(t). Tale curva mostra i periodi di oscillazioni del corpo ms. Si è supposto che gli intervalli di tempo siano tanto brevi che è possibile ipotizzare un moto rettilineo ed uniforme.

Illustrazione 27: Simulazione del Moto dei pianeti

ESEMPIO: Caduta di una sfera in un liquido viscoso.Le formule applicate sono nell'intervallo A2:A6. Si è supposto che gli intervalli sono così brevi da ritenere il moto rettilineo e uniforme.Il grafico riporta la velocità v(t). e il risultato è teoricamente corretto.

Illustrazione 28: Simulazione della caduta di un corpo in un mezzo viscoso

ESEMPIO: Calcolo automatico della probabilità per una distribuzione standard normalizzata. Si inseriscono il limite inferiore, il limite superiore attraverso le celle denominate “a” e “b”. Nel caso uno dei due dovesse mancare premere il tasto “Blank” Invio a vuoto.

Illustrazione 29: Automazione del calcolo di probabilità in una distribuzione normalizzata standard

Si fa uso della funzione predefinita “Cerca.Orizz..”.Si preme il pulsante “Avvio” e con la funzione InputBox si inseriscono i valori di a e di b. Per il risultato scegliere il pulsante opportuno. Nella ill. per valori di a e di b si ottiene premendo il pulsante “p(a<z>b)” si ha =0,1358. Il codice è il seguente. A6 e B6 contengono rispettivamente la formula Cerca.orizzontale per calcolare la probabilità per z>a e z>b.

SORGENTEPrivate Sub CmdPab_Click() TextBox2.Text = "" TextBox3.Text = "" TextBox1.Text = Abs(Range("B6") - Range("A6"))End SubPrivate Sub CmdPb1_Click() TextBox1.Text = "" TextBox3.Text = "" If b > 0 Then TextBox2.Text = Abs(0.5 + Range("b6")) Else TextBox2.Text = Abs(0.5 - Range("b6")) End If End Sub

Private Sub CmdPb2_Click() TextBox1.Text = "" TextBox2.Text = "" If b > 0 Then TextBox3.Text = Abs(0.5 - Range("b6")) Else TextBox3.Text = Abs(0.5 + Range("b6")) End If End SubPrivate Sub CmdAvvio_Click() Range("B4") = InputBox("Immettere valore di a") TextBox4.Text = Range("B4") Range("D4") = InputBox("Immettere Valore di b") TextBox5.Text = Range("D4") a = Cells(4, 2) b = Cells(4, 4)End SubPrivate Sub CmdAzzera_Click() TextBox2.Text = "" TextBox1.Text = "" TextBox3.Text = "" TextBox4.Text = "" TextBox5.Text = "" Range("B4") = "" Range("D4") = ""End SubPrivate Sub Worksheet_SelectionChange(ByVal Target As Range) TextBox2.Text = "" TextBox1.Text = "" TextBox3.Text = "" TextBox4.Text = "" TextBox5.Text = "" Range("B4") = "" Range("D4") = ""End Sub

VISUAL BASIC

3. Visual Basic e La Programmazione orientata agli oggettiI linguaggi di programmazione orientati agli oggetti come Visual Basic, codificano gli algoritmi del progetto e usano oggetti standard o creati dall'utente. Questi possono avere Proprietà e Metodi.Le proprietà e i metodi si riferiscono alla loro individuabilità, alle opzioni geometriche/grafiche e alle possibili azioni degli oggetti.Un programma è composto da una sequenza di subroutine che rispondono a degli eventi che saranno invocati in una subroutine principale o con le azioni sugli oggetti che compongono il progetto.Le subroutine possono essere del tipo “Private” o “Public” se utilizzate solo nel programma corrente o meno.Le Macro dei pacchetti Office possono essere sviluppate in Visual Basic Application “VBA” che, essendo un prodotto Microsoft, non è a disposizione di pacchetti non Microsoft. OpenOffice è comunque in grado di eseguire le Macro anche dei pacchetti Microsoft.In VBA non sono presenti tutte le risorse di VB.In generale vi sono due tipi di linguaggi di programmazione: Interprete e Compilatori.L'interprete al contrario dei tipi Compilatori non trasforma preventivamente tutto il programma scritto, denominato “sorgente”, insieme alle parole chiave tipiche del linguaggio usato, in linguaggio macchina.Pertanto il tipo interprete risulta più lento nell'esecuzione dei programmi pur avendo il vantaggio di modifiche del programma stesso durante la sua esecuzione. Visual Basic messo a confronto con altri linguaggi similari (Visual C e Delphy) presenta le stesse opportunità anche se risulta più lento in programmi a scopi scientifici.Nella figura successiva sono messi in evidenza i passi che portano alla produzione di un file eseguibile:Il sorgente viene scritto con un editore di testo usando la struttura e la sintassi del linguaggio di programmazione usato. Anche l’estensione del nome del file dipende dal linguaggio; nel caso di Visual Basic il progetto completo è del tipo “name.vbp.”

Questo testo viene tradotto da un compilatore in una sequenza di 01 (linguaggio macchina) detto programma oggetto “name obj” (object); Il programma oggetto deve essere collegato dal linker ai moduli precostituiti del linguaggio di programmazione ottenendosi in tal modo il

programma eseguibile. “name.exe”.

Disegno 1: Fasi della costruzione di un eseguibile

Disegno 2: Struttura di un programma applicativo

Se i passaggi precedenti non contengono errori al termine si ottiene il file exe (eseguibile).Alcuni linguaggi di programmazione non compilano tutto il testo in una sola volta bensì interpretano ed eseguono le istruzioni volta per volta. Il file comunque ottenuto è composto da istruzioni, dati e interfaccia come schematizzato nella ill. 8.Le istruzioni sono contenute nel sorgente. I dati possono essere inseriti sia nel sorgente che in un database esterno. L'interfaccia è un insieme di oggetti che facilitano l'uso del programma.

3.1.ModelliUn modello è una rappresentazione di una parte della realtà che, isolandola dal contesto, tiene conto di tutti gli elementi determinanti per la soluzione di un problema a essa inerente.Il passaggio dal problema al modello è un processo di formalizzazione che tiene conto degli elementi caratterizzanti di ciò che si intende studiare e le relazioni che intercorrono fra essi. Si arriva alla soluzione dei problemi attraverso algoritmi.

3.2.AlgoritmiUn algoritmo è una successione ordinata e finita di tutte le operazioni da compiere per raggiungere il risultato desiderato.In generale dovranno essere seguiti i seguenti passaggi:

• Individuazione degli obiettivi• Costruzione del modello del problema• Individuazione dei dati disponibili• Individuazione del processo risolutivo e/o legge fisica• Costruzione dell'algoritmo• Comunicazione dei risultati

Ad esempio per la gestione del marketing, in prima analisi, gli elementi che si dovranno considerare sono i clienti, i prodotti, le loro relazioni ed i menu' che consentono all'utente di usare i programmi.Un algoritmo è una sequenza ben definita e ordinata di eventi: Ad esempio è' un evento il Click con il mouse o il suo movimento, l'esecuzione di calcoli, la digitazione di un tasto o la stampa ecc. ecc..Modello e algoritmo sono intimamente connessi. Se occorre definire un percorso fra due località occorre definire il modello di riferimento. Ad esempio se hanno importanza o meno i particolari del percorso. Se ad esempio devo

inquadrare il percorso Pescara Roma per il rimborso del pedaggio autostradale devo semplicemente precisare i caselli di entrata e di uscita , mentre se lo scopo è di individuare il tempo di percorrenza bisogna indicarne la tortuosità, le pendenze, ecc. ecc. Quindi i modelli sono diversi a seconda del problema da risolvere. L'algoritmo nel primo caso dovrà essere in grado di determinare il pedaggio, mentre nel secondo, un tempo di percorrenza.Il linguaggio di progetto per definire un algoritmo consiste nella descrizione dettagliata e sequenziale di tutte le azioni.Esempio di AlgoritmoUn cortile rettangolare di 60m x 40m ha al centro un'aiuola circolare di raggio 5 m. Il cortile deve essere pavimentato con mattonelle quadrate di 33cm di lato. Determinare il numero di mattonelle e il costo sapendo che mattonelle più mano d'opera costano 35 € al mq. In una prima fase si usa il seguente “linguaggio di progetto”.Inizio Leggi lato1 (rettangolo) Leggi lato2 (rettangolo) Leggi raggio (aiuola) Leggi lato3 (mattonella) Leggi costo unitario(mattonella+ mano d'opera) Calcolo area_cortile Calcolo area_aiuola Calcolo area_rettangolo - area_aiuola Calcolo area_mattonella Scrivi Calcolo ((area_cortile –area_aiuola)/area_mattonella)*costo

unitarioFineDopo di che si scrive il codice nel linguaggio desiderato. Il Flow Chart è qello del dis. 9. Questo codice è riportato nel dis. 14.

Disegno 3: Flow Chart del calcolo del costo della pavimentazione

inizio

Introduci: Base, Altezza, Raggio, Lato, Costo unitario

Calcolo=

(Base*Altezza-Pigreco*Raggio^2)^Costo_unitario)/Lato^2

Scrivicalcolo

fine

Calcolare la media di tre numeri “Linguaggio di progetto”Inizio Leggi A Leggi B Leggi C Media=(A+B+C)/3 Scrivi MediaFine

Notare che fra una riga e la successiva vi è un diverso allineamento che indica la sequenza e la gerarchia dei segmenti di programma (indentazione). Il diagramma di flusso accanto è tradotto con la routine che può essere dugitata al termine dei seguenti passaggi:

• Dalla barra degli strumenti di Excel opzionare “Visual Basic” e appare la finestra seguente.

• Dopo aver aperto la finestra dei controlli, sul Foglio si Inserisca un pulsante denominato “Avvio” dis. 10

Disegno 4: Diagramma di flusso della routine "Media"

Illustrazione 30: Barra degli strumenti di Excel

Se non è di default, Visual Basic viene caricato aprendo la barra degli strumenti e con un click sulla voce relativa. Si ottiene in tal modo la

finestra sotto. Si può accedere a Visual Basic anche dal “Menù” principale, “Strumenti” e “Macro”. Si entra nell'editore Visual Basic facendo Click sull'icona “Modalità di

progettazione”. Con un click sul pulsante creato “Media” si entra nell'editore VBA in cui si può scrivere il codice. La subroutine è già preimpostata. Si scrive il codice illustrato nella pagina successiva. Nella sub routine si fa uso della Funzione: “Inputbox (sintassi nella guida di VBA) e della dichiarazione d variabili “Dim variabili As tipo”e del Metodo “Click” dell'oggetto “ Media”.

SORGENTEDim A, B, C, M, Media As Double

Sub CmdAvvio_Click() A = InputBox(A) Cells(1,1)=A

Disegno 6: Finestra di accesso a Visual Basic

Visual Basic Editor per scrivere il programma

sorgente

Modalità di progettazioneCliccando alternativamente si passa alla progettazione

alla esecuzione

Stumenti di controllo per creare sul foglio

oggetti grafici

Disegno 5: Finestra dei controlli e delle proprietà degli oggetti in uso

Finestra dei Controlli

Controlo Command

Buttom

Finestra delle proprietà

B = InputBox(B) Cekks(2,1)=B C = InputBox(C) Cells(3,1)=C M = Val(A) + Val(B) + Val(C) Media = M / 3 Cells(4, 1) = MediaEnd Sub

Essa si attiva con il click sul pulsante “Avvio” precedentemente creato sul foglio. Oppure, visualizzando l'Editore di Visual Basic, dopo aver premuto il pulsante “ “, si inserisce il nome della macro che potrà essere eseguita. La Macro può essere eseguita con “Esegui Macro” e con un click sul titolo “Foglio1. CmdAvvio_click”. I controlli che compaiono nella relativa finestra sono attivati facendo click sulla icona rappresentante il controllo desiderato e quindi trascinandolo (drag and drop) nel punto desiderato del foglio. Nell'esempio si fa uso del Command Buttom che viene trascinato nel punto desiderato (Avvio). Si apre la finestra delle proprietà. Nel campo “Name” si scrive CmdAvvio e nel campo “Caption” si scrive Avvio.

Dim Base, Altezza, Raggio, Lato, Costo_unitario, Calcolo As DoubleConst pigreco = 3.14

Sub CmdAvvio_Click() Base = Val(InputBox("Base del rettangolo")) Cells(1, 1) = Base Altezza = Val(InputBox("Altezza del rettangolo")) Cells(2, 1) = Altezza Raggio = Val(InputBox("Raggio dell'aiuola")) Cells(3, 1) = Raggio

Lato = Val(InputBox("Lato della mattonella")) Cells(4, 1) = Lato Costo_unitario = Val(InputBox("Costo unitario mano d'opera e mattonella")) Cells(5, 1) = Costo_unitario Calcolo = (Base * Altezza - pigreco * Raggio ^ 2) * Costo_unitario / Lato ^ 2 Cells(6, 1) = CalcoloEnd Sub

Disegno 7: Codice dell'esempio del costo pavimentazione

Strutture di ripetizione ESEMPIO: Con il seguente programma si introducono 100 nomi nella colonna A del foglio elettronico. L'introduzione è interrotta se si digita “Invio” a vuoto.FOR …...TO…….NEXTLa variabile “i” funge da contatore che si aggiorna (in questo caso aumenta di 1) quando l'esecuzione torna alla condizione.

SORGENTE (in verde le spiegazioni delle istruzioni)

Private Sub CmdAvvio_Click()For i = 1 To 100 'Esegue l'istruzione dopo Next se i > 100' nome = InputBox("nome")' 'si inserisce un nome da tastiera' cells(i,1)=nome 'si assegna il nome alla cella di riga “i” e colonna “A”' If Cells(i, 1) = "" Then 'Si controlla se viene digitato “Invio” a vuoto' End 'interrompe l'inserimento dei nomi e si esce dal ciclo For' End IfNext 'i viene incrementato di 1 e verrà eseguita l'istruzione For di nuovo'End Sub

Nel diagramma la cella(i,1) corrisponde alla colonna A riga i A(i). Passando da VBA a Excel facendo click su Avvio, si apre una finestra di dialogo in cui si chiede di inserire il nome e cliccando su “OK” si ottiene:

Disegno 8: Esempio For..Next

Nome = ” ”

veroI < 100

I = i + 1

vero

A(i)=nome

inizio

Fine

falso

falso

3.3.Strutture di selezione ESEMPIO: Viene assegnata una multa secondo di quanto si supera la velocità massima “velocitàMax”IF....THEN......ELSE.......ENDIFDim velocità, multa As DoubleConst base = 100, velocitàMax = 130

Private Sub Avvio_Click() 'si avvia con l'evento click su Avvio' velocità = Val(InputBox("velocità")) If velocità > velocitàMax + 30 * velocitàMax / 100 Then multa = 2 * base Else If velocità > velocitàMax + 20 * velocitàMax / 100 Then multa = 1.5 * base Else If velocità > velocitàMax + 10 * velocitàMax / 100 Then multa = base Else multa = 0 End If End If End IfCells(1, 1) = multaEnd Sub

Disegno 9: Esempio Struttua di selezione

multa=base

inizio

fine

Stampa multa

velocità>1,3Max

velocità>1,1Max

velocità>Maxvero

vero

vero

falso

falso

falso

multa=2*base

multa=1,5*basemulta=base

3.4.Strutture di selezione 3.5.SELECT CASE..CASE.. ELSE…END SELECT Dim velocità, multa As DoubleConst base = 100, velocitàMax = 130

Private Sub Avvio_Click() 'si avvia con l'evento click su Avvio' velocità = Val(InputBox("velocità")) Select Case velocità Case Is > velocitàMax + 30 * velocitàMax / 100 multa = 2 * base Case Is > velocitàMax + 20 * velocitàMax / 100 multa = 1.5 * base Case Is > velocitàMax + 10 * velocitàMax / 100 multa = base Case Else multa = 0 End SelectCells(1, 1) = multaEnd Sub

Questa struttura realizza la stesa routine precedente però è da preferire perchè le opzioni di scelta sono numerose e quindi i passi di codice risultano meno numerose.

Disegno 10: Struttura Select Case End Select

multa=1,5*basemulta=base multa=0multa=2*base

Velocità > Max+30%*Max

Introduci velocità

inizio

fine

Stampa multa

Velocità > Max+20%*Max

Velocità > Max+10%*Max

Velocità > Max

3.6.Strutture di ripetizione controllo di codaSi voglia scrivere i numeri interi a partire da 1 fino a che la loro somma sia maggiore di un numero inserito in una variabile “Dato” DO set istruzioni LOOP UNTIL condizioneSi noti che in tal caso il set di istruzioni è eseguito almeno una volta

SORGENTE

Private Sub Avvia_Click() 'si avvia con l'evento click su Avvia'dato = Val(InputBox("dato")) 'si assegna da tastiera un' valore a DatoSomma = 0 'si inizializza Somma' Do i = i + 1' si attiva il contatore i' Cells(i, 1) = InputBox("numero")' 'si assegna un valore a Dato' Somma = Somma + Cells(i, 1) Loop Until somma > dato 'Esce dal loop quando Somma>Dato'End Sub

Disegno 11: Struttura a controllo di coda

Somma >Dato

inizio

fine

somma=somma +i

i=i+1

i=0

somma=0

Stampa i

Leggi dato

vero

falso

3.7.Strutture di ripetizione controllo di testaESEMPIO: Si voglia scrivere i numeri interi “i” a partire da 1 fino a che la loro somma sia maggiore di un numero inserito in una variabile “Dato”DO Until condizioneset istruzioni LOOP Si noti che in tal caso il set di istruzioni potrebbe non es sere mai eseguito

Dim Dato As Double

Private Sub Avvio_Click() 'si avvia con l'evento click su Avvia'Dato = Val(InputBox("dato") 'si assegna da tastiera un' valore a

Dato'somma = 0 'si inizializza Somma'i = 0 Do Until somma > Dato 'Esce dal loop quando Somma > Dato' i = i + 1 ' si attiva il contatore i' Cells(i, 1) =InputBox("numero") 'si assegna da tastiera un' valore

a Dato somma = somma + Cells(i, 1) LoopEnd Sub

Disegno 12: Struttura a controllo di testa

Somma >dato

inizio

fine

Somma =somma +i

i= i + 1

i = 1

Somma = 0

Leggi Dato

vero

Falso

3.8.Strutture di ripetizione controllo di testaSi voglia scrivere la somma di numeri interi progressivi n tale che n < maxDO WHILE condizione set istruzioni LOOP

Si noti che in tal caso il set di istruzioni potrebbe non essere mai eseguitoSORGENTEDim max As Double

Private Sub Avvio_Click() 'si avvia con l'evento click Avvio'

max = InputBox("Max") 'si assegna Max'

Somma = 1 'si inizializza Somma' n = 1 'si inizializza n=1' Do While n < max n = n + 1 ' si attiva il contatore n' Somma = Somma + n Loop 'Esce dal loop quando n > =

Max' Cells(1, 1) = Somma

End Sub

3.9.

Disegno 13: Struttura a controllo di testa

vero

falso

inizio

n = 1

somma=1

Leggi max

n < max

n = n + 1

fine

Somma=somma+n

Stampa somma

3.10. Strutture di ripetizione controllo di codaESEMPIO: Si voglia scrivere la somma di numeri interi progressivi n tale che n < max DO set istruzioni LOOP WHILE condizione Si noti che in tal caso il set di istruzioni almeno una volta viene eseguito

SORGENTEDim max As Double

Private Sub Avvio_Click() 'si avvia con l'evento click Avvio'

max = InputBox("Max") 'si assegna Max'

Somma = 0 'si inizializza Somma' n = 1 'si inizializza n=1' Do n = n + 1 ' si attiva il contatore n' Somma = Somma + n Loop While n < max 'Esce dal loop

quando n > = Max' Cells(1, 1) = Somma

End Sub

Disegno 14: Struttura a controllo di coda

Somma =somma +n

vero

Stampa somma

n < max

inizio

fine

n = n + 1

n = 1

Somma = 0

Leggi max

falso

ESEMPIO: Si voglia scrivere la somma di numeri interi progressivi n tale che n < max DO set istruzioni LOOP WHILE condizioneSi noti che in tal caso il set di istruzioni almeno una volta viene eseguito

SORGENTE

Dim max As DoublePrivate Sub Avvio_Click() 'si avvia con l'evento click Avvio' max = InputBox("Max") 'si assegna Max' Somma = 0 'si inizializza Somma' n = 1 'si inizializza n=1' Do n = n + 1 ' si attiva il contatore n' Somma = Somma + n Loop While n < max 'Esce dal loop quando n > = Max' Cells(1, 1) = SommaEnd Sub

Le routine che possono essere create sono di due tipi: Sub; Function.Le Sub hanno la struttura già vista negli esempi precedenti mentre la struttura delle Function è riportata di seguito.All'interno di entrambe possono essere richiamate altre Sub o Function.La Function restituisce un valore e pertanto deve esserne definito il tipo.Di seguito è stata indicata la variabile che prenderà il valore della Function come Variabileaccogliente.Sub RoutineSub NomeRoutine().................................

Disegno 15: Struttura a controllo di coda

vero

falsoStampa somma

n < max

inizio

fine

Somma =somma +n

n = n + 1

n = 1

Somma = 0

Leggi max

Variabileaccogliente=nomeFunzione(dato1, Dato2).................................End SubPossono essere inserite anche routine funzioni (Function) non già definite in base alla seguente struttura: (senza passaggio di valori): Routine FunctionFunction NomeFunzione (ByVal dato1, byVal dato2) As TipovariabileNome Funzione=espressione(dato1,Dato2).........End Function

3.11. Esempio di istruzione FunctionIn questo esempio l'istruzione Function viene utilizzata per dichiarare il nome, gli argomenti e il codice che costituiscono il corpo di una routine Function. ' La seguente funzione definita dall'utente restituisce' la radice quadrata dell'argomento passato.Function RadiceQuadrata(dato As Double) As Double If dato < 0 Then

'Esce dalla routine e torna alla routine chiamante.

Exit Function Else

' Restituisce la radice quadrata. RadiceQuadrata = Sqr(Dato)

End IfEnd FunctionESEMPIO (completo di una Sub e di una function)Soluzione di un'equazione di 2°. Si utilizza:

• Un pulsante “Soluzione eq. 2° ax^2+bx+c=0” con Name “CmdAvvio”;

• Un pulsante “Esci” con Name “CmdEsci”• Una Macro “Equazione_2” utilizzando la procedura Registra Macro, Interruzione Macro.

Questa Macro serve a formattare le celle interessate nel modo desiderato (si veda ill.).

Generalmente, là dove è possibile conviene servirsi dello strumento Macro per scrivere parti del codice. IL codice del programma risulterà più semplice. Nel programma che segue, la formattazione delle celle si effettua con la Macro “Equazione_2” che viene eseguita richiamando la Macro nella routine. Le Macro sono rappresentati come Mouli. In coda al programma è riportato il codice della Macro “Equazione_2”.Tale codice potrà essere “Compilato”. I moduli creati sono visualizzati nella struttura ad albero di VbaProject facendo click su “Visualizza” e “Gestione Progetti”. Nell'esempio consierato la Macro è descritta come “Modulo1”. Le Macro possono essere compilate selezionando “Esegui” sulla barra el Menù principale e con un click su “Compila”.

Private Sub CmdAvvio_Click() Equazione_2 'richiamo della Macro Equazione_2' Cells(2, 1) = Val(InputBox("a")) Cells(2, 2) = Val(InputBox("b")) Cells(2, 3) = Val(InputBox("c")) a = Cells(2, 1) b = Cells(2, 2) c = Cells(2, 3) radicando = b ^ 2 - 4 * a * c Delta = RadQuadrata(radicando) 'richiamo della funzione RadQuadrata' X1 = (-b + Delta) / (2 * a) X2 = (-b - Delta) / (2 * a) Cells(4, 1) = X1 Cells(4, 2) = X2 End Sub

Function RadQuadrata(ByVal Dato As Double) As Double If Dato < 0 Then

Illustrazione 31: Struttura ad albero che evidenzia gli oggetti del Progetto Eq_2.xls

Exit Function Else RadQuadrata = Sqr(Dato) End IfEnd Function

Private Sub CmdEsci_Click() Range("a1:C6") = "" EndEnd Sub

La Macro “Equazione_2”Sub Equazione_2() ' Macro Equazione_2' Range("A1:C4").Select Selection.NumberFormat = "0.00;[Red]0.00" With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .WrapText = False .Orientation = 0 .AddIndent = False .ShrinkToFit = False .MergeCells = False End With Selection.Rows.AutoFit Selection.Borders(xlDiagonalDown).LineStyle = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone With Selection.Borders(xlEdgeLeft) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeTop) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeBottom)

.LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeRight) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With Selection.Borders(xlInsideVertical).LineStyle = xlNone Selection.Borders(xlInsideHorizontal).LineStyle = xlNone With Selection.Font .Name = "Arial" .FontStyle = "Normale" .Size = 16 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = xlAutomatic End With Range("A1").Select ActiveCell.FormulaR1C1 = "a" Range("B1").Select ActiveCell.FormulaR1C1 = "b" Range("C1").Select ActiveCell.FormulaR1C1 = "c" Range("A3").Select ActiveCell.FormulaR1C1 = "X1" With ActiveCell.Characters(Start:=1, Length:=1).Font .Name = "Arial" .FontStyle = "Normale" .Size = 16 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False

.Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = xlAutomatic End With With ActiveCell.Characters(Start:=2, Length:=1).Font .Name = "Arial" .FontStyle = "Normale" .Size = 16 .Strikethrough = False .Superscript = False .Subscript = True .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = xlAutomatic End With Range("B3").Select ActiveCell.FormulaR1C1 = "X2" With ActiveCell.Characters(Start:=1, Length:=1).Font .Name = "Arial" .FontStyle = "Normale" .Size = 16 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = xlAutomatic End With With ActiveCell.Characters(Start:=2, Length:=1).Font .Name = "Arial" .FontStyle = "Normale" .Size = 16 .Strikethrough = False .Superscript = False .Subscript = True .OutlineFont = False .Shadow = False

.Underline = xlUnderlineStyleNone .ColorIndex = xlAutomatic End With Range("A4:B4").Select With Selection.Interior .ColorIndex = 34 .Pattern = xlSolid End WithEnd Sub

E' evidente che con l'uso delle Macro il risparmio di lavoro è notevole.

Un programma in Visual Basic è formato dai files con estensione bas e frmche compongono il file con estensione vpp che a sua volta viene

Disegno 16: L'Editore di Visual Basic che usa un Form

compilato e linkato in un file con estensione exe.

Disegno 17: La finestra del progetto e delle proprietà e dei controlli

nomefile.frm

nomefile.basnomefile.vdp nomefile.exe

Nell'esempio seguente viene caricata un'applicazione in un form denominato e”Esempio 1 “e poi si esce dall'applicazione.

Si esegue l'applicazione cliccando le voci del menù “Run” e “Start” e si esce cliccando sul pulsante di chiusura “X” del form.Nell'esempio seguente si illustra una routine per uscire dal form.

Fra le parentesi possono essere indicati dei parametri che vengono passati e utilizzati nella procedura.Possono essere create delle routine e delle funzioni ad hoc. Le routine e le funzioni create possono essere richiamate in altre routine digitandone il nome preceduto da “Call”. Alle nuove routine possono essere passati al momento della chiamata valori che saranno utilizzati successivamente nella routine esecutrice. Nella routine chiamante scrivere : “Call NomeRoutine (Datoinviato1, DatoInviato2,.. .) “Per la routine esecutrice, se per passaggio di valori, scrivere:“Public/Private Sub NomeRoutine(ByVal DatoRicevuto1, ByVal Datoricevuto2.)”. Nella routine esecutrice i Dati ricevuti sono uguali a Dato inviato.Nell'esempio nella routine CmdAvvio_Click() si invoca calcolay e xMin, xMax sostituiscono m e n nell'esecuzione della routine calcolay. I valori di xMin e xMax rimangono immutati anche se m ed n cambiano nel corso della routine esecutrice.Con lo scambio di valori occorre che la routine esecutrice dichiari le sue variabili di scambio. Pertanto la routine esecutrice assume la forma: Sub NomeRoutine(Datoscambio1 As tipovariabile,Datoscambio2 As TipoVariabile)

Tipi di routine:Dim xMin, xMax as Integer

Private CmdAvvio_Click()................................Call calcolay ................................End Sub

Private calcolay() For i = xMin To xMax ...................... Next......................End Sub

Routine semplice. Senza passaggi né scambi di valoriNotare che in tal caso xMin e xMax devono essere definite Chiamata della routine

Private CmdAvvio_Click()................................ Call calcolay (xMin,xMax) ................................End Sub

Private calcolay(m,n) For i = m To n ...................... Next......................End Sub

Routine con passagi di valore da xMin a m e da xMax a nxMin--->m; xMax--->ndopo l'esecuzione di calcolay Xmin e xMax mantengono i valori precedenti al passaggio

Chiamata della routine

Private CmdAvvio_Click()................................Call calcolay (xMin,xMax)................................End Sub

Private calcolay(m, n as integer )For i = m To n......................Next......................End Sub

Routine con scambi di variabili: m ed n prendono i valori di xMin e Xmax. Se m, n cambiano durante l'esecuzione di calcolay, cambiano anche xmin e xMaxQuindi vi è scambio di valore fra le variabili m, n e xMin e xMaxxMin<--->m : xMax<--->nChiamata della routine

In VB vi sono diversi tipi di variabili. Per risparmiare memoria e per una veloce esecuzione dei programmi occorre che i tipi siano coerenti con l'uso della variabile.I tipi di variabili predefinite comuni sono: Integer, Single, Double, String, Currency, Boolean, Byte. Se la dichiarazione è ad es. del tipo:Dim X(3) As stringX è definita variabile vettore e può contenere 3 dati alfanumerici. Per es. X(1)=”Antonio”, X(2)=”Diego”, X(3)=”Danila”. Il numero d'ordine nel vettore (vale anche per le matrici) può essere indicizzato. Quindi posto ad es. i=2 si ha X(i)=”Diego”.La variabile X(dim1,dim2....dimn) ha n dimensioni: la prima dimensione contiene dim1 valori, la seconda dim2 valori e l'nesima dimn valori. Per dichiarare una variabile in modo implicito è sufficiente utilizzarla in un'istruzione di assegnazione. Tutte le variabili dichiarate in modo implicito sono di tipo Variant. Tali variabili richiedono maggiori risorse di memoria rispetto alla maggior parte delle altre.ESEMPIO:Si desidera un programma che avendo come form il foglio elettronico per mezzo del click sul pulsante “Calcola X3-2*x2-1” i valori della funzione e Y(x)=X 3 -2*x 2 -1 e ne disegna il grafico. Con il pulsante “Cancella” si cancellano i valori di x, y scritti nelle colonne A e B del foglio e il grafico stesso e si esce dal programma.

Nelle pagine successive sono mostrate le 4 routine dello sviluppo del codice con cui si ottiene il grafico della funzione definita nel codice.Codice della Routine di Avvio del progetto realizza il seguente programma descritto a parole:“calcola e disegna la y(x)= X 3 -2*x 2 -1 Dimensiona i vettori x e y ad una dimensione_in modo da contenere fino a 1000 valori'

Dim x(1000), y(1000) As Double

Public Sub CmdAvvio_Click() 'avvio del programma' Cells(1, 1) = "X" 'assegna l'etichetta X alla cella A1' Cells(1, 2) = "Y" 'assegna l'etichetta Y alla cella B1' xMin = InputBox("minimo") 'assegna un valore a xMin' xMax = InputBox("massimo") 'assegna un valore a xMax'

k = 0 'inizializza k utilizzato come contatore' For i = xMin To xMax 'inizio ciclo' k = k + 1 'aggiorna k' Cells(k + 1, 1) = i 'assegna il valore di i alle celle della colonna A riga k+1' x(k) = i 'assegna il valore di i al vettore x(i)' Next 'fine coclo' calcolay xMin, xMax 'chiamata alla routine calcolay passando i valori di xMin e xMax' grafico 'chiamata alla routine (semplice) grafico'End Sub

inizio esecuzione routine calcolay assegnando m=xMin e n=xMax9'

Sub calcolay(m, n) k = 0 For i = m To n k = k + 1 y(k) = x(k) ^ 3 - 2 * x(k) ^ 2 - 1 'calcolo del vettore y(k)' Cells(k + 1, 2) = y(k) 'assegna alle celle della colonna B riga k+1 i valori il vettore y(k)' NextEnd Sub

Private Sub grafico() 'crea il grafico' 'aggiunge un nuovo grafico al foglio 1 nell'area(pixel)(100,100)-(400,400)' Sheets("foglio1").ChartObjects.Add(100, 100, 400, 300) _ .Chart.ChartWizard Source:=Worksheets("foglio1").Range("A2:B1000"), _ ' in Gallery le proprietà dell'oggetto Chart(grafico) ' Gallery:=xlXYScatter, Format:=2, PlotBy:=xlColumns, _ CategoryLabels:=1, SeriesLabels:=0, HasLegend:=1 End Sub

Sub CmdCancella_click() 'cancella le celle nell'ntervallo A1:b1000' Range("A1:B1000").Clear 'cancella grafico

ActiveSheet.ChartObjects(1).Activate ActiveChart.ChartArea.Select ActiveWindow.Visible = False Selection.DeleteEnd Sub

Indice generale 1.OpenOffice.calc................................................................................................................................3

1.1.Caratteristiche di base:..............................................................................................................3 1.2.Copia intelligente di una cella o gruppo di celle .....................................................................8 1.3.Riferimenti relativi e assoluti..................................................................................................10 1.4.Funzioni standard (predefinite)...............................................................................................11 1.5.La funzione CONTA.SE(Intervallo;criterio)..........................................................................12 1.6.La Funzione SE.......................................................................................................................13 1.7.ESEMPIO DI CALCOLO:.....................................................................................................15 1.8.Tabelle Pivot (per motivi non chiar Pilot in OpenOffice) ......................................................16 1.9.Risolvere un'equazione...........................................................................................................17

2.I Grafici..........................................................................................................................................18VISUAL BASIC.................................................................................................................................27 3.Visual Basic e La Programmazione orientata agli oggetti..............................................................28

3.1.Modelli....................................................................................................................................30 3.2.Algoritmi.................................................................................................................................30 3.3.Strutture di selezione .............................................................................................................37 3.4.Strutture di selezione .............................................................................................................38 3.5.SELECT CASE..CASE.. ELSE…END SELECT..................................................................38 3.6.Strutture di ripetizione controllo di coda................................................................................39 3.7.Strutture di ripetizione controllo di testa................................................................................40 .......................................................................................................................................................40 3.8.Strutture di ripetizione controllo di testa................................................................................41 3.10.Strutture di ripetizione controllo di coda..............................................................................42 3.11.Esempio di istruzione Function............................................................................................44

Indice delle illustrazioniIllustrazione 1: L'Editore di OpenOffice.calc.......................................................................................3Illustrazione 2: Il Menù di File di Calc................................................................................................4Illustrazione 3: Selezione di celle non adiacenti..................................................................................6Illustrazione 4: La formula di D1 copiata in E3 si sposta di due righe e di una colonna)....................8Illustrazione 5: Effetto dei riferimenti misti sulla copia.......................................................................9Illustrazione 6: Effetto della copia della formula.................................................................................9Illustrazione 7: Riferimenti misti..........................................................................................................9Illustrazione 8: Riferimenti assoluti...................................................................................................10Illustrazione 9: Effetto dei riferimenti assoluti sulla copia.................................................................10Illustrazione 10: Esempio di uso dei riferimenti misti.......................................................................10Illustrazione 11: Finestra delle funzioni predefinite...........................................................................11Illustrazione 12: Esempio di uso della funzione CONTA.SE............................................................12Illustrazione 13: Esempio di uso della funzione SE...........................................................................12Illustrazione 14: Esempio di uso della funzione CERCA.VERT.......................................................13Illustrazione 15: La sintassi delle funzioni predefinite.......................................................................14Illustrazione 16: Configurazione di un gocciolatore .........................................................................15Illustrazione 17: Elenco di articoli vari..............................................................................................16Illustrazione 18: Uso della tabella Pivot per organizzare i dati dell'ill.17..........................................16Illustrazione 19: Esempio di applicazione del Riosolutore................................................................17Illustrazione 20: esempio di applicazione del Risolutore...................................................................17Illustrazione 21: Finestra finale del Risolutore..................................................................................17Illustrazione 22: Finestra della guida per la scelta del tipo di grafico................................................18Illustrazione 23: Grafico a "Torta".....................................................................................................18

Illustrazione 24: Grafico XY e a Linea e linee di andamento............................................................19Illustrazione 25: L'andamento viene approssimato con una curva esponenziale...............................20Illustrazione 26: La curva è approssimata con un'altra ad andamento lineare...................................21Illustrazione 27: Simulazione del Moto dei pianeti............................................................................22Illustrazione 28: Simulazione della caduta di un corpo in un mezzo viscoso....................................23Illustrazione 29: Automazione del calcolo di probabilità in una distribuzione normalizzata standard............................................................................................................................................................24Illustrazione 30: Barra degli strumenti di Excel.................................................................................32Illustrazione 31: Struttura ad albero che evidenzia gli oggetti del Progetto Eq_2.xls.......................46