Le but de cette série est de vous faire travailler avec quelques types prédéfinis de Java: les caractères, les tableaux et les chaînes de caractères. Référez-vous aux transparents et, éventuellement, aux vidéos du MOOC pour résoudre les exercices.
Nous allons dans cet exemple écrire un programme permettant à l'utilisateur de calculer la moyenne de classe ainsi que les écarts à la moyenne du futur test du cours d'informatique.
Vu le nombre d'étudiants suivant le cours, il est impossible de stocker la note de chaque étudiant dans une variable distincte. Nous avons donc besoin d'un tableau. L'ébauche du programme est la suivante :
import java.util.Scanner; class Moyenne { private static Scanner scanner = new Scanner(System.in); public static void main(String[] args) { // Demande le nombre d'étudiants à l'utilisateur int nombreEtudiants; System.out.print("Donnez le nombre d'etudiants : "); nombreEtudiants = scanner.nextInt(); double moyenne = 0.0; // Initialise un tableau pouvant contenir autant // de notes que d'étudiants double [] notes = new double[nombreEtudiants]; } } |
Maintenant que notre tableau est déclaré, nous pouvons le remplir en demandant à l'utilisateur la note de chaque étudiant. Puisque le nombre d'itérations est connu, nous allons utiliser une boucle for. Ainsi, à chaque itération, nous pouvons demander une note et la stocker dans une case du tableau. On en profite aussi pour calculer la somme des notes au fur et à mesure qu'on les reçoit.
import java.util.Scanner; class Moyenne { private static Scanner scanner = new Scanner(System.in); public static void main(String[] args) { // Demande le nombre d'étudiants à l'utilisateur int nombreEtudiants; System.out.print("Donnez le nombre d'etudiants : "); nombreEtudiants = scanner.nextInt(); double moyenne = 0.0; // Initialise un tableau pouvant contenir autant // de notes que d'étudiants double[] notes = new double[nombreEtudiants]; // Lecture des notes for (int i=0; i < nombreEtudiants; i++) { System.out.print(" Note etudiant " + i + " : " ); // Stocke la note du ième étudiant // dans la ième case du tableau notes[i] = scanner.nextDouble(); moyenne = moyenne + notes[i]; } } } |
Il est maintenant possible de calculer la moyenne de classe et d'afficher l'écart à la moyenne pour chaque étudiant.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
import java.util.Scanner; class Moyenne { private static Scanner scanner = new Scanner(System.in); public static void main(String[] args) { // Demande le nombre d'étudiants à l'utilisateur int nombreEtudiants = 0; System.out.print("Donnez le nombre d'etudiants : "); nombreEtudiants = scanner.nextInt(); double somme = 0.0; // Initialise un tableau pouvant contenir autant // de notes que d'étudiants double[] notes = new double[nombreEtudiants]; // Lecture des notes for (int i=0; i < nombreEtudiants; i++) { System.out.print(" Note etudiant " + (i + 1) + " : " ); // Stocke la note du ième étudiant // dans la ième case du tableau notes[i] = scanner.nextDouble(); somme = somme + notes[i]; } double moyenne = somme / nombreEtudiants; // Affichage des résultats System.out.println("Moyenne de classe : " + moyenne); System.out.println(" Etudiant : note (ecart a la moyenne)"); for (int i = 0; i < nombreEtudiants; i++) { System.out.println( " " + i + " : " + notes[i] + " (" + (notes[i] - moyenne) + ")"); } } } |
Exemple d'exécution du programme :
Donnez le nombre d'etudiants : 4 Note etudiant 0 : 4.0 Note etudiant 1 : 4.0 Note etudiant 2 : 5.0 Note etudiant 3 : 6.0 Moyenne de classe : 4.75 Etudiant : note (ecart a la moyenne) 0 : 4.0 (-0.75) 1 : 4.0 (-0.75) 2 : 5.0 (0.25) 3 : 6.0 (1.25)
Pour préparer le cours du mercredi 2.10.2024, vous pouvez, après avoir visionné les vidéos en lignes de la semaine 4 et de la semaine 5 de MOOC, répondre aux quiz des mêmes semaines : quiz de la semaine 4 et quiz de la semaine 5.
Vérifiez que vous savez convertir entre les codes et les caractères de la norme Unicode en écrivant un petit programme, par exemple intitulé Codes.java, avec le fonctionnement suivant:
Unicode de * : 42 Unicode de 9 : 57 Unicode de W : 87 Caractere correspondant a l'Unicode 34 : " Caractere correspondant a l'Unicode 65 : A Caractere correspondant a l'Unicode 123 : {
LA NORME UNICODE ------------------------------------------------------------------ 65 = A 79 = O 97 = a 111 = o 66 = B 80 = P 98 = b 112 = p 67 = C 81 = Q 99 = c 113 = q 68 = D 82 = R 100 = d 114 = r 69 = E 83 = S 101 = e 115 = s 70 = F 84 = T 102 = f 116 = t 71 = G 85 = U 103 = g 117 = u 72 = H 86 = V 104 = h 118 = v 73 = I 87 = W 105 = i 119 = w 74 = J 88 = X 106 = j 120 = x 75 = K 89 = Y 107 = k 121 = y 76 = L 90 = Z 108 = l 122 = z 77 = M 109 = m 78 = N 110 = n -------------------------------------------------------------------Ecrivez un programme Conversion.java qui demande à l'utilisateur d'entrer une seule lettre A..Z ou a..z au clavier (utilisez par exemple l'instruction scanner.next().charAt(0)).
Entrez une seule lettre A..Z ou a..z : A Version minuscule : a Entrez une seule lettre A..Z ou a..z : b Version majuscule : B Entrez une seule lettre A..Z ou a..z : * Caractere non valable
Écrivez un programme Scalaire.java qui calcule le produit scalaire de deux vecteurs, implémentés au moyen de tableaux unidimensionnels. Votre programme devra utiliser (entre autre) les éléments suivants :
Rappel :
Le produit scalaire de a par b est: a·b =
a1*b1 + a2*b2 + ... +
an*bn
Exemple: a = (5, 3, -1) b = (2, 1, 2) a·b = 11
1 | |||||||||
1 | 1 | ||||||||
1 | 2 | 1 | |||||||
1 | 3 | 3 | 1 | ||||||
1 | 4 | 6 | 4 | 1 | |||||
1 | 5 | 10 | 10 | 5 | 1 | ||||
1 | 6 | 15 | 20 | 15 | 6 | 1 | |||
1 | ... | ... | ... | ... | ... | ... | 1 | ||
1 | ... | ... | ... | ![]() | ![]() | ... | ... | 1 | |
1 | ... | ... | ... | ... | ![]() | ... | ... | ... | 1 |
Écrire un programme qui demande à l'utilisateur d'entrer un nombre
n>=1, qui stocke le triangle de Pascal de taille n
dans un tableau de tableaux et qui l'affiche. Le tableau de tableaux
devra avoir la structure triangulaire ci-dessus, ce qui signifie qu'on ne réservera
pas de place mémoire inutile pour des éléments indéfinis du triangle.
Méthode :
Le programme doit afficher le triangle de Pascal ligne par
ligne. Notez que pour calculer la ième ligne, il
suffit de connaître la ligne i-1.
Dans cet exercice, vous devez écrire un programme Napoleon.java
permettant de retrouver
le nom d'une personne dont on connaît le prénom.
L'information d'association entre les noms et les prénoms connus
sera représentée sous la forme d'une variable noms
de type String contenant une série de prénoms suivis
des noms qui leur sont associés:
String noms = "Napoleon Bonaparte Bill Gates Claudia Schiffer Martina Hingis ";Méthode :
Indication : pensez à rechercher les espaces séparant les mots de la chaine à partir de la position index, ce qui vous permet d'isoler le nom recherché. Vous pourrez utiliser les méthodes prédéfinies suivantes de la classe String :
Dans un premier temps vous pourrez supposer que la chaîne introduite par l'uilisateur correspond toujours effectivement à un prénom. Vous pourrez ensuite réfléchir à une solution plus complexe (qui, par exemple, signale à l'utilisateur qu'il s'est trompé s'il a introduit un nom au lieu d'un prénom).
Exemples de palindromes:
Otto Elu par cette crapule Esope reste ici et se repose Tu l'as trop ecrase, Cesar, ce Port-Salut A man, a plan, a canal, PanamaExemples de non-palindromes:
Cours de Java Le pont de la rivière KwaiEcrivez un programme Palindrome.java qui :
Exemple d'exécution:
Entrez un mot ou une phrase : Otto C'est un palindrome !Pour ce programme, il convient d'utiliser plusieurs méthodes prédéfinies de la classe String, comme par exemple charAt(), toLowerCase() et length().
Indication : l'appel Character.isLetter(c), où c est un caractère, permet de tester si c est alphabétique (Character.isLetter(c) est à écrire tel quel. nous verrons un peu plus tard ce que sont les méthodes statiques qui s'utilisent de cette façon).
Rappel : Pour utiliser le type ArrayList, il faut importer les classes ie définissant ce type, au moyen de la directive :
import java.util.ArrayList
En vous aidant si nécessaire d'un programme, répondez aux questions suivantes :
A : Quelles valeurs contient le tableau tab après l'exécution du programme suivant? Expliquez.
1 2 3 4 5 6 7 8 9 10 11 12 |
import java.util.ArrayList; class DynamicArray1 { public static void main(String[] args) { final int TAILLE = 10; ArrayList<Integer> tab = new ArrayList<Integer>(); for (int i = 0; i < TAILLE; ++i) { tab.add(tab.size()); } } } |
B : Quelles valeurs contient le tableau tab2 après l'exécution du programme suivant? Expliquez.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
import java.util.ArrayList; class DynamicArray2 { public static void main(String[] args) { ArrayList<Integer> tab1 = new ArrayList<Integer>(); tab1.add(99); tab1.add(1); tab1.add(0); ArrayList<Integer> tab2 = new ArrayList<Integer>(); for(int i=0; i < tab1.size(); ++i) { tab2.add(tab1.get(0)); } } } |
Vérifier si le nombre n est pair (si oui, il n'est pas premier sauf si c'est 2).
Pour tous les nombres impairs (plus grand que 1) inférieurs ou égaux à la racine carrée de n, vérifier s'ils divisent n. Si ce n'est pas le cas, alors n est premier.
Les nombres premiers compris entre 2 et 100 sont les suivants : 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
Les devoirs du MOOC, même s'ils ne sont pas notés pour vous, sont un bon moyen de vous entraîner aussi. Depuis cette semaine, vous disposez de suffisamment d'outils pour aborder le devoir de la semaine 4 (notez qu'il n'y a pas de devoir en semaine 5 du MOOC mais que le devoir qui apparaît en semaine 4 teste aussi des notions de la semaine 5).
Il est d'usage courant, en pratique, que les fichiers sources commencent par un commentaire donnant diverses informations sur le fichier, telles que : l'auteur du programme, sa date de création, des notes sur les droits d'auteurs etc. Ce tutoriel vous montre comment configurer IntelliJ de sorte à ce que ce genre de commentaires soient automatiquement inclus, à chaque création de nouveaux fichiers.
Commencez par cliquer sur "Window->Preferences"
dans le menu principal :
Dans le dialogue "Preferences", ouvrez ensuite "Editor->Code Style->File and Code Templates"
. Vous devriez voir apparaître le menu suivant :
Sélectionnez " Class " (Vous pouvez aussi procéder comme suit pour "Enum" et "Interface" que vous retrouverez souvent dans le futur) dans la liste et ajoutez le texte suivant comme affiché sur l'image ci-dessous.
/* * Author: John Doe * Date: ${date} */
N'oubliez pas de remplacer le nom existant par le votre !
Confirmez ensuite en cliquant sur OK et fermez le dialogue "Preferences". Créez enfin une nouvelle classe pour tester votre nouvel environnement. Le début du fichier contenant cette classe devrait alors ressembler à ceci :