====== Test - if else ====== Pas de grande différence avec le Python. Par exemple : # python if x == 0: print("x est nul") else : print("x n'est pas nul") // c // ne pas oublier #include pour le printf et // bien sûr la fonction main. if (x == 0) { printf("x est nul\n"); } else { printf("x n'est pas nul\n"); } * Les deux structures sont très proches. Dans les deux cas le ''%%else%%'' n'est pas obligatoire. * Comme déjà mentionné, C n'utilise pas les indentations. On pourrait retirer les indentations dans le programme C et même tout écrire sur une même ligne ! Ce sont les ''%%{ }%%'' qui indiquent le début et la fin des structures. Néanmoins, pour plus de lisibilité, on s'astreint à utiliser des indentations. Le placement des indentations et des accolades donne lieu à des préférences et usages différents. Pour en avoir une idée, consultez cet [[https://fr.wikipedia.org/wiki/Style_d%27indentation|article]]. J'utilise plutôt le style K&R. * Remarquez que la condition est entourée de parenthèses en C : ''%%(x == 0)%%'' et pas ''%%x == 0%%'' en Python. D'une façon générale, Python fait l'économie d'une grande quantité de symboles ce qui en fait un langage plus rapide à utiliser et plus facile à lire. * Python utilise le mot clé ''%%elif%%'' pour le cas où on souhaite enchaîner les tests. C permet de faire la même chose mais sans faire la contraction : on écrira ''%%else if%%''. * Faites attention à une erreur courante : pas de ''%%;%%'' après le ''%%if%%''. // code FAUX !!! // le ; après le if ne devrait pas être là if (x == 0); { printf("x est nul\n"); ==== Les opérateurs de test ==== En Python on pourrait écrire : if x >= 0 and x < 10: print("x est dans [0;10[") En C cela devient : if (x >= 0 && x < 10) { printf("x est dans [0;10[\n"); } Le symbole ''%%&&%%'' est utilisé pour le ET. Cela ne doit pas trop vous surprendre car Python utilise aussi le ''%%&&%%'' mais pour le cas d'un ET bitwise. De la même façon, le OU est obtenu avec ''%%||%%'' et le NON avec ''%%!%%''. == Opérateurs séquentiels == Les opérateurs sont **séquentiels** comme en Python. Par exemple : int x = 0; if (x != 0 && 1/x < 10){ print("pwet\n"); } Dans ce cas aucun problème. En effet, ''%%x%%'' vaut ''%%0%%'', le test ''%%x != 0%%'' est donc faux et donc on n'examine même pas la suite du ''%%&&%%'' car dans un ET, si un des éléments est faux, le résultat sera faux. Le calcul ''%%1/x%%'' posant problème dans le cas ''%%x == 0%%'' n'est donc pas effectué. Ce mécanisme est extrêmement utile.