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

Langage Pascal Discussion :

Passer d'une boucle FOR à une boucle WHILE


Sujet :

Langage Pascal

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 338
    Points : 0
    Points
    0
    Par défaut Passer d'une boucle FOR à une boucle WHILE
    Salut à tous !

    J'ai un petit problème que je n'arrive pas à résoudre; j’espère que vous m’aiderez ou guiderez dans pour le bon chemin ..
    Bon mon problème c'est changer les boucles d'un programme que je déjà fait (avec Turbo Pascal 7) de FOR en WHILE .. (en gardant la même fonction et résultat du programme).
    Bon voilà le programme, j’attends vos réponses le plus tôt possible ...
    MERCI d'avance
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    program tabdever;
    uses crt;
    var a,b,c:boolean;
    begin
    clrscr;
    writeln('+++++++++++++++++++++++++++++++++++++++++++++++');
    writeln('+   a       b       c   not a or b and not c  +');
    writeln('+++++++++++++++++++++++++++++++++++++++++++++++') ;
    for a:=false to true do begin
                            for b:=false to true do begin
                                                    for c:=false to true do begin
                          writeln('+',a:7,b:7,c:7,not a or b and not c:7,'                 +');
                                                                            end;
                                                    end;
    writeln('+++++++++++++++++++++++++++++++++++++++++++++++') ;                    end;
    readln;
    end.

  2. #2
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    ah tient c'est amusant comme cas de figure

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    var
      i : Integer;
     a : Booelan;
    begin
      i := 0;
      while i < 2 do
      begin
        a := odd(i);
        ...
        Inc(i);
      end;
    end;
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 338
    Points : 0
    Points
    0
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    ah tient c'est amusant comme cas de figure

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    var
      i : Integer;
     a : Booelan;
    begin
      i := 0;
      while i < 2 do
      begin
        a := odd(i);
        ...
        Inc(i);
      end;
    end;
    j'ai pas bien compris le truc , esque tu peux m'expliqué un peu !

  4. #4
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    Citation Envoyé par mohsenuss91 Voir le message
    j'ai pas bien compris le truc , esque tu peux m'expliqué un peu !
    et bien tu veux passer d'une boucle FOR a deux états à un WHILE qui en nécessite 3, il faut donc passer par une autre variable qui servira à boucler.

    si on déroule la boucle ça donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     i := 0;
     { condition while OK 0 < 2 }
     a := odd(i); // FALSE, 0 est pair
     ...
      Inc(i); // i = 1
     { condition while OK 1 < 2 }
      a := odd(i); // TRUE, 1 est impair
     ...
      Inc(i); // i = 2
     { condition while PAS OK, fin de boucle }
    tu peux maintenant imbriquer trois while sur le même modèle, ou encore chercher des conditions de répétition sur la seule variable i, mais ça demande un peu plus de réflexion.

    voici une façon de mettre ces conditions en évidence :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    var
     a,b,c:boolean;
     i : integer;
    begin
     writeln('+++++++++++++++++++++++++++++++++++++++++++++++');
     writeln('+   a       b       c   not a or b and not c  +');
     writeln('+++++++++++++++++++++++++++++++++++++++++++++++') ;
     i := 0;
     for a:=false to true do
     begin
       for b:=false to true do
       begin
         for c:=false to true do
         begin
           writeln(i:2,' +',a:7,b:7,c:7,not a or b and not c:7,'                 +');
           inc(i);
         end;
       end;
       writeln('+++++++++++++++++++++++++++++++++++++++++++++++') ;
     end;
    que l'on pourra remplacer par ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    begin
      writeln('+++++++++++++++++++++++++++++++++++++++++++++++');
     writeln('+   a       b       c   not a or b and not c  +');
     writeln('+++++++++++++++++++++++++++++++++++++++++++++++') ;
     i := 0;
     while i < ??? do
     begin
       a := ???;
       b := ???;
       c := ???;
       writeln(i:2,' +',a:7,b:7,c:7,not a or b and not c:7,'                 +');
       if ??? then
         writeln('+++++++++++++++++++++++++++++++++++++++++++++++') ;
       inc(i);
     end;
    end;
    reste plus qu'à remplacer les "???" par des expressions pertinentes
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 338
    Points : 0
    Points
    0
    Par défaut
    on faite je connais pas le role de : odd -Inc
    plus d'explication s.v.p
    et si c'est possible de me donné un exemple complet sur mon ancien programme avec FOR et un nouveau avec WHILE

  6. #6
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 463
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 463
    Points : 4 305
    Points
    4 305
    Par défaut
    Un peu d'effort. Tu as une documentation avec ton compilateur, il suffit de chercher dedans.

    De plus, Paul t'a déjà donné tout ce qu'il fallait, alors à toi de réfléchir un peu. Nous ne te donnerons pas de solution définitive.
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 338
    Points : 0
    Points
    0
    Par défaut
    merci a tous

Discussions similaires

  1. Réponses: 7
    Dernier message: 25/03/2011, 11h52
  2. [XL-2002] Macro de comparaison d'une cellule d'une feuille avec une cellule d'une autre feuille.
    Par steelydan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/09/2010, 13h59
  3. Réponses: 4
    Dernier message: 15/10/2009, 14h33
  4. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 14h35
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 14h48

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