Cicli
- Presentazione dei programmi in Basic
- Utilizzo delle variabili
- Variabili a stringa
- Variabili numeriche
- Variabili booleane
- Variabili data
- Matrici
- Campo di applicazione e vita utile delle variabili
- Costanti
- Operatori
- Istruzioni condizionali
- Cicli
- Procedure e funzioni
- Gestione degli errori
- Altre istruzioni
Un ciclo è un'operazione ricorsiva, che ripete l'esecuzione di un blocco di codice per il numero di passaggi specificati. Potete impostare cicli con un numero indefinito di passaggi.
For...Next
Il ciclo For...Next ha un numero fisso di passaggi. Il contatore di cicli definisce il numero di esecuzioni del ciclo. Nell'esempio seguente, la variabile I è il contatore di cicli, con un valore iniziale di 1. Il contatore è incrementato di 1 al termine di ogni passaggio. Quando la variabile I è uguale a 10, il ciclo si arresta.
Dim I For I = 1 To 10 ' ... Inner part of loop Next I
Per incrementare il contatore di cicli di un valore diverso da 1 al termine di ogni passaggio, usate la Step funzione:
Dim I For I = 1 To 10 Step 0.5 ' ... Inner part of loop Next I
Nell'esempio precedente il contatore viene incrementato di 0,5 al termine di ciascun passaggio e il ciclo viene ripetuto per 19 volte.
È possibile utilizzare anche valori di incremento negativi:
Dim I For I = 10 To 1 Step -1 ' ... Inner part of loop Next I
In questo esempio, il contatore inizia a 10 ed è ridotto di 1 al termine di ogni passaggio, finché il contatore non è 1.
L'istruzione Exit For consente di uscire da un ciclo For anticipatamente. Nell'esempio seguente, il ciclo viene terminato durante il quinto passaggio:
Dim I For I = 1 To 10 If I = 5 Then Exit For End If ' ... Inner part of loop Next I
For Each
La variante di ciclo For Each...Next usata in VBA non è supportata in Apache OpenOffice Basic. I cicli For Each non utilizzano un contatore esplicito come i cicli For...Next. Un ciclo For Each specifica "esegui questa operazione in tutti gli elementi del gruppo", anziché "esegui questa operazione n volte". Ad esempio:
Const d1 = 2 Const d2 = 3 Const d3 = 2 Dim a(d1, d2, d3) For Each i In a() ' ... Inner part of loop Next i
Do...Loop
Il processo Do...Loop non è collegato a un numero fisso di passaggi. Do...Loop viene eseguito finché non è soddisfatta una determinata condizione. Sono disponibili quattro varianti del processo Do...Loop. Nei primi due esempi il codice incluso nel ciclo potrebbe non essere eseguito affatto (istruzione di tipo "esegui 0 volte"). Negli altri esempi il codice verrà eseguito almeno una volta. (Negli esempi seguenti, A > 10 rappresenta qualsiasi condizione):
- La variante Do While...Loop
controlla se la condizione che segue While è true prima di ciascun passaggio, e solo in tal caso esegue il ciclo.
Do While A > 10 ' ... loop body Loop
- La variante Do Until...Loop
continua a eseguire il ciclo finché la condizione che segue Until è false.
Do Until A > 10 ' ... loop body Loop
- La variante Do...Loop While
controlla la condizione solo dopo il primo passaggio del ciclo e termina se la condizione che segue While è false.
Do ' ... loop body Loop While A > 10
- La variante Do...Loop Until
controlla a sua volta la condizione dopo il primo passaggio, ma termina se la condizione che segue Until è true.
Do ' ... loop body Loop Until A > 10
Come il ciclo For...Next, anche il processo Do...Loop dispone di un comando di arresto. Il comando Exit Do permette di uscire da un ciclo indipendentemente dal punto in cui si trova.
Do If A = 4 Then Exit Do End If ' ... loop body Loop While A > 10
== Esempio di programmazione: ordinamento con cicli incorporati ==
Esistono molti modi di utilizzare i cicli, ad esempio per eseguire ricerche in elenchi, restituire valori o eseguire operazioni matematiche complesse. L'esempio seguente è un algoritmo che utilizza due cicli per ordinare un elenco per nome.
Sub Sort Dim Entry(1 To 10) As String Dim Count As Integer Dim Count2 As Integer Dim Temp As String Entry(1) = "Patty" Entry(2) = "Kurt" Entry(3) = "Thomas" Entry(4) = "Michael" Entry(5) = "David" Entry(6) = "Cathy" Entry(7) = "Susie" Entry(8) = "Edward" Entry(9) = "Christine" Entry(10) = "Jerry" For Count = 1 To 9 For Count2 = Count + 1 To 10 If Entry(Count) > Entry(Count2) Then Temp = Entry(Count) Entry(Count) = Entry(Count2) Entry(Count2) = Temp End If Next Count2 Next Count For Count = 1 To 10 Print Entry(Count) Next Count End Sub
I valori vengono scambiati come coppie finché non sono ordinati in ordine crescente. Le variabili migrano gradualmente verso la posizione corretta. Questo algoritmo è noto anche come Bubble Sort.
Content on this page is licensed under the Public Documentation License (PDL). |