Introduction à la syntaxe du langage Java Sujet 1

IUT des Pays de l’Adour - RT1
M2207 - Consolidation des bases de la programmation
Introduction à la syntaxe du langage Java
Sujet 1 - Fonctions et tableaux
On souhaite écrire en langage Java une bibliothèque de fonctions permettant d’assurer un certain nombre de
traitements sur un ensemble de valeurs réelles représenté par une structure de données de type tableau. On suppose
que le nombre de valeurs à traiter ne dépassera jamais 100, quel que soit le contexte d’utilisation 1 . Cet exercice a deux
objectifs :
1. Tout d’abord de vous remémorer les principes de base de l’algorithmique (boucles, tests, fonctions,. . .) en
programmant quelques algorithmes élémentaires sur des tableaux.
2. Ensuite, il s’agit bien évidemment de s’habituer à la syntaxe du langage Java et de s’approprier les outils de
votre environnement de programmation (système Linux, ligne de commandes, éditeur de texte, compilateur
Java, JVM,. . .).
?
La
—
—
—
?
?
définition de ces fonctions a déjà été réalisée (phase de conception). Pour chaque fonction il est spécifié :
son nom (et vous devez respecter les majuscules/minuscules),
l’identificateur de chaque paramètre formel,
la fonctionnalité globale et la sémantique des paramètres
Il vous est formellement interdit de modifier la signature de ces fonctions (ex : ajouter des paramètres) ou d’utiliser
des variables globales à vos programmes. Toujours dans le même ordre d’idée, vos fonctions ne doivent faire aucune
lecture ou écriture de données, sauf si ceci est explicitement mentionné dans la description de la fonction.
Bien évidemment, il vous faudra également écrire un programme de test pour vérifier le bons fonctionnement de
ces algorithmes. Ce n’est pas parce qu’un programme compile qu’il n’y a plus aucune erreur. . .
Description des fonctions :
1. Écrire la fonction int ChargerTab(double[] Tab) qui permet de stocker en mémoire N valeurs réelles dans le
tableau Tab. Le nombre N doit être lu par cette fonction qui le renverra au programme appelant comme valeur
de retour (résultat).
2. Écrire la fonction void EditerTab(double[] Tab, int N) qui permet d’afficher (proprement) les N valeurs
réelles stockées dans le tableau Tab.
3. Écrire la fonction double SommeTab(double[] Tab, int N) qui retourne la somme des N valeurs réelles stockées dans le tableau Tab.
4. Écrire la fonction double MoyenneTab(double[] Tab, int N) qui retourne la moyenne des N valeurs réelles
stockées dans le tableau Tab. Cette fonction devra impérativement utiliser la fonction SommeTab écrite précédemment.
5. Écrire les fonctions double MaxTab(double[] Tab, int N) et double MinTab(double[] Tab, int N) qui
retournent respectivement la valeur maximale et la valeur minimale des N valeurs réelles stockées dans le
tableau Tab.
6. Écrire la fonction int SupValTab(double[] Tab, int N, double Val) qui retourne le nombre de valeurs du
tableau Tab qui sont supérieures à la valeur Val passée en paramètre.
1. Rappel : la taille d’un tableau est fixée lors de son initialisation, et cette taille ne peut plus varier par la suite, même si le tableau est
plein ⇒ nous sommes donc obligés de sur-dimensionner nos tableaux.
1
Solution
package m2207 . tp01 ;
// M2207 − C o n s o l i d a t i o n d e s b a s e s de l a programmation
// TP01 − I n t r o s y n t a x e Java : f o n c t i o n s e t t a b l e a u x
// Manuel Munier − IUT d e s Pays de l ’ Adour − 02/2014
import j a v a . u t i l . Scanner ;
public c l a s s MonProgTP01 {
private s t a t i c int ChargerTab ( double [ ] Tab ) {
Scanner s c = new Scanner ( System . i n ) ;
int N;
System . out . p r i n t ( "Combien de v a l e u r s ? " ) ;
N = sc . nextInt ( ) ;
f o r ( int i =0; i <N; i ++) {
System . out . p r i n t ( " S a i s i r v a l e u r #"+i+" " ) ;
Tab [ i ] = s c . nextDouble ( ) ;
}
return N;
}
private s t a t i c void EditerTab ( double [ ] Tab , int N) {
f o r ( int i =0; i <N; i ++) {
System . out . p r i n t l n ( " Valeur #"+i+" = "+Tab [ i ] ) ;
}
}
private s t a t i c double SommeTab( double [ ] Tab , int N) {
double somme = 0 . 0 ;
f o r ( int i =0; i <N; i ++) {
somme = somme+Tab [ i ] ;
}
return somme ;
}
private s t a t i c double MoyenneTab ( double [ ] Tab , int N) {
return SommeTab( Tab ,N) /N;
}
private s t a t i c double MaxTab( double [ ] Tab , int N) {
double max = Tab [ 0 ] ;
f o r ( int i =1; i <N; i ++) {
i f ( Tab [ i ]>max) {
max = Tab [ i ] ;
}
}
return max ;
}
2
private s t a t i c double MinTab ( double [ ] Tab , int N) {
double min = Tab [ 0 ] ;
f o r ( int i =1; i <N; i ++) {
i f ( Tab [ i ]<min ) {
min = Tab [ i ] ;
}
}
return min ;
}
private s t a t i c int SupValTab ( double [ ] Tab , int N, double Val ) {
int r e s u l t a t = 0 ;
f o r ( int i =0; i <N; i ++) {
i f ( Tab [ i ]> Val )
r e s u l t a t ++;
}
return r e s u l t a t ;
}
public s t a t i c void main ( S t r i n g [ ] a r g s ) {
double [ ] t a b l o ;
t a b l o = new double [ 1 0 0 ] ;
int nb = ChargerTab ( t a b l o ) ;
EditerTab ( t a b l o , nb ) ;
System . out . p r i n t l n ( "Somme
System . out . p r i n t l n ( "Moyenne
System . out . p r i n t l n ( "Maximum
System . out . p r i n t l n ( "Minimum
=
=
=
=
"+SommeTab( t a b l o , nb ) ) ;
"+MoyenneTab ( t a b l o , nb ) ) ;
"+MaxTab( t a b l o , nb ) ) ;
"+MinTab ( t a b l o , nb ) ) ;
Scanner s c = new Scanner ( System . i n ) ;
System . out . p r i n t l n ( " Valeur s e u i l " ) ;
double s e u i l = s c . nextDouble ( ) ;
System . out . p r i n t l n ( "Nb v a l e u r s sup à "+s e u i l+" = "+SupValTab ( t a b l o , nb , s e u i l ) ) ;
}
}
3