(Java) Istruzione Loop con condizione - while


Durante lo studio del ciclo for, abbiamo detto che se il numero di ripetizioni di qualsiasi azione è noto, è possibile abbreviare il programma utilizzando l'operatore del ciclo for. E se il numero di ripetizioni non è noto. E questo accade abbastanza spesso.
Ad esempio:
ricordando la traduzione di un numero da un sistema numerico decimale a qualsiasi altro, dobbiamo dividere il numero (e quindi il risultato della divisione) per la base del sistema numerico finché non otteniamo zero nella risposta. Quante volte condivideremo non è noto. E ci sono moltissimi programmi che implementano un tale algoritmo. 
Come viene implementato?
Per questi casi nella programmazione, esiste un operatore di ciclo con una condizione. 
Nel linguaggio di programmazione C, un'istruzione di ciclo condizionale inizia con la parola while e ha la seguente struttura.
mentre (<condizione>){
  corpo ad anello
}
Come già sappiamo:
- una condizione è un'espressione, il cui risultato può essere vero o falso (come in un'istruzione condizionale)
- il corpo del ciclo sono i comandi che devono essere ripetuti
- le parentesi graffe possono essere omesse se il corpo del ciclo consiste di un solo operatore

Come funziona l'operatore:
1. Innanzitutto, il programma valuta la condizione tra parentesi dopo la parola while. Se la condizione è soddisfatta (true), il programma esegue le istruzioni contenute nel corpo del ciclo.
2. Come nel ciclo for, se il corpo del ciclo contiene solo un'istruzione, le parentesi graffe che evidenziano il corpo del ciclo possono essere omesse.
3. Al termine dell'esecuzione del corpo del ciclo, il programma torna a controllare la condizione e la controlla di nuovo.
4. Queste azioni (controllo della condizione - esecuzione del corpo del ciclo) vengono ripetute fino a quando la condizione diventa falsa.
5. Se alla prima esecuzione di questo operatore la condizione non è immediatamente soddisfatta (false), allora il programma non eseguirà mai il corpo del ciclo.

Analizzando il lavoro di questo operatore, dovrebbe essere chiaro che il corpo del ciclo deve contenere un operatore che influenza la condizione.
Ad esempio, un ciclo può incrementare il valore di una variabile utilizzata in una condizione.

Un esempio di un programma che chiameremo "Silent count"
Facciamo contare il programma al posto nostro, ad esempio fino a 10.
Il programma dovrebbe emettere la frase "Start" e "Fine", e tra queste azioni vengono visualizzati i numeri che vengono calcolati.
In questo modo, 
Avvia
1 2 3 4 5 6 7 8 9 10
Termina
Un programma che utilizza un ciclo while sarebbe simile a questo.
#include<iostream>
utilizzando lo spazio dei nomi std;
principale()
{
int io;
cout << "Avvia\n";
io=1;
mentre(i<=10)
{
cout << io<<" ";
io++; //Operatore che influisce sulla modifica della variabile nella condizione
}
cout << "\nFine";
}
In questo programma, assegniamo un valore alla variabile i=1 - l'origine
Inoltre, fintanto che abbiamo il valore della variabile i non è maggiore di (cioè minore o uguale a) il valore di cui abbiamo bisogno, 
 1 - visualizza il valore della variabile i 
 2 - aumenta il valore della variabile i di 1 - questo operatore influisce sul valore della condizione tra parentesi. La variabile i viene incrementata, cioè a un certo punto la condizione i<=10 diventerà falsa. Ciò accadrà quando i diventa uguale a 11. In questo caso, il corpo del ciclo non verrà più eseguito e il programma eseguirà l'istruzione successiva dopo il ciclo, ad es. cout << "\nFine";

Proviamo a scrivere un programma per risolvere il seguente problema:

Devi inserire un numero (lascia che sia inferiore a 3.000.000 e determina il numero di cifre che contiene.

Idea di soluzione


Abbiamo solo bisogno di tagliare in sequenza l'ultima cifra dal numero (questo può essere fatto riducendo il numero di 10 volte, usando la divisione intera per 10), e ogni volta dobbiamo aumentare il contatore. 
Di conseguenza, dopo aver tagliato tutti i numeri, nel contatore otterremo il numero di cifre nel numero.
In un altro modo, l'algoritmo può essere formulato come segue:
FINO A CHE IL NUMERO NON È ZERO, DIMINUIRLO 10 volte e AUMENTARE IL CONTATORE DI 1.
numero (n) contatore
123 0
12 1
1 2
0 3
Il programma sarà simile a questo.
#include<iostream>
utilizzando lo spazio dei nomi std;
principale()
{
int, contare;
cin>> N;
contare = 0;
mentre (n != 0)
  {
  conta++;
  n = n/10;
  }
cout << "Numero-" <<n<< " contiene " << contare << " cifre";  
}
Devi conoscere questo programma a memoria, perché. sulla sua base vengono risolti molti altri problemi relativi al calcolo dei numeri per cifre.

Compito

L'input del programma è il flusso di dati — una sequenza di numeri interi che termina con zero (lo zero non è incluso nella sequenza). Devi trovare la somma degli elementi di questa sequenza.
 
Algoritmo risolutivo
 somma=0
 input x // inserisci il primo numero
 while x != 0 // il segno di fine input è impostato nella condizione,
 nc // ovvero finché non inserisci zero
   sum = sum + x // puoi fare qualcosa con il numero originale.
                  // Puoi aggiungere un controllo numerico per alcune condizioni, ecc.
   inserisci x // inserisci il numero successivo
 kts
 print sum //output dei risultati