Académique Documents
Professionnel Documents
Culture Documents
2 Applications 7
2.1 Le paquet de poste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3 Références générales 7
Objectif
Le premier exercice reprend l’exercice @[Tri de trois éléments] en définissant une décom-
position en procédures et les exercices suivants en sont des applications.
1
Unisciel algoprog – Tri de trois entiers [ss13] 2
L’exercice @[Tri de trois éléments] saisit trois entiers puis les remet dans l’ordre via trois
ordonnancements.
Algorithme initial
import java.util.Scanner;
class PGTrcompare1 {
Exemple d’exécution
(Avec cet algorithme)
Trois entiers? 2 1 3
==> Après ordonner a et b : a=1 b=2 c=3
==> Après ordonner b et c : a=1 b=2 c=3
Unisciel algoprog – Tri de trois entiers [ss13] 3
Résultat attendu
Il ne sera pas utile d’afficher les entiers après chaque ordonnancement.
Voici un exemple du résultat attendu.
Trois entiers? 3 8 2
==> Valeurs dans l’ordre sont 2 3 8
Solution simple
On peut proposer successivement :
• Une procédure ordonner3i(a,b,c) qui remet en ordre les entiers a, b, c.
• Une procédure ordonner2i(a,b) qui remet en ordre les entiers a et b.
• Une procédure permuter2i(a,b) qui permute le contenu des entiers a et b.
Écrivez le profil d’une procédure permuter2i(a,b) qui échange les contenus de deux entiers
a et b.
Orientation
Les paramètres formels a et b sont des paramètres mixtes Donnée/Résultat. En effet,
ils ont des valeurs avant l’appel et ils seront modifiés lors de l’échange.
Solution Paramètres
Modifiés : Les entiers a et b
Rappel de cours
Pour permuter deux variables, il faut passer par une variable intermédiaire.
Solution simple
On a :
Unisciel algoprog – Tri de trois entiers [ss13] 4
Solution Java
/**
Permute les valeurs de deux entiers
@param[in,out] a - un entier
@param[in,out] b - un entier
*/
Écrivez le profil d’une procédure ordonner2i(a,b) qui remet dans l’ordre croissant les
contenus des entiers a et b.
Solution Paramètres
Modifiés : Les entiers a et b
Écrivez le corps de la procédure de sorte que, si b<a, elle appelle la procédure permuter2i
pour les ordonner. Ainsi, à l’issue de la procédure, a contient le plus petit entier et b le
plus grand de (a,b).
Unisciel algoprog – Tri de trois entiers [ss13] 5
Solution Java
/**
Ré-ordonne les valeurs de deux entiers
@param[in,out] a - un entier
@param[in,out] b - un entier
@post a <= b
*/
Déduisez une procédure ordonner3i(a,b,c) qui classe trois entiers a, b et c par ordre
croissant, en appelant trois fois la procédure ordonner2i :
• Classez a et b en ordre croissant.
• Puis classez b et c en ordre croissant.
• Puis classez a et b en ordre croissant.
Solution Paramètres
Modifiés : Les entiers a, b et c
Solution Java
/**
Ré-ordonne les valeurs de trois entiers via ordonner2i
@param[in,out] a - un entier
@param[in,out] b - un entier
@param[in,out] c - un entier
@post a <= b <= c
*/
ordonner2i(a,b);
}
Vous envoyez votre programme complet à Alice qui vous l’a demandée. Elle remarque que
dans les bibliothèques de son compilateur, elle dispose d’une procédure ordonner2r(a,b)
qui remet en ordre deux valeurs réelles. Sachant que les conversions d’entiers vers réels
sont implicites, elle décide de l’utiliser et donc :
1. Elle remplace l’appel de ordonner2i par ordonner2r.
2. Elle supprime toutes vos procédures sur les entiers.
Que va-t-il se passer ?
Aide simple
Le passage des paramètres par référence n’est pas un passage par valeur.
Unisciel algoprog – Tri de trois entiers [ss13] 7
Solution simple
Le compilateur va générer une erreur.
Solution simple
Dans un passage de paramètres par référence, il faut que les types correspondent exac-
tement.
2 Applications
Un colis postal est accepté par les PTT si sa longueur est inférieure à 40 cm et son
volume inférieur à 8000 cm3 .
Testez.
3 Références générales
Comprend