Académique Documents
Professionnel Documents
Culture Documents
Laboratoire 2 - Premiers Programmes Java
Laboratoire 2 - Premiers Programmes Java
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 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
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
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 !
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.
5
INFORMATIQUE / BLOC1 / PROGRAMMATION DE BASE LABO 2
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
1. Listez les données requises en distinguant :
7
INFORMATIQUE / BLOC1 / PROGRAMMATION DE BASE LABO 2
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
1. Dans le répertoire labo2, créez un fichier nommé Telechargement.java
2. Déclarez une classe nommée Telechargement et la fonction principale main
3. Codez votre solution en respectant la structure suivante :
a. Déclaration des constantes et des variables
b. Initialisation des variables destinées à l'acquisition avec les valeurs du cas concret
c. Traitement des données en respectant les étapes de votre résolution sur papier
[SUGGESTION] Vous pouvez utiliser un cast pour passer d’une valeur réelle à une
valeur entière
d. Affichage des résultats
4. [FONCTIONNALITÉ] Compilez, puis testez votre programme afin de vérifier que le résultat
correspond à celui attendu
5. [QUALITÉ DU CODE] Est-ce que vos identifiants respectent les conventions de nommage ? Sont-
ils révélateurs des données affectées ? Avez-vous ajouté des commentaires afin d'améliorer
la lisibilité du programme ?
6. [SI DÉJÀ VU] Intégrez au programme l'acquisition des données à l'aide des fonctions de la
classe Console
7. [AMÉLIORATION POSSIBLE] Réalisez l'acquisition du nom du fichier et affichez en fin d'exécution
un message de la forme : « Durée du téléchargement du fichier "Fedora-Xfce-Live-x86_64-32-
1.6.iso" estimée à 1h 3min 57sec ».
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/18/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
En résumé, Math.ceil(double a) est une méthode utile pour arrondir un nombre à virgule flottante à
a. ceil : la valeur entière supérieure la plus proche, tout en gérant correctement les cas spéciaux.
En résumé, Math.floor(double a) est une méthode utile pour arrondir un nombre à virgule flottante
b. floor : à la valeur entière inférieure la plus proche, tout en gérant correctement les cas spéciaux. Elle
est complémentaire à Math.ceil(double a), qui arrondit un nombre vers le haut.
En résumé, Math.rint(double a) est une méthode utilisée pour arrondir un nombre à virgule
c. rint : flottante au nombre entier le plus proche, en prenant en compte les cas spéciaux et en utilisant
la règle de l'entier pair en cas d'égalité.
d. round : En résumé, Math.round(double a) est une méthode utilisée pour arrondir un nombre à virgule
flottante au nombre entier le plus proche, avec une règle spécifique en cas d'égalité (arrondi
vers l'infini positif). Elle gère également les cas spéciaux des valeurs NaN, de l'infini négatif
et des limites de long
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
Un concessionnaire automobile souhaite un programme lui facilitant le calcul du montant TVAC
qu'un client doit lui payer à l'achat d'une voiture.
Les montants des voitures exposées dans le showroom sont les prix de vente HTVA. Seule cette
valeur doit être fournie au début de l'exécution du programme.
La TVA pratiquée sur les voitures en Belgique est de 21%.
En raison des conditions salon sur les marques vendues, une réduction de 3% est accordée à chaque
achat. Cette réduction porte sur le montant TVAC.
En fin d'exécution, le programme doit afficher un récapitulatif reprenant :
a. Le montant de la TVA
b. Le montant de la remise
c. Le montant final que le client doit payer (en incluant la TVA et la remise)
EXEMPLE D’EXÉCUTION
CONCEPTION ET RÉALISATION
1. Comme dans l'exercice 2, effectuez la phase préparatoire avant la phase de programmation
2. Le programme doit être codé dans un fichier nommé VenteVoiture.java
10
INFORMATIQUE / BLOC1 / PROGRAMMATION DE BASE LABO 2
DESCRIPTION DU PROGRAMME
Un professeur de mathématiques souhaite un programme capable de calculer la norme d'un vecteur
du plan afin d'aider ses élèves. Avant d'être affichée, la valeur de la norme doit être arrondie à
1 chiffre après la virgule.
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
1. Effectuez la phase préparatoire avant la phase de programmation
N'oubliez pas de calculer l'arrondi de la norme durant l'étape de traitement des données (les
fonctions de formatage, telles que printf et format, ne peuvent donc être utilisées)
Assurez-vous que l'arrondi obtenu est correct en calculant la norme du vecteur (9, 16).
Celle-ci vaut 18,4 une fois arrondie à 1 chiffre après la virgule
2. Le programme doit être codé dans un fichier nommé NormeVecteur.java
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/18/docs/api/java.base/java/lang/String.html
EXEMPLE D’EXÉCUTION
CONCEPTION ET RÉALISATION
1. Effectuez la phase préparatoire avant la phase de programmation
2. Le programme doit être codé dans un fichier nommé HeuresPrestees.java
13