Topics
Sujets
المواضيع

Loops (for / while)

Boucles (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.

بنهاية هذا القسم، يجب أن تكون قادراً على تتبّع الحلقات المعدودة والحلقات المفتوحة، وتجنب أخطاء الواحد الشائعة، وتحويل حلقة بسيطة بين الكود والمخطط الانسيابي.

Prep guideGuideدليل تحضيري L1

Preparation

Préparation

تحضير

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:

  1. set the starting value
  2. check whether another pass should happen
  3. run the body
  4. change the state so the next check makes sense

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 :

  1. fixer la valeur de départ
  2. vérifier si un nouveau passage doit avoir lieu
  3. exécuter le corps
  4. modifier l’état pour que le test suivant ait un sens

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.

تسمح الحلقات للبرنامج بأن ينفّذ النوع نفسه من العمل أكثر من مرة من دون نسخ السطر نفسه مراراً. وفي هذا القسم سنقرأ كل حلقة على أنها سير عمل صغير:

  1. حدّد قيمة البداية
  2. افحص هل يجب أن يحدث مرور جديد
  3. نفّذ جسم الحلقة
  4. غيّر الحالة حتى يصبح الاختبار التالي منطقياً

هذا السير أهم من حفظ الصيغة وحدها. فإذا عرفت من أين تبدأ الحلقة وما الشرط الذي يبقيها تعمل وما الذي يتغيّر في كل مرور فستتمكن غالباً من تتبّعها بشكل صحيح.

ستبدأ بحلقات for المعدودة، ثم تنتقل إلى حلقات while التي يتحكم الشرط في وقت توقفها. وبعد ذلك ستقرأ مخططات الحلقات وتكملها حتى تتعرف إلى المنطق نفسه في الكود وفي التمثيل البصري.

What you will practice
Ce que vous allez pratiquer
ما ستتمرّن عليه
  • Read a loop as repeated work with a clear stopping rule.Lire une boucle comme un travail répété avec une règle d'arrêt claire.قراءة الحلقة على أنها عمل متكرر مع قاعدة توقف واضحة.
  • Trace for and while loops without guessing.Tracer les boucles for et while sans deviner.تتبّع حلقات for وwhile من دون تخمين.
  • Recognize the same loop in code and in a flowchart.Reconnaître la même boucle dans le code et dans un organigramme.تمييز الحلقة نفسها في الكود وفي المخطط الانسيابي.
Keep in mind
À garder en tête
تذكّر
  • A loop needs three ideas: a starting state, a test, and a change that moves toward stopping.Une boucle a besoin de trois idées : un état de départ, un test, et un changement qui rapproche de l'arrêt.تحتاج الحلقة إلى ثلاث أفكار: حالة بداية، واختبار، وتغيير يقرّبك من التوقف.
  • < 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.ليسا < و<= قابلين للتبادل. فدورة إضافية واحدة تُعد خطأ حقيقياً.
ConceptConceptمفهوم L1

Counted for loops

Boucles for comptées

حلقات for المعدودة

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

رمز واحد فقط يغيّر هل ستدخل القيمة الأخيرة أم لا. ولهذا يجب أن تتتبّع القيمة الحدّية بدلاً من التخمين.

1for (int i = 1; i <= 4; i++) {
2 cout << i << " ";
3}
4// Output: 1 2 3 4
YesNoStarti = 1i <= 4 ?Output: ii = i + 1End
OuiNonDebuti = 1i <= 4 ?Sortie : ii = i + 1Fin
نعملاابدأi = 1i <= 4 ?إخراج: ii = i + 1نهاية
Worked exampleExemple guidéمثال محلول L2

Worked: tracing a counted for loop

Exemple guidé : tracer une boucle for comptée

مثال محلول: تتبّع حلقة for معدودة

Trace the header before you read the output.

  • Start: i = 2
  • Test: continue while i <= 8
  • Update: add 2 each time

That 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.

  • Départ : i = 2
  • Test : continuer tant que i <= 8
  • Mise à jour : ajouter 2 à chaque fois

Cela 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 = 2
  • الاختبار: استمر ما دام i <= 8
  • التحديث: أضف 2 في كل مرة

وهذا يعطينا مباشرة تسلسل قيم العداد: 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 المعدودة سهلة عندما تفصل بين البداية والاختبار والتحديث قبل أن تنشغل بجسم الحلقة.

1for (int i = 2; i <= 8; i += 2) {
2 cout << i << " ";
3}
4// Output: 2 4 6 8
PracticePratiqueتمرين L2

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.

تركّز هذه المجموعة الأولى من التمارين على مهارة واحدة واضحة: اقرأ نمط العداد بعناية، ثم توقّع المخرجات أو أجزاء الحلقة الناقصة بدقة.

4 exercises below
4 exercices ci-dessous
4 تمارين أدناه
Practice 1 / 4Pratique 1 / 4تمرين ⁦1 / 4⁩ L1
What does this counted for loop print?
Qu'affiche cette boucle for comptée ?
ماذا تطبع حلقة for المعدودة هذه؟
1for (int i = 2; i <= 8; i += 2)
2 cout << i << " ";
Practice 2 / 4Pratique 2 / 4تمرين ⁦2 / 4⁩ L2
Fill the exact loop header so the code prints 1 2 3 4.
Complétez l'en-tête exact de la boucle pour que le code affiche 1 2 3 4.
أكمل ترويسة الحلقة بدقة حتى يطبع الكود 1 2 3 4.
Each blank expects one exact token or small expression.
Chaque blanc attend un jeton exact ou une petite expression.
كل فراغ يتطلب عنصراً دقيقاً أو تعبيراً صغيراً.
1 for (int i = 1; i 4; )
2 cout << i << " ";
Practice 3 / 4Pratique 3 / 4تمرين ⁦3 / 4⁩ L2
Fill the value printed on each iteration.
Remplissez la valeur affichée à chaque itération.
املأ القيمة المطبوعة في كل دورة.
1for (int i = 1; i <= 3; i++)
2 cout << i << " ";
iterationitérationالدورة iii printedaffichéمطبوع
1 1
2 2
3 3
Practice 4 / 4Pratique 4 / 4تمرين ⁦4 / 4⁩ L3
What sequence does this loop flowchart produce?
Quelle suite produit cet organigramme de boucle ?
ما التسلسل الذي ينتجه مخطط الحلقة هذا؟
YesNoStarti = 2i <= 6 ?Output: ii = i + 2End
OuiNonDebuti = 2i <= 6 ?Sortie : ii = i + 2Fin
نعملاابدأi = 2i <= 6 ?إخراج: ii = i + 2نهاية
ConceptConceptمفهوم L2

while loops and stop conditions

Boucles while et conditions d'arrêt

حلقات while وشروط التوقف

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 ابحث دائماً عن السطر الذي يغيّر الحالة. فإذا لم تتغير الحالة أبداً فقد يبقى الشرط صحيحاً دائماً ولن تتوقف الحلقة.

1int n = 3;
2while (n > 0) {
3 cout << n << " ";
4 n--;
5}
6// Output: 3 2 1
Worked exampleExemple guidéمثال محلول L2

Worked: tracing a while loop

Exemple guidé : tracer une boucle while

مثال محلول: تتبّع حلقة while

This example has two moving parts:

  • n controls when the loop stops
  • sum stores the running total

Trace 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ête
  • sum stocke le total cumulatif

Tracez-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 حدّد أولاً متغير الشرط وتحديث الحالة. فهذا يوضح لك متى ستنتهي الحلقة.

1int sum = 0;
2int n = 1;
3while (n <= 3) {
4 sum += n;
5 n++;
6}
7cout << sum;
8// Output: 6
PracticePratiqueتمرين L2

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.

تركّز هذه التمارين على ثلاث عادات: افحص الشرط قبل كل مرور، وراقب التحديث بعناية، واختبر القيمة الحدّية بدلاً من افتراض أن الحلقة ستعمل.

4 exercises below
4 exercices ci-dessous
4 تمارين أدناه
Practice 1 / 4Pratique 1 / 4تمرين ⁦1 / 4⁩ L2
What does this while loop print?
Qu'affiche cette boucle while ?
ماذا تطبع حلقة while هذه؟
1int n = 6;
2while (n >= 2) {
3 cout << n << " ";
4 n -= 2;
5}
Practice 2 / 4Pratique 2 / 4تمرين ⁦2 / 4⁩ L3
Fill the value of sum after each pass through the loop.
Remplissez la valeur de sum après chaque passage dans la boucle.
املأ قيمة sum بعد كل مرور داخل الحلقة.
1int sum = 0;
2int n = 1;
3while (n <= 3) {
4 sum += n;
5 n++;
6}
iterationitérationالدورة n usedn utiliséeقيمة n المستخدمة sum after bodysum après le corpsقيمة sum بعد الجسم
1 1
2 2
3 3
Practice 3 / 4Pratique 3 / 4تمرين ⁦3 / 4⁩ L3
Complete the missing loop-flowchart labels to match the code.
Complétez les étiquettes manquantes de l'organigramme pour correspondre au code.
أكمل تسميات مخطط الحلقة الناقصة لتطابق الكود.
1int n = 1;
2while (n <= 3) {
3 cout << n << " ";
4 n++;
5}
YesNoStartn = 1[A]Output: n[B]End
OuiNonDebutn = 1[A]Sortie : n[B]Fin
نعملاابدأn = 1[A]إخراج: n[B]نهاية
Practice 4 / 4Pratique 4 / 4تمرين ⁦4 / 4⁩ L2
Does this while loop print anything? Type yes or no.
Cette boucle while affiche-t-elle quelque chose ? Tapez oui ou non.
هل تطبع حلقة while هذه شيئاً؟ اكتب نعم أو لا.
1int i = 5;
2while (i < 5) {
3 cout << i;
4}
Answer with yes or no only.
Répondez seulement par oui ou non.
أجب فقط بـنعم أو لا.
ConceptConceptمفهوم L2

Converting loops between code and flowcharts

Convertir des boucles entre code et organigrammes

تحويل الحلقات بين الكود والمخططات الانسيابية

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:

  1. start value
  2. test
  3. body action
  4. update
  5. return to the test

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 :

  1. valeur de départ
  2. test
  3. action du corps
  4. mise à jour
  5. retour vers le test

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 قبل سهم الرجوع

وفي المخطط التعليمي لا تنسخ ترويسة الحلقة كاملة داخل شكل واحد. بل قسّمها إلى الأجزاء التي يجب على المتعلم قراءتها:

  1. قيمة البداية
  2. الاختبار
  3. عمل الجسم
  4. التحديث
  5. الرجوع إلى الاختبار

ويعمل التحويل في الاتجاه الآخر أيضاً. فإذا أظهر المخطط إخراجاً ثم تحديثاً ثم رجوعاً إلى القرار، فيجب أن يحافظ الكود على هذا الترتيب نفسه داخل جسم الحلقة.

1int i = 1;
2while (i <= 3) {
3 cout << i << " ";
4 i++;
5}
YesNoStarti = 1i <= 3 ?Output: ii = i + 1End
OuiNonDebuti = 1i <= 3 ?Sortie : ii = i + 1Fin
نعملاابدأi = 1i <= 3 ?إخراج: ii = i + 1نهاية
Worked exampleExemple guidéمثال محلول L2

Worked: one loop, two representations

Exemple guidé : une boucle, deux représentations

مثال محلول: حلقة واحدة وتمثيلان

This loop can be read in two equally valid ways.

In code form:

  • total = 0 prepares the accumulator
  • i = 1 starts the counter
  • i <= 3 is the loop test
  • total += i is the body work
  • i++ is the update

In flowchart form, the same ideas appear as:

  • a Process box for total = 0
  • a Process box for i = 1
  • a Decision diamond for i <= 3
  • a Process box for total = total + i
  • a Process box for i = i + 1
  • a return arrow to the decision

Nothing 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’accumulateur
  • i = 1 démarre le compteur
  • i <= 3 est le test de boucle
  • total += i est le travail du corps
  • i++ est la mise à jour

Dans l’organigramme, les mêmes idées apparaissent comme :

  • une boîte de traitement pour total = 0
  • une boîte de traitement pour i = 1
  • un losange de décision pour i <= 3
  • une boîte de traitement pour total = total + i
  • une boîte de traitement pour i = i + 1
  • une flèche de retour vers la décision

Rien d’essentiel n’a changé. Seule la représentation a changé.

يمكن قراءة هذه الحلقة بطريقتين صحيحتين تماماً.

في صورة الكود:

  • يجهّز total = 0 متغير المجمّع
  • تبدأ i = 1 العداد
  • يمثّل i <= 3 شرط الحلقة
  • تمثل total += i عمل الجسم
  • يمثل i++ خطوة التحديث

وفي صورة المخطط تظهر الأفكار نفسها على شكل:

  • صندوق Process للقيمة total = 0
  • صندوق Process للقيمة i = 1
  • معين قرار للشرط i <= 3
  • صندوق Process للتعبير total = total + i
  • صندوق Process للتعبير 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.

الخلاصة: إذا استطعت تحديد البداية والاختبار والجسم والتحديث فستتمكن من الانتقال بين الكود ومخطط الحلقة من دون فقدان المعنى.

1int total = 0;
2for (int i = 1; i <= 3; i++) {
3 total += i;
4}
5cout << total;
6// Output: 6
PracticePratiqueتمرين L3

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. ومع ذلك يبقى لكل إجابة شكل واضح ومتوقع.

5 exercises below
5 exercices ci-dessous
5 تمارين أدناه
Practice 1 / 5Pratique 1 / 5تمرين ⁦1 / 5⁩ L3
Complete the missing flowchart labels to match the for loop.
Complétez les étiquettes manquantes de l'organigramme pour correspondre à la boucle for.
أكمل تسميات المخطط الناقصة لتطابق حلقة for.
1for (int i = 1; i <= 3; i++)
2 cout << i << " ";
YesNoStarti = 1[A]Output: i[B]End
OuiNonDebuti = 1[A]Sortie : i[B]Fin
نعملاابدأi = 1[A]إخراج: i[B]نهاية
Practice 2 / 5Pratique 2 / 5تمرين ⁦2 / 5⁩ L3
Convert this flowchart into exact code tokens.
Convertissez cet organigramme en jetons de code exacts.
حوّل هذا المخطط إلى عناصر كود دقيقة.
YesNoStarti = 1i <= 3 ?Output: ii = i + 1End
OuiNonDebuti = 1i <= 3 ?Sortie : ii = i + 1Fin
نعملاابدأi = 1i <= 3 ?إخراج: ii = i + 1نهاية
Fill each blank with one exact token or variable name.
Remplissez chaque blanc avec un jeton exact ou un nom de variable.
املأ كل فراغ بعنصر دقيق أو باسم متغير.
1 for (int i = ; i 3; )
2 cout << << " ";
Practice 3 / 5Pratique 3 / 5تمرين ⁦3 / 5⁩ L3
What does this accumulator flowchart print at the end?
Qu'affiche cet organigramme avec accumulateur à la fin ?
ماذا يطبع مخطط المجمّع هذا في النهاية؟
YesNoStartsum = 0i = 1i <= 3 ?sum = sum + ii = i + 1Output: sumEnd
OuiNonDebutsum = 0i = 1i <= 3 ?sum = sum + ii = i + 1Sortie : sumFin
نعملاابدأsum = 0i = 1i <= 3 ?sum = sum + ii = i + 1إخراج: sumنهاية
Practice 4 / 5Pratique 4 / 5تمرين ⁦4 / 5⁩ L3
Fill the running total after each iteration.
Remplissez le total cumulatif après chaque itération.
املأ المجموع التراكمي بعد كل دورة.
1int total = 0;
2for (int i = 1; i <= 3; i++) {
3 total += i;
4}
iterationitérationالدورة i usedi utiliséeقيمة i المستخدمة total after bodytotal après le corpsقيمة total بعد الجسم
1 1
2 2
3 3
Practice 5 / 5Pratique 5 / 5تمرين ⁦5 / 5⁩ L2
Extension: what does this do-while loop print?
Extension : qu'affiche cette boucle do-while ?
امتداد: ماذا تطبع حلقة do-while هذه؟
1int i = 5;
2do {
3 cout << i << " ";
4 i++;
5} while (i < 5);
RecapSynthèseملخص L1

Recap

Synthèse

ملخص

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 عندما يجب أن يستمر البرنامج ما دام الشرط صحيحاً. وإذا بدت لك حلقة ما مربكة، فتتبّعها مروراً بعد مرور واسأل دائماً سؤالين: ما القيمة التي تتغير؟ وما القيمة التي تنهي الحلقة؟

Key takeaways
Points clés
النقاط الأساسية
  • A loop needs a start, a test, and an update that moves toward stopping.Une boucle a besoin d'un départ, d'un test, et d'une mise à jour qui mène vers l'arrêt.تحتاج الحلقة إلى بداية، واختبار، وتحديث يقود نحو التوقف.
  • 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 الشرط قبل كل مرور، لذلك قد لا تعمل إطلاقاً.
  • A loop flowchart shows the same logic as code: start value, decision, body, and back edge.Un organigramme de boucle montre la même logique que le code : valeur de départ, décision, corps et flèche de retour.يُظهر مخطط الحلقة المنطق نفسه الموجود في الكود: قيمة بداية، وقرار، وجسم، وسهم عودة.
  • When tracing totals, carry the old value forward before adding the new one.Quand vous tracez des totaux, reportez l'ancienne valeur avant d'ajouter la nouvelle.عند تتبّع المجاميع، انقل القيمة السابقة أولاً ثم أضف القيمة الجديدة.