LES TESTS ET CONDITIONS
Imaginons que l'on cherche à savoir si une personne est majeure ou mineure, nous allons lui demander son âge et comparer avec l'âge de la majorité (18 ans en France).
Si je devais transcrire en tant que résolution du problème, je l'écrirais ainsi
Code:
DEMANDER age SI age >= 18 AFFICHER majeur SINON AFFICHER mineur
Traduire DEMANDER
Eh bien ce n'est pas aujourd'hui que nous le ferons, cette pratique demande des bases un peu plus complexe, vous verrez sa syntaxe un peu plus tard...
Traduire AFFICHER
Nous l'avons vu, le répéter serait inutile, reportez-vous au cours n°3 pour revoir cette partie, dans le cas où des oublis vous pénalisent.
Traduire SI et SINON
Nous sommes là pour cela aujourd'hui...
SI sera traduit en C par le mot clé if
SINON sera traduit en C par le mot clé else
SINON SI sera traduit par le mot clé else if
Dans un langage C, cela se traduit comme ci-dessous
Code:
if (...) { /* suite */ } else if (...) { /* suite */ } else { /* suite */ }
Les tests
Les tests permettent la comparaison d'une valeur à une autre valeur. Une variable contenant une valeur peut donc en tout logique être comparée à une autre variable ou valeur.
Attention toujours resté cohérents avec vos types de données, par exemple, vous ne pouvez comparer un entier et une chaîne de caractères.
Un test peut donc renvoyer deux valeurs en C
- FAUX traduit en C par la valeur 0
- VRAI traduit en C par la valeur 1
Par exemple
Code:
int age = 18; printf("%d\n", age>=18);
Si l'on tape le code ci-dessous
Code:
int age = 18; printf("%d\n", age>18);
La réponse est bien évidemment, non ! La réponse du langage est sans appel, il nous retourne 0, ce qui est sommes toute logique car 0 représente la réponse FAUX.
Si l'on tape le code ci-dessous
Code:
int age = 18; printf("%d\n", age==18);
Si vous remplacez == par =, vous ne faîtes plus un test, mais une assignation, voir cours n°1 sur les variables...
La réponse de ce test sera la valeur 1, car le test est correct, la variable age contenant la valeur 18 est bien égale à l'entier de valeur 18.
Que représente else ?
C'est simple, else est le mot clé qui représente tout les tests restants...
Réponse à notre problématique
Code:
#include <stdio.h> int main(void) { int age = 18; if (age >= 18) { puts("Vous êtes majeur !"); } else { puts("Vous êtes mineur !"); } return 0; }
Exercice n°1
- Complétez le code ci-dessous, en assignant chaque caractère de la chaîne "hello" à la variable chaîne.
Code:#include <stdio.h> int main(void) { char chaine[50]; /* début code */ /* fin code */ return 0; }
- Utilisez une structure conditionnelle pour vérifier si le 1er caractère à la valeur 'h'. Si oui, remplacez 'h' par le caractère 'H', sinon on ne fait rien.
- Affichez la variable chaîne sur la console.
Exercice n°2
On génère au hasard un entier entre 0 et 100 exclus, compléter le code pour tester si ce nombre est pair ou impair, et afficher en console le résultat...
Code:
#include <stdio.h> #include <stdlib.h> #include <time.h> int main(void) { int nombre; /* déclaration de la variable nombre */ srand(time(NULL)); /* initialisation du générateur de nombre aléatoire */ nombre = rand() % 100; /* Nombre compris entre 0 et 100 exclus -- à tester si pair ou impair -- */ /* code à compléter */ /* fin du code */ return 0; }
Commentaire