Ayez l'amabilité de me dire comment écrire une boucle FOR avec un pas de 2
MERCI.
Ayez l'amabilité de me dire comment écrire une boucle FOR avec un pas de 2
MERCI.
Joa,
C'est impossible en Pascal.
Il faut utiliser une boucle while ... do ou repeat ... until.
Ou plus simplement :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 for i:=1 to 5 do begin j:=i*2; //Utiliser j end;
Ou encore, mais avec boucles imbriquées :
i mod 2 =0 pour les pairs ou i mod 2 =1 pour les impairs, à toi de voir.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 For i:=1 to n do begin if i mod 2 = 0 then begin ................ ................ end; end;
Bonjour
Si c'est imposé chose que je trouverais bizarre (ce qui peut quand même arriver suivant les notions mises jeu), on va dire que tu peux passer par des calculs intermédiaires comme proposé dans les posts précédents. Si ce n'est pas imposé inutile de t'encombrer avec des lignes supplémentaires, fais comme l'a dit droggo et surtout que la boucle while peut jouer tous les rôles
je crois que la boucle Repeat ... Until n'est pas appropriée pour remplacer une boucle For. Comme l'a dit krachik, la meilleur solution est bien d'utiliser While.
Pour illuster mon propos,
ne produira aucun résultat sur le stdout. Pour arriver au même résultat avec la boucle Repeat, il faudra ajouter un contrôle supplémentaire ce qui n'est pas tout naturel.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 for i:=10 to 8 do begin echo("hello world"); end;
PHP, sort de ce corps
Code darrylsite : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 for i:=10 to 8 do begin echo("hello world"); end;
Pourquoi tu mets do au lieu de downto? du coup je me demande pourquoi dans ce cas précis suivant ce que dit l'auteur de la discussion, en quoi un repeat... until ne peut remplacer un for?
voici ce qu'il voulait illustrer
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 // ceci ne produit rien comme son "for" i := 10; while i < 8 do begin WriteLn('Hello'); Inc(i); end; // ceci produit un 'Hello' i := 10; repeat WriteLn('Hello'); Inc(i); until i > 8;
Hio,
Je sais, mais il m'arrive fréquemment d'utiliser repeat ... until quand on connaît parfaitement les valeurs d'entrée et sortie de la boucle : si on est sûr de boucler au moins une fois, c'est bien du domaine de repeat ... until ...
... mais même dans ce cas, j'utilise également très souvent while ... do, ça dépend de l'état d'esprit du moment.
Salut,
J'ai le souvenir que le code machine géneré par Turbo Pascal pour une boucle For est quasi-identitique à celui généré pour while.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 var i : integer; begin I := 0; while I > iMax do begin { code } inc(I, 2); end; end;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 var i : integer; begin I := 0; repeat { code } inc(I, 2); until I <= iMax; end;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 var i, iPrime : integer; begin for i := 0 to (iMax shr 1) do begin iPrime := i shl 1; { code } end; end;
il faudra peut être précisé que :
je ne sais pas si c'est moi qui m'égare ou c'est parce que je manque de sommeil (), mais je ne vois pas pourquoi vous cherchez à faire un code qui génére les nombres pairs.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 iMax shr 1 <==> iMax div 2 i shl 1 <==> i*2
Faire une boucle for avec un pas de 2 est différent de trouver des nombres pairs à mon avis. On peut bien avoir 1 - 3 - 5 - 7 - 9.
encore une solution
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 var skip : Boolean; i :Integer; begin skip := True; for i := 0 to 100 do skip := not skip; if skip then Continue; ... begin end;
Xoa,
Je crois qu'il vaut mieux arrêter, sinon on finira par exploser le forum par le nombre de messages.
salut,
je suis arrivé trop tard donc désolé, mais si je me rappel bien pour la boucle for par pas de 2
c'est
Bonne Chance.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 for i=1 to 10 by step=2 do begin end;
Merci.
Gia,
Arriver en retard ne signifie pas "droit d'écrire n'importe quoi".
La clause "step" n'existe pas en Pascal, tu confonds avec Basic, et mélanges les 2, puisqu'en Basic, Begin et End n'existent pas (en tout cas, dans les vieux Basics, les seuls qu'il m'est arrivé d'utiliser ponctuellement).
Et donc, non, tu ne te souviens pas bien.
Avant d'écrire ce genre de truc, un petit essai vite fait, bien fait ... Non ?
Salut,
désolé pour le mal entendu,
ce que je voulais dire par "je ne me rappel pas bien" c'est "step=2 ou by step=2" et si les deux sont fausses alors là, c'est une erreur de mon prof en 1989, on écrivait dans l'algorithme " par pas de 2 " mais dans un programmes je me rappel de step c'est pour cela que j'ai confondu.
autre solution
pour la deuxième fois je suis vraiment désolé.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 for i=1 to 100 begin if i mod 2 <> 0 then begin actions end; {fin if} end; {fin for}
Bonne Chance
Merci.
Qua,
Eh oui.
Tu as surtout confondu "algorithme" et "implémentation dans un langage donné".
L'algorithme, qui donne la suite des opérations à effectuer pour résoudre un problème ne doit pas dépendre du langage qui sera effectivement utilisé.
Qu'y figure "par pas de 2" n'implique absolument pas que le langage utilisé intègre cette possibilité dans une boucle "for".
Et comme il a été dit, en Pascal, la meilleure solution est une boucle "while".
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager