Lez. 10 (10/11) - PBElementi di Programmazione1 Lezione 10 Funzioni e Moduli Macro Analisi del flusso Esercizi.

Slides:



Advertisements
Presentazioni simili
Lez. 12 (10/11) - PBElementi di Programmazione1 Lezione 12 Esercizi.
Advertisements

Imperfetto IWBAT say what I used to do or was doing in the past.
Eventi di salvataggio VBA
Modello dati LISTA LISTA: LISTA: sequenza finita di 0 o più elementi LISTA di tipo T: lista in cui tutti gli elementi sono dello stesso tipo T. es. lista.
Lez. 6 (10/11) - PBElementi di Programmazione1 Lezione 6 Parametri Facoltativi Matrici Matrici di parametri.
Lez. 8 (10/11) - PBElementi di Programmazione1 Lezione 8 Date Valutazione di espressioni File di testo sequenziali.
Lez. 8 (11/12) - PBElementi di Programmazione1 Lezione 8 Date Valutazione di espressioni File di testo sequenziali.
Lez. 11 (11/12) - PBElementi di Programmazione1 Lezione 11 Esercizi.
Lez. 7 (10/11) - PBElementi di Programmazione1 Lezione 7 Matrici di Celle Tipi String e Date.
Lez 4 (11/12)Elementi di Programmazione1 Istruzioni per il controllo del Flusso 2.
Lez 4 (10/11)Elementi di Programmazione1 Istruzioni per il controllo del Flusso 2.
Elementi di Programmazione
EP 10/11 - PBLezione 2-21 Elementi di Programmazione Tipi di Dati Conversioni Istruzioni di controllo del flusso.
Oggetti Form e Controlli Registratore di Macro
Lez. 5 (10/11 - PB)Elementi di Programmazione1 Lezione 5 Procedure Funzioni Passaggio di parametri.
Lez. 5 (11/12- PB)Elementi di Programmazione1 Lezione 5 Procedure Funzioni Passaggio di parametri.
Lez. 9 (10/11) - PBElementi di Programmazione1 Lezione 9 Oggetti Moduli e Controlli Registratore di Macro.
Lez. 11 (10/11) - PBElementi di Programmazione1 Lezione 11 Esercizi.
Lez. 6 (11/12) - PBElementi di Programmazione1 Lezione 6 Matrici Matrici di parametri.
Lez. 7 (11/12) - PBElementi di Programmazione1 Lezione 7 Tipi String e Date.
Lez 4 (10/11)Elementi di Programmazione1 Istruzioni per il controllo del Recupero lez.4.
Sequential Statements. – Il VHDL simula lo svolgersi in parallelo di varie operazioni – Loggetto fondamentale e il PROCESS – Un PROCESS contiene una serie.
EP 13/14Lezione 21 Elementi di Programmazione Interazione con lutente Tipi di Dati, Variabili, Espressioni.
Un DataBase Management System (DBMS) relazionale client/server.
Esempio: Tombola! Parte seconda.
Costruzione di Interfacce Lezione 10 Dal Java al C++ parte 1
Il linguaggio Fortran 90: 4. Array: Vettori e Matrici
Somma = A + B start Stampa Somma Leggi A,B stop Sub SOMMA( ) Dim A, B as Integer A = InputBox("Immetti un numero") B = InputBox(Immetti un secondo numero)
Modello dati LISTA LISTA: LISTA: sequenza finita di 0 o più elementi LISTA di tipo T: lista in cui tutti gli elementi sono dello stesso tipo T. es. lista.
Sottoprogrammi e Unità di Compilazione Nicola Fanizzi Laboratorio - Corso di Programmazione (B) C.d.L. in Informatica DIB - Università degli Studi di Bari.
Array Ricerca Ordinamento Fusione Nicola Fanizzi Laboratorio - Corso di Programmazione (B) C.d.L. in Informatica DIB - Università degli Studi di Bari.
Sequence. CREARE UNA SEQUENCE CREATE SEQUENCE nome [INCREMENT BY n] [START WITH n] [MAXVALUE n | NOMAXVALUE] [MINVALUE n | NOMINVALUE] [CYCLE | NOCYCLE]
FUNZIONI DI GRUPPO Le funzioni di gruppo operano su un set di record restituendo un risultato per il gruppo. AVG ([DISTINCT|ALL] n) media, ignora i valori.
Constraints.
Laboratorio di Linguaggi di Programmazione 2007/2008 Marco Antoniotti Giuseppe Vizzari.
Microsoft Access Maschere.
C aso di Studio Gruppo9: DAvino,Vetrano,Monda,Papa, Berardini,Schettino.
Lambiente operativo. 2 Per avviare e poter utilizzare il computer è necessario un particolare programma che si chiama sistema operativo. Windows è un.
I 7 strumenti della qualità
Creare grafici con un foglio di calcolo Copyright© owned by Ubaldo Pernigo, please contact: Tutti i contenuti, ove non diversamente.
Quirky Social product development company Quirky si definisce social product development company. Dove il termine social è utilizzato per identificare.
Moduli o Form I Moduli permettono all'utente di immettere informazioni...
Foglio elettronico A. Ferrari. Syllabus (estratto) Lavorare con i fogli elettronici e salvarli in diversi formati. Inserire dati nelle celle e applicare.
Project Review byNight byNight December 6th, 2011.
PROBLEMA ALGORITMO PROGRAMMA LINGUAGGI di PROGRAMMAZIONE
Realizzazione Grammatica non contestuale –no ricorsioni sinistre –LL(1) produzione individuata dal primo token Ogni non-terminale -> funzione –rappresenta.
Programmare in Visual Basic
Funzioni stringhe. chr Restituisce il carattere di un valore ascii dato. Per vedere lelenco dei codici ascii clicca QQQQ uuuu iiiiEsempio
Project Review Novembrer 17th, Project Review Agenda: Project goals User stories – use cases – scenarios Project plan summary Status as of November.
SUBQUERY Chi ha un salario maggiore di quello di Abel? Occorre scomporre la query in due sotto problemi: MAIN : quali impiegati hanno un salario maggiore.
Algoritmo Ordinamento di 3 Numeri
Scrivere un algoritmo non deterministico di complessita` polinomiale che risolva il problema del commesso viaggiatore. Vengono proposte due soluzioni,
Dynamic SQL.
Lez. 10 (13/14)Elementi di Programmazione1 Lezione 10 Oggetti Moduli e Controlli.
Valutazione opzioni Europee:
Lz. 3 (13/14)Elementi di Programmazione1 Istruzioni (strutture) di controllo 1.
Lez. 5 (13/14)Elementi di Programmazione1 Lezione 5 Procedure.
Fondamenti di informatica Oggetti e Java Luca Cabibbo Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies.
Lez. 8 (13/14)Elementi di Programmazione1 Lezione 8 Tipi String e Date.
Il ciclo while.  Permette di ripetere un blocco di istruzioni fino a quando non si verifica un determinato evento  Il ciclo while può essere realizzato.
Lez. 9 (13/14)Elementi di Programmazione1 Lezione 9 Valutazione di espressioni File di testo sequenziali.
Lez 4 (13/14)Elementi di Programmazione1 Strutture di controllo 2.
Lez. 12 (13/14)Elementi di Programmazione1 Lezione 12 Esercizi.
Lez. 11 (13/14)Elementi di Programmazione1 Lezione 11 Esercizi.
Lez.6 (13/14)Elementi di Programmazione1 Lezione 6 Funzioni Passaggio di parametri.
Laboratorio Informatico
Ordinamento. Introduzione Una delle operazioni che si possono eseguire sui vettori, è quella di ordinare gli elementi del vettore in ordine crescente.
Programmazione: Iterazione Esistono tre tipi di iterazione fondamentali e vedremo la corrispondenza dei relativi diagrammi a blocchi e la loro traduzione.
Tecnologie Informatiche ed Elettroniche per le Produzioni Animali
A = InputBox("Immetti un numero")
Transcript della presentazione:

Lez. 10 (10/11) - PBElementi di Programmazione1 Lezione 10 Funzioni e Moduli Macro Analisi del flusso Esercizi

Lez. 10 (10/11) - PBElementi di Programmazione2 Aggiungere funzioni E possibile aggiungere alle funzioni predefinite in Excel e richiamabili nel foglio elettronico delle funzioni scritte dallutente –Le nuove funzioni vanno aggiunte in un modulo dalleditor di VBA: Inserisci->Modulo –Si scrivono le funzioni che compariranno nellinsieme delle funzioni selezionabili sotto la voce Definite dallutente

Lez. 10 (10/11) - PBElementi di Programmazione3 Aggiungere funzioni Creare la funzione progGeom che ha –come argomento un intervallo di valori –restituisce True se i valori in esso contenuto sono in progressione geometrica (il rapporto fra due valori consecutivi è costante) altrimenti False

Lez. 10 (10/11) - PBElementi di Programmazione4 Aggiungere funzioni –Creare la funzione progGeom che ha come argomento un intervallo di valori e restituisce True se i valori in esso contenuto sono in progressione geometrica (il rapporto fra due valori consecutivi è costante), altrimenti False Option Explicit Function progGeom(r As Range) As Boolean Dim x As Range, i As Integer progGeom = True If (r.Count > 2) Then For i = 1 To (r.Count - 3) If (r.Item(i).Value / r.Item(i + 1).Value _ <> r.Item(i + 1).Value / r.Item(i + 2).Value) Then progGeom = False End If Next End If End Function

Lez. 10 (10/11) - PBElementi di Programmazione5 Registratore di macro –Excel fornisce un utile strumento per poter registrare il codice generato in base alle azioni che compiamo mentre lavoriamo. –In questo modo è possibile esaminare il codice prodotto e quindi regolarsi sui comandi da impiegare –Per attivare questa funzionalità: Strumenti -> Macro -> Registra macro Viene chiesto un nome da dare alla macro Inizia la registrazione che termina schiacciando il tasto STOP Il codice generato si troverà nella cartella moduli di VBA Tasto STOPRegistra dando riferimenti relativi

Lez. 10 (10/11) - PBElementi di Programmazione6 Registratore di Macro –Utilizziamo il registratore di macro per registrare i passi relativi alla creazione di un grafico a partire dai dati presenti in una tabella Si ha un insieme di valori nel range A2:B6 Si deve creare un grafico di dispersione

Lez. 10 (10/11) - PBElementi di Programmazione7 Registratore di Macro Sub Grafico() Charts.Add ActiveChart.ChartType = xlXYScatterSmooth ActiveChart.SetSourceData Source:=Sheets("Foglio3").Range("A2:B6"), PlotBy _ :=xlColumns ActiveChart.SeriesCollection(1).Name = "=""valori Sperimentali""" ActiveChart.Location Where:=xlLocationAsObject, Name:="Foglio3" With ActiveChart.HasTitle = True.ChartTitle.Characters.Text = "valori Sperimentali".Axes(xlCategory, xlPrimary).HasTitle = True.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "X".Axes(xlValue, xlPrimary).HasTitle = True.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Y" End With With ActiveChart.Axes(xlCategory).HasMajorGridlines = False.HasMinorGridlines = True End With With ActiveChart.Axes(xlValue).HasMajorGridlines = True.HasMinorGridlines = False End With End Sub

Lez. 10 (10/11) - PBElementi di Programmazione8 Analisi del flusso - 1 Option Explicit Sub prova(ByRef a As_ Integer, _ ByVal b As Integer) a = a * 2 b = b * 2 End Sub Sub richiama() Dim x As Integer, _ y As Integer x = 2 y = 10 call prova (x, y) End Sub richiama() x y prova() 2 10 a b 2 10 (^x) (^x) (^x) tempo

Lez. 10 (10/11) - PBElementi di Programmazione9 Analisi del flusso - 2 Sub prova() Dim v As Integer, q As Integer v = 10 q = 20 Do While v > 0 And q > 5 v = v - 1 q = q - 1 Loop Range("D1") = v Range("D2") = q End Sub v q …

Lez. 10 (10/11) - PBElementi di Programmazione10 Analisi del flusso - 3 Option Explicit Sub prova() Dim v As Integer v = 4 Do While True v = v + 1 Range("F1") = v Loop Range("D1") = v End Sub v : 32767

Lez. 10 (10/11) - PBElementi di Programmazione11 Sub primaProc(v1 As Integer, _ ByVal v2 As Integer) Dim L As Integer v1 = v1 * 3 v2 = v2 * 2 L = v1 + v2 End Sub Sub richiama() Dim x As Integer, y As Integer x = 8 y = 100 primaProc x, y End Sub richiama() x y primaProc() v1 v2 L ^x ^x ^x ^x Analisi del flusso - 4

Lez. 10 (10/11) - PBElementi di Programmazione12 Analisi del flusso - 5 Option Explicit Sub uno(a As Double) Dim b As Double b = a * 2 a = a - 2 End Sub Sub richi() Dim x As Double, a As Double x = 10 a = 50 call uno (x) call uno (a) End Sub richi() x a uno() a b (^x) (^x) (^x) (^a richi ) (^a richi ) (^a richi )

Lez. 10 (10/11) - PBElementi di Programmazione13 Analisi del flusso - 6 Option Explicit Function raddoppia(A As Double) _ As Double raddoppia = A * 2 A = A - 2 End Function Sub rch() Dim x As Double, y As Double Dim z As Double, w As Double x = 10 y = 20 z = 30 Call raddoppia(x) call raddoppia(y) w = raddoppia(z) End Sub rch() x y z w raddoppia() A raddoppia (^x) (^x) (^x) < (^y) (^y) (^y) < (^z) (^z) (^z) <

Lez. 10 (10/11) - PBElementi di Programmazione14 Esercizi

Lez. 10 (10/11) - PBElementi di Programmazione15 Esercizio 1 Scrivere la funzione sommaDis() da aggiungere a quelle definite nel foglio elettronico in uso in modo che calcoli la somma algebrica dei numeri contenuti in un intervallo. –Lintervallo di celle può essere formato da più intervalli. Il parametro ha quindi un numero variabile di argomenti quindi è un ParamArray

Lez. 10 (10/11) - PBElementi di Programmazione16 Esercizio 1 Function sommaDis(ParamArray r() As Variant) As Double Dim i As Integer, y As Variant sommaDis = 0 For i = LBound(r) To UBound(r) For Each y In r(i) If (IsNumeric(y)) Then sommaDis = sommaDis + y End If Next End Function Indispensabile per gestire più intervalli di valori

Lez. 10 (10/11) - PBElementi di Programmazione17 Esercizio 2 Calcolare in valor medio dellintervallo di celle A1:B8 usando la funzione predefinita dei fogli di lavoro Excel –Tutte le funzioni contenute nel foglio di lavoro si possono utilizzare mediante loggetto Application.WorksheetFunction –I nomi delle funzioni sono quelle usate nella versione in Inglese Lelenco delle funzioni disponibili si può ottenere –Selezionare la voce Guida di Riferimento a Visual Basic per Microsoft Excel –Quindi selezionare Concetti della programmazione –Quindi Eventi, funzioni di Foglio di lavoro, Forme –Infine la guida contiene un collegamento a tutte queste funzioni

Lez. 10 (10/11) - PBElementi di Programmazione18 Esercizio 2 Option Explicit Sub calcola() Range("D3") = _ Application.WorksheetFunction. _ Average(Range("A1:B8")) End Sub Lintervallo è di tipo Range

Lez. 10 (10/11) - PBElementi di Programmazione19 Esercizio 2 Ripetere lesercizio precedente quando i valori sono nellintervallo A1:B8 ed F1:F8 –Appoggiare nella soluzione i valori nella variabile x La variabile sarà di tipo Variant o Double

Lez. 10 (10/11) - PBElementi di Programmazione20 Esercizio 2 Option Explicit Sub calcola() Dim x As Double x = _ Application.WorksheetFunction. _ Average(Range("A1:B8", "F1:F8")) Range("D3") = x End Sub

Lez. 10 (10/11) - PBElementi di Programmazione21 Esercizio 3 Leggere il contenuto del file mieiDati.txt contenuto nella stessa cartella del foglio di lavoro. Questo file contiene su ogni riga due numeri decimali. Scrivere il contenuto del file nel foglio di lavoro a partire dalla cella A3 in questo modo: –Nella colonna A il primo valore della riga di dati –Nella colonna B il secondo valore della riga di dati –Utilizzando le funzione predefinite dal foglio elettronico min e max calcolare per ogni colonna questi valori e scriverli nelle righe 1 e 2 del foglio di lavoro. –Utilizzando la formula ben formata per Excel scritta come stringa nella cella D1 che ha come variabile _x, applicarla ad ogni elemento della colonna A a partire da A3 scrivendo il risultato nella colonna C nella riga corrispondente

Lez. 10 (10/11) - PBElementi di Programmazione22 Esercizio 3 (sol v1) Option Explicit Sub scaricaCalcola() Dim riga As Integer Dim v1 As Double, v2 As Double Dim rg As Range, frm As String Dim frms As String, i As Integer riga = 2 Open ThisWorkbook.Path & "\" & _ "mieiDati.txt" For Input As #1 Do While Not EOF(1) riga = riga + 1 Input #1, v1, v2 Cells(riga, 1) = v1 Cells(riga, 2) = v2 Loop If riga <> 2 Then Set rg = Range("A3:A" & riga) Range("A1") = Application.WorksheetFunction.Min(rg) Range("A2") = Application.WorksheetFunction.Max(rg) Set rg = Range("B3:B" & riga) Range("B1") = Application.WorksheetFunction.Min(rg) Range("B2") = Application.WorksheetFunction.Max(rg) End If Close #1 frm = Range("D1").Value For i = 3 To riga frms = Replace(frm, "_x", CStr(Cells(i, 1).Value)) frms = "=" & Replace(frms, ",",.") Cells(i, 3).Formula = frms Next End Sub

Lez. 10 (10/11) - PBElementi di Programmazione23 Esercizio 3 (sol v2) Option Explicit Option Base 1 Sub esercizio() Dim v1 As Double, v2 As Double Dim i As Integer, r As Range Dim formula As String, fmls As String Open ThisWorkbook.Path & _ "\mieiDati.txt" For Input As #1 formula = Range("D1") i = 3 Do While Not EOF(1) Input #1, v1, v2 Cells(i, 1).Value = v1 Cells(i, 2).Value = v2 fmls = "=" & Replace(formula, _ "_x", _ Replace(CStr(v1), ",", ".")) Cells(i, 3).formula = fmls i = i + 1 Loop Set r = Range("A3:A" & (i - 1)) Cells(1, 1).Value = _ Application.WorksheetFunction.Min(r) Cells(2, 1).Value = _ Application.WorksheetFunction.Max(r) Set r = Range("B3:B" & (i - 1)) Cells(1, 2).Value = _ Application.WorksheetFunction.Min(r) Cells(2, 2).Value = _ Application.WorksheetFunction.Max(r) Close #1 End Sub

Lez. 10 (10/11) - PBElementi di Programmazione24 Esercizio 4 Eliminare dal foglio di lavoro tutti i valori non numerici contenuti nellintervallo A1:C7 –Usare la funzione isnumeric()

Lez. 10 (10/11) - PBElementi di Programmazione25 Esercizio 4 Option Explicit Sub cancella() Dim el As Range For Each el In Range("A1", "C7") If Not IsNumeric(el.Value) Then el.Value = "" End If Next End Sub

Lez. 10 (10/11) - PBElementi di Programmazione26 Esercizio 5 Dato un foglio di lavoro in cui nella colonna A e nella colonna B ci sono dei valori numerici disegnare i grafico di dispersione della colonna B in funzione della colonna A –Non so dove finiscono le due colonne

Lez. 10 (10/11) - PBElementi di Programmazione27 Esercizio 5 Sub Macro2() ' ' Macro2 Macro ' Macro recorded 12/18/2009 by %USERNAME% ' Charts.Add ActiveChart.ChartType = xlXYScatterSmooth ActiveChart.SetSourceData Source:=Sheets("Sheet4").Range("B1:B" & ), PlotBy:= _ xlColumns ActiveChart.SeriesCollection(1).XValues = "=Sheet4!R1C1:R3C1" ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet4" ActiveSheet.Shapes("Chart 1").IncrementLeft ActiveSheet.Shapes("Chart 1").IncrementTop ActiveChart.PlotArea.Select Selection.Left = 1 Selection.Top = 16 ActiveChart.ChartArea.Select ActiveSheet.Shapes("Chart 1").IncrementLeft -135# ActiveSheet.Shapes("Chart 1").IncrementTop End Sub Ricavato col registratore di macro; Poi è adattato nella pagina successiva

Lez. 10 (10/11) - PBElementi di Programmazione28 Esercizio 5 Option Explicit Sub disegna() Dim riga As Integer riga = 1 While Not IsEmpty(Cells(riga, 1)) riga = riga + 1 Wend riga = riga - 1 If riga = 0 Then Exit Sub End If Charts.Add ActiveChart.ChartType = xlXYScatterSmooth ActiveChart.SetSourceData Source:=Sheets("Sheet4").Range("B1:B" & riga), PlotBy:= _ xlColumns ActiveChart.SeriesCollection(1).XValues = "=Sheet4!R1C1:R" & riga & "C1" ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet4" ActiveChart.ChartArea.Select End Sub Punti in cui è stato modificato