jeudi 16 novembre 2017

Le signe du produit sans le calculer : apprendre les conditions (expressions booléennes) compliquées

Énonce

Écrire un programme (un algorithme) qui demande deux nombres à l'utilisateur et l'informe si leur produit est positif, négatif ou bien nul sans le calculer.

L'objectif de cet exercice est une variété d'un autre exercice dans lequel on vérifie est ce qu'un nombre est positif, négatif ou bien nul. La différence ici est qu'on essaie de compliquer les conditions. Le reste de l'algorithme (la structure conditionnelle imbriquée) reste la même parce qu'il s'agit des mêmes cas (trois cas, exactement le même problème). A partir de l'analyse donnée dans le cadre de l'exercice précédent, il suffit de reprendre la partie concernant es conditions à vérifier :
  1. Le produit de a et b est positif si les deux nombres sont du même signe, c'est à dire, le produit est positif si et seulement si a et positif et b est positif ou bien a est négatif et b est négatif.
  2. Le produit de a et b est négatif si les deux nombres sont de signes différents, c''est à dire, le produit est négatif si a est positif et b est négatif ou bien a est négatif et b est positif.
  3. Le produit de a et b est nul s'il est ni positif, ni négatif.
Comme vous voyez, les conditions sont un peu plus complexes. En effet, cet exercice est lié aux expressions logiques (booléennes). Nous pouvons reprendre les définitions données telles qu'elle le sont; il suffit d'utiliser les bons symboles pour les opérations booléennes.
Ainsi, le programme sera :

En Pascal :

Program PositifNegatifNul;
Var
 a, b : Integer;
Begin
 WriteLn('Donnez deux nombres :');
 ReadLn(a);
 ReadLn(b);
 If (((a > 0) And (b > 0))  Or ((a < 0) And (b < 0))) Then 
  WriteLn('Le produit est Positif')
 Else
  if (((a < 0) And (b > 0))  Or ((a > 0) And (b < 0))) Then
   WriteLn('Le produit est Negatif')
  Else
   WriteLn('Le produit est Nul');
End.

En Java :


import java.util.Scanner;

public class Exemple {
 public static void main(String[] args) {
  Scanner scanner = new Scanner(System.in);
  System.out.println("Donnez deux nombres :");
  int a = scanner.nextInt();
  int b = scanner.nextInt();
  if(a < 0 && b < 0 || a > 0 && b > 0)
   System.out.println("Le produit est Positif"); 
  else
   if (a < 0 && b > 0 || a > 0 && b < 0)
    System.out.println("Le produit est Negatif"); 
   else
    System.out.println("Le produit est Nul"); 
 }
}