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 :

Remplacer une boucle for par une boucle while


Sujet :

Langage Pascal

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    IETS
    Inscrit en
    Mai 2015
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Belgique

    Informations professionnelles :
    Activité : IETS
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2015
    Messages : 1
    Points : 0
    Points
    0
    Par défaut Remplacer une boucle for par une boucle while
    Bonjour , un ami m'a aidé a développer un programme en pascal qui demande de taper des nombres et ensuite les trier par ordre croissant.

    Voici mon programme:

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    program tri_rapide_Jason;
    uses crt;
    type
        tab = array [1..100] of integer;
    var
       T:tab;
       x:integer;
    {******************************************************************}
    procedure taille(var n:integer);
    begin
         repeat
               writeln('donner la taille');
               read(n);
       {******************************************************************}  until n in [1..100];
    end;
     
    procedure saisie(var T:tab;n:integer);
    var
       i: integer;
    begin
         for i:=1 to n do
         begin
              write('T[',i,']=');
              readln(T[i]);
         end;
    end;
    {******************************************************************}
    {La procedure du tri rapide qui a un prob}
    procedure tri(var T:tab; a:integer; b:integer);
    var
       pivot,j,i,k,aux:integer;
    begin
         if (a<b) then
         begin
              pivot := T[a];
              writeln('le pivot est ', pivot);{message pour avoir une idée sur l'erreur}
              for i:= a+1 to b do
              begin
                   if (T[i] >= pivot) then
                   begin
                        j:=b+1;
                        repeat
                              j:=j-1;
                        until (T[j] < pivot) or (i=j);
                        if (i <> j) then
                        begin
                             aux:= T[i];
                             T[i]:=T[j];
                             T[j]:= aux;
                        end;
                   end;
              end;
              k:= b;
              repeat
                    k:=k-1;
              until (T[k] < pivot) or (k=1);
              if (k <> 1) then
              begin
                   T[1] := T[k];
                   T[k] := pivot;
                   writeln('le pivot est à la position:',k);{message pour avoir une idée sur l'erreur}
              end;
              tri (T,a,k-1);
              tri (T,k+1,b);
         end;
    end;
    {******************************************************************}
    procedure affichage(var T:tab;n:integer);
    var
       i:integer;
    begin
         for i:=1 to n do
             writeln (T[i]);
    end;
    {******************************************************************}
    begin
         taille (x);
         saisie(T,x);
         tri(T,1,x);
         affichage(T,x);
         readln();
    end.
    Je dois refaire un programme de ce type pour la rentré mais je n'ai jamais vu le for en pascal. Quelqu'un pourrait me refaire le programme a l'aide de while ?

    Merci d'avance.

  2. #2
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 929
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 929
    Points : 59 395
    Points
    59 395
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    Un petit rafraĉhissement des notions semble nécessaire :
    http://pascal.developpez.com/cours/p...e=page_8#LVIII

    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  3. #3
    Membre expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 550
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 550
    Points : 3 916
    Points
    3 916
    Par défaut
    Salut

    Hors de question de faire le travail à ta place, je te montre rapido comment on passe d'une boucle for à une boucle while, après tu développes ton talent...

    Soit la boucle for:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
      const nmax = 10;
      var i : Integer;
     
      for i := 0 to nmax do // toutes les valeurs de i de 0 à nmax dans l'ordre.
      begin
       // tes instructions ici
        WriteLn(i);
       end;
    qui devient la boucle While après une petite transformation :
    - initialisation du compteur avant la boucle,
    - incrémentation du compteur explicite en fin de boucle.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
      const nmax = 10;
      var i : Integer;
     
      i := 0; // initialisation
      while (i  <= nmax) do // il faut atteindre nmax
      begin
        // tes instructions ici
        WriteLn(i);
        Inc(i); // incrémentation
      end;
    Voili voilou, à toi de jouer. N'oublie pas de suivre le conseil d'Alcatîz.

    Note: Avec des énumérés, la transformation de la boucle for en boucle while sera un peu différente (place du test et façon d'incrémenter).

    cdlt

    M E N S . A G I T A T . M O L E M
    Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal

    "La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
    Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."

Discussions similaires

  1. Réponses: 8
    Dernier message: 05/04/2011, 09h06
  2. comment remplacer une boucle PHP par une ligne MySQL ?
    Par dsant dans le forum Requêtes
    Réponses: 2
    Dernier message: 20/09/2010, 20h04
  3. Boucle "for" dans une boucle "while"
    Par WhiteTigerZ dans le forum Général Java
    Réponses: 14
    Dernier message: 27/08/2010, 13h05
  4. Réponses: 7
    Dernier message: 03/10/2007, 18h58
  5. copie d'une table Y d'une base A vers une table X d'une base
    Par moneyboss dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 30/08/2005, 22h24

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