> For the complete documentation index, see [llms.txt](https://checksound.gitbook.io/informatica_2/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://checksound.gitbook.io/informatica_2/strutture-di-controllo.md).

# Strutture di controllo

### Il ciclo *while*

Il ciclo `while` ripete un statement piu' volte, ma solo finché la condizione specificata rimane vera (true). Il ciclo `while` ha questa forma:

```c
while(<boolean-expression>)
    <statement>
```

Siccome lo statement può essere un blocco, la maggior parte dei cicli `while` hanno la forma:

```c
while(<boolean-expression>) {
    statements
    }
```

Qui un semplice esempio di ciclo `while` che stampa i numeri 1, 2, 3, 4, 5:

```c
int number;   // The number to be printed.
number = 1;   // Start with 1.
while ( number < 6 ) {  // Keep going as long as number is < 6.
    out << number << endl;
    number = number + 1;  // Go on to the next number.
}
out << "Done!" << endl;
```

\<METTI ESEPIO SU CALCOLO INTERESSI>

### *If* statement

Un `if` statement dice al computer di prendere una delle due alternative, in base al valore di una true o false di una certa condizione.  Un `if` statement ha la forma:

```c
if ( boolean-expression )
    statement1
else
    statement2
```

Molte volte noi vogliamo che il computer scelga tra fare una cosa o non farla. Si può fare così, con un `if` statement che omette la parte else:

```c
if ( boolean-expression )
    statement
```

Alcune volte, i nuovi programmatori confondono il ciclo `while` con il semplice `if`, sebbene il loro significato è piuttosto differente. l'if statement è eseguito al piu' una volte, mentre lo statement `while` può essere eseguito anche molte volte.

Può essere utile vedere il diagramma del flusso di esecuzione di un ciclo `while` e di un `if`:

<figure><img src="https://1691927889-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVQpHtor5rnWm55Hvx64D%2Fuploads%2FL8b5uGHiWtvXDkmYmwaG%2Fwhile-and-if-flow-control.png?alt=media&amp;token=bd3dcfa4-53fe-4b85-9666-af9ecc726d99" alt=""><figcaption></figcaption></figure>

Il flusso di controllo di un `if ... else` statement rende chiaro che solo uno dei due statement innestati è eseguito:

<figure><img src="https://1691927889-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FVQpHtor5rnWm55Hvx64D%2Fuploads%2FwBvDAICyqWgvaOxIkgas%2Fif-else-flow-control.png?alt=media&amp;token=811e8517-6d54-4570-a641-77121161bd8c" alt=""><figcaption></figcaption></figure>

Naturalmente, uno o entrambi gli statement nell'`if` possono essere dei blocchi. Così un `if` statement spesso è così:

```c
if ( boolean-expression ) {
    statements
}
else {
    statements
}
```

oppure:

```c
if ( boolean-expression ) {
    statements
}


```

Esempio:

```c
if ( x > y ) {
    int temp;      // A temporary variable for use in this block.
    temp = x;      // Save a copy of the value of x in temp.
    x = y;         // Copy the value of y into x.
    y = temp;      // Copy the value of temp into y.
}
```
