Lez. 11 (11/12) - PBElementi di Programmazione1 Lezione 11 Esercizi
Lez. 11 (11/12) - PBElementi di Programmazione2 Domanda 1 Option Explicit Option Base 1 Function prova(ByVal a As Integer, ByRef b As Integer) As Integer Dim c As Integer c = a + b b = a Mod b prova = b + 1 End Function Sub ex() Dim x As Integer, y As Integer, z As Double y = 10 x = 5 z = prova(y, x) y = prova(8, y) z = x / y End Sub Mostrare la valorizzazione delle variabili durante lesecuzione del presente programma
Lez. 11 (11/12) - PBElementi di Programmazione3 Domanda 1 Option Explicit Option Base 1 Function prova(ByVal a As Integer, ByRef b As Integer) As Integer Dim c As Integer c = a + b b = a Mod b prova = b + 1 End Function Sub ex() Dim x As Integer, y As Integer, z As Double y = 10 x = 5 z = prova(y, x) y = prova(8, y) z = x / y End Sub x y z a b c prova ^x ^x ^x ^x < ^y ^y ^y ^y NB: 8 : 10 = 0 0 8
Lez. 11 (11/12) - PBElementi di Programmazione4 Domanda 2 Trasformare usando listruzione do While... Loop Do A = A + 3 If A > 5 Then Do B = B -1 C = C + 1 Loop While (C>0) End If C = 2 Loop While (A < B)
Lez. 11 (11/12) - PBElementi di Programmazione5 Domanda 2 Trasformare usando listruzione do While... Loop Do A = A + 3 If A > 5 Then Do B = B -1 C = C + 1 Loop While (C>0) End If C = 2 Loop While (A < B) A = A + 3 If A > 5 Then B = B -1 C = C + 1 Do While (C>0) B = B -1 C = C + 1 Loop End If C = 2 Do While (A < B) A = A + 3 If A > 5 Then B = B -1 C = C + 1 Do While (C>0) B = B -1 C = C + 1 Loop End If C = 2 Loop
Lez. 11 (11/12) - PBElementi di Programmazione6 Domanda 2 Do x=x+1 Loop While x >0 x=x+1 Do While x>0 x=x+1 Loop APPLICAZIONE REGOLA GENERALE
Lez. 11 (11/12) - PBElementi di Programmazione7 Domanda 2 Do x=x+1 Do y = y +1 Loop While y<0 Loop x >0 x=x+1 Do y = y +1 Loop While y<0 Do While x>0 x=x+1 Do y = y +1 Loop While y<0 Loop Partenza Passo 1: E indifferente partire Dal ciclo interno o esterno
Lez. 11 (11/12) - PBElementi di Programmazione8 Domanda 2 x=x+1 Do y = y +1 Loop While y<0 Do While x>0 x=x+1 Do y = y +1 Loop While y<0 Loop x=x+1 y = y +1 Do While y<0 y = y +1 Loop Do While x>0 x=x+1 y = y + 1 Do While y<0 y = y +1 Loop Passo 1Passo 2
Lez. 11 (11/12) - PBElementi di Programmazione9 Domanda 2 Do x = x +1 Loop While x < 0 X 5 6 x=x+1 Do while x <0 x= x + 1 Loop X 5 6 Do while x <0 x= x + 1 Loop X 5 Vera equivalenza Equivalenza errata
Lez. 11 (11/12) - PBElementi di Programmazione10 Domanda 3 Date le seguenti dichiarazioni: Dim a As Boolean, b As Boolean Dim c As Double, d As Integer ed i seguenti valori iniziali: a = False b = True c = 2.5 d = 4 Indicare il valore delle espressioni: d = d / 3 + c a = b OR (c > d - c) c = d / 3 + 7
Lez. 11 (11/12) - PBElementi di Programmazione11 Domanda 3 Date le seguenti dichiarazioni: Dim a As Boolean, b As Boolean Dim c As Double, d As Integer ed i seguenti valori iniziali: a = False b = True c = 2.5 d = 4 Indicare il valore delle espressioni: d = d / 3 + c a = b OR (c > d - c) c = d / d = d / 3 + c d= d= 4 arrotonda!!! a = b OR _ (c > d - c) True OR True True c = d / C=8.333
Lez. 11 (11/12) - PBElementi di Programmazione12 Domanda 4 Il codice che segue genera un errore di esecuzione; indicare quale errore e quale istruzione lo provoca: Option Explicit Option Base 1 Sub ex() Dim vet(3 To 8) vet(7) = 6 vet(8) = 1 vet(1) = 3 End Sub
Lez. 11 (11/12) - PBElementi di Programmazione13 Domanda 4 Il codice che segue genera un errore di esecuzione; indicare quale e quale istruzione lo provoca: Option Explicit Option Base 1 Sub ex() Dim vet(3 To 8) vet(7) = 6 vet(8) = 1 vet(1) = 3 End Sub Vet(1) non esiste
Lez. 11 (11/12) - PBElementi di Programmazione14 Domanda 5 Mostrare il contenuto della cella A2 dopo lesecuzione del seguente codice: Option Explicit Sub ex() Dim S As String S = "prova a provare" S = Replace(S, "va", "XX") Range("A1").Value = S Range("A2").Value=_ Left(S, 4) Range("A3").Value=_ right(S, 4) End Sub
Lez. 11 (11/12) - PBElementi di Programmazione15 Domanda 5 Mostrare il contenuto della cella A2 dopo lesecuzione del seguente codice: Option Explicit Sub ex() Dim S As String S = "prova a provare" S = Replace(S, "va", "XX") Range("A1").Value = S Range("A2").Value=_ Left(S, 4) Range("A3").Value=_ right(S, 4) End Sub proXX a proXXre proX XXre
Lez. 11 (11/12) - PBElementi di Programmazione16 Domanda 6 Date le seguenti dichiarazioni: Dim a As Integer, d As Double Dim c As Boolean, b As Boolean ed i seguenti valori iniziali: a = 8 d = 2.5 c = True b = False Indicare il valore delle espressioni: d = d / 3 + c a = b AND (c > 0) c = d /3 + 7 d valore iniziale
Lez. 11 (11/12) - PBElementi di Programmazione17 Domanda 6 Date le seguenti dichiarazioni: Dim a As Integer, d As Double Dim c As Boolean, b As Boolean ed i seguenti valori iniziali: a = 8 d = 2.5 c = True b = False Indicare il valore delle espressioni: d = d / 3 + c a = b AND (c > 0) c = d /3 + 7 d valore iniziale d = d / 3 + c d = (-1) d = a=b AND (c > 0) a= false AND false a=False c=true
Lez. 11 (11/12) - PBElementi di Programmazione18 Domanda 7 Scrivere lintestazione della funzione ft() che ha tre parametri X, Y, Z; di questi il primo è di tipo Double gli altri due sono facoltativi di tipo Integer il primo per valore, il secondo per riferimento. La funzione restituisce un tipo Double.
Lez. 11 (11/12) - PBElementi di Programmazione19 Domanda 7 Scrivere lintestazione della funzione –ft() –che ha tre parametri X, Y, Z; –di questi il primo è di tipo Double –gli altri due sono facoltativi di tipo Integer il primo per valore, il secondo per riferimento. –La funzione restituisce un tipo Double.
Lez. 11 (11/12) - PBElementi di Programmazione20 Domanda 7 Scrivere lintestazione della funzione ft() che ha tre parametri X, Y, Z; di questi il primo è di tipo Double gli altri due sono facoltativi di tipo Integer il primo per valore, il secondo per riferimento. La funzione restituisce un tipo Double. function ft( X as Double, _ Optional ByVal _ Y As Integer,_ Optional Z As Integer ) As Double
Lez. 11 (11/12) - PBElementi di Programmazione21 Domanda 8 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
Lez. 11 (11/12) - PBElementi di Programmazione22 Domanda 8 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 =
Lez. 11 (11/12) - PBElementi di Programmazione23 Esercizio 1 Scrivere una procedura in VBA che: - legge attraverso una InputBox un valore e lo inserisce in una variabile di nome K, verificando che sia negativo intero ed eventualmente continuando a richiederlo nuovamente se ciò non fosse - trasforma K nel suo valore assoluto - legge una alla volta tutte le celle della colonna "A" del foglio che sono valorizzate con un numero intero fino a quando non incontra un valore minore o uguale a zero - per ogni valore V letto nella cella della colonna "A" scrive nel file "risultati.txt una riga riportandovi il valore dato dalla somma dei seguenti due termini: 1) V ^ K (cioè V elevato K) 2) V - (K!) - alla fine del file riporta in un'ulteriore riga il valore dato dalla somma di tutti i valori V letti
Lez. 11 (11/12) - PBElementi di Programmazione24 Esercizio 2 Sia dato il file di testo di nome dati.txt contenente per ogni riga un numero intero. a) scrivere una funzione in VBA di nome "multipli" che riceve due parametri interi N e M e che calcola tutti i multipli di N da (N*1) ad (N*M) e li restituisce come array di numeri interi b) scrivere una procedura in VBA di nome Esercizio2(), che richiede all'utente di fornire un numero intero positivo minore di 20 (richiedendolo nuovamente se non è stato fornito correttamente), legge dal file "dati.txt" un valore per riga alla volta e riporta sul foglio di calcolo, riga per riga, nella colonne A il valore letto del file e nelle colonne successive tutti i valori restituiti dalla funzione "multipli" sopra definita applicata con N pari al numero letto dal file ed M pari a quello fornito dall'utente