Voici la traduction de l'article du russe vers le français, en respectant toutes les règles spécifiées :
Qu'est-ce que c'est et pourquoi ?
Imagine que tu joues à un jeu vidéo. Tu as 100 vies. Quand tu rencontres un monstre, le jeu vérifie : "Vies supérieures à 0 ?". Si oui, tu peux combattre. Si non, le jeu dit : "Game Over".
En programmation, ces vérifications sont effectuées par les opérateurs de comparaison et les opérateurs logiques. Ils aident le programme à prendre des décisions. Par exemple :
- Vérifier s'il y a assez d'argent sur le compte
- Savoir si le soir est arrivé
- Comprendre si le joueur peut ouvrir la porte (a-t-il la clé OU connaît-il le code)
Sans eux, le programme serait comme un robot qui fait toujours la même chose, sans regarder ce qui se passe autour. Avec eux, il devient intelligent !
Syntaxe et exemples de code
En C++, les opérateurs de comparaison se présentent ainsi :
== // égal (attention : deux signes égal !)
!= // différent de
> // supérieur à
< // inférieur à
>= // supérieur ou égal à
<= // inférieur ou égal à
Et les opérateurs logiques combinent plusieurs conditions :
&& // ET (les deux conditions doivent être true)
|| // OU (au moins une condition true)
! // NON (transforme true en false et vice versa)
Exemple 1 : Vérification de l'âge
#include <iostream>
using namespace std;
int main() {
int age = 14;
// Vérifions : l'âge est-il supérieur ou égal à 18 ?
if (age >= 18) {
cout << "Tu es adulte !" << endl;
} else {
cout << "Tu es encore un enfant." << endl;
}
// Affichage : "Tu es encore un enfant."
// Parce que 14 n'est pas supérieur ou égal à 18
return 0;
}
Exemple 2 : ET logique (&&)
#include <iostream>
using namespace std;
int main() {
bool a_cle = true;
bool connait_code = false;
// Pour ouvrir la porte, il faut ET la clé ET le code
if (a_cle && connait_code) {
cout << "Porte ouverte !" << endl;
} else {
cout << "Accès refusé." << endl;
}
// Affichage : "Accès refusé."
// Parce que connait_code = false
return 0;
}
Exemple 3 : OU logique (||)
#include <iostream>
using namespace std;
int main() {
int temperature = 30; // degrés
// On sort se promener s'il fait chaud OU sec
if (temperature > 20 || temperature < 10) {
cout << "On sort se promener !" << endl;
} else {
cout << "On reste à la maison." << endl;
}
// Affichage : "On sort se promener !"
// Parce que 30 > 20 (première condition true)
return 0;
}
Exemple 4 : NON logique (!)
#include <iostream>
using namespace std;
int main() {
bool il_pleut = false;
// S'il NE pleut PAS, on sort se promener
if (!il_pleut) {
cout << "Youpi, on sort !" << endl;
} else {
cout << "On prend un parapluie." << endl;
}
// Affichage : "Youpi, on sort !"
// Parce que !false = true
return 0;
}
Exemple 5 : Condition complexe
#include <iostream>
using namespace std;
int main() {
int age = 16;
bool a_permis = false;
bool avec_parents = true;
// On peut conduire une voiture si :
// (âge >= 18 ET a le permis) OU (avec les parents)
if ((age >= 18 && a_permis) || avec_parents) {
cout << "On peut prendre le volant !" << endl;
} else {
cout << "On ne peut pas conduire." << endl;
}
// Affichage : "On peut prendre le volant !"
// Parce que avec_parents = true
return 0;
}
Comparaison avec Python
En Python, les mêmes opérateurs se présentent presque de la même manière, mais il y a des différences importantes :
| Opération | C++ | Python |
|---|---|---|
| Égal | == |
== |
| Différent de | != |
!= |
| Supérieur à | > |
> |
| ET | && |
and |
| OU | || |
or |
| NON | ! |
not |
Exemple en Python :
age = 14
if age >= 18:
print("Tu es adulte !")
else:
print("Tu es encore un enfant.")
# Affichage : "Tu es encore un enfant."
La principale différence : en Python, les opérateurs logiques s'écrivent avec des mots (and, or, not), alors qu'en C++ ils s'écrivent avec des symboles (&&, ||, !). De plus, en Python, les points-virgules et les accolades ne sont pas nécessaires - on utilise l'indentation à la place.
Erreurs typiques des débutants
Erreur 1 : Confondre = et ==
Un signe égal (=) est une affectation. Deux (==) sont une comparaison.
// INCORRECT :
if (x = 5) { ... } // Erreur ! Affecte 5 à la variable x
// CORRECT :
if (x == 5) { ... } // Vérifie si x est égal à cinq
Erreur 2 : Oublier la priorité des opérations
Comme en mathématiques : d'abord la multiplication, ensuite l'addition. En logique, il y a aussi un ordre : d'abord !, ensuite &&, ensuite ||.
// Peut être peu clair :
if (a || b && c) // D'abord b && c est exécuté, ensuite a || résultat
// Mieux vaut utiliser des parenthèses :
if (a || (b && c)) // Maintenant c'est clair
Erreur 3 : Comparer des types différents
int x = 5;
double y = 5.0;
if (x == y) { ... } // Fonctionne, mais peut être inattendu
// Mieux vaut convertir vers un seul type :
if (x == (int)y) { ... }
Erreur 4 : Utiliser =