I cicli
Transcript
I cicli
Introduzione alla Programmazione e Applicazioni per la Finanza M2 (Prodotti Derivati) Lezione 10 Anno accademico 2006-07 Titolare corso: Prof. Costanza Torricelli Docente: Dott.ssa Marianna Brunetti La sintassi di base del VBA - Condizioni e Cicli La sintassi di base del VBA – Condizioni e Cicli Cicli Condizioni Per prendere delle decisioni ¾ ¾ ¾ ¾ ¾ If ad una riga (o if semplice) If … Else If … ElseIf If Nidificate Select Case Per ripetere le operazioni ¾Cicli a verifica dall’alto: ¾For ¾While…Wend ¾Do While… Loop ¾Do Until … Loop ¾Cicli a verifica dal basso: ¾Do Loop… While ¾Do Loop … Until La sintassi di base del VBA - Condizioni e Cicli Le condizioni If ed If … Else 1) Funzioni in Excel If ad una riga If ad una riga Function Ifadunariga(parametro) If parametro > 5 Then Ifadunariga = 1 End Function 2) If ad una riga con valore iniziale Function IfadunaRiga2(parametro) IfadunaRiga2 = -16 If parametro > 5 Then IfadunaRiga2 = 1 End Function 3) If …Else Function IfElse(parametro) If parametro > 5 Then IfElse = 1 Else IfElse = 15 End Function -10 -9 -8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 9 10 La sintassi di base del VBA - Condizioni e Cicli 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 if ad una riga con valore iniziale -16 -16 -16 -16 -16 -16 -16 -16 -16 -16 -16 -16 -16 -16 -16 -16 1 1 1 1 1 If…Else 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 1 1 1 1 1 La condizione If… ElseIf Si utilizza quando si deve eseguire più di una espressione condizionale Funzione in Excel Sintassi If <condizione0> then <espressioni se condizione 0 vera> Function FunzioneElseIf(parametro) If parametro < 0 Then FunzioneElseIf = -1 ElseIf <condizione1> then <espressioni se condizione 1 vera> ElseIf <condizione2> then <espressioni se condizione 2 vera> ElseIf parametro = 0 Then FunzioneElseIf = 0 …altri ElseIf……… End If Else: FunzioneElseIf = 1 End Function Else: <espressioni se tutti i confronti falliscono> End If If…ElseIf -10 -9 -8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 9 10 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 1 1 1 1 1 1 1 1 1 1 -1 La sintassi di base del VBA - Condizioni e Cicli If Nidificate NB: ogni espressione if deve essere completa! Esempio 1 Function SegnoUguale(P1, P2) If P1 > 0 Then If P2 > 0 Then SegnoUguale = 1 Else: SegnoUguale = 0 Else If P2 < 0 Then SegnoUguale = -1 Else SegnoUguale = 0 End If End Function P1 11 22 -22 -57.3 6 -5 4 La sintassi di base del VBA - Condizioni e Cicli P2 6 3 6 4 6 7 3 Segno Uguale 1 1 0 0 1 0 1 If Nidificate (2) Esempio 2 Function IfNidificata(P1, P2) If P1 > 10 Then If P2 > 5 Then IfNidificata = 1 Else IfNidificata = 2 ElseIf P1 < -10 Then If P2 > 5 Then IfNidificata = 3 Else IfNidificata = 4 Else: If P2 > 5 Then If P1 = P2 Then IfNidificata = 5 Else IfNidificata = 6 Else: IfNidificata = 7 End If End If P1 11 22 -22 -57.3 6 -5 4 End Function NB: ogni espressione if deve essere completa! La sintassi di base del VBA - Condizioni e Cicli P2 6 3 6 4 6 7 3 IfNidificata 1 2 3 4 5 6 7 La condizione Select Case Sintassi Esempio di funzione per Excel Select Case <variabile> Function SelectCase (parametro) Case <valore 1>: <blocco istruzioni 1> [Case <valore 2>: <blocco istruzioni 2>] ……………… [Case <valore n>: <blocco istruzioni n>] Select Case (parametro) Case 1: SelectCase = 111 Case 2: SelectCase = 222 Case 3,5,6: SelectCase = 333 [Case Else: <blocco istruzioni se tutti i precedenti falliscono>] Case 4: SelectCase = 444 End Select Case Else: SelectCase = 555 Parametro 0 1 2 3 3.5 4 5 6 7 Select Case 555 111 222 333 555 444 333 333 555 End Select End Function La sintassi di base del VBA - Condizioni e Cicli Operatori logici: AND, OR, NOT • • • AND Î per verificare che le condizioni siano tutte contemporaneamente valide OR Î per verificare che almeno una delle condizioni sia vera NOT Î per verificare che le condizioni non siano valide AND Esempio: Voglio verificare se un parametro (n) è compreso tra 10 e 100 Caso 1 Î If Nidificate Caso 2 Î AND Function BooleanoAnd(n) If (n > 10) And (n < 100) Then BooleanoAnd = 1 Else BooleanoAnd = 0 End Function La sintassi di base del VBA - Condizioni e Cicli 1 10 12 50 65 72 99 100 101 BooleanoAnd 0 0 1 1 1 1 1 0 0 Operatori logici: AND, OR, NOT (2) OR Esempio: Voglio verificare se un parametro (n) è < di 10 o > 100 Function BooleanoOr (n) If (n < 10) Or (n > 100) Then BooleanoOr = 1 Else BooleanoOr = 0 End Function NOT 1 10 12 50 65 72 99 100 BooleanoOr 1 0 0 0 0 0 0 0 Esempio: Voglio verificare se un parametro (n) è diverso da 10 e da 100 Function BooleanNot(n) If Not ((n = 10) Or (n = 100)) Then BooleanNot = 1 Else BooleanNot = 0 End Function La sintassi di base del VBA - Condizioni e Cicli 1 10 12 50 65 72 99 100 101 BooleanNot 1 0 1 1 1 1 1 0 1 I cicli ¾ Cicli con verifica dall’alto : la condizione ciclica è verificata prima di eseguire l’operazione ¾ Ciclo con verifica dal basso: la condizione ciclica è verificata dopo aver eseguito l’operazione For Permette di ripetere una porzione di codice per un numero di volte (n) che si conosce in anticipo Sintassi For <contatore> = <inizio> to <fine> [step <passo> ] <istruzione 1> ………………. <istruzione n> Next [<contatore>] La sintassi di base del VBA - Condizioni e Cicli Esempi For : Calcolo n fattoriale Esempio 1 Function For1(N As Integer) Dim i As Integer Dim j As Long If N <= 1 Then For1 = 1 Else j=1 For i = 1 To N Step 1 j=j*i Next i For1 = j End If End Function N For1 -6.5 -4 0 1 1.4 2 3 4 4.5 5 6 7 8 9 10 1 1 1 1 1 2 6 24 24 120 720 5040 40320 362880 3628800 NB: se l’incremento è 1 => Step = 1 può anche essere omesso! La sintassi di base del VBA - Condizioni e Cicli Esempi For : Calcolo n fattoriale (2) Esempio 2 Function For2(N As Integer) Dim i As Integer Dim j As Long If n <= 1 Then For2 = 1 Else j=1 For i = N To 1 Step -1 j=j*i Next i For2 = j End If End Function La sintassi di base del VBA - Condizioni e Cicli N -6.5 -4 0 1 1.4 2 3 4 4.5 5 6 7 8 9 10 For2 1 1 1 1 1 2 6 24 24 120 720 5040 40320 362880 3628800 For con Uscita Anticipata Esempio Function For3(P1, P2) Dim i As Integer Dim somma As Long somma = 0 For i = 1 To P1 Step 1 somma = somma + i If somma > P2 Then Exit For Next i For3 = somma P1 1 2 3 4 5 6 7 8 9 10 11 12 13 End Function La sintassi di base del VBA - Condizioni e Cicli P2 22 22 22 22 22 22 22 22 22 22 22 22 22 For3 1 3 6 10 15 21 28 28 28 28 28 28 28 While… Wend Permette di ripetere una o più espressioni fino a che una condizione è vera: il numero di volte non è noto in anticipo! Esempio di funzione in Excel Sintassi While <condizione> <istruzione 1> <istruzione 2> …………….. <istruzione n> Wend NB: le n istruzioni devono essere tali che la condizione ad un certo punto smetta di verificarsi), altrimenti si cade in un ciclo infinito Î Task Manager Function While1(n As Integer) Dim i As Integer Dim j As Long If n <= 1 Then While1 = 1 Else i=1 j=1 While i <= n j=j*i i=i+1 Wend While1 = j End If End Function La sintassi di base del VBA - Condizioni e Cicli N -6.5 -4 0 1 1.4 2 3 4 4.5 5 6 7 8 9 10 While1 1 1 1 1 1 2 6 24 24 120 720 5040 40320 362880 3628800 Do While… Loop Esegue zero o più volte una o più istruzioni finché una condizione è vera Esempio di funzione in Excel Sintassi Do While <condizione> <istruzione 1> <istruzione 2> …………….. <istruzione n> Loop Function DoWhile1 (n As Integer) Dim i As Integer Dim j As Integer If n < 2 Then DoWhile1 = 1 Else i=1 j=1 Do While i <= n j=j*i i=i+1 Loop DoWhile1 = j End If End Function La sintassi di base del VBA - Condizioni e Cicli N -6.5 -4 0 1 1.4 2 3 4 4.5 5 6 7 8 9 10 Do While …Loop 1 1 1 1 1 2 6 24 24 120 720 5040 #VALORE! #VALORE! #VALORE! Do While… Loop (2) Esempio di funzione in Excel Function DoWhile2 (n As Integer) Dim i As Integer Dim j As Long If n < 2 Then DoWhile2 = 1 Else i=1 j=1 Do While i <= n j=j*i i=i+1 Loop DoWhile2 = j End If End Function N Do While …Loop Do While …Loop2 -6.5 -4 0 1 1.4 2 3 4 4.5 5 6 7 8 9 10 1 1 1 1 1 2 6 24 24 120 720 5040 #VALORE! #VALORE! #VALORE! 1 1 1 1 1 2 6 24 24 120 720 5040 40320 362880 3628800 La sintassi di base del VBA - Condizioni e Cicli Do Until… Loop Permette di ripetere le istruzioni quando la condizione è falsa e le ripete finché non si avvera. Esempio di funzione in Excel Sintassi Do Until … Function DoUntil(n As Integer) Do Until <condizione> <istruzione 1> <istruzione 2> …………….. <istruzione n> Loop Dim i As Integer Dim j As Long If n < 2 Then DoUntil = 1 Else i=1 j=1 Do Until i > n j=j*i i=i+1 Loop DoUntil = j End If End Function La sintassi di base del VBA - Condizioni e Cicli N -6.5 -4 0 1 1.4 2 3 4 4.5 5 6 7 8 9 10 Loop 1 1 1 1 1 2 6 24 24 120 720 5040 40320 362880 3628800 Do … Loop While Permette di eseguire una o più istruzioni finché una condizione è vera Sintassi Esempio di funzione in Excel Do <istruzione 1> <istruzione 2> …………….. <istruzione n> Loop While <condizione> Function DoLoopWhile(n As Integer) Dim i As Integer Dim j As Long If n < 2 Then DoLoopWhile = 1 Else i=1 j=1 Do j=j*i i=i+1 Loop While i <= n DoLoopWhile = j End If End Function La sintassi di base del VBA - Condizioni e Cicli N -6.5 -4 0 1 1.4 2 3 4 4.5 5 6 7 8 9 10 Do … Loop While 1 1 1 1 1 2 6 24 24 120 720 5040 40320 362880 3628800 Do … Loop Until Le iterazioni avvengono quando la condizione è falsa e terminano quando si avvera. Esempio di funzione in Excel Sintassi Do <istruzione 1> <istruzione 2> …………….. <istruzione n> Loop Until <condizione> Function DoLoopUntil (n As Integer) Dim i As Integer Dim j As Long If n < 2 Then DoLoopUntil = 1 Else i=1 j=1 Do j=j*i i=i+1 Loop Until i > n DoLoopUntil = j End If End Function La sintassi di base del VBA - Condizioni e Cicli N -6.5 -4 0 1 1.4 2 3 4 4.5 5 6 7 8 9 10 Do … Loop Until 1 1 1 1 1 2 6 24 24 120 720 5040 40320 362880 3628800