Blog ENI : Toute la veille numérique !
🐠 -25€ dès 75€ 
+ 7 jours d'accès à la Bibliothèque Numérique ENI. Cliquez ici
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. Algorithmique - Techniques fondamentales de programmation
  3. Techniques fondamentales de programmation
Extrait - Algorithmique - Techniques fondamentales de programmation exemples en C# - (nombreux exercices corrigés) [BTS - DUT informatique]
Extraits du livre
Algorithmique - Techniques fondamentales de programmation exemples en C# - (nombreux exercices corrigés) [BTS - DUT informatique]
1 avis
Revenir à la page d'achat du livre

Tests et logique booléenne

Les tests et conditions

1. Principe

Dans le précédent chapitre vous avez pu vous familiariser avec les expressions mettant en place des opérateurs, qu’ils soient de calcul, de comparaison (l’égalité par exemple) ou booléens. Ces opérateurs et expressions trouvent tout leur sens une fois utilisés dans des conditions (qu’on appelle aussi des branchements conditionnels). Une expression évaluée est vraie (le résultat est différent de zéro) ou fausse. Suivant ce résultat, l’algorithme va effectuer une action, ou une autre. C’est le principe de la condition.

Grâce aux opérateurs booléens, l’expression peut être composée : plusieurs expressions sont liées entre elles à l’aide d’un opérateur booléen, éventuellement regroupées avec des parenthèses pour en modifier la priorité.


(a=1 OU (b*3=6)) ET c>10
 

est une expression tout à fait valable. Celle-ci sera vraie si chacun de ses composants respecte les conditions imposées. Cette expression est vraie si a vaut 1 et c est supérieur à 10 ou si b vaut 2 (2*3=6) et c est supérieur à 10.

Reprenez l’algorithme du précédent chapitre qui calcule les deux résultats possibles d’une équation du second degré. L’énoncé simplifié disait que pour des raisons pratiques, seul le cas où l’équation a deux solutions fonctionne. Autrement dit, l’algorithme n’est pas faux dans ce cas de figure, mais il est incomplet. Il manque des conditions pour tester la valeur du déterminant : celui-ci est-il positif, négatif ou nul ? Et dans ces cas, que faire et comment le faire ?

Imaginez un second algorithme permettant de se rendre d’un point A à un point B. Vous n’allez pas le faire ici réellement, car c’est quelque chose de très complexe sur un réseau routier important. De nombreux sites Internet vous proposent d’établir un trajet avec des indications. C’est le résultat qui est intéressant. Les indications sont simples : allez tout droit, tournez à droite au prochain carrefour, faites trois kilomètres et au rond-point prenez la troisième sortie direction...

L’algèbre booléen

1. L’origine des tests

Les tests effectués tant en algorithmique qu’en programmation sont des tests logiques, ou plutôt faisant appel à la logique. Le chapitre Les variables et opérateurs a déjà brièvement abordé ce point lorsqu’il a été question des opérateurs booléens. Les opérateurs dits logiques ET, OU et NON sont des représentations de la logique. De quelle logique parle-t-on ?

Fondamentalement, la logique est la même pour tout le monde, bien que évidemment l’interprétation des résultats puisse varier d’un individu à l’autre (en statistique par exemple). La logique est universelle. Monsieur Spock, s’il avait existé n’aurait pas dit mieux. Mais jusqu’à peu (dans l’échelle de l’humanité) il n’y avait aucun moyen de se la représenter réellement, sous forme de symboles, d’assertions, etc. Il n’y avait aucune représentation formelle de la logique. 

Or un ordinateur est logique (même si on peut lui demander des choses illogiques, c’est vous qui le programmez après tout). La logique est même la base de nombreuses applications mathématiques, électroniques, d’intelligence artificielle. En informatique, le matériel est électronique et dépend de la logique, et les programmes dépendent tant de tests et de calculs faisant appel à la logique, et devant fonctionner sur des circuits électroniques. Sans logique, pas d’électronique, ni d’ordinateurs, ni de programmes.

C’est ce qui fait que les opérateurs, conditions et tests ne doivent pas être posés n’importe comment. Il n’y a rien de plus logique qu’un ordinateur, mais aussi rien de plus stupide : il va bêtement (et encore la notion de bêtise lui est inconnue) exécuter exactement ce que vous lui demandez, même si le résultat entraîne une erreur. Cela lui importe peu du moment que la syntaxe est correcte. Ainsi :


PROGRAMME STUPIDE 
VAR 
  froid, nu, sortir en Booléen 
DEBUT 
  Froid←VRAI 
  Nu←VRAI 
  Si Froid=VRAI ET nu=VRAI Alors 
    Sortir←VRAI 
  FinSi 
FIN
 

Cet algorithme...

Exercices

Exercice 1

Écrire, avec des comparaisons, un algorithme qui affiche l’état de l’eau (glace, liquide, vapeur) en fonction de sa température.

Exercice 2

Écrire le même algorithme, mais en utilisant deux variables booléennes pour vérifier l’état de l’eau, sans comparaisons dans les SI.

Exercice 3

Écrire un algorithme qui détermine la catégorie sportive d’un utilisateur en fonction de son âge :

  • 6 à 7 ans : poussin

  • 8 à 9 ans : pupille

  • 10 à 11 ans : minime

  • 12 ans et plus : cadet

Écrire le programme C# associé.

Exercice 4

Écrire un algorithme qui permet de savoir quel est le jour de la semaine, en utilisant la méthode suivante, puis convertissez-le en C# :

  • On garde les deux derniers chiffres de l’année.

  • On ajoute 1/4 de ce chiffre en ignorant les restes : division entière.

  • On ajoute la journée du mois.

  • Selon le mois, on ajoute la valeur indiquée :

  • Janvier = 1

  • Février = 4

  • Mars = 4

  • Avril = 0

  • Mai = 2

  • Juin = 5

  • Juillet = 0

  • Août = 3

  • Septembre = 6

  • Octobre = 1

  • Novembre = 4

  • Décembre = 6

  • Si l’année est bissextile et le mois est janvier ou février, on soustrait 1.

  • Selon le siècle, on ajoute la valeur indiquée :

  • Années 1600 = 6

  • Années 1700 = 4

  • Années 1800 = 2

  • Années 1900...