{"id":2033,"date":"2026-03-23T11:50:54","date_gmt":"2026-03-23T10:50:54","guid":{"rendered":"https:\/\/coding4phone.com\/?p=2033"},"modified":"2026-03-30T20:44:31","modified_gmt":"2026-03-30T19:44:31","slug":"les-boucles-dans-mogwai","status":"publish","type":"post","link":"https:\/\/coding4phone.com\/?p=2033","title":{"rendered":"Les boucles dans MOGWAI"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">MOGWAI propose un ensemble riche de structures de boucles, chacune adapt\u00e9e \u00e0 un besoin pr\u00e9cis. Que l&rsquo;on veuille r\u00e9p\u00e9ter une action un nombre fixe de fois, it\u00e9rer sur une liste, tourner pendant une dur\u00e9e donn\u00e9e ou boucler ind\u00e9finiment, il y a toujours la bonne boucle pour le bon usage.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"la-boucle-repeat\">La boucle <strong>repeat<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><code>repeat<\/code> ex\u00e9cute un bloc de code un nombre fixe de fois. Le compteur d&rsquo;it\u00e9rations n&rsquo;est pas g\u00e9r\u00e9 automatiquement \u2014 c&rsquo;est au d\u00e9veloppeur de le maintenir si besoin.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># Afficher les nombres de 1 \u00e0 10<br><br>0 -&gt; 'I'<br><br>10 repeat<br>{<br>    'I' ++<br>    I ?<br>}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><code>repeat<\/code> accepte <code>break<\/code> pour en sortir pr\u00e9matur\u00e9ment :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">0 -&gt; 'I'<br><br>10 repeat<br>{<br>    'I' ++<br>    I ?<br><br>    if (I 5 ==) then { break }<br>}<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"la-boucle-for\">La boucle <strong>for<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><code>for<\/code> est la boucle \u00e0 compteur automatique. Elle prend une valeur de d\u00e9part, une valeur de fin, et un nom de variable qui contiendra la valeur courante \u00e0 chaque it\u00e9ration.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># Afficher les nombres de 1 \u00e0 10<br><br>1 10 for 'I' do<br>{<br>    I ?<br>}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Le pas par d\u00e9faut est de 1, mais on peut le modifier avec <code>step<\/code> \u2014 y compris avec une valeur n\u00e9gative pour compter \u00e0 rebours :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># Compter de 10 \u00e0 1<br><br>10 1 for 'I' step -1 do<br>{<br>    I ?<br>}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Comme toutes les boucles MOGWAI, <code>for<\/code> accepte <code>break<\/code> :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># Sortir de la boucle quand I atteint 5<br><br>1 10 for 'I' do<br>{<br>    I ?<br><br>    if (I 5 ==) then { break }<br>}<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"la-boucle-while\">La boucle <strong>while<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><code>while<\/code> ex\u00e9cute un bloc de code tant qu&rsquo;une condition est vraie. La condition est \u00e9valu\u00e9e <strong>avant<\/strong> chaque it\u00e9ration \u2014 si elle est fausse d\u00e8s le d\u00e9part, le corps de la boucle ne s&rsquo;ex\u00e9cute jamais.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># Afficher les nombres de 1 \u00e0 99<br><br>0 -&gt; 'I'<br><br>while (I 100 &lt;) do<br>{<br>    'I' ++<br>    I ?<br>}<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"la-boucle-dowhile\">La boucle <strong>do&#8230;while<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><code>do...while<\/code> fonctionne comme <code>while<\/code>, mais la condition est \u00e9valu\u00e9e <strong>apr\u00e8s<\/strong> chaque it\u00e9ration. Le corps de la boucle s&rsquo;ex\u00e9cute donc <strong>au moins une fois<\/strong>, m\u00eame si la condition est fausse d&rsquo;entr\u00e9e.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># Afficher les nombres de 1 \u00e0 99<br><br>0 -&gt; 'I'<br><br>do<br>{<br>    'I' ++<br>    I ?<br>} while (I 100 &lt;)<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"la-boucle-foreachdo\">La boucle <strong>foreach&#8230;do<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><code>foreach...do<\/code> it\u00e8re sur chaque \u00e9l\u00e9ment d&rsquo;une <strong>liste<\/strong>, d&rsquo;un <strong>tableau de bytes<\/strong> ou d&rsquo;une <strong>string<\/strong> (\u00e0 partir de la version 8.4). \u00c0 chaque it\u00e9ration, l&rsquo;\u00e9l\u00e9ment courant est plac\u00e9 dans la variable nomm\u00e9e.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># Afficher chaque \u00e9l\u00e9ment d'une liste<br><br>(\"pomme\" \"poire\" \"cerise\") foreach 'fruit' do<br>{<br>    fruit ?<br>}<br><br># Afficher chaque byte d'un tableau de bytes<br><br>D:01020304 foreach 'b' do<br>{<br>    b ?<br>}<br><br># Afficher chaque caract\u00e8re d'une string (v8.4+)<br><br>\"MOGWAI\" foreach 'c' do<br>{<br>    c ?<br>}<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"la-boucle-foreachtransform\">La boucle <strong>foreach&#8230;transform<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><code>foreach...transform<\/code> permet de <strong>transformer chaque \u00e9l\u00e9ment d&rsquo;une liste<\/strong> et de r\u00e9cup\u00e9rer la liste r\u00e9sultante. Elle ne fonctionne que sur les listes.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># Pr\u00e9fixer chaque \u00e9l\u00e9ment d'une liste avec \"-\"<br><br>(\"L1\" \"L2\" \"L3\") foreach 'item' transform { \"-\" item + }<br># Retourne (\"-L1\" \"-L2\" \"-L3\")<br><br># Multiplier chaque nombre d'une liste par 2<br><br>(1 2 3 4 5) foreach 'item' transform { item 2 * }<br># Retourne (2 4 6 8 10)<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"la-boucle-during\">La boucle <strong>during<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><code>during<\/code> ex\u00e9cute un bloc de code pendant une <strong>dur\u00e9e d\u00e9finie en millisecondes<\/strong>. C&rsquo;est la seule boucle pilot\u00e9e par le temps plut\u00f4t que par un compteur ou une condition.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># Incr\u00e9menter un compteur pendant 10 secondes<br><br>0 -&gt; 'I'<br><br>during 10000 do<br>{<br>    'I' ++<br>    I ?<br>}<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"la-boucle-forever\">La boucle <strong>forever<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><code>forever<\/code> ex\u00e9cute un bloc de code <strong>ind\u00e9finiment<\/strong>. Elle est typiquement utilis\u00e9e pour maintenir un programme en vie (en attendant des timers ou des \u00e9v\u00e9nements) ou pour impl\u00e9menter une boucle principale dont on contr\u00f4le la sortie avec <code>break<\/code>.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># Boucle infinie : afficher un compteur jusqu'\u00e0 456<br><br>0 -&gt; 'I'<br><br>forever do<br>{<br>    'I' ++<br>    I ?<br><br>    if (I 456 ==) then { break }<br>}<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"sortir-dand39une-boucle--break\">Sortir d&rsquo;une boucle : <strong>break<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><code>break<\/code> permet de sortir imm\u00e9diatement de n&rsquo;importe quelle boucle MOGWAI : <code>while<\/code>, <code>do...while<\/code>, <code>for<\/code>, <code>foreach<\/code>, <code>during<\/code>, <code>repeat<\/code> et <code>forever<\/code>. L&rsquo;ex\u00e9cution reprend \u00e0 l&rsquo;instruction qui suit la boucle.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">1 100 for 'I' do<br>{<br>    I ?<br><br>    if (I 10 &gt;) then { break }<br>}<br><br># L'ex\u00e9cution continue ici<br>\"Boucle termin\u00e9e.\" ?<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"quelle-boucle-choisir-\">Quelle boucle choisir ?<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Boucle<\/th><th>Cas d&rsquo;usage id\u00e9al<\/th><\/tr><\/thead><tbody><tr><td><code>repeat<\/code><\/td><td>R\u00e9p\u00e9ter N fois, sans compteur automatique<\/td><\/tr><tr><td><code>for<\/code><\/td><td>It\u00e9rer avec un compteur g\u00e9r\u00e9 automatiquement<\/td><\/tr><tr><td><code>while<\/code><\/td><td>Boucler tant qu&rsquo;une condition est vraie (test en entr\u00e9e)<\/td><\/tr><tr><td><code>do...while<\/code><\/td><td>Boucler tant qu&rsquo;une condition est vraie (test en sortie, au moins une ex\u00e9cution)<\/td><\/tr><tr><td><code>foreach...do<\/code><\/td><td>It\u00e9rer sur une liste, un tableau de bytes ou une string<\/td><\/tr><tr><td><code>foreach...transform<\/code><\/td><td>Transformer chaque \u00e9l\u00e9ment d&rsquo;une liste<\/td><\/tr><tr><td><code>during<\/code><\/td><td>Ex\u00e9cuter du code pendant une dur\u00e9e d\u00e9finie<\/td><\/tr><tr><td><code>forever<\/code><\/td><td>Boucle infinie, sortie contr\u00f4l\u00e9e par <code>break<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"conclusion\">Conclusion<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Les boucles sont l&rsquo;un des fondements de tout langage de programmation, et MOGWAI en propose une palette compl\u00e8te. Du simple <code>repeat<\/code> au <code>foreach...transform<\/code> fonctionnel, en passant par le <code>during<\/code> original pilot\u00e9 par le temps, chaque structure a sa place et son usage naturel. Ma\u00eetriser ces boucles, c&rsquo;est d\u00e9j\u00e0 disposer d&rsquo;une grande partie des outils n\u00e9cessaires pour \u00e9crire des programmes MOGWAI expressifs et efficaces.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\"><em><a href=\"https:\/\/www.mogwai.eu.com\" target=\"_blank\" rel=\"noreferrer noopener\">MOGWAI<\/a> \u2014 open source depuis f\u00e9vrier 2026 \u00b7 <a href=\"https:\/\/github.com\/Sydney680928\/MOGWAI\" target=\"_blank\" rel=\"noreferrer noopener\">GitHub<\/a> \u00b7 coding4phone.com<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>MOGWAI propose un ensemble riche de structures de boucles, chacune adapt\u00e9e \u00e0 un besoin pr\u00e9cis. Que l&rsquo;on veuille r\u00e9p\u00e9ter une action un nombre fixe de fois, it\u00e9rer sur une liste, tourner pendant une dur\u00e9e donn\u00e9e ou boucler ind\u00e9finiment, il y a toujours la bonne boucle pour le bon usage. La boucle repeat repeat ex\u00e9cute un &#8230; <a title=\"Les boucles dans MOGWAI\" class=\"read-more\" href=\"https:\/\/coding4phone.com\/?p=2033\" aria-label=\"En savoir plus sur Les boucles dans MOGWAI\">Lire la suite<\/a><\/p>\n","protected":false},"author":1,"featured_media":2039,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"D\u00e9couvrez les diff\u00e9rentes structures de boucles en MOGWAI : repeat, for, while et plus, pour programmer efficacement et simplement.","jetpack_seo_html_title":"Guide des boucles MOGWAI : ma\u00eetrisez chaque structure","jetpack_seo_noindex":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"_wpas_customize_per_network":false,"jetpack_post_was_ever_published":false},"categories":[8,6,48,50],"tags":[],"class_list":["post-2033","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dotnet","category-mogwai","category-rpn","category-scripting"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/coding4phone.com\/wp-content\/uploads\/2026\/03\/image-5.png?fit=1024%2C768&ssl=1","jetpack_likes_enabled":true,"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/pfoe4s-wN","jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/coding4phone.com\/index.php?rest_route=\/wp\/v2\/posts\/2033","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/coding4phone.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/coding4phone.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/coding4phone.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/coding4phone.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2033"}],"version-history":[{"count":11,"href":"https:\/\/coding4phone.com\/index.php?rest_route=\/wp\/v2\/posts\/2033\/revisions"}],"predecessor-version":[{"id":2102,"href":"https:\/\/coding4phone.com\/index.php?rest_route=\/wp\/v2\/posts\/2033\/revisions\/2102"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/coding4phone.com\/index.php?rest_route=\/wp\/v2\/media\/2039"}],"wp:attachment":[{"href":"https:\/\/coding4phone.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2033"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/coding4phone.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2033"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/coding4phone.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2033"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}