If / else conditions
Conditions if / else
شروط if مع else
By the end of this section you will write if / else conditions, trace multi-way chains, read and complete decision flowcharts, and combine conditions with && and ||.
À la fin de cette section, vous saurez écrire des conditions if / else, tracer des chaînes à plusieurs branches, lire et compléter des organigrammes de décision, et combiner des conditions avec && et ||.
بنهاية هذا القسم، ستتمكن من كتابة شروط if مع else، وتتبع سلاسل متعددة الفروع، وقراءة وإكمال مخططات القرار، ودمج الشروط بـ && و||.
Preparation
Préparation
تحضير
So far, your programs have executed every line from top to bottom in order. In this section you add decision-making: the program can choose which lines to run based on whether a condition is true or false. You will learn simple if / else, multi-way chains (if / else if / else), and how to combine conditions with logical operators. When you draw flowcharts, remember that a decision is shown as a diamond with Yes and No branches leading to different paths.
Jusqu’ici, vos programmes exécutaient chaque ligne dans l’ordre, du haut vers le bas. Dans cette section, vous ajoutez la prise de décision : le programme peut choisir quelles lignes exécuter selon qu’une condition est vraie ou fausse. Vous verrez les formes simples if / else, les enchaînements à plusieurs branches (if / else if / else), et la combinaison de conditions avec les opérateurs logiques. Dans un organigramme, une décision se représente par un losange avec deux chemins Oui et Non.
حتى الآن كانت برامجك تنفّذ كل سطر بالترتيب من الأعلى إلى الأسفل. في هذا القسم تضيف اتخاذ القرار: يمكن للبرنامج أن يختار أي الأسطر يُنفَّذ اعتمادًا على كون شرط ما صحيحًا أم خاطئًا. ستتعلّم شكل if / else البسيط، والسلاسل متعددة الفروع (if / else if / else)، ودمج الشروط باستخدام العوامل المنطقية && و ||. في مخطط التدفق، تُعرَض القرارات على شكل معيّن (ماسة) مع مسارَي نعم و لا.
- Write an if / else block that runs different code depending on a condition.Écrire un bloc if / else qui exécute un code différent selon une condition.كتابة كتلة
ifمعelseتنفّذ كودًا مختلفًا حسب الشرط. - Distinguish == (comparison) from = (assignment).Distinguer == (comparaison) de = (affectation).التمييز بين
==(مقارنة) و=(تعيين). - Trace if / else if / else chains — only the first true branch runs.Tracer les chaînes if / else if / else — seule la première branche vraie s'exécute.تتبع سلاسل
ifثمelse ifثمelse— أول فرع صحيح فقط يُنفَّذ. - Combine conditions with && (AND) and || (OR).Combiner les conditions avec && (ET) et || (OU).دمج الشروط بـ
&&(و) و||(أو).
- Code outside an if block always runs — watch your braces!Le code hors du bloc if s'exécute toujours — attention aux accolades !الكود خارج كتلة
ifيعمل دائماً — انتبه للأقواس! - Use == to compare. A single = assigns a value.Utilisez == pour comparer. Un seul = affecte une valeur.استخدم
==للمقارنة. علامة=واحدة تعيّن قيمة.
Basic if / else
if / else de base
أساسيات if مع else
An if statement tests a condition inside parentheses. If the condition is true, the block (or the single statement that follows) runs; if it is false, that part is skipped. An optional else runs only when the if condition is false. Curly braces {} define the block controlled by if or else. Without braces, only the very next statement is controlled—so indentation alone does not create a block.
Use comparison operators to build conditions that compare values:
| Operator | Meaning |
|---|---|
== |
equal to |
!= |
not equal to |
< |
less than |
> |
greater than |
<= |
less than or equal to |
>= |
greater than or equal to |
Do not confuse compare with assign:
| Symbol | Role | Example |
|---|---|---|
== |
Compares two values | if (x == 5) |
= |
Assigns a value | x = 5; |
Using = inside a condition when you meant == is a common beginner mistake, because assignment is an expression with a value in C++.
Une instruction if évalue une condition entre parenthèses. Si la condition est vraie, le bloc (ou l’unique instruction qui suit) s’exécute ; si elle est fausse, cette partie est ignorée. Un else optionnel ne s’exécute que lorsque la condition du if est fausse. Les accolades {} délimitent le bloc rattaché au if ou au else. Sans accolades, seule la toute prochaine instruction est contrôlée — l’indentation seule ne crée pas de bloc.
On construit les conditions avec des opérateurs de comparaison :
| Opérateur | Signification |
|---|---|
== |
égal à |
!= |
différent de |
< |
strictement inférieur à |
> |
strictement supérieur à |
<= |
inférieur ou égal à |
>= |
supérieur ou égal à |
Ne confondez pas comparer et affecter :
| Symbole | Rôle | Exemple |
|---|---|---|
== |
Compare deux valeurs | if (x == 5) |
= |
Affecte une valeur | x = 5; |
Mettre un = dans une condition alors qu’on voulait == est une erreur fréquente : en C++, l’affectation est une expression qui a une valeur.
تختبر عبارة if شرطًا داخل أقواس. إذا كان الشرط صحيحًا يُنفَّذ القطعة المحاطة بأقواس معقوفة أو التعليمة التالية مباشرة؛ وإذا كان خاطئًا تُتخطّى تلك الأجزاء. else اختياري ويُنفَّذ فقط عندما يكون شرط if خاطئًا. الأقواس المعقوفة {} تحدد الكتلة التي يتحكم بها if أو else. بدون أقواس معقوفة، تُتحكَّم التعليمة التالية فقط — والمسافات البادئة وحدها لا تكوّن كتلة.
تُبنى الشروط باستخدام عوامل المقارنة:
| العامل | المعنى |
|---|---|
== |
يساوي |
!= |
لا يساوي |
< |
أصغر من |
> |
أكبر من |
<= |
أصغر من أو يساوي |
>= |
أكبر من أو يساوي |
لا تخلط بين المقارنة والإسناد:
| الرمز | الدور | مثال |
|---|---|---|
== |
يقارن قيمتين | if (x == 5) |
= |
يسند قيمة | x = 5; |
استخدام = داخل شرط بينما القصد == خطأ شائع عند المبتدئين، لأن الإسناد في لغة C++ تعبير له قيمة.
Common trap: forgetting braces. Without {}, only the very next statement is inside the if. Everything after that runs regardless of the condition.
Piège fréquent : oublier les accolades. Sans {}, seule la toute prochaine instruction dépend du if. Tout ce qui suit s’exécute quelle que soit la condition.
فخ شائع: نسيان الأقواس المعقوفة {}. بدونها، تكون التعليمة التالية مباشرة فقط داخل if، وكل ما بعدها يُنفَّذ بغضّ النظر عن الشرط.
Worked: even or odd?
Exemple : pair ou impair ?
مثال: زوجي أم فردي؟
We want to check whether an integer is even or odd. The rule: if n % 2 equals 0, the number is even; otherwise it is odd. The remainder after dividing by 2 tells you which case you are in.
Walk through this example step by step:
- Suppose
nis7. - Compute
7 % 2. The remainder is1. - Is
1 == 0? No — so theifcondition is false. - The
elsebranch runs and the program prints"Odd".
If n had been 8, then 8 % 2 would be 0, the condition would be true, and the if branch would run instead (for example printing "Even").
On veut savoir si un entier est pair ou impair. La règle : si n % 2 vaut 0, le nombre est pair ; sinon il est impair. Le reste de la division entière par 2 indique dans quel cas vous vous trouvez.
Suivez cet exemple pas à pas :
- Supposons que
nvaut7. - Calculez
7 % 2. Le reste est1. - Est-ce que
1 == 0? Non — la condition duifest donc fausse. - La branche
elses’exécute et le programme affiche"Odd".
Si n avait été 8, alors 8 % 2 serait 0, la condition serait vraie, et ce serait la branche du if qui s’exécuterait (par exemple en affichant "Even").
نريد أن نتحقق مما إذا كان عدد صحيح زوجيًا أم فرديًا. القاعدة: إذا كان n % 2 يساوي 0 فالعدد زوجي؛ وإلا فهو فردي. الباقي بعد القسمة على 2 يحدد الحالة.
اتبع هذا المثال خطوة بخطوة:
- ليكن
nيساوي7. - احسب
7 % 2→ الباقي1. - هل
1 == 0؟ لا → شرطifخاطئ. - تُنفَّذ فرع
elseويُطبَع"Odd".
لو كان n يساوي 8، لكان 8 % 2 يساوي 0، لأصبح الشرط صحيحًا، ولتنفَّذ فرع if (مثلًا بطباعة "Even").
The % operator gives the remainder of integer division. In C++, n % 2 == 0 is the usual way to test whether n is even.
L’opérateur % donne le reste de la division entière. En C++, n % 2 == 0 est la façon habituelle de tester si n est pair.
العامل % يعطي باقي القسمة الصحيحة. في لغة C++، التعبير n % 2 == 0 هو الطريقة المعتادة للتحقق من أن n زوجي.
Practice: basic if / else
Pratique : if / else de base
تمرين: أساسيات if / else
"adult".if / else if / else chains
Chaînes if / else if / else
سلاسل if ثم else if ثم else
When you need more than two branches, use else if to add extra conditions between if and else. Each else if has its own condition in parentheses, followed by a block (or a single statement).
How the chain is evaluated
The chain is read from top to bottom. The first condition that is true wins: its block runs, and the rest of the chain is skipped — including any else if below it and the final else.
An else at the end catches everything that did not match any earlier condition. It is optional, but it is often a good safety net so you always handle the “none of the above” case explicitly.
Example: why order matters
Consider this pattern (simplified):
int x = 15;
if (x > 20) {
// branch A
} else if (x > 10) {
// branch B
} else {
// branch C
}
Step-by-step for x = 15:
| Condition | Value | Result |
|---|---|---|
x > 20 |
15 > 20 |
false → skip |
x > 10 |
15 > 10 |
true → run this block |
else |
— | skipped (a match was already found) |
Order matters. If you wrote x > 10 before x > 20, a value like 25 would satisfy x > 10 first, so the program would take that branch and never evaluate x > 20. Always place narrower or more specific checks where they belong in the chain — usually after broader checks when you are splitting ranges from high to low (or the opposite, depending on your design), so the first true condition is the one you actually intend.
Lorsqu’il vous faut plus de deux branches, utilisez else if pour ajouter des conditions supplémentaires entre if et else. Chaque else if a sa propre condition entre parenthèses, suivie d’un bloc (ou d’une seule instruction).
Comment la chaîne est évaluée
On lit la chaîne de haut en bas. La première condition vraie « gagne » : son bloc s’exécute, et le reste de la chaîne est ignoré — y compris les else if situés en dessous et le else final.
Un else à la fin regroupe tout ce qui n’a correspondu à aucune condition précédente. Il est facultatif, mais il sert souvent de filet de sécurité pour traiter explicitement le cas « aucun des cas précédents ».
Exemple : pourquoi l’ordre compte
Considérez ce schéma (simplifié) :
int x = 15;
if (x > 20) {
// branche A
} else if (x > 10) {
// branche B
} else {
// branche C
}
Évaluation pas à pas pour x = 15 :
| Condition | Valeur | Résultat |
|---|---|---|
x > 20 |
15 > 20 |
faux → on saute |
x > 10 |
15 > 10 |
vrai → on exécute ce bloc |
else |
— | ignoré (une condition vraie a déjà été trouvée) |
L’ordre compte. Si vous mettiez x > 10 avant x > 20, une valeur comme 25 satisferait x > 10 en premier, le programme prendrait cette branche et n’évaluerait jamais x > 20. Placez les vérifications plus spécifiques (ou les seuils pertinents) à la bonne position dans la chaîne pour que la première condition vraie corresponde bien à l’intention du programme.
عندما تحتاج إلى أكثر من فرعين، استخدم else if لإضافة شروط إضافية بين if وelse. لكل else if شرطٌ خاصٌ بين أقواس، يتبعه كتلة (أو تعليمة واحدة).
كيف تُقيَّم السلسلة
تُقرأ السلسلة من الأعلى إلى الأسفل. أول شرط يكون صحيحًا هو الذي يُنفَّذ: تُنفَّذ كتلته، ويتم تجاهل بقية السلسلة — بما فيها أي else if تحته وelse النهائي.
else في النهاية يلتقط كل ما لم يطابق أي شرط سابق. هو اختياري، لكنه غالبًا شبكة أمان لمعالجة حالة « لا شيء مما سبق » صراحةً.
مثال: لماذا الترتيب مهم
انظر إلى هذا النمط (مبسّط):
int x = 15;
if (x > 20) {
// الفرع أ
} else if (x > 10) {
// الفرع ب
} else {
// الفرع ج
}
خطوة بخطوة عندما x = 15:
| الشرط | القيمة | النتيجة |
|---|---|---|
x > 20 |
15 > 20 |
خطأ → تخطّي |
x > 10 |
15 > 10 |
صحيح → تنفيذ هذه الكتلة |
else |
— | يُتخطّى (لأن مطابقةً وُجدت مسبقًا) |
الترتيب مهم. لو وضعت فحص x > 10 قبل x > 20، فقيمة مثل 25 ستطابق x > 10 أولًا، فيأخذ البرنامج ذلك الفرع ولن يصل أبدًا إلى فحص x > 20. رتّب الشروط بحيث تكون الأكثر تحديدًا (أو الأعلى حسب التصميم) في الموضع الصحيح في السلسلة، حتى تكون أول شرط صحيح هو ما تقصده فعلًا.
Order matters in chains: always check the most specific (or highest) condition first when that matches your intent. If you put the broadest condition first, later conditions may never run — the chain stops at the first true test.
L’ordre compte dans une chaîne : vérifiez d’abord la condition la plus spécifique (ou le seuil le plus élevé) lorsque c’est ce que le problème exige. Si la condition la plus large est en premier, les conditions suivantes peuvent ne jamais s’exécuter — la chaîne s’arrête au premier test vrai.
الترتيب مهم في السلاسل: تحقّق أولًا من الشرط الأكثر تحديدًا (أو الأعلى) عندما يطابق ذلك المطلوب. إذا وضعت الأوسع أولًا، فقد لا تُنفَّذ الشروط اللاحقة أبدًا — تتوقف السلسلة عند أول شرط يكون صحيحًا.
Worked: grade classification
Exemple : classification par note
مثال: تصنيف الدرجات
Suppose score is 75, and a chain prints a letter grade: >= 90 → "A", >= 80 → "B", >= 70 → "C", and else → "F".
Step-by-step evaluation
- First test: Is
score >= 90? Is75 >= 90? No → skip this branch (do not print"A"). - Second test: Is
score >= 80? Is75 >= 80? No → skip this branch (do not print"B"). - Third test: Is
score >= 70? Is75 >= 70? Yes → run this branch and print"C". The chain stops here — nothing below runs. - The final
else(for"F") is never reached for this score, because a match was already found.
Why else if behaves this way
Because the chain uses else if, each new condition is only considered when every earlier condition was false. So when we finally ask whether score >= 70, we already know the score is not >= 90 and not >= 80. That is why a descending chain (highest threshold first) matches one grade without ambiguity.
Link to flowcharts
In a flowchart, this pattern often looks like nested decision diamonds: the No exit of one diamond leads to the next check, until one Yes path runs an action or the last else handles the remainder.
Supposons que score vaut 75, et qu’une chaîne affiche une note lettre : >= 90 → "A", >= 80 → "B", >= 70 → "C", et else → "F".
Évaluation pas à pas
- Premier test :
score >= 90? Est-ce que75 >= 90? Non → on ignore cette branche (on n’affiche pas"A"). - Deuxième test :
score >= 80? Est-ce que75 >= 80? Non → on ignore cette branche (on n’affiche pas"B"). - Troisième test :
score >= 70? Est-ce que75 >= 70? Oui → on exécute cette branche et on affiche"C". La chaîne s’arrête ici — rien en dessous ne s’exécute. - Le
elsefinal (pour"F") n’est jamais atteint pour cette note, car une correspondance a déjà été trouvée.
Pourquoi else if se comporte ainsi
Parce que la chaîne utilise else if, chaque nouveau test n’est envisagé que si tous les tests précédents étaient faux. Lorsqu’on demande enfin si score >= 70, on sait déjà que la note n’est pas >= 90 et pas >= 80. D’où l’intérêt d’une chaîne par seuils décroissants (plus haut d’abord) pour obtenir une seule lettre sans ambiguïté.
Lien avec les organigrammes
Dans un organigramme, ce schéma ressemble souvent à des losanges de décision imbriqués : la sortie Non d’un losange mène au test suivant, jusqu’à ce qu’un chemin Oui exécute une action ou que le dernier else couvre le reste.
لنفترض أن score يساوي 75، وأن سلسلةً تطبع حرفًا للدرجة: >= 90 → "A"، و>= 80 → "B"، و>= 70 → "C"، وelse → "F".
تقييم خطوة بخطوة
- الاختبار الأول: هل
score >= 90؟ هل75 >= 90؟ لا → تخطَّ هذا الفرع (لا تطبع"A"). - الاختبار الثاني: هل
score >= 80؟ هل75 >= 80؟ لا → تخطَّ هذا الفرع (لا تطبع"B"). - الاختبار الثالث: هل
score >= 70؟ هل75 >= 70؟ نعم → نفّذ هذا الفرع واطبع"C". تتوقف السلسلة هنا — لا يعمل ما تحته. elseالأخير (لـ"F") لا يُنفَّذ أبدًا لهذه القيمة، لأن مطابقةً وُجدت مسبقًا.
لماذا يتصرف else if هكذا
لأن السلسلة تستخدم else if، يُفحص كل شرط جديد فقط عندما تكون كل الشروط السابقة خاطئة. فعندما نسأل أخيرًا عن score >= 70، نعلم أن الدرجة ليست >= 90 وليست >= 80. لذلك سلسلة بالعتبات من الأعلى إلى الأدنى تعطي حرفًا واحدًا دون لبس.
الربط بمخططات التدفق
في مخطط التدفق، يظهر هذا غالبًا كـمعينات قرار متداخلة: مسار لا من معينة يقود إلى الفحص التالي، حتى يمرّ مسار نعم بتنفيذ إجراء أو يتولى else الأخير الباقي.
Order matters: in grade-style chains, always check from highest threshold to lowest. If you checked >= 70 first, a score of 95 would match it and never reach >= 90. Each else if implicitly narrows the situation: by the time a test runs, you already know all earlier conditions failed, so the remaining possibilities are smaller.
L’ordre compte : dans une chaîne de type « notes », vérifiez toujours du seuil le plus élevé au plus bas. Si vous testiez >= 70 en premier, une note de 95 y correspondrait et n’atteindrait jamais >= 90. Chaque else if réduit implicitement le cas : au moment d’un test, vous savez déjà que toutes les conditions précédentes sont fausses, donc l’ensemble des possibilités restantes est plus étroit.
الترتيب مهم: في سلاسل الدرجات، تحقّق دائمًا من أعلى عتبة إلى أدنى عتبة. لو فحصت >= 70 أولًا، فدرجة مثل 95 ستطابقه ولن تصل أبدًا إلى >= 90. كل else if يضيّق ضمنيًا المجال: عند تنفيذ فحص، تعلم أن كل الشروط السابقة كانت خاطئة، فيصبح عدد الاحتمالات المتبقية أصغر.
Practice: if / else if / else chains and order
Pratique : chaînes if / else if / else et ordre des tests
تمرين: سلاسل if / else if / else وترتيب الفحص
| scorescorescore | printedaffichéمطبوع |
|---|---|
| 95 | |
| 85 | |
| 72 | |
| 60 |
Logical operators && and ||
Opérateurs logiques && et ||
العوامل المنطقية && و ||
Logical operators let you combine or flip simple comparisons. The operator && (AND) yields true only when both sides are true; if either side is false, the whole expression is false. The operator || (OR) yields true when at least one side is true; it is false only when both sides are false. The operator ! (NOT) inverts a single condition: !true is false, and !false is true.
Use a compact truth table to remember how &&, ||, and ! behave for boolean values A and B:
| A | B | A && B |
A || B |
!A |
|---|---|---|---|---|
true |
true |
true |
true |
false |
true |
false |
false |
true |
false |
false |
true |
false |
true |
true |
false |
false |
false |
false |
true |
In real code, && fits range checks: for example x >= 1 && x <= 10 means x lies between 1 and 10 inclusive. The operator || fits either-or checks: for example day == 6 || day == 7 picks weekend days. On a flowchart, a combined condition such as age >= 13 AND age <= 19 is still one decision diamond, with AND or OR written in words inside the diamond.
You can nest if statements: an inner if may sit inside the body of an outer if. Each else pairs with the nearest preceding if at the same brace level—never assume it attaches to an outer if without reading the braces. Matching { and } carefully is how you keep nested logic readable and correct.
Les opérateurs logiques permettent de combiner ou d’inverser des comparaisons simples. L’opérateur && (ET) vaut true seulement si les deux côtés sont true ; dès qu’un côté est false, toute l’expression est false. L’opérateur || (OU) vaut true dès qu’au moins un côté est true ; il n’est false que lorsque les deux côtés sont false. L’opérateur ! (NON) inverse une condition : !true donne false, et !false donne true.
Le tableau suivant résume le comportement de &&, de || et de ! pour des valeurs booléennes A et B :
| A | B | A && B |
A || B |
!A |
|---|---|---|---|---|
true |
true |
true |
true |
false |
true |
false |
false |
true |
false |
false |
true |
false |
true |
true |
false |
false |
false |
false |
true |
En pratique, on utilise souvent && pour un intervalle : par exemple x >= 1 && x <= 10 signifie que x est compris entre 1 et 10 inclus. On emploie || pour un test l’un ou l’autre : par exemple day == 6 || day == 7 correspond aux jours de week-end. Sur un organigramme, une condition combinée comme age >= 13 AND age <= 19 apparaît dans un seul losange de décision, avec AND ou OR écrit en toutes lettres.
On peut imbriquer des if : un if intérieur peut se trouver dans le corps d’un if extérieur. Chaque else se rapporte au if le plus proche au même niveau d’accolades ; il ne faut pas deviner sans lire les accolades. Bien appairer { et } garde une logique imbriquée lisible et fiable.
تسمح لك العوامل المنطقية بدمج مقارنات بسيطة أو عكس نتيجتها. العامل && (AND) يعطي true فقط عندما يكون كلا الطرفين true؛ وإذا كان أحد الطرفين false تصبح كل التعبير false. العامل || (OR) يعطي true عندما يكون أحد الطرفين على الأقل true؛ ويكون false فقط عندما يكون الطرفان معاً false. العامل ! (NOT) يعكس شرطاً واحداً: !true تساوي false، و!false تساوي true.
استخدم الجدول التالي كمرجع سريع لسلوك && و|| و! مع القيم المنطقية A وB:
| A | B | A && B |
A || B |
!A |
|---|---|---|---|---|
true |
true |
true |
true |
false |
true |
false |
false |
true |
false |
false |
true |
false |
true |
true |
false |
false |
false |
false |
true |
في الشيفرة، && يناسب فحص نطاق: مثلاً x >= 1 && x <= 10 يعني أن x بين 1 و10 بما فيهما. و|| يناسب فحص إما أو: مثلاً day == 6 || day == 7 يمثل أيام نهاية الأسبوع. في مخطط انسيابي، شرطاً مركباً مثل age >= 13 AND age <= 19 يظهر في ماسة قرار واحدة، مع كتابة AND أو OR بالكلمات داخل الماسة.
يمكنك تداخل if: وضع if داخل جسم if آخر. كل else يرتبط بأقرب if السابق على نفس مستوى الأقواس — لا تفترض الربط مع if خارجي دون قراءة الأقواس. مطابقة { و} بدقة تحافظ على وضوح المنطق المتداخل وصحته.
&& and || evaluate left to right. If the left side of && is false, C++ skips the right side (short-circuit). The same happens with || when the left side is true.
&& et || s’évaluent de gauche à droite. Si le côté gauche de && est false, C++ n’évalue pas le côté droit (court-circuit). C’est pareil pour || lorsque le côté gauche est true.
يُقيَّم && و|| من اليسار إلى اليمين. إذا كان الطرف الأيسر من && هو false، يتخطى C++ الطرف الأيمن (اختصار التقييم). ويحدث الشيء نفسه مع || عندما يكون الطرف الأيسر true.
Worked: ticket pricing
Exemple : tarif du billet
مثال: تسعير التذكرة
This program chooses a ticket label from age. First it rejects impossible ages with || (either too small or too large). If the age is valid, it checks whether the person is a teenager with && (at least 13 and at most 19).
With age set to 16:
- Is
age < 0 || age > 150? No — skip"Invalid". - Is
age >= 13 && age <= 19? Yes — both sides are true. - The
else ifbranch runs and prints"Teen ticket".
If age were 200, the first condition would be true and the program would print "Invalid" without checking the later branches.
Ce programme choisit une étiquette de billet à partir de age. Il écarte d’abord les âges impossibles avec || (trop petit ou trop grand). Si l’âge est plausible, il teste l’adolescence avec && (au moins 13 et au plus 19).
Avec age égal à 16 :
age < 0 || age > 150? Non — on ignore"Invalid".age >= 13 && age <= 19? Oui — les deux parties sont vraies.- La branche
else ifs’exécute et affiche"Teen ticket".
Si age valait 200, la première condition serait vraie et le programme afficherait "Invalid" sans évaluer la suite.
يختار هذا البرنامج تسمية تذكرة اعتمادًا على age. يستبعد أولًا الأعمار المستحيلة باستخدام || (صغير جدًا أو كبير جدًا). إذا كان العمر مقبولًا، يفحص ما إذا كان المراهقًا باستخدام && (على الأقل 13 و على الأكثر 19).
عندما age يساوي 16:
- هل
age < 0 || age > 150؟ لا — تُتخطّى"Invalid". - هل
age >= 13 && age <= 19؟ نعم — الطرفان صحيحان. - تُنفَّذ فرع
else ifويُطبَع"Teen ticket".
لو كان age يساوي 200، لأصبح الشرط الأول صحيحًا ولُطبِع "Invalid" دون فحص ما بعده.
Use || when one of several checks is enough to act. Use && when all parts must be true at the same time. Combine them with if / else if / else to reject bad inputs first, then classify the rest.
Utilisez || lorsqu’une des conditions suffit pour déclencher une action. Utilisez && lorsque toutes les parties doivent être vraies en même temps. On peut les combiner avec if / else if / else pour écarter les entrées invalides, puis classer le reste.
استخدم || عندما يكفي أحد الفحوصات لاتخاذ قرار. واستخدم && عندما يجب أن تكون جميع الأجزاء صحيحة معًا. يمكن دمج ذلك مع if / else if / else لرفض المدخلات السيئة أولًا ثم تصنيف الباقي.
Practice: logical operators and nested if
Pratique : opérateurs logiques et if imbriqués
تمرين: العوامل المنطقية وif المتداخلة
"valid" عندما تكون n بين 1 و 10 شاملة.Recap
Synthèse
ملخص
Conditions are the backbone of decision-making in programs. A simple if / else handles two-way branching. When you need multiple paths, chain else if blocks — remember that only the first true branch runs. Combine conditions with && (both must be true) and || (at least one must be true). Always pay attention to brace placement: without braces, only the single next statement is controlled. In flowcharts, each decision becomes a diamond shape — the Yes and No paths lead to different actions.
Les conditions sont le socle de la prise de décision dans les programmes. Un simple if / else gère une bifurcation à deux chemins. Lorsqu’il faut plusieurs issues, enchaînez des blocs else if — seule la première branche vraie s’exécute. Combinez les conditions avec && (il faut que les deux soient vraies) et || (il suffit qu’au moins une soit vraie). Surveillez toujours le placement des accolades : sans accolades, seule l’instruction immédiatement suivante dépend du if. Dans un organigramme, chaque test est un losange ; les chemins Oui et Non mènent à des actions différentes.
الشروط هي أساس اتخاذ القرار داخل البرامج. يتعامل if / else البسيط مع تفرع ثنائي الاتجاه. عندما تحتاج مسارات متعددة، استخدم سلسلة من كتل else if — وتذكر أن أول فرع يكون true هو الذي يُنفَّذ فقط. ادمج الشروط بـ&& (يلزم أن يكون الطرفان true) وبـ|| (يكفي أن يكون أحد الطرفين true على الأقل). انتبه دائمًا لموضع الأقواس: بدون أقواس معقوفة، يتحكم if في التعليمة التالية مباشرة فقط. في مخططات التدفق، يظهر كل قرار على شكل ماسة؛ ومسارا نعم ولا يقودان إلى أفعال مختلفة.
==compares values.=assigns a value. Mixing them is a classic bug.==compare.=affecte. Les confondre est un bug classique.==تقارن القيم.=تعيّن قيمة. الخلط بينهما خطأ كلاسيكي.- In an if / else if chain, only the FIRST true branch runs — the rest are skipped.Dans une chaîne if / else if, seule la PREMIÈRE branche vraie s'exécute.في سلسلة تبدأ بـ
ifثمelse if، أول فرع صحيح فقط يُنفَّذ — البقية تُتجاوز. &&means both must be true.||means at least one must be true.&&= les deux vrais.||= au moins un vrai.&&تعني كلاهما صحيح.||تعني أحدهما على الأقل صحيح.- Code outside if braces always runs — braces define the controlled block.Le code hors accolades s'exécute toujours — les accolades définissent le bloc contrôlé.الكود خارج الأقواس يعمل دائماً — الأقواس تحدد الكتلة المحكومة.
- Nested ifs pair each else with the nearest unmatched if — follow the braces.Les if imbriqués associent chaque else au if non apparié le plus proche — suivez les accolades.
ifالمتداخلة تقرن كلelseبأقربifغير مقترن — تتبع الأقواس. - In a flowchart, each if / else if becomes a decision diamond; the No path leads to the next check.Dans un organigramme, chaque if / else if devient un losange de décision ; le chemin Non mène au test suivant.في المخطط، كل قرار من نوع
ifأوelse ifيظهر كمعين قرار؛ ومسار لا يؤدي للفحص التالي.