Comprendre l'utilisation des fonctions
Exercice 1 : Soit la fonction :
public static int f( int x)
{
int resultat;
resultat = -x * x + 3 * x – 2;
return resultat;
}
a. Écrivez la fonction main() qui affiche le résultat de la fonction f(x) pour x = 0.
b. Transformez la fonction main() de façon à calculer et à afficher le résultat de la fonction pour x entier variant entre -5 et 5. Utilisez pour cela, dans la fonction main(), une boucle for avec un indice variant entre -5 et 5.
c. Pour déterminer le maximum de la fonction f(x) entre -5 et 5, calculez la valeur de f(x) pour chacune de ces valeurs, et stockez le maximum dans une variable max.
Solution
public static void main(String [] parametre) {
int R ;
R = f(0) ;
System.out.print(R);
}
b. Calculer f(x) pour x variant entre –5 et 5
public static void main(String [] parametre) {
int R, max = f(0);
for (int x = -5; x <= 5; x++) {
R = f(x) ;
System.out.print(R) ;
}
}
c. Déterminer le maximum de la fonction f(x) entre -5 et 5,
public static void main(String [] parametre) {
int R, max = f(0);
for (int x = -5; x <= 5; x++) {
R = f(x) ;
if (R > max) max = R ;
}
System.out.print("Le max est : " + max);
}
Détecter des erreurs de compilation concernant les paramètres ou le résultat d’une fonction
Exercice 2 :
Déterminez les erreurs de compilation des extraits de programmes suivants :
a. En utilisant la fonction max() décrite au cours de ce chapitre :
public static void main(String [] parametre)
{
// Déclaration des variables
double v1, v2, sup;
System.out.print("Entrer une valeur : ");
v1 = Lire.d();
System.out.print("Entrer une valeur : ");
v2 = Lire.d();
sup = max (v1,v2);
System.out.print("Le max de " + v1 + " et " + v2 + " est " + sup);
} // fin de main()
b.
public static int max (int a, int b)
{
float m = a;
if (m > b) m = b;
return m;
} // fin de max()
c. En utilisant la fonction menu() décrite au cours de ce chapitre :
public static void main(String [] parametre)
{
// Déclaration des variables
int v1, v2 ;
System.out.print("Entrer une valeur : ");
v1 = Lire.i();
v1 = menu (v2);
} // fin de main()
d.
public static void menu (int c)
{
switch (c)
{...
}
return c;
}
Solution
a. La fonction max() est définie dans ce chapitre, avec deux paramètres entiers alors qu'ici les deux paramètres utilisés sont de type double.
c. La fonction menu() décrite au cours de ce chapitre, est de type void. L'instruction v1 = menu(v2) n'est pas valide, à cause de la présence de l'affectation v1 = ….
d. L'entête de la fonction menu() précise qu'elle est de type void. Le corps de la fonction ne peut donc pas posséder d'instruction return.
Écrire une fonction simple
Exercice 3 :
Écrivez la fonction pourcentage(), qui permet de calculer les pourcentages d’utilisation de la Carte Bleue, du chéquier et des virements automatiques, sachant que la formule de calcul du pourcentage pour la Carte Bleue est, comme nous l’avons vu au chapitre 1, « Stocker une information », la suivante :
Nombre de paiements par Carte Bleue / Nombre total de paiements * 100.
Suivez les étapes décrites dans le présent chapitre :
a. Déterminez les instructions composant la fonction.
b. Associez le nom de la fonction aux instructions.
c. Pour déterminer les paramètres de la fonction, recherchez les valeurs pouvant modifier le résultat du calcul.
Aide : l’en-tête d’une fonction ayant deux paramètres entiers s’écrit :
public static type nomdelafonction( int a, int b).
d. Précisez le type de résultat fourni par la fonction.
e. Écrivez la fonction main() qui fait appel à la fonction pourcentage() et qui permette d’obtenir une exécution telle que :
Nombre de paiement par Carte Bleue : 5
Nombre de cheques emis : 10
Nombre de virements automatiques : 5
Vous avez emis 20 ordres de debit dont 25.0 % par Carte Bleue
- 50.0 % par cheque
- 25.0 % par virement
Solution
a. Les instructions composant la fonctions sont :
double prct ;
prct = (double) nb / t * 100;
b. En supposant que le nom de la fonction soit pourcentage(), l'entête de la fonction s'écrit :
public static ………… pourcentage(…………) {
double prct = (double) nb / t * 100;
}
c. Les deux valeurs pouvant modifier le résultat sont t et nb. Les paramètres de la fonction s'écrivent :
public static … pourcentage(int t, int nb)
d. Le résultat étant stocké dans la variable prct, de type double, la méthode est doit être de type
double. L'entête de la fonction s'écrit donc :
public static double pourcentage(int t, int nb)
La fonction pourcentage() s'écrit :
public static double pourcentage(int t, int nb) {
double prct = (double) nb / t * 100;
return prct ;
}
e. Ecrire la fonction main() qui fait appel à la fonction pourcentage()
public class Exercice5 {
public static void main (String [] arg) {
int nbCB, nbCheque, nbVirement, nbDebit;
double résultat;
System.out.print(" Nombre d'achat Cartes Bleues : ");
nbCB = Lire.i();
System.out.print(" Nombre de cheques emis : ");
nbCheque = Lire.i();
System.out.print(" Nombre de virements automatiques : ");
nbVirement = Lire.i();
nbDebit = nbCB + nbCheque + nbVirement;
System.out.println("Vous avez emis " + nbDebit + " debits ");
résultat = pourcentage(nbDebit, nbCB) ;
System.out.println(" dont " + résultat + " % par Carte bleue ");
résultat = pourcentage(nbDebit, nbCheque) ;
System.out.println(" " + résultat + " % par Cheques ");
résultat = pourcentage(nbDebit, nbVirement) ;
System.out.println(" " + résultat + " % par Virement automatique ");
}
public static double pourcentage(int t, int nb) {
double prct = (double) nb / t * 100;
return prct ;
}
}
Aucun commentaire:
Enregistrer un commentaire