Ennoncé de l'exercice :
Ecrire l'algorithme qui permet de calculer la somme, la différence et le produit de deux nombres entiers.Solution (partie 2):
Nous avons vu dans la première partie, le programme qui permet de calculer la somme, la différence et le produit de deux nombres entiers. Néanmoins, nous avons codé directement les valeurs; tout changement des valeurs nécessitera de modifier le code et de le re-compiler. C'est trop pénible. Alors comment faire pour permettre au programme de récupérer à chaque fois de nouvelles valeurs sans devoir le modifier à chaque fois ?Cela peut être fait en deux étapes :
La première étape : l'utilisation des variables :
Tout comme en mathématiques, il est possible de définir des variables, un symbole défini sur un ensemble donné et qui peut contenir UNE seule valeur A LA FOIS de cet ensemble. Cette valeur peut changer dans le temps, mais, à un instant donné t, cette valeur est unique.En effet, si je définit la variable x ∈ N, cela veut dire que x prend sa valeur dans l'ensemble des nombres naturels N, mais il ne prendra qu'une seule valeur à la fois. Une telle déclaration en Pascal sera :
x : Integer;
Et en Java :
int x;
L'ordre peut changer entre les deux langages (symbole de la variable en premier ou bien son type) et même le nom du domaine (entre Integer en Pascal et int "seulement" en Java), néanmoins, l'idée et l'effet des deux déclaration sont exactement les mêmes.
En ajoutant les déclarations à nos codes, nous allons obtenir en Pascal :
Program FaireCalculs; Var a, b, r1, r2, r3 : Integer; Begin a := 5; b := 3; r1 := a + b; r2 := a - b; r3 := a * b; WriteLn(r1); WriteLn(r2); WriteLn(r3); End.
Et en Java :
public class Exemple { public static void main(String[] args){ int a, b, r1, r2, r3; a = 5; b = 3; r1 = a + b; r2 = a - b; r2 = a * b; System.out.println(r1); System.out.println(r2); System.out.println(r3); } }
En utilisant ces variables, nous avons obtenu deux avantages :
- Il est maintenant possible de gagner du temps en ne modifiant que les valeurs de a et b (deux valeurs seulement) pour obtenir de nouveaux résultats.
- Nous avons séparé le calcul de l'affichage. En effet, les deux actions sont exécutées par des instructions séparées. Cela rend le code plus lisible et plus compréhensible.
La deuxième étape : lecture à partir du clavier :
Si l'écran est la "sortie" principale de l'ordinateur, c'est à dire, le moyen principal qu'il utilise pour nous parler, le clavier est son "entrée" principale c'est à dire, le moyen principal que nous utilisons pour parler à l'ordinateur.
Nous avons déjà demandé à notre programme de nous parler. Nous avons demandé qu'il nous "affiche" quelque chose, certainement, sur sa sortie principale. L'ordre était différent entre les deux langages mais avec le même sens :
En Pascal :
WriteLn();
En Java :
System.out.println();
Si on ignore la partie "ln" pour le moment, nous auront "write" et "print", au sens de "afficher" les données. Suivant la même idée, nous pouvons demander au programme de recevoir des données de notre part. Pour cela, nous utilisons son entrée principale, c'est à dire le clavier, pour lui parler.
En Pascal : très simple, il arrive à reconnaitre le type de la donnée passée en entrée.
ReadLn(a); {Lire la donnée "a"}
En Java : un peu plus complexe, parce qu'il ne reconnaît pas le type de la donnée, c'est à nous de lui préciser qu'est ce qu'il doit recevoir :
Scanner scanner = new Scanner(System.in); // Ecouter le clavier a = scanner.nextInt(); // Lire l'entier suivant et le mettre dans la donnée "a"
En intégrant ces notions dans le code précédent, nous aurons le code Pascal :
Program FaireCalcul; Var a, b, r1, r2, r3 : Integer; Begin ReadLn(a); ReadLn(b); r1 := a + b; r2 := a - b; r3 := a * b; WriteLn(r1); WriteLn(r2); WriteLn(r3); End.
Et en Java :
import java.util.Scanner; public class Exemple { public static void main(String[] args){ int a, b, r1, r2, r3; Scanner scanner = new Scanner(System.in); a = scanner.nextInt(); b = scanner.nextInt(); r1 = a + b; r2 = a - b; r3 = a * b; System.out.println(r1); System.out.println(r2); System.out.println(r3); } }
A ce stade, notre programme ne définit pas des valeur fixes; il les captent à partir du clavier (c'est l'utilisateur qui les saisit), par conséquent, nous pouvons calculer la somme, la différence et le produit autant de fois que nous voulons et avec de nouvelles valeurs à chaque fois sans avoir à modifier et re-compiler notre programme.