for loop print?for comptée ?for المعدودة هذه؟for / while)for / while)for / while)for / while)for / while)for / while)By the end of this section, you should be able to trace counted and open-ended loops, avoid common off-by-one mistakes, and translate a simple loop between code and a flowchart.
À la fin de cette section, vous devriez pouvoir tracer des boucles comptées et ouvertes, éviter les erreurs classiques de décalage d'une unité, et traduire une boucle simple entre le code et un organigramme.
بنهاية هذا القسم، يجب أن تكون قادراً على تتبّع الحلقات المعدودة والحلقات المفتوحة، وتجنب أخطاء الواحد الشائعة، وتحويل حلقة بسيطة بين الكود والمخطط الانسيابي.
Loops let a program do the same kind of work repeatedly without copying the same line many times. In this section, treat every loop as a small workflow:
That workflow matters more than memorizing syntax. If you can answer where the loop starts, what condition keeps it going, and what changes each pass, you can usually trace the loop correctly.
You will begin with counted for loops, then move to while loops where the stop point is controlled by a condition. After that, you will read and complete loop flowcharts so you can recognize the same logic in both code and visual form.
Les boucles permettent à un programme de faire le même type de travail plusieurs fois sans recopier la même ligne encore et encore. Dans cette section, lisez chaque boucle comme un petit déroulement :
Ce déroulement est plus important que la simple mémoire de la syntaxe. Si vous savez répondre à où la boucle commence, quelle condition la maintient, et quelle valeur change à chaque passage, vous pouvez généralement la tracer correctement.
Vous commencerez par les boucles for comptées, puis vous passerez aux boucles while, où l’arrêt dépend d’une condition. Ensuite, vous lirez et compléterez des organigrammes de boucle pour reconnaître la même logique dans le code et dans une représentation visuelle.
تسمح الحلقات للبرنامج بأن ينفّذ النوع نفسه من العمل أكثر من مرة من دون نسخ السطر نفسه مراراً. وفي هذا القسم سنقرأ كل حلقة على أنها سير عمل صغير:
هذا السير أهم من حفظ الصيغة وحدها. فإذا عرفت من أين تبدأ الحلقة وما الشرط الذي يبقيها تعمل وما الذي يتغيّر في كل مرور فستتمكن غالباً من تتبّعها بشكل صحيح.
ستبدأ بحلقات for المعدودة، ثم تنتقل إلى حلقات while التي يتحكم الشرط في وقت توقفها. وبعد ذلك ستقرأ مخططات الحلقات وتكملها حتى تتعرف إلى المنطق نفسه في الكود وفي التمثيل البصري.
for and while loops without guessing.Tracer les boucles for et while sans deviner.تتبّع حلقات for وwhile من دون تخمين.< and <= are not interchangeable. One extra iteration is a real bug.< et <= ne sont pas interchangeables. Une itération de trop est un vrai bug.ليسا < و<= قابلين للتبادل. فدورة إضافية واحدة تُعد خطأ حقيقياً.for loopsfor comptéesfor المعدودةUse a counted for loop when the start, test, and update already form a clear pattern.
| Part of the header | Question it answers | Example |
|---|---|---|
int i = 1 |
Where does the counter start? | Start at 1 |
i <= 4 |
When does the loop continue? | Keep going while i is at most 4 |
i++ |
How does the counter change? | Add 1 after each pass |
Read this header in natural language:
for (int i = 1; i <= 4; i++)
as:
“Start i at 1. While i <= 4, run the body. After the body, increase i by 1.”
The most common beginner bug is an off-by-one mistake. Compare these two tests:
| Test | Values printed if i starts at 1 and uses i++ |
|---|---|
i < 4 |
1 2 3 |
i <= 4 |
1 2 3 4 |
One symbol changes whether the last value is included. That is why you should trace the boundary value instead of guessing.
Utilisez une boucle for comptée quand le départ, le test et la mise à jour suivent déjà un schéma clair.
| Partie de l’en-tête | Question à laquelle elle répond | Exemple |
|---|---|---|
int i = 1 |
Où le compteur commence-t-il ? | Commencer à 1 |
i <= 4 |
Quand la boucle continue-t-elle ? | Continuer tant que i vaut au plus 4 |
i++ |
Comment le compteur change-t-il ? | Ajouter 1 après chaque passage |
Lisez cet en-tête :
for (int i = 1; i <= 4; i++)
comme :
« Commencez i à 1. Tant que i <= 4, exécutez le corps. Après le corps, augmentez i de 1. »
L’erreur de débutant la plus fréquente est l’erreur d’une unité. Comparez ces deux tests :
| Test | Valeurs affichées si i commence à 1 et utilise i++ |
|---|---|
i < 4 |
1 2 3 |
i <= 4 |
1 2 3 4 |
Un seul symbole change l’inclusion ou non de la dernière valeur. C’est pour cela qu’il faut tracer la valeur limite au lieu de deviner.
استخدم حلقة for المعدودة عندما يكون البداية والاختبار والتحديث جزءاً من نمط واضح.
| جزء الترويسة | ما السؤال الذي يجيب عنه؟ | مثال |
|---|---|---|
int i = 1 |
من أين يبدأ العداد؟ | ابدأ من 1 |
i <= 4 |
متى تستمر الحلقة؟ | استمر ما دامت i أصغر من أو تساوي 4 |
i++ |
كيف يتغير العداد؟ | أضف 1 بعد كل مرور |
اقرأ هذه الترويسة:
for (int i = 1; i <= 4; i++)
بهذا المعنى:
« ابدأ i من 1. وما دام الشرط i <= 4 صحيحاً فنفّذ الجسم. وبعد الجسم زد i بمقدار 1. »
أكثر خطأ شائع عند المبتدئين هو خطأ الواحد. قارن بين هذين الشرطين:
| الشرط | القيم المطبوعة إذا بدأت i من 1 واستخدمت i++ |
|---|---|
i < 4 |
1 2 3 |
i <= 4 |
1 2 3 4 |
رمز واحد فقط يغيّر هل ستدخل القيمة الأخيرة أم لا. ولهذا يجب أن تتتبّع القيمة الحدّية بدلاً من التخمين.
for loopfor comptéefor معدودةTrace the header before you read the output.
i = 2i <= 82 each timeThat already tells you the sequence of counter values: 2, 4, 6, 8.
Now match each value to one pass through the body:
| Pass | Value of i |
Printed text |
|---|---|---|
| 1 | 2 |
2 |
| 2 | 4 |
4 |
| 3 | 6 |
6 |
| 4 | 8 |
8 |
After pass 4, the update changes i to 10. The next test 10 <= 8 is false, so the loop ends.
Tracez d’abord l’en-tête, puis seulement la sortie.
i = 2i <= 82 à chaque foisCela donne déjà la suite des valeurs du compteur : 2, 4, 6, 8.
Faites ensuite correspondre chaque valeur à un passage dans le corps :
| Passage | Valeur de i |
Texte affiché |
|---|---|---|
| 1 | 2 |
2 |
| 2 | 4 |
4 |
| 3 | 6 |
6 |
| 4 | 8 |
8 |
Après le passage 4, la mise à jour transforme i en 10. Le test suivant 10 <= 8 est faux, donc la boucle s’arrête.
تتبّع الترويسة أولاً ثم اقرأ المخرجات.
i = 2i <= 82 في كل مرةوهذا يعطينا مباشرة تسلسل قيم العداد: 2 ثم 4 ثم 6 ثم 8.
بعد ذلك طابق كل قيمة مع مرور واحد داخل الجسم:
| المرور | قيمة i |
النص المطبوع |
|---|---|---|
| 1 | 2 |
2 |
| 2 | 4 |
4 |
| 3 | 6 |
6 |
| 4 | 8 |
8 |
بعد المرور الرابع يجعل التحديث قيمة i تساوي 10. وعندها يصبح الاختبار التالي 10 <= 8 خاطئاً، فتتوقف الحلقة.
Takeaway: a counted for loop becomes easy when you separate the header into start, test, and update before worrying about the body.
À retenir : une boucle for comptée devient simple quand vous séparez l’en-tête en départ, test et mise à jour avant de vous soucier du corps.
الخلاصة: تصبح حلقة for المعدودة سهلة عندما تفصل بين البداية والاختبار والتحديث قبل أن تنشغل بجسم الحلقة.
This first practice set stays inside one narrow skill: read the counter pattern carefully, then predict the output or the missing loop pieces exactly.
Cette première série de pratique reste dans une compétence précise : lire attentivement le schéma du compteur, puis prédire exactement la sortie ou les éléments manquants de la boucle.
تركّز هذه المجموعة الأولى من التمارين على مهارة واحدة واضحة: اقرأ نمط العداد بعناية، ثم توقّع المخرجات أو أجزاء الحلقة الناقصة بدقة.
for loop print?for comptée ?for المعدودة هذه؟1 2 3 4.1 2 3 4.1 2 3 4.| iterationitérationالدورة | iii | printedaffichéمطبوع |
|---|---|---|
| 1 | 1 | |
| 2 | 2 | |
| 3 | 3 |
while loops and stop conditionswhile et conditions d'arrêtwhile وشروط التوقفA while loop is best when the program should continue as long as a condition stays true.
Unlike a counted for loop, the stopping moment is not packaged into one header pattern. You must watch the condition and the update together.
Read this loop:
while (n > 0)
as:
“Before each pass, ask whether n > 0 is true.”
That wording matters because while may run zero times.
| Situation before the first test | Does the body run? |
|---|---|
n = 3 and the test is n > 0 |
Yes |
n = 0 and the test is n > 0 |
No |
When tracing while, always find the line that changes the state. If the state never changes, the test may stay true forever and the loop will not stop.
Une boucle while convient le mieux quand le programme doit continuer tant qu’une condition reste vraie.
Contrairement à une boucle for comptée, le moment d’arrêt n’est pas regroupé dans un schéma unique d’en-tête. Il faut observer ensemble la condition et la mise à jour.
Lisez cette boucle :
while (n > 0)
comme :
« Avant chaque passage, demandez-vous si n > 0 est vrai. »
Cette formulation est importante, car while peut s’exécuter zéro fois.
| Situation avant le premier test | Le corps s’exécute-t-il ? |
|---|---|
n = 3 et le test est n > 0 |
Oui |
n = 0 et le test est n > 0 |
Non |
Quand vous tracez while, trouvez toujours la ligne qui change l’état. Si l’état ne change jamais, le test peut rester vrai pour toujours et la boucle ne s’arrête pas.
تكون حلقة while مناسبة عندما يجب أن يستمر البرنامج ما دام الشرط صحيحاً.
وخلافاً لحلقة for المعدودة، لا يكون وقت التوقف مجمعاً داخل نمط واحد في الترويسة. بل يجب أن تراقب الشرط والتحديث معاً.
اقرأ هذه الحلقة:
while (n > 0)
بهذا المعنى:
« قبل كل مرور، اسأل هل العبارة n > 0 صحيحة؟ »
وهذه الصياغة مهمة لأن حلقة while قد تعمل صفراً من المرات.
| الحالة قبل أول اختبار | هل يُنفّذ الجسم؟ |
|---|---|
n = 3 والشرط هو n > 0 |
نعم |
n = 0 والشرط هو n > 0 |
لا |
وعند تتبّع while ابحث دائماً عن السطر الذي يغيّر الحالة. فإذا لم تتغير الحالة أبداً فقد يبقى الشرط صحيحاً دائماً ولن تتوقف الحلقة.
while loopwhilewhileThis example has two moving parts:
n controls when the loop stopssum stores the running totalTrace them in order:
| Pass | n at start of pass |
New value of sum |
|---|---|---|
| 1 | 1 |
1 |
| 2 | 2 |
3 |
| 3 | 3 |
6 |
After each addition, the line n++ moves the loop toward stopping. When n becomes 4, the test n <= 3 is false, so the loop ends and cout prints the final total.
Cet exemple a deux éléments qui bougent :
n contrôle quand la boucle s’arrêtesum stocke le total cumulatifTracez-les dans l’ordre :
| Passage | n au début du passage |
Nouvelle valeur de sum |
|---|---|---|
| 1 | 1 |
1 |
| 2 | 2 |
3 |
| 3 | 3 |
6 |
Après chaque addition, la ligne n++ rapproche la boucle de son arrêt. Quand n devient 4, le test n <= 3 est faux, donc la boucle s’arrête et cout affiche le total final.
في هذا المثال يوجد شيئان يتحركان:
n يتحكم في وقت توقف الحلقةsum يخزّن المجموع التراكميتتبّعهما بالترتيب:
| المرور | قيمة n في بداية المرور |
القيمة الجديدة لـsum |
|---|---|---|
| 1 | 1 |
1 |
| 2 | 2 |
3 |
| 3 | 3 |
6 |
بعد كل جمع يجعل السطر n++ الحلقة أقرب إلى التوقف. وعندما تصبح n مساوية لـ4 يصبح الشرط n <= 3 خاطئاً، فتتوقف الحلقة ويطبع cout المجموع النهائي.
Takeaway: in a while loop, identify the condition variable and the state update first. That tells you when the loop will end.
À retenir : dans une boucle while, identifiez d’abord la variable de condition et la mise à jour de l’état. Cela vous dit quand la boucle se terminera.
الخلاصة: في حلقة while حدّد أولاً متغير الشرط وتحديث الحالة. فهذا يوضح لك متى ستنتهي الحلقة.
These tasks focus on three habits: check the condition before each pass, watch the update carefully, and test the boundary value instead of assuming the loop will run.
Ces exercices travaillent trois habitudes : vérifier la condition avant chaque passage, observer la mise à jour avec soin, et tester la valeur limite au lieu de supposer que la boucle s’exécutera.
تركّز هذه التمارين على ثلاث عادات: افحص الشرط قبل كل مرور، وراقب التحديث بعناية، واختبر القيمة الحدّية بدلاً من افتراض أن الحلقة ستعمل.
while loop print?while ?while هذه؟sum after each pass through the loop.sum après chaque passage dans la boucle.sum بعد كل مرور داخل الحلقة.| iterationitérationالدورة | n usedn utiliséeقيمة n المستخدمة | sum after bodysum après le corpsقيمة sum بعد الجسم |
|---|---|---|
| 1 | 1 | |
| 2 | 2 | |
| 3 | 3 |
while loop print anything? Type yes or no.while affiche-t-elle quelque chose ? Tapez oui ou non.while هذه شيئاً؟ اكتب نعم أو لا.yes or no only.oui ou non.نعم أو لا.When you convert a loop between code and a flowchart, keep the logic and the order, not the punctuation.
Use this mapping:
| Code idea | Flowchart form |
|---|---|
starting value such as i = 1 |
Process box before the loop test |
loop test such as i <= 3 |
Decision diamond |
| work inside the body | Output or Process box on the Yes path |
update such as i++ |
Process box before the arrow returns |
For a teaching flowchart, do not copy the whole loop header into one shape. Split it into the parts the learner must read:
Going the other way works too. If a flowchart shows output, then update, then a return to the decision, your code must keep that same order inside the loop body.
Quand vous convertissez une boucle entre le code et un organigramme, gardez la logique et l’ordre, pas la ponctuation.
Utilisez cette correspondance :
| Idée dans le code | Forme dans l’organigramme |
|---|---|
valeur de départ comme i = 1 |
Boîte de traitement avant le test |
test de boucle comme i <= 3 |
Losange de décision |
| travail à l’intérieur du corps | Boîte de sortie ou de traitement sur le chemin Oui |
mise à jour comme i++ |
Boîte de traitement avant la flèche de retour |
Dans un organigramme pédagogique, ne recopiez pas tout l’en-tête de boucle dans une seule forme. Séparez-le en éléments que l’élève doit lire :
L’inverse fonctionne aussi. Si l’organigramme montre une sortie, puis une mise à jour, puis un retour vers la décision, votre code doit garder ce même ordre à l’intérieur du corps de boucle.
عندما تحوّل الحلقة بين الكود والمخطط الانسيابي، حافظ على المنطق والترتيب لا على علامات الترقيم.
استخدم هذا الربط:
| الفكرة في الكود | شكلها في المخطط |
|---|---|
قيمة البداية مثل i = 1 |
صندوق Process قبل اختبار الحلقة |
شرط الحلقة مثل i <= 3 |
معين قرار |
| العمل الموجود داخل الجسم | صندوق Output أو Process على مسار نعم |
التحديث مثل i++ |
صندوق Process قبل سهم الرجوع |
وفي المخطط التعليمي لا تنسخ ترويسة الحلقة كاملة داخل شكل واحد. بل قسّمها إلى الأجزاء التي يجب على المتعلم قراءتها:
ويعمل التحويل في الاتجاه الآخر أيضاً. فإذا أظهر المخطط إخراجاً ثم تحديثاً ثم رجوعاً إلى القرار، فيجب أن يحافظ الكود على هذا الترتيب نفسه داخل جسم الحلقة.
This loop can be read in two equally valid ways.
In code form:
total = 0 prepares the accumulatori = 1 starts the counteri <= 3 is the loop testtotal += i is the body worki++ is the updateIn flowchart form, the same ideas appear as:
total = 0i = 1i <= 3total = total + ii = i + 1Nothing essential changed. Only the representation changed.
Cette boucle peut être lue de deux façons également valables.
Dans le code :
total = 0 prépare l’accumulateuri = 1 démarre le compteuri <= 3 est le test de boucletotal += i est le travail du corpsi++ est la mise à jourDans l’organigramme, les mêmes idées apparaissent comme :
total = 0i = 1i <= 3total = total + ii = i + 1Rien d’essentiel n’a changé. Seule la représentation a changé.
يمكن قراءة هذه الحلقة بطريقتين صحيحتين تماماً.
في صورة الكود:
total = 0 متغير المجمّعi = 1 العدادi <= 3 شرط الحلقةtotal += i عمل الجسمi++ خطوة التحديثوفي صورة المخطط تظهر الأفكار نفسها على شكل:
Process للقيمة total = 0Process للقيمة i = 1i <= 3Process للتعبير total = total + iProcess للتعبير i = i + 1لم يتغير شيء أساسي. الذي تغيّر هو طريقة التمثيل فقط.
Takeaway: if you can point to start, test, body, and update, you can move between code and a loop flowchart without losing meaning.
À retenir : si vous savez repérer départ, test, corps et mise à jour, vous pouvez passer du code à l’organigramme de boucle sans perdre le sens.
الخلاصة: إذا استطعت تحديد البداية والاختبار والجسم والتحديث فستتمكن من الانتقال بين الكود ومخطط الحلقة من دون فقدان المعنى.
This final set mixes both directions on purpose: code to flowchart, flowchart to code, exact reading, and one small do-while contrast. Every answer still has one clear expected shape.
Cette dernière série mélange volontairement les deux directions : code vers organigramme, organigramme vers code, lecture exacte, et un petit contraste avec do-while. Chaque réponse garde tout de même une forme attendue claire.
تمزج هذه المجموعة الأخيرة الاتجاهين عمداً: من الكود إلى المخطط، ومن المخطط إلى الكود، مع قراءة دقيقة ومقارنة صغيرة مع do-while. ومع ذلك يبقى لكل إجابة شكل واضح ومتوقع.
for loop.for.for.| iterationitérationالدورة | i usedi utiliséeقيمة i المستخدمة | total after bodytotal après le corpsقيمة total بعد الجسم |
|---|---|---|
| 1 | 1 | |
| 2 | 2 | |
| 3 | 3 |
do-while loop print?do-while ?do-while هذه؟Loops become manageable when you stop seeing them as “magic repetition” and start seeing them as state + test + update. Use for when the counting pattern is already clear. Use while when the program should continue while a condition remains true. When a loop feels confusing, trace one pass at a time and keep asking two questions: what value changes? and what value ends the loop?
Les boucles deviennent gérables quand vous cessez de les voir comme une « répétition magique » et que vous les lisez comme état + test + mise à jour. Utilisez for quand le schéma de comptage est déjà clair. Utilisez while quand le programme doit continuer tant qu’une condition reste vraie. Si une boucle vous semble confuse, tracez-la passage par passage et posez-vous toujours deux questions : quelle valeur change ? et quelle valeur fait s’arrêter la boucle ?
تصبح الحلقات مفهومة عندما تتوقف عن رؤيتها على أنها «تكرار سحري» وتبدأ بقراءتها على أنها حالة + اختبار + تحديث. استخدم for عندما يكون نمط العد واضحاً مسبقاً. واستخدم while عندما يجب أن يستمر البرنامج ما دام الشرط صحيحاً. وإذا بدت لك حلقة ما مربكة، فتتبّعها مروراً بعد مرور واسأل دائماً سؤالين: ما القيمة التي تتغير؟ وما القيمة التي تنهي الحلقة؟
for is best when the counting pattern is known in advance.for convient le mieux quand le motif de comptage est connu à l'avance.تكون for أفضل عندما يكون نمط العد معروفاً مسبقاً.while checks before each pass, so it may run zero times.while vérifie avant chaque passage, donc elle peut s'exécuter zéro fois.تفحص while الشرط قبل كل مرور، لذلك قد لا تعمل إطلاقاً.