⚙️ C++

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 =