IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

NetBeans Java Discussion :

Comment remplacer une boucle for par une boucle while ou do while


Sujet :

NetBeans Java

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2017
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Janvier 2017
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Comment remplacer une boucle for par une boucle while ou do while
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public class ExoII4{ 
     public static void main(String[] args){ 
     Scanner s=new Scanner(System.in);
     int i, n, som ; som = 0 ; for (i=0 ; i<4 ; i++){ 
     System.out.println ("donnez un entier ");
     n = s.nextInt(); som += n ; 
    } System.out.println ("Somme : " + som) ; } }
    je ne sais pas comment Écrire un programme réalisant la même chose en employant à la place de l’instruction for :
    - une instruction while, et une instruction do... while.

  2. #2
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2014
    Messages : 352
    Points : 349
    Points
    349
    Par défaut
    Citation Envoyé par laurenz Voir le message
    je ne sais pas comment Écrire un programme réalisant la même chose en employant à la place de l’instruction for :
    - une instruction while, et une instruction do... while.
    Pour ce faire, il te faut une variable supplémentaire qui va permettre d'arrêter la boucle une fois le nombre de tours atteints.

    Avec while :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    int breTour = 0;
    while(breTour < 4){
    	System.out.println ("donnez un entier ");
    	n = s.nextInt(); som += n ;
    	breTour += 1;
    }
    Do while :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    do{
    	System.out.println ("donnez un entier ");
    	n = s.nextInt(); som += n ;
    	breTour += 1;
    }while(breTour < 4);
    et c'est pratique de fermer ton scanner :

  3. #3
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Kasko Voir le message
    Pour ce faire, il te faut une variable supplémentaire qui va permettre d'arrêter la boucle une fois le nombre de tours atteints.
    Pas besoin de variable supplémentaire. La variable i existe et on peut l'utiliser.

    Un for correspond à
    Code pseudocode : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for( initialisation; condition d'entrée dans la boucle et continuation de la boucle; variation ) {
           séquence à exécuter en boucle
    }
    .
    L'initialisation, c'est l'affectation d'une valeur à une variable, qui sera celle utilisée lors du test de la condition. L'initialisation peut être accompagnée de la déclaration, mais ce n'est pas obligatoire. C'est en revanche plutôt conseillé, pour limiter la portée des variables utilisées en indices de boucle, si elles n'ont pas besoin d'être exploitées en dehors de la boucle.
    Si la condition d'entrée et de continuation de la boucle est vraie, alors on entre dans le for, sinon on n'entre pas. Ensuite, la condition est retestée à chaque boucle : si elle est fausse, on s'arrête de boucle, sinon on continue.
    La variation est un traitement qui doit provoquer un changement dans l'une ou toutes les valeurs testées dans la condition, de manière à ce que la condition puisse passer de vrai à faux. Si cela ne peut jamais arriver, on a une boucle infinie (sauf si on a des points de sortie de type break dans la séquence exécutée dans la boucle, ce qu'il vaut mieux de préférence éviter).

    Pour un while, la correspondance est directe :
    Code pseudocode : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    initialisation
    while ( condition d'entrée dans la boucle et continuation de la boucle ) {
         séquence à exécuter en boucle
         variation
    }
    Si on veut avoir la même portée de variable que pour un for, il faudra mettre tout ça dans un bloc :
    Code pseudocode : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    {
       initialisation
       while ( condition d'entrée dans la boucle et continuation de la boucle ) {
            séquence à exécuter en boucle
            variation
       }
    }

    Pour un do/while, c'est un peu plus compliqué : la conversion ne peut pas être directe dans tout les cas. Parce que pour une boucle do/while, on réalise toujours au moins une itération. On peut donc convertir une boucle for en do/while que si la condition est vraie pour les valeurs testées à l'entrée dans la boucle.

    Dans l'absolu, la conversion pourrait s'écrire :
    Code pseudocode : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
       initialisation
       if ( condition d'entrée dans la boucle ) do {     
            séquence à exécuter en boucle
            variation
       } while ( condition de continuation de la boucle )
    Mais autant utiliser un while dans ce cas.
    A noter qu'avec un do/while, on peut écrire :
    Code pseudocode : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
       déclaration
       do {     
            séquence à exécuter en boucle
            affectation
       } while ( condition de continuation de la boucle )


    Citation Envoyé par Kasko Voir le message
    et c'est pratique de fermer ton scanner :
    Non, ici. On ne ferme que les ressources qu'on a ouvert. On n'a donc pas besoin de fermer System.in.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  4. #4
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2014
    Messages : 352
    Points : 349
    Points
    349
    Par défaut
    Citation Envoyé par joel.drigo Voir le message
    Pas besoin de variable supplémentaire. La variable i existe et on peut l'utiliser.
    Ah oui en fait je n'ai pas remarqué que la variable i a déjà été déclarée.Je pensais qu'il fait la déclaration et l'initialisation dans le for().

    Citation Envoyé par joel.drigo Voir le message
    Non, ici. On ne ferme que les ressources qu'on a ouvert. On n'a donc pas besoin de fermer System.in.
    Merci pour la précision.

Discussions similaires

  1. le Java est la continuité du C++ ???
    Par Vincent PETIT dans le forum Débats sur le développement - Le Best Of
    Réponses: 33
    Dernier message: 25/08/2005, 20h17
  2. Envoi de Datagrames par IP en JAVA
    Par the java lover dans le forum Développement
    Réponses: 2
    Dernier message: 14/08/2002, 11h44
  3. directx et java?? possible??
    Par jiraiya dans le forum DirectX
    Réponses: 3
    Dernier message: 09/07/2002, 19h55
  4. webcam : lire sur un port usb en c/c++ ou java. sous win. ?
    Par flo007 dans le forum Choisir un environnement de développement
    Réponses: 2
    Dernier message: 24/05/2002, 23h24
  5. Service de nommage java C++
    Par Anonymous dans le forum CORBA
    Réponses: 3
    Dernier message: 15/04/2002, 12h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo