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
© Copyright 2024 Paperzz