La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

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

Presentazioni simili


Presentazione sul tema: "Lez. 12 (10/11) - PBElementi di Programmazione1 Lezione 12 Esercizi."— Transcript della presentazione:

1 Lez. 12 (10/11) - PBElementi di Programmazione1 Lezione 12 Esercizi

2 Lez. 12 (10/11) - PBElementi di Programmazione2 INFORMAZIONI Esami –Orale non previsto (eventuali domande a facoltà del professore) –Uso libero di excel –Il compito è tutto nel file xls –2 ore di tempo

3 Lez. 12 (10/11) - PBElementi di Programmazione3 Domanda 8 (ex lex.11) Indicare il contenuto delle celle B1 ed B2 dopo lesecuzione del seguente codice VBA: Option Explicit Sub ex() Dim x As Double, y As Double x = 4 y = 8 y = y ^ 2 + x / 3 x = y + 10 Range("B1").Value = Application.WorksheetFunction.Floor(x, 1) Range("B2").Value = y End Sub

4 Lez. 12 (10/11) - PBElementi di Programmazione4 Domanda 8 (ex lex.11) Indicare il contenuto delle celle B1 ed B2 dopo lesecuzione del seguente codice VBA: Option Explicit Sub ex() Dim x As Double, y As Double x = 4 y = 8 y = y ^ 2 + x / 3 x = y + 10 Range("B1").Value = _ Application.WorksheetFunction.Floor(x, 1) Range("B2").Value = y End Sub x y

5 Lez. 12 (10/11) - PBElementi di Programmazione5 Domanda 8 (ex lex.11) Indicare il contenuto delle celle B1 ed B2 dopo lesecuzione del seguente codice VBA: Option Explicit Sub ex() Dim x As Double, y As Double x = 4 y = 8 y = y ^ 2 + x / 3 x = y + 10 Range("B1").Value = _ Application.WorksheetFunction.Floor(x, 1) Range("B2").Value = y End Sub x y B1 = 75 B2 =

6 Lez. 12 (10/11) - PBElementi di Programmazione6 Esercizio 1 Scrivere la sub VBA che legge dei numeri decimali dal file di testo dati.txt dove sono scritti uno per riga e quindi riempie consecutivamente la colonna A del foglio di lavoro con i valori positivi, la colonna B con quelli negativi.

7 Lez. 12 (10/11) - PBElementi di Programmazione7 Esercizio 1 Option Explicit Sub carica() Dim v As Variant Dim pos As Integer, neg As Integer Open ThisWorkbook.Path & "\dati.txt" For Input As 1 pos = 1 neg = 1 While Not EOF(1) Input #1, v If (IsNumeric(v)) Then If (v > 0) Then Cells(pos, 1) = v pos = pos + 1 Else Cells(neg, 2) = v neg = neg + 1 End If Wend Close #1 End Sub

8 Lez. 12 (10/11) - PBElementi di Programmazione8 Esercizio 2 Scrivere una UserForm che viene richiamata nel foglio elettronico con un bottone che permette di acquisire due valori X ed Y e che scrive nella cella B3 del foglio "Esercizio2 il maggiore dei due.

9 Lez. 12 (10/11) - PBElementi di Programmazione9 Esercizio 2 Scrivere –una UserForm (moduloAcquisizione) –che viene richiamata nel foglio elettronico con un bottone ( parti ) –che permette di acquisire due valori X (primoVal) Y (secondoVal) –e che (cliccando un bottone calcolo) scrive nella cella B3 del foglio Esercizio2 il maggiore dei due

10 Lez. 12 (10/11) - PBElementi di Programmazione10 Esercizio 2 Private Sub calcolo_Click() Dim x As Double, y As Double x = CDbl(moduloAcquisizione.primoVal.Value) y = CDbl(moduloAcquisizione.secondoVal.Value) If (x > y) Then Sheets("Esercizio2").Range("B3").Value = x Else Sheets("Esercizio2").Range("B3").Value = y End If moduloAcquisizione.Hide End Sub La UserForm1 si chiama moduloAcquisizione (ed il bottone del form per eseguire il calcolo si chiama calcolo)

11 Lez. 12 (10/11) - PBElementi di Programmazione11 Esercizio 2 Private Sub parti_Click() ModuloAcquisizione.Show End Sub nel Foglio dove vi è il bottone di nome parti

12 Lez. 12 (10/11) - PBElementi di Programmazione12 Esercizio 3 Scrivere una sub VBA che legge i valori contenuti nelle celle da A1 a D5 e quindi –carica il vettore X con i primi 8 valori positivi contenuti nellintervallo. Se vi sono meno di 8 valori ridimensiona il vettore al numero di elementi effettivamente presenti –Attraverso la funzione max restituisce lelemento di valore massimo del vettore che viene scritto in F1

13 Lez. 12 (10/11) - PBElementi di Programmazione13 Esercizio 3 – Note sugli array X(5) con option base 0 o senza X(5) con option base

14 Lez. 12 (10/11) - PBElementi di Programmazione14 Esercizio 3 Scrivere una sub VBA (lettura) che legge i valori contenuti nelle celle da A1 a D5 e quindi –carica il vettore X con i primi 8 valori positivi contenuti nellintervallo. Se vi sono meno di 8 valori ridimensiona il vettore al numero di elementi effettivamente presenti –Attraverso la funzione max restituisce lelemento di valore massimo del vettore che viene scritto in F1 Funzione max : –Riceve un vettore vt –Restituisce il valore massimo contenuto

15 Lez. 12 (10/11) - PBElementi di Programmazione15 Esercizio 3 Option Base 1 Option Explicit Function max(vt() As _ Double) As Double Dim i As Integer max = vt(LBound(vt)) For i = LBound(vt) + 1 _ To UBound(vt) If max < vt(i) Then max = vt(i) End If Next End Function La soluzione del problema non può far caricare prima il vettore per poi ridimensionarlo perché –Senza lopzione Preserve di ReDim si perde il contenuto del vettore –Con lopzione non è possibile ridimensionarlo ad una lunhezza inferiore

16 Lez. 12 (10/11) - PBElementi di Programmazione16 Esercizio 3 Sub lettura() Dim y() As Double, X() As Double Dim i As Integer, j As Integer, v i = 1 ReDim y(8) For Each v In Range("A1:D3") If IsNumeric(v) Then If (v > 0) Then y(i) = v i = i + 1 End If If i > 8 Then Exit For End If Next ReDim X(i - 1) For j = LBound(y) To i - 1 X(j) = y(j) Next Range("F1").Value = max(X) End Sub

17 Lez. 12 (10/11) - PBElementi di Programmazione17 Esercizio 4 Aggiungere al foglio elettronico la funzione opera che dato un intervallo di valori anche disgiunto restituisce la somma dei valori interi contenuti nellintervallo –Definire ed usare la funzione eIntero per verificare se un valore è un numero intero

18 Lez. 12 (10/11) - PBElementi di Programmazione18 Esercizio 4 Aggiungere al foglio elettronico (modulo) –la funzione opera –che dato un intervallo di valori anche disgiunto –restituisce la somma dei valori interi contenuti nellintervallo –Definire ed usare la funzione eIntero () –per verificare se un valore è un numero intero

19 Lez. 12 (10/11) - PBElementi di Programmazione19 Esercizio 4 Option Explicit Function eIntero(el As _ Variant) As Boolean eIntero = False If (IsNumeric(el)) Then If (CInt(el) = el) Then eIntero = True End If End Function Function Opera( _ ParamArray interv() As _ Variant) As Integer Dim i As Integer, v For i = LBound(interv) To _ UBound(interv) For Each v In interv(i) If eIntero(v) Then Opera = Opera + v End If Next End Function


Scaricare ppt "Lez. 12 (10/11) - PBElementi di Programmazione1 Lezione 12 Esercizi."

Presentazioni simili


Annunci Google