Laboratoire 2
Laboratoire 2
Laboratoire 2
LABO 2
Laboratoire 2
DURÉE PRÉVUE : 6H00
OBJECTIFS
Au terme de ce laboratoire, l'étudiant sera capable de :
réaliser la phase préparatoire à la programmation telle qu'elle a été décrite au cours
théorique (solutionner un cas concret, lister les données requises et décomposer les étapes
de résolution)
déclarer des variables et des constantes de type primitif et de type java.lang.String
respecter les conventions de nommage pour les variables (CamelCase) et les constantes
(lettres majuscules et tiret bas)
réaliser des opérations à l'aide des opérateurs +, -, *, /, % et =
réaliser des appels de fonction et récupérer la valeur de retour
trouver une information dans la documentation officielle de l'API Java
réaliser une acquisition de données (utilisation de la classe Console disponible sur l'e-
learning) et afficher des informations formatées en console
AVANT-PROPOS
Créez dans votre espace de travail un répertoire nommé labo2 (en minuscules et sans espace).
C'est dans ce répertoire que vous enregistrerez tous les programmes de ce 2 e labo.
Si vous travaillez sous Windows, il est possible de faire en sorte que la console démarre directement
dans votre répertoire de travail Java. Ainsi, il n’est plus nécessaire de saisir systématiquement la
commande cd.
La procédure ci-après ne doit être réalisée qu’une seule fois.
1. Une fois la console ouverte, faites un clic droit sur l’icône correspondante qui est apparue
dans la barre des tâches, puis sélectionnez l’option Épinglez à la barre des tâches
1
INFORMATIQUE / BLOC1 / PROGRAMMATION DE BASE
LABO 2
2. Dans la barre des tâches, faites à nouveau un clic droit sur l’icône de l’application, puis un clic
droit sur Invite de commandes. Dans le nouveau menu contextuel qui apparaît, sélectionnez
l’option Propriétés
3. Dans la fenêtre qui s’affiche, ouvrez l’onglet Raccourci, puis saisissez le chemin de votre
répertoire de travail dans le champ Démarrer dans :
4. Fermez la fenêtre de la console, puis cliquez sur le raccourci épinglé sur la barre des tâches
2
INFORMATIQUE / BLOC1 / PROGRAMMATION DE BASE
LABO 2
Lorsque vous rencontrez des erreurs logiques dans vos programmes, pensez à utiliser l’outil Java
Visualizer présenté dans le cadre du labo 1.
Les programmes à réaliser comportant dorénavant des acquisitions de données à l’aide de la classe
Console, il vous faudra apporter de légères adaptations afin de les déboguer. En effet, Java
Visualizer ne gère pas la classe Console. Deux alternatives vous sont proposées ci-après.
3
INFORMATIQUE / BLOC1 / PROGRAMMATION DE BASE
LABO 2
4
INFORMATIQUE / BLOC1 / PROGRAMMATION DE BASE
LABO 2
CONSIGNES
1. Téléchargez les fichiers BoulangerieVersion2.java et Console.java, puis placez-
les dans le répertoire labo2
[ATTENTION] N'oubliez pas de spécifier le nom du package labo2 dans les deux fichiers !
[REMARQUE] Le fichier BoulangerieVersion2.java utilise l’encodage ANSI
5
INFORMATIQUE / BLOC1 / PROGRAMMATION DE BASE
LABO 2
IMPORTANT
De l’acquisition de données (avec la classe Console) et du formatage de données (avec la fonction
printf) sont réalisés dans ce programmes. Si ces notions ne vous ont pas encore été expliquées dans le
cadre du cours théorique, ne les utilisez pas dans l’immédiat, mais seulement une fois que cela sera le
cas. Vous pourrez alors améliorer vos anciens programmes.
2. Compilez et exécutez le programme afin de vérifier que le résultat obtenu correspond au résultat
attendu (voir l’exemple d’exécution ci-dessous)
6
INFORMATIQUE / BLOC1 / PROGRAMMATION DE BASE
LABO 2
PHASE PRÉPARATOIRE
La phase préparatoire est une phase de réflexion qui précède le codage de l'application.
Elle permet d'anticiper les difficultés, de dégager une méthode de résolution et de valider les
résultats obtenus par l'application.
Avant toute chose, consultez l'exemple de phase préparatoire mis à votre disposition sur la page
e-learning du cours (section Laboratoires Java, après Laboratoire 2..., fichier Phase préparatoire :
Un exemple).
Téléchargez ensuite le fichier Phase préparatoire : Le modèle situé au même emplacement que
l'exemple. Essayez ensuite de réaliser la phase préparatoire du programme Telechargement décrit
ci-après.
Après une dizaine de minutes, l'enseignant réalisera collectivement une correction de la phase
préparatoire pour cet exercice.
DESCRIPTION DU PROGRAMME
Le programme à réaliser doit être capable de calculer la durée (en heures, minutes, secondes)
nécessaire pour télécharger un fichier sur base :
a. De la taille du fichier exprimée en Mo (mégaoctets)
b. Du débit descendant de la ligne d'accès exprimée en Mbps (mégabits par seconde)
REMARQUE
L'utilisateur peut se rendre sur le site www.speedtest.net pour mesurer le débit descendant de sa
ligne d'accès.
EXEMPLE D’EXÉCUTION
Afin de vous aider dans cette première phase préparatoire, vous pouvez utiliser le cas concret de
l’exemple ci-dessous.
PHASE PRÉPARATOIRE
7
INFORMATIQUE / BLOC1 / PROGRAMMATION DE BASE
LABO 2
c. Les données de départ ( variables pour l'acquisition)
2. Élaborez une solution en choisissant un cas concret (par exemple, un débit descendant de
3,17 Mbps et une taille de fichier de 1520,6 Mo), puis effectuez la résolution à partir de ces
valeurs
3. Envisagez d'autres cas concrets (taille de fichier plus petite et/ou débit descendant plus
rapide, donnée nulle …)
4. Énoncez les étapes principales de votre résolution
PHASE DE RÉALISATION
8
INFORMATIQUE / BLOC1 / PROGRAMMATION DE BASE
LABO 2
Dans l'exercice précédent, pour convertir la durée totale exprimée en secondes en une valeur de
type int, il vous était suggéré d'utiliser un cast. Grâce à certaines fonctions de la classe
java.lang.Math, il existe d'autres moyens.
REMARQUE
La documentation officielle de l'API Java n'existant qu'en anglais, les points 1 à 3 de la recherche
documentaire ci-dessous seront réalisés collectivement avec l'aide de l'enseignant.
L'API JAVA
1. Rendez-vous sur la documentation officielle de l'API Java :
https://docs.oracle.com/en/java/javase/11/docs/api/index.html
2. Ouvrez la page relative à la classe java.lang.Math qui est située dans le module java.base
3. Donnez une brève description du rôle des fonctions suivantes
a. ceil :
b. floor :
c. rint :
d. round :
APPELS DE FONCTION
Réalisez un petit programme nommé Arrondis qui affiche les résultats retournés par les fonctions
décrites précédemment pour les valeurs suivantes :
9
INFORMATIQUE / BLOC1 / PROGRAMMATION DE BASE
LABO 2
PHASE PRÉPARATOIRE
Dorénavant, vous devrez réaliser systématiquement une phase préparatoire avant de coder la
solution !
DESCRIPTION DU PROGRAMME
EXEMPLE D’EXÉCUTION
CONCEPTION ET RÉALISATION
10
INFORMATIQUE / BLOC1 / PROGRAMMATION DE BASE
LABO 2
DESCRIPTION DU PROGRAMME
En fin d'exécution, le programme doit afficher le résultat sous la forme suivante : « La norme du
vecteur (5.0, 4.0) vaut 6.4 ».
EXEMPLE D’EXÉCUTION
CONCEPTION ET RÉALISATION
11
INFORMATIQUE / BLOC1 / PROGRAMMATION DE BASE
LABO 2
[REMARQUE] Les composantes du vecteur saisies par l'utilisateur peuvent être des valeurs
réelles
[RAPPEL] Aidez-vous des fonctions de la classe java.lang.Math
12
INFORMATIQUE / BLOC1 / PROGRAMMATION DE BASE
LABO 2
DESCRIPTION DU PROGRAMME
Un consultant souhaite un programme lui permettant de calculer la durée totale de ses prestations
hebdomadaires et le montant total à facturer en conséquence à son employeur. Son taux horaire est
actuellement de 18,75€.
Afin de comptabiliser le nombre total d'heures prestées durant la semaine (du lundi au vendredi), les
heures prestées chaque jour doivent être fournies au début de l'exécution en respectant le format
[h]h:mm (le premier h renseigné entre crochets signifie que le premier chiffre des heures est
facultatif).
Autrement dit, il doit toujours y avoir deux chiffres pour les minutes, mais il peut y avoir 1 ou 2
chiffres pour les heures. Par exemple, 7:35 le lundi, 10:05 le mardi, ...
REMARQUE
La difficulté de cet exercice réside dans l'obtention des heures et des minutes à partir d'une chaîne
de caractères de la forme h:mm ou hh:mm.
Pour y parvenir, il faut utiliser ces trois fonctions :
La méthode d'instance length de la classe java.lang.String
La méthode d'instance substring de la classe java.lang.String
La méthode statique parseInt de la classe java.lang.Integer
Consultez la documentation de l'API Java pour comprendre leur fonctionnement :
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html
EXEMPLE D’EXÉCUTION
CONCEPTION ET RÉALISATION
13