Outils pour utilisateurs

Outils du site


nsi:langages:c:test

Test - if else

Pas de grande différence avec le Python. Par exemple :

code python

# python
if x == 0:
    print("x est nul")
else :
    print("x n'est pas nul")

code c

// c
// ne pas oublier #include<stdio.h> 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 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 c faux

// 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 :

code python

if x >= 0 and x < 10:
    print("x est dans [0;10[")

En C cela devient :

code c

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.

nsi/langages/c/test.txt · Dernière modification : de goupillwiki