La plupart des gens pensent que le codage relève d’algorithmes complexes. Ce n’est pas le cas. Il s’agit surtout de faire des choix simples. En C, ces choix se résument à une seule chose : les expressions booléennes.
Vous les avez vus dans les instructions if et les boucles while. Ce sont les feux de circulation de votre programme. Le vert passe. Le rouge s’arrête.
Prenons cet exemple basique.
Il demande un numéro. Il vérifie si ce nombre est inférieur à zéro. Si c’est le cas, le programme parle. Si ce n’est pas le cas ? Silence.
La partie (b < 0) est l'expression booléenne. C l'évalue. True signifie exécuter la ligne suivante. Faux signifie l'ignorer. Simple.
Mais que se passe-t-il lorsque vous avez besoin de plus de nuances ?
Gestion des valeurs nulles et positives
La seule vérification ci-dessus laisse un vide. Que se passe-t-il si l'utilisateur entre zéro ? Ou un entier positif ? Le programme les ignore.
Voici une structure légèrement plus complexe.
Vous disposez désormais d’une logique pour les valeurs négatives, nulles et positives. Les sections « else if » et « else » capturent les autres cas. C’est toujours basique, mais cela couvre toutes les bases.
Conditions complexes et pièges courants
La logique du monde réel reste rarement simple. Parfois, il faut que deux conditions soient vraies à la fois.
Considérez cette ligne :
Lisez-le comme l'anglais. Si x est égal à y ET j est supérieur à k, définissez z sur 1. Sinon, définissez q sur 10.
Remarquez les opérateurs.
C utilise == pour tester l'égalité. Il utilise un seul = pour attribuer une valeur.
C'est un piège classique. Si vous écrivez « if (x = y) », vous ne vérifiez pas s'ils sont égaux. Vous attribuez y à x, puis vérifiez si le résultat est différent de zéro. Votre logique se brise. Utilisez toujours des doubles égaux pour les comparaisons.
Le symbole && représente une opération booléenne ET. Les deux côtés doivent être vrais.
La boîte à outils complète des opérateurs booléens
Vous n’avez pas besoin de les mémoriser, mais vous devez savoir à quoi ils ressemblent. Ils apparaissent partout dans le code C.
- Égalité :
== - Inégalité :
!= - Moins de :
< - Supérieur à :
> - Inférieur ou égal à :
<= - Supérieur ou égal à :
>= - ET :
&& - OU :
|| - PAS :
!
Pourquoi c'est important pour les utilisateurs quotidiens
Logique de bouclage en C : while, do-while et for structures
Vous pouvez utiliser les boucles while avec la même facilité que les instructions if de base. Prenons un exemple simple :
Ce code répète ces deux lignes jusqu'à ce que a soit supérieur ou égal à b. La structure est simple. C propose également une construction do-while, qui garantit que le bloc de code s'exécute au moins une fois avant de vérifier la condition. Voici un extrait montrant une vérification de base des entrées :
Comment la boucle for simplifie l'itération
La boucle for est essentiellement un raccourci pour une boucle while. Si vous avez un code comme celui-ci :
Vous pouvez le compresser en une seule instruction for :
La boucle while comporte trois parties distinctes : l'initialisation (x=1 ), le test (x<10 ) et l'incrémentation (x++ ). La boucle for les regroupe sur une seule ligne. Mais vous n’êtes pas limité à de simples variables. Regardez ce scénario plus complexe :
Vous pouvez réécrire ceci en utilisant une boucle for :
Cela a l'air encombré. C'est déroutant. Mais ça marche. L'opérateur virgule vous permet d'enchaîner plusieurs instructions dans les sections d'initialisation et d'incrémentation d'une boucle for. Cependant, vous ne pouvez pas mettre de virgule dans la section test.
De nombreux programmeurs C adorent regrouper la logique sur une seule ligne. D'autres soutiennent que cela détruit la lisibilité. Il n’existe pas de consensus universel. Il vous suffit de décider si vous privilégiez la brièveté à la clarté.
Le danger de = vs == dans les expressions booléennes
Le double signe égal == est une source de bugs fréquents en C. Les développeurs tapent souvent un seul signe égal = par erreur. Le compilateur accepte les deux, mais le comportement est radicalement différent.
En C, les expressions booléennes sont évaluées sous forme d’entiers. Zéro signifie Faux. Tout entier différent de zéro signifie Vrai. Cela signifie que vous pouvez légalement écrire :
Mais que se passe-t-il si vous écrivez « si (a=b) » ?
Ceci n'est pas une comparaison. C'est une mission. L'instruction « if (a=b) » attribue la valeur de b à a, puis teste la valeur résultante de a pour sa véracité booléenne. Si a devient zéro, la condition est False. Si cela devient autre chose, c'est Vrai.
Votre variable a change de valeur au cours de ce processus. C'est rarement ce que vous souhaitez lorsque vous souhaitez comparer des valeurs. Bien que cette fonctionnalité d’affectation conditionnelle puisse être utile dans des contextes spécifiques, elle constitue un piège pour les imprudents. Soyez prudent avec votre utilisation de = et ==. Une faute de frappe change tout.



























