Skip to main content

Utilizzare i loop

Obiettivi di apprendimento

Al completamento di questa unità, sarai in grado di:

  • Distinguere tra loop while e do-while.
  • Utilizzare gli operatori di incremento e decremento.

Nel nostro esempio della classe Teatime, abbiamo preparato una tazza di tè da condividere con gli amici. Ma cosa succede se dobbiamo servire il tè a un gruppo di 100 persone? Dobbiamo ripetere gli stessi passaggi diverse volte fino a quando ognuno ha ricevuto la sua tazza di tè. Sembrerebbe che ci sia bisogno di un bel po' di codice ridondante, non ti pare? È qui che i loop vengono in aiuto.

Un loop è un blocco di codice che viene eseguito ripetutamente fino a quando una data condizione non viene soddisfatta. Tornando al codice della classe Teatime, vediamo quali sono i passaggi da ripetere:

Add Tea and Sugar to Teacup
Pour Tea in Teacup
Put 1 teaspoon of Sugar in Teacup
Stir Tea in Teacup
Serve Tea to a Friend

I passaggi che devono essere ripetuti possono essere aggiunti a un loop. In Apex sono disponibili tre modi di ripetere ciclicamente istruzioni: i loop while, do-while e for. Per ora ci concentreremo sui loop while e do-while. Come avrai capito dal nome, i loop while e do-while sono molto simili. In entrambi i casi, bisogna verificare che una condizione specifica sia soddisfatta. La differenza sta nel momento in cui la condizione viene verificata. Nei loop while, la condizione viene verificata prima che il loop inizi, mentre nei loop do-while viene verificata dopo che le istruzioni all'interno del loop sono state eseguite. 

Ti sembra un dettaglio insignificante? In realtà, la differenza è abbastanza significativa. 

Mettiamola così: un loop do-while viene sempre eseguito almeno una volta, mentre, a seconda della condizione, un loop while potrebbe non essere eseguito affatto. 

Loop while

Un loop while inizia con la verifica della condizione: se questa restituisce true, vengono eseguite delle azioni, se invece restituisce false, il loop si ferma.

Diagramma di flusso di un loop while in cui la condizione viene verificata per controllare se restituisce true o false. Se la condizione restituisce true il loop continua, se invece restituisce false il loop si ferma.

Nota

Nota

Per un ripasso sul significato dei simboli e della notazione dei diagrammi di flusso, fa clic qui.

Ecco la sintassi:

While(condition) {
    //run this block of code
}

Applichiamo un loop while al codice della nostra classe Teatime. 

  1. Nella Developer Console, fai clic su Debug | Open Execute Anonymous Window (Debug | Apri finestra di esecuzione anonima).
  2. Copia il codice seguente e incollalo nella finestra Enter Apex Code (Inserisci codice Apex).
    //Declare an Integer variable called totalGuests and set it to 100
    Integer totalGuests = 100;
      
    //Declare an Integer variable called totalAmountSugar and set it to 159 (number of teaspoons in a bag of sugar).
    Integer totalAmountSugar = 159;
      
    //Declare an Integer variable called totalAmountTea and set it to 35 (number of teabags).
    Integer totalAmountTea = 35;
      
    //Loop: Add a teaspoon of sugar and one tea bag to a tea cup. Serve until there is no sugar or tea left.
      
    While(totalGuests > 0) {
        System.debug(totalGuests + ' Guests Remaining');
        //check ingredients
        if(totalAmountSugar == 0 || totalAmountTea == 0) {
            System.debug('Out of ingredients! Sugar: ' + totalAmountSugar + ' Tea: ' + totalAmountTea);
            break; //ends the While loop
        }
      
        //add sugar
        totalAmountSugar--;
      
        //add tea
        totalAmountTea--;
      
        //guest served
        totalGuests--;
    }
  3. Seleziona la casella di controllo Open log (Apri registro) e fai clic su Execute (Esegui). Si apre la finestra Execution Log (Registro di esecuzione), in cui è visualizzato il risultato dell'esecuzione del codice.
  4. Seleziona la casella di controllo Debug Only (Solo debug) nella parte bassa della finestra.

Il segno -- non è un errore di ortografia. Si tratta di un operatore di decremento postfisso. È un modo rapido per dire "sottrai un numero da questo valore". Se totalAmountSugar è uguale a 159, viene decrementato in modo che totalAmountSugar sia uguale a 158. L'operatore di incremento postfisso ++ opera in modo opposto, aggiungendo un numero al valore.

In pratica, cosa succede? Ricorda che il nostro obiettivo principale è servire il tè a 100 ospiti. Ogni volta che serviamo un ospite, sottraiamo una dose di ciascun ingrediente (totalAmountSugar e totalAmountTea) e un ospite (totalGuests). Quando il valore di totalAmountSugar o di totalAmountTea diventa 0 (riga 15) OPPURE il valore di totalGuests (riga 12) diventa 0, il loop si ferma e nessuno viene più servito. 

Vediamo come funziona il loop do-while.

Loop do-while

Quando si utilizza un loop do-while, il codice viene eseguito una volta prima della verifica della condizione.

Un loop do-while inizia con l'esecuzione di un'operazione e, successivamente, la condizione viene verificata. Se la condizione restituisce true, l'operazione viene eseguita di nuovo, se invece restituisce false, il loop si ferma.

Diagramma di flusso di un loop do-while in cui viene eseguito un blocco di codice e, successivamente, la condizione viene verificata per controllare se restituisce true o false. Se la condizione restituisce true il loop continua, se invece restituisce false il loop si ferma.

Dai un'occhiata alla sintassi:

Do {
    //run this block of code
} while(condition);
  1. Nella Developer Console, fai clic su Debug | Open Execute Anonymous Window (Debug | Apri finestra di esecuzione anonima).
  2. Copia il codice seguente e incollalo nella finestra Enter Apex Code (Inserisci codice Apex).
    //Declare an Integer variable called totalGuests and set it to 100
    Integer totalGuests = 100;
      
    //Declare an Integer variable called totalAmountSugar and set it to 159 (number of teaspoons in a bag of sugar).
    Integer totalAmountSugar = 159;
      
    //Declare an Integer variable called totalAmountTea and set it to 35 (number of teabags).
    Integer totalAmountTea = 35;
      
    do {
        //deduct sugar serving
        totalAmountSugar--;
      
        //deduct tea serving
        totalAmountTea--;
      
        //deduct guest
        totalGuests--;
      
        System.debug(totalGuests + ' Guests Remaining!');
      
        //check ingredients
        if(totalAmountSugar == 0 || totalAmountTea == 0) {
            System.debug('Out of ingredients!');
            break; //ends the While loop
        }
      
    } while(totalGuests > 0);
  3. Seleziona la casella di controllo Open log (Apri registro) e fai clic su Execute (Esegui). Si apre la finestra Execution Log (Registro di esecuzione), in cui è visualizzato il risultato dell'esecuzione del codice.
  4. Seleziona la casella di controllo Debug Only (Solo debug) nella parte bassa della finestra.

Hai dichiarato delle variabili, istanziato dei valori, creato liste e usato loop per lavorare su dati ciclicamente. Complimenti! Hai completato l'introduzione ad Apex e sei sulla buona strada per scoprire di più sulla programmazione.

Risorse

Condividi il tuo feedback su Trailhead dalla Guida di Salesforce.

Conoscere la tua esperienza su Trailhead è importante per noi. Ora puoi accedere al modulo per l'invio di feedback in qualsiasi momento dal sito della Guida di Salesforce.

Scopri di più Continua a condividere il tuo feedback