Lez. 11 (11/12) - PBElementi di Programmazione1 Lezione 11 Esercizi.
-
Upload
michelangelo-serra -
Category
Documents
-
view
215 -
download
3
Transcript of Lez. 11 (11/12) - PBElementi di Programmazione1 Lezione 11 Esercizi.
![Page 1: Lez. 11 (11/12) - PBElementi di Programmazione1 Lezione 11 Esercizi.](https://reader035.fdocuments.us/reader035/viewer/2022081602/5542eb4b497959361e8b8d9f/html5/thumbnails/1.jpg)
Lez. 11 (11/12) - PB Elementi di Programmazione 1
Lezione 11
Esercizi
![Page 2: Lez. 11 (11/12) - PBElementi di Programmazione1 Lezione 11 Esercizi.](https://reader035.fdocuments.us/reader035/viewer/2022081602/5542eb4b497959361e8b8d9f/html5/thumbnails/2.jpg)
Lez. 11 (11/12) - PB Elementi di Programmazione 2
Domanda 1Option ExplicitOption 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 + 1End 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 / yEnd Sub
Mostrare la valorizzazione delle variabili durante l’esecuzione del presente programma
![Page 3: Lez. 11 (11/12) - PBElementi di Programmazione1 Lezione 11 Esercizi.](https://reader035.fdocuments.us/reader035/viewer/2022081602/5542eb4b497959361e8b8d9f/html5/thumbnails/3.jpg)
Lez. 11 (11/12) - PB Elementi di Programmazione 3
Domanda 1Option ExplicitOption Base 1Function prova(ByVal a As Integer, ByRef b As
Integer) As Integer Dim c As Integer c = a + b b = a Mod b prova = b + 1End 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 / yEnd Sub
x y z 5 10 0 a b c prova 5 10 0 10 ^x 0 0 5 10 0 10 ^x 15 0 0 10 0 10 ^x 15 0 0 10 0 10 ^x 15 1 0 10 1 1<- 0 10 1 8 ^y 0 0 0 10 1 8 ^y 18 0 0 8 1 8 ^y 18 0 0 8 1 8 ^y 18 9 0 9 1 0 9 0
NB: 8 : 10 = 0 0 8
![Page 4: Lez. 11 (11/12) - PBElementi di Programmazione1 Lezione 11 Esercizi.](https://reader035.fdocuments.us/reader035/viewer/2022081602/5542eb4b497959361e8b8d9f/html5/thumbnails/4.jpg)
Lez. 11 (11/12) - PB Elementi di Programmazione 4
Domanda 2Trasformare usando l’istruzione
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 = 2Loop While (A < B)
![Page 5: Lez. 11 (11/12) - PBElementi di Programmazione1 Lezione 11 Esercizi.](https://reader035.fdocuments.us/reader035/viewer/2022081602/5542eb4b497959361e8b8d9f/html5/thumbnails/5.jpg)
Lez. 11 (11/12) - PB Elementi di Programmazione 5
Domanda 2Trasformare usando l’istruzione
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 = 2Loop While (A < B)
A = A + 3If A > 5 Then B = B -1 C = C + 1 Do While (C>0) B = B -1 C = C + 1 Loop End IfC = 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 = 2Loop
![Page 6: Lez. 11 (11/12) - PBElementi di Programmazione1 Lezione 11 Esercizi.](https://reader035.fdocuments.us/reader035/viewer/2022081602/5542eb4b497959361e8b8d9f/html5/thumbnails/6.jpg)
Lez. 11 (11/12) - PB Elementi di Programmazione 6
Domanda 2
Do x=x+1Loop While x >0
x=x+1Do While x>0 x=x+1Loop
APPLICAZIONE REGOLA GENERALE
![Page 7: Lez. 11 (11/12) - PBElementi di Programmazione1 Lezione 11 Esercizi.](https://reader035.fdocuments.us/reader035/viewer/2022081602/5542eb4b497959361e8b8d9f/html5/thumbnails/7.jpg)
Lez. 11 (11/12) - PB Elementi di Programmazione 7
Domanda 2
Do x=x+1 Do y = y +1 Loop While y<0Loop x >0
x=x+1 Do y = y +1 Loop While y<0Do While x>0 x=x+1 Do y = y +1 Loop While y<0Loop
Partenza
Passo 1:E’ indifferente partire
Dal ciclo interno o esterno
![Page 8: Lez. 11 (11/12) - PBElementi di Programmazione1 Lezione 11 Esercizi.](https://reader035.fdocuments.us/reader035/viewer/2022081602/5542eb4b497959361e8b8d9f/html5/thumbnails/8.jpg)
Lez. 11 (11/12) - PB Elementi di Programmazione 8
Domanda 2
x=x+1 Do y = y +1 Loop While y<0Do While x>0 x=x+1 Do y = y +1 Loop While y<0Loop
x=x+1y = y +1Do While y<0 y = y +1LoopDo While x>0 x=x+1 y = y + 1 Do While y<0 y = y +1 Loop Loop
Passo 1 Passo 2
![Page 9: Lez. 11 (11/12) - PBElementi di Programmazione1 Lezione 11 Esercizi.](https://reader035.fdocuments.us/reader035/viewer/2022081602/5542eb4b497959361e8b8d9f/html5/thumbnails/9.jpg)
Lez. 11 (11/12) - PB Elementi di Programmazione 9
Domanda 2Do x = x +1Loop While x < 0X56
x=x+1Do while x <0 x= x + 1LoopX56
Do while x <0 x= x + 1Loop X 5
Vera equivalenza
Equivalenza errata
![Page 10: Lez. 11 (11/12) - PBElementi di Programmazione1 Lezione 11 Esercizi.](https://reader035.fdocuments.us/reader035/viewer/2022081602/5542eb4b497959361e8b8d9f/html5/thumbnails/10.jpg)
Lez. 11 (11/12) - PB Elementi di Programmazione 10
Domanda 3
Date le seguenti dichiarazioni:
Dim a As Boolean, b As BooleanDim c As Double, d As Integered i seguenti valori iniziali:
a = False b = True c = 2.5 d = 4Indicare il valore delle espressioni:
d = d / 3 + ca = b OR (c > d - c)c = d / 3 + 7
![Page 11: Lez. 11 (11/12) - PBElementi di Programmazione1 Lezione 11 Esercizi.](https://reader035.fdocuments.us/reader035/viewer/2022081602/5542eb4b497959361e8b8d9f/html5/thumbnails/11.jpg)
Lez. 11 (11/12) - PB Elementi di Programmazione 11
Domanda 3Date le seguenti dichiarazioni:
Dim a As Boolean, b As BooleanDim c As Double, d As Integered i seguenti valori iniziali:
a = False b = True c = 2.5 d = 4Indicare il valore delle espressioni:
d = d / 3 + ca = b OR (c > d - c)c = d / 3 + 7
• d = d / 3 + cd= 1.333 + 2.5d= 4 ‘arrotonda!!!
• a = b OR _ (c > d - c) True OR True Truec = d / 3 + 7
C=8.333
![Page 12: Lez. 11 (11/12) - PBElementi di Programmazione1 Lezione 11 Esercizi.](https://reader035.fdocuments.us/reader035/viewer/2022081602/5542eb4b497959361e8b8d9f/html5/thumbnails/12.jpg)
Lez. 11 (11/12) - PB Elementi di Programmazione 12
Domanda 4
• Il codice che segue genera un errore di esecuzione; indicare quale errore e quale istruzione lo provoca:
Option ExplicitOption Base 1
Sub ex() Dim vet(3 To 8) vet(7) = 6 vet(8) = 1 vet(1) = 3End Sub
![Page 13: Lez. 11 (11/12) - PBElementi di Programmazione1 Lezione 11 Esercizi.](https://reader035.fdocuments.us/reader035/viewer/2022081602/5542eb4b497959361e8b8d9f/html5/thumbnails/13.jpg)
Lez. 11 (11/12) - PB Elementi di Programmazione 13
Domanda 4• Il codice che segue genera un errore
di esecuzione; indicare quale e quale istruzione lo provoca:
Option ExplicitOption Base 1Sub ex() Dim vet(3 To 8) vet(7) = 6 vet(8) = 1 vet(1) = 3End Sub
• Vet(1) non esiste
![Page 14: Lez. 11 (11/12) - PBElementi di Programmazione1 Lezione 11 Esercizi.](https://reader035.fdocuments.us/reader035/viewer/2022081602/5542eb4b497959361e8b8d9f/html5/thumbnails/14.jpg)
Lez. 11 (11/12) - PB Elementi di Programmazione 14
Domanda 5• Mostrare il contenuto della cella A2 dopo
l’esecuzione del seguente codice:Option ExplicitSub 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
![Page 15: Lez. 11 (11/12) - PBElementi di Programmazione1 Lezione 11 Esercizi.](https://reader035.fdocuments.us/reader035/viewer/2022081602/5542eb4b497959361e8b8d9f/html5/thumbnails/15.jpg)
Lez. 11 (11/12) - PB Elementi di Programmazione 15
Domanda 5• Mostrare il contenuto della cella A2
dopo l’esecuzione del seguente codice:
Option ExplicitSub 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 proXXreproXXXre
![Page 16: Lez. 11 (11/12) - PBElementi di Programmazione1 Lezione 11 Esercizi.](https://reader035.fdocuments.us/reader035/viewer/2022081602/5542eb4b497959361e8b8d9f/html5/thumbnails/16.jpg)
Lez. 11 (11/12) - PB Elementi di Programmazione 16
Domanda 6
• Date le seguenti dichiarazioni:Dim a As Integer, d As DoubleDim c As Boolean, b As Boolean • ed i seguenti valori iniziali: a = 8 d = 2.5 c = True b = FalseIndicare il valore delle espressioni: d = d / 3 + ca = b AND (c > 0)c = d /3 + 7 ‘d valore iniziale
![Page 17: Lez. 11 (11/12) - PBElementi di Programmazione1 Lezione 11 Esercizi.](https://reader035.fdocuments.us/reader035/viewer/2022081602/5542eb4b497959361e8b8d9f/html5/thumbnails/17.jpg)
Lez. 11 (11/12) - PB Elementi di Programmazione 17
Domanda 6• Date le seguenti dichiarazioni:
Dim a As Integer, d As DoubleDim c As Boolean, b As Boolean • ed i seguenti valori iniziali:
a = 8 d = 2.5 c = True b = FalseIndicare il valore delle espressioni: d = d / 3 + ca = b AND (c > 0)c = d /3 + 7 ‘d valore iniziale
d = d / 3 + cd = 0.833 + (-1)d = -0.17
a=b AND (c > 0)a= false AND falsea=False
c=true
![Page 18: Lez. 11 (11/12) - PBElementi di Programmazione1 Lezione 11 Esercizi.](https://reader035.fdocuments.us/reader035/viewer/2022081602/5542eb4b497959361e8b8d9f/html5/thumbnails/18.jpg)
Lez. 11 (11/12) - PB Elementi di Programmazione 18
Domanda 7
• Scrivere l’intestazione 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.
![Page 19: Lez. 11 (11/12) - PBElementi di Programmazione1 Lezione 11 Esercizi.](https://reader035.fdocuments.us/reader035/viewer/2022081602/5542eb4b497959361e8b8d9f/html5/thumbnails/19.jpg)
Lez. 11 (11/12) - PB Elementi di Programmazione 19
Domanda 7
• Scrivere l’intestazione 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.
![Page 20: Lez. 11 (11/12) - PBElementi di Programmazione1 Lezione 11 Esercizi.](https://reader035.fdocuments.us/reader035/viewer/2022081602/5542eb4b497959361e8b8d9f/html5/thumbnails/20.jpg)
Lez. 11 (11/12) - PB Elementi di Programmazione 20
Domanda 7
• Scrivere l’intestazione 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
![Page 21: Lez. 11 (11/12) - PBElementi di Programmazione1 Lezione 11 Esercizi.](https://reader035.fdocuments.us/reader035/viewer/2022081602/5542eb4b497959361e8b8d9f/html5/thumbnails/21.jpg)
Lez. 11 (11/12) - PB Elementi di Programmazione 21
Domanda 8• Indicare il contenuto delle celle B1 ed B2 dopo l’esecuzione del
seguente codice VBA:
Option ExplicitSub 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 = yEnd Sub
![Page 22: Lez. 11 (11/12) - PBElementi di Programmazione1 Lezione 11 Esercizi.](https://reader035.fdocuments.us/reader035/viewer/2022081602/5542eb4b497959361e8b8d9f/html5/thumbnails/22.jpg)
Lez. 11 (11/12) - PB Elementi di Programmazione 22
Domanda 8• Indicare il contenuto delle celle B1 ed B2
dopo l’esecuzione del seguente codice VBA:
Option ExplicitSub 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 = yEnd Sub
x y 4 8 4 65.333 75.3333 65.333
B1 = 75B2 = 65.333
![Page 23: Lez. 11 (11/12) - PBElementi di Programmazione1 Lezione 11 Esercizi.](https://reader035.fdocuments.us/reader035/viewer/2022081602/5542eb4b497959361e8b8d9f/html5/thumbnails/23.jpg)
Lez. 11 (11/12) - PB Elementi di Programmazione 23
Esercizio 1Scrivere 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
![Page 24: Lez. 11 (11/12) - PBElementi di Programmazione1 Lezione 11 Esercizi.](https://reader035.fdocuments.us/reader035/viewer/2022081602/5542eb4b497959361e8b8d9f/html5/thumbnails/24.jpg)
Lez. 11 (11/12) - PB Elementi di Programmazione 24
Esercizio 2Sia 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