Presentazione del corso: Informatica Generale el… · La differenza sostanziale è che in Excel,...
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
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
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