Série 2:
Première programmation en Java

Buts

Cette série a pour but de vous faire faire vos premiers pas en Java. Elle doit vous permettre de vous familiariser avec l'écriture, la compilation et la correction de programmes. Les différents tutoriaux IntelliJ (ou Eclipse si vous choisissez cet outil) doivent impérativement avoir été consultés si vous ne connaissez pas cet environnement. N'hésitez pas à faire appel aux assistants pour vous aider en cas de problème!


Exercice 1: IntelliJ Tutorial 2: Hello, World! (IntelliJ, Niveau 0)

Vous allez maintenant créer votre première petite application Java : encore le petit programme qui va afficher à l'écran Hello, World!.

Il faut au préalable avoir créé un projet Serie02 dans IntelliJ. Si vous ne vous rappelez plus comment faire référez vous au premier tutoriel IntelliJ.

Lorsque le projet Serie02 est créé, faites un clic gauche sur le dossier src (fichier source) à gauche de l'écran. Dans le menu qui apparaît, sélectionnez New->Java Class:

 

L'assistant New Java Class va alors s'ouvrir. Entrez HelloWorld en guise de nom (Name) et appuyez sur Enter:

 

L'éditeur intégré à IntelliJ va alors s'ouvrir au centre de l'espace de travail et vous exposer le code source de votre nouvelle classe; ce qui devrait ressembler à ceci :

 

Copiez maintenant le texte suivant entre les accolades ouvrante et fermante de votre classe ("{" et "}"):

    public static void main(String [] args) {
        System.out.println("Hello, World!");
    }

Pour faire ceci, sélectionner le texte à copier avec le bouton gauche de votre souris, puis copiez-le en vous plaçant au bon endroit dans l'éditeur IntelliJ et en cliquant sur le bouton du milieu de votre souris.

Note: il est normal que vous ne compreniez pas encore tous les éléments de ce code (en particulier pourquoi il y a un public devant le nom de la classe). Ces éléments vous seront expliqués graduellement en cours de semestre.

Utilisez le raccourci Ctrl + S ou cliquez sur File->Save All dans le menu principal.

 

Une fois votre portion de code insérée, vous pouvez l'exécuter en cliquant sur la petite flèche verte dans le bandeau latéral gauche. Vous pouvez aussi le faire en cliquant avec le bouton droit de la souris sur HelloWorld.java dans la vue Navigator et sélectionnez Run 'HelloWorld.main() dans le menu qui apparaît :

 

Maintenant, une vue Console va s'ouvrir qui va afficher le texte Hello, World!

Réglage de l'encodage des caractères

Cette procédure est nécessaire afin d'éviter tout problème avec les caractères accentués. Ouvrez les préférences d'IntelliJ, cliquez sur Editor puis sur File encoding pour avoir accès à la configuration de l'espace de travail. Changez le réglage pour Global Encoding en cliquant sur UTF-8 dans le menu déroulant.



Exercice 2: Tutorial IntelliJ 3: Insertion de fichiers utilitaires (IntelliJ, Niveau 0)

Dans de nombreux exercices qui vous seront proposés, des fichiers utilitaires vous seront fournis. Il s'agit dans la plupart des cas de programmes partiels qu'il faudra compléter (ceci vous évite de tout devoir saisir vous même). Dans ce tutorial vous apprendrez à insérer un fichier utilitaire dans un projet IntelliJ existant. Le fichier Repeater.java, fourni ici, nous servira d'exemple de fichier à insérer.

Premièrement, télécharger le fichier Repeater.java et stockez-le dans votre répertoire de travail (par exemple [chemin vers le workspace IntelliJ]/Serie02/src). Votre fichier devrait apparaitre à gauche dans le menu de votre espace de travail IntelliJ:

 

Double-cliquez sur le nouveau fichier qui apparaît dans votre projet: Repeater.java. Votre environnement de travail devrait alors ressembler à quelque chose comme ceci:

Au cas où le fichier n'apparaîtrait pas spontanément, vous pouvez faire un clic droit sur le dossier src dans le navigateur puis Reload from disk.




Exercice 3: Tutorial IntelliJ 4: Correction d'erreurs (IntelliJ, Niveau 0)

1. Trouver des erreurs de syntaxe avec IntelliJ (Niveau 0)

Vous apprendrez ici comment IntelliJ met en évidence vos erreurs de syntaxe et vous donne des indications sur comment les corriger.

Copiez d'abord le fichier Error.java dans votre répertoire de travail (par exemple [chemin vers le workspace IntelliJ]/Serie02/src et insérez-le dans votre projet Serie02 comme vous l'avez appris dans le tutorial précédent. Double-cliquez ensuite sur le fichier Error.java dans la vue Navigator. Le contenu du ficher apparaît alors dans l'éditeur. Vous remarquerez alors que des éléments sont soulignés en rouge et d'autres sont coloriés en rouge. Les éléments soulignés ou colorié vous indiquent qu'il y a des erreurs à ces endroits de votre code.

 

Placez maintenant votre curseur sur la ligne de code numéro 4. Une ampoule devrait apparaître à gauche, cette ampoule est une aide pour comprendre l'erreur en question. Vous pouvez ensuite cliquez sur Insert.

 

Le texte printnl est aussi être surligné en rouge. Cliquez à nouveau sur la petite ampoule et sélectionnez rename reference puis sur le println.

Il y a aussi une erreur sur la ligne 5, faites comme pour la ligne 4 et cliquez ensuite sur change variable "b" to "String".

Dans les lignes précédentes, nous avons mal orthographié public et static. Parfois, l'ampoule ne peut pas modifier intuitivement l'erreur est c'est à vous de décider de ce qu'il faut faire. Lorsque vous développez des projets, IntelliJ « apprend» néanmoins leur contenu et structure, connait toutes les classes impliquées, y compris les classes prédéfinies, et il peut alors vous faire des suggestions pertinentes sur comment corriger. Ces suggestions sont indiquées par les fameuses petites ampoules de tout à l'heure.

Il s'agit grosso-modo des messages d'erreurs générés par le compilateur de Java. Ces indications sont très utiles : combinées avec vos connaissances de Java, elles vous permettront de corriger vos erreurs. Ici, après avoir changé pulbic en public et statci en static toutes les bulles rouges associées aux lignes erronées sont grisées. Il vous suffit de sauvegarder votre fichier pour voir les croix disparaitre. Votre syntaxe est maintenant correcte:

2. Exercices simples

Les différentes variantes suivantes

du programme PasSalut.java contiennent toutes des erreurs de syntaxe. Incluez ces fichiers dans le projet IntelliJ associé à la série courante. Utilisez ensuite les techniques que vous venez d'apprendre pour corriger ces fichiers.

3. Encore des erreurs (Niveau 2)

On continue a s'exercer, mais cette fois avec un programme un peu plus long où il y a plusieurs erreurs. Ouvrez dans IntelliJ et corrigez à votre guise le programme Declarations.java jusqu'à ce qu'il soit exempt d'erreurs.

4. Cette fois c'est à l'exécution... (Niveau 2)

Ouvrez dans le projet courant de IntelliJ le programme FauxCalcul.java. Ici IntelliJ est muet et aucune ligne n'apparait comme étant erronée. Exécuter maintenant votre programme. Le message d'erreur suivant devrait apparaitre.

java.lang.ArithmeticException: / by zero
        at FauxCalcul.main(FauxCalcul.java:11)  
On voit que la machine virtuelle Java indique le nom du fichier et le numéro de ligne où le problème s'est produit: ligne 11 du fichier FauxCalcul.java. Vous pouvez vous positionner sur cette ligne de code en cliquant sur "(FauxCalcul.java:11)" qui apparait dans la vue "Console" de IntelliJ. Essayez de faire afficher à votre programme les différentes valeurs des variables juste avant que l'erreur se soit produite afin d'expliquer l'erreur.
Nous verrons plus tard qu'il existe des moyens plus sophistiqués dans IntelliJ pour traquer efficacement ce genre d'erreur.



Exercice 4: MOOC (cours en ligne) (MOOC, Niveau 1)

Pour préparer le cours du mercredi 27.09.2023, vous pouvez, après avoir visionné les vidéos en ligne de la semaine 1 («Bases de programmation»), répondre au quiz de la même semaine.


Exercice 5: Eclipse Tutorial 3 (inutile si vous travaillez avec IntelliJ): Hello, World! (Eclipse, Niveau 0)

Vous allez maintenant créer votre première petite application Java : encore le petit programme qui va afficher à l'écran "Hello, World!".

Il faut au préalable avoir créé un projet Serie02 dans Eclipse. Si vous ne vous rappelez plus comment faire référez vous au deuxième tutorial Eclipse.

Lorsque le projet Serie02 existe placez votre souris sur la vue "Navigator" de Eclipse et cliquez avec le bouton droit de la souris sur le dossier Serie02. Dans le menu qui apparaît, sélectionnez "New->Class":

 

L'assistant "New Java Class" va alors s'ouvrir. Entrez "HelloWorld" en guise de nom ("Name") et cliquez sur "Finish":

 

L'éditeur intégré à Eclipse va alors s'ouvrir au centre du workbench et vous exposer le code source de votre nouvelle classe; ce qui devrait ressembler à ceci :

 

Copiez maintenant le texte suivant entre les accolades ouvrante et fermante de votre classe ("{" et "}"):

    public static void main(String [] args) {
        System.out.println("Hello, World!");
    }

Pour faire ceci, sélectionner le texte à copier avec le bouton gauche de votre souris, puis copiez-le en vous plaçant au bon endroit dans l'éditeur Eclipse et en cliquant sur le bouton du milieu de votre souris.

Note: il est normal que vous ne compreniez pas encore tous les éléments de ce code (en particulier pourquoi il y a un public devant le nom de la classe). Ces éléments vous seront expliqués graduellement en cours de semestre.

Cliquez sur le bouton "Save" ou cliquez sur "File->Save All" dans le menu principal.

 

Une fois votre portion de code insérée, cliquez avec le bouton droit de la souris sur "HelloWorld.java" dans la vue "Navigator" et sélectionnez "Run As->1 Java Application" dans le menu qui apparaît :

 

Maintenant, une vue "Console" va s'ouvrir qui va afficher le texte "Hello, World!"

Notez que si ça n'est pas le cas par défaut sur votre Eclipse, vous pouvez faire numéroter les lignes de votre code (fortement recommandé) en cliquant avec le bouton droit et en sélectionnant l'option "Preferences > General > Editors > Text editors" :


Réglage de l'encodage des caractères

Cette procédure est nécessaire afin d'éviter tout problème avec les caractères accentués. Ouvrez les préférences d'Eclipse, déroulez la section nommée General puis cliquez sur Workspace pour avoir accès à la configuration de l'espace de travail. Changez le réglage pour Text file encoding en cliquant sur Other et en sélectionnant UTF-8 dans le menu déroulant.

Réglage de la terminaison des lignes

Cette partie est également nécessaire pour éviter tout problème de compatibilité avec le correcteur automatique utilisé dans le cadre de ce cours. Toujours dans les réglages liés à l'espace de travail, changez le réglage pour New text file line delimiter en cliquant sur Other et en sélectionnant Unix dans le menu déroulant.



Exercice 6: Tutorial Eclipse 4 (inutile si vous travaillez avec IntelliJ): Insertion de fichiers utilitaires (Eclipse, Niveau 0)

Dans de nombreux exercices qui vous seront proposés, des fichiers utilitaires vous seront fournis. Il s'agit dans la plupart des cas de programmes partiels qu'il faudra compléter (ceci vous évite de tout devoir saisir vous même). Dans ce tutorial vous apprendrez à insérer un fichier utilitaire dans un projet Eclipse existant. Le fichier Repeater.java, fourni ici, nous servira d'exemple de fichier à insérer.

Premièrement, télécharger le fichier Repeater.java et stockez-le dans votre répertoire de travail (par exemple [chemin vers le workspace]/Serie02/src). Tout ce qu'il suffit de faire maintenant est d'informer Eclipse que le contenu du répertoire associé au projet Serie02 a changé.Pour ce faire, cliquez au moyen du bouton droit de la souris sur le projet Serie02 dans la vue "Navigator" de Eclipse et sélectionnez "Refresh" dans le menu qui apparaît. Une autre option consiste à sélectionner le projet en question et presser sur la touche F5

 

Double-cliquez sur le nouveau fichier qui apparaît dans votre projet: Repeater.java. Votre environnement de travail devrait alors ressembler à quelque chose comme ceci:




Exercice 7: Tutorial Eclipse 5 (inutile si vous travaillez avec IntelliJ): Correction d'erreurs (Eclipse, Niveau 0)

1. Trouver des erreurs de syntaxe avec Eclipse (Niveau 0)

Vous apprendrez ici comment Eclipse met en évidence vos erreurs de syntaxe et vous donne des indications sur comment les corriger.

Copiez d'abord le fichier Error.java dans votre répertoire de travail (par exemple [chemin vers le workspace]/Serie02/src et insérez-le dans votre projet Serie02 comme vous l'avez appris dans le tutorial précédent. Double-cliquez ensuite sur le fichier Error.java dans la vue "Navigator". Le contenu du ficher apparaît alors dans l'éditeur. Vous remarquerez alors que de nombreux éléments sont soulignés en rouge. Une petite croix dans une bulle rouge devant la ligne où il y a des éléments soulignés vous indique qu'il y a des erreurs dans cette ligne de code.

 

Cliquez maintenant sur la petite ampoule sur la gauche de la ligne 4 (le numéro de ligne apparait en bas de la fenêtre Eclipse, vous pouvez aussi faire numéroter les lignes en cliquant avec le bouton droit et en sélectionnant l'option "Preferences" puis "Text Editors"). Une fois que vous avez cliqué sur l'ampoule, un menu apparaîtra vous suggérant comment corriger le problème. Sélectionnez ici "Change to 'System' (java.lang)".

 

Le texte printnl va maintenant être souligné. Cliquez à nouveau sur la petite ampoule et sélectionnez "change to 'println(...)'".

Dans le cas précédent, nous avons mal orthographié le nom de la classe System (prédéfinie par les librairies Java). Comme Eclipse connait toutes les classes de votre projet, y compris les classes prédéfinies, il peut vous faire des suggestions intelligentes sur comment corriger. Ces suggestions sont indiquées par les fameuses petites ampoules de tout à l'heure.

Avec les autres erreurs, pulbic et statci, nous sommes en fait un peu moins chanceux : nulle ampoule à l'horizon. Nous ne sommes cependant pas complétement démunis car si l'on place la souris sur la croix précédent la ligne erronées, des informations utiles apparaîssent :

Il s'agit grosso-modo des messages d'erreurs générés par le compilateur de Java. Ces indications sont très utiles : combinées avec vos connaissances de Java, elles vous permettront de corriger vos erreurs. Ici, après avoir changé pulbic en public et statci en static toutes les bulles rouges associées aux lignes erronées sont grisées. Il vous suffit de sauvegarder votre fichier pour voir les croix disparaitre. Votre syntaxe est maintenant correcte:

2. Exercices simples

Les différentes variantes suivantes

du programme PasSalut.java contiennent toutes des erreurs de syntaxe. Incluez ces fichiers dans le projet Eclipse associé à la série courante. Utilisez ensuite les techniques que vous venez d'apprendre pour corriger ces fichiers.

3. Encore des erreurs (Niveau 2)

On continue a s'exercer, mais cette fois avec un programme un peu plus long où il y a plusieurs erreurs. Ouvrez dans Eclipse et corrigez à votre guise le programme Declarations.java jusqu'à ce qu'il soit exempt d'erreurs.

4. Cette fois c'est à l'exécution... (Niveau 2)

Ouvrez dans le projet courant de Eclipse le programme FauxCalcul.java. Ici Eclipse est muet et aucune ligne n'apparait comme étant erronée. Exécuter maintenant votre programme. Le message d'erreur suivant devrait apparaitre.

java.lang.ArithmeticException: / by zero
        at FauxCalcul.main(FauxCalcul.java:11)  
On voit que la machine virtuelle Java indique le nom du fichier et le numéro de ligne où le problème s'est produit: ligne 11 du fichier FauxCalcul.java. Vous pouvez vous positionner sur cette ligne de code en cliquant sur "(FauxCalcul.java:11)" qui apparait dans la vue "Console" de Eclipse. Essayez de faire afficher à votre programme les différentes valeurs des variables juste avant que l'erreur se soit produite afin d'expliquer l'erreur.
Nous verrons plus tard qu'il existe des moyens plus sophistiqués dans Eclipse pour traquer efficacement ce genre d'erreur.



Exercice 8: Indice de masse corporelle (Entrées-sorties de base, expressions, Niveau 0)

Nous voulons écrire un programme permettant de calculer l'IMC (indice de masse corporelle) d'une personne. L'IMC se calcule à partir du poids et de la taille suivant la formule : poids (en kg) divisé par le carré de sa taille (en m).

  1. Commencez par ouvrir le fichier (vide) IMC.java dans votre éditeur favori ou dans Eclipse.

  2. Préparez la «coquille vide» de base accueillant votre programme :

    class IMC {
        public static void main(String[] args) {
        }
    }

    Nous verrons plus tard dans le cours à quoi correspondent exactement toutes ces lignes, mais pour l'instant considérez cela comme la base minimale pour que votre programme fonctionne.

    On peut maintenant commencer à attaquer notre problème.

  3. Commençons notre programme en prévoyant des variables pour représenter les données de notre problème, à savoir un poids et une taille.

    A priori ces grandeurs sont des nombres réels ; nous déclarons donc des variables de type double  :

    class IMC {
        public static void main(String[] args) {
            double poids;
            double taille;
        }
    }

  4. Maintenant, le réflexe du bon programmeur : il faut penser à initialiser ces variables. Choisissons ici des valeurs raisonnables quelconques, par exemple :

    class IMC {
        public static void main(String[] args) {
            double poids  = 74.5  ;
            double taille =  1.75 ;
        }
    }

  5. On peut maintenant imaginer passer directement au calcul et à l'affichage de l'IMC. On pourrait par exemple directement afficher l'IMC, mais le but étant quand même de travailler un peu avec des variables, introduisons ici une variable pour l'IMC (même si pour un programme aussi simple ce n'est pas strictement nécessaire) :

    class IMC {
        public static void main(String[] args) {
            double poids  = 74.5  ;
            double taille =  1.75 ;
    
            double imc = poids / (taille * taille);
    
        }
    }

    puis affichons le, par exemple comme ceci :

    class IMC {
        public static void main(String[] args) {
            double poids  = 74.5  ;
            double taille =  1.75 ;
    
            double imc = poids / (taille * taille);
    
             System.out.println("Pour " + poids
                                + " kg et " + taille
                                + " m, l'IMC est de " + imc);
        }
    }

  6. Compilez puis exécutez votre programme. Votre programme devrait alors afficher :

    Pour 74.5 kg et 1.75 m, l'IMC est de 24.326531
    
  7. Un tel programme est évidemment d'un usage limité et il serait beaucoup plus utile de permettre le calcul de l'IMC pour n'importe quels taille et poids. On devrait donc pour cela demander le poids et la taille à l'utilisateur. Ceci se fait en introduisant un «Scanner» comme présenté en cours :

    import java.util.Scanner;
    class IMC { public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
    
            double poids  = 74.5  ;
            double taille =  1.75 ;
    
            double imc = poids / (taille * taille);
    
             System.out.println("Pour " + poids
                                + " kg et " + taille
                                + " m, l'IMC est de " + imc);
        }
    }

  8. puis en posant les questions :

    import java.util.Scanner;
    class IMC {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
    
            double poids  = 74.5  ;
            double taille =  1.75 ;
    
            System.out.print("Entrez un poids  (en kg) : ");
            poids = scanner.nextDouble();
            System.out.print("Entrez une taille (en m) : ");
            taille = scanner.nextDouble();
    
            double imc = poids / (taille * taille);
    
             System.out.println("Pour " + poids
                                + " kg et " + taille
                                + " m, l'IMC est de " + imc);
        }
    }

Notre programme peut maintenant calculer l'IMC pour n'importe quels poids et taille. Il peut être amélioré en contrôlant que les valeurs saisies soient bien raisonnables. Mais pour cela, il faut utiliser ce que l'on appelle des structures de contrôle (vues dès la semaine prochaine).

Concernant la lecture de données introduites au clavier, il convient de faire les remarques suivantes:

  1. La solution montrée ci-dessus utilise le bagage actuel : celui avec lequel vous ne savez mettre des instructions que dans le corps de la méthode main. L'objetscanner de typeScanner qui permet de lire des données introduites depuis le terminal est déclaré et initialisé dans la méthode main. si vous procédez de cette manière, et que vous travaillez sous Eclipse, un message de mise en garde sera généré pour vous indiquer que scanner n'a pas été fermé. Les causes de ce message dépassent les notions vues dans le cadre de ce cours d'introduction et ce message n'aura aucune incidence sur l'exécution de votre programme. Pour l'éviter il suffira d'ajouter l'instruction scanner.close(); avant la dernière accolade de main; c'est à dire juste après le dernier System.out.println(...) dans le code précédent. Une façon alternative de déclarer cette variable de type Scanner est présentée dans le corrigé de l'exercice 7.
  2. Si vous travaillez sur votre propre machine et que l'introduction de valeur de type double avec un point décimal provoque une erreur d'exécution («InputMismatchException») c'est probablement que votre environnement est configuré avec des «Locales» (paramètres régionaux) non anglo-saxons. Vous pouvez faire en sorte qu'une séquence particulière d'entrées se fasse selon les conventions anglo-saxonnes. Ceci se fait en ajoutant l'instruction nomDeLaVariableScanner.useLocale(Locale.ENGLISH)avant l'utilisation de nomDeLaVariableScanner (donc dans notre exemple ci-dessusnomDeLaVariableScanner serait à remplacer par scanner). Il faut pour cela avoir écrit la directive d'importation suivante en début de programme : import java.util.Locale; Dans IntelliJ, vous pouvez modifier les "Locale" de l'exécution en faisant un clic-gauche sur la petite flèche verte, puis modify run configuration. SousVM options mettre par exemple -Duser.country=FR -Duser.language=fr si l'on veut avoir le , comme séparateur décimal ou -Duser.country=US -Duser.language=en si l'on veut que ce soit le .


Exercice 9: Année de naissance (Opérateurs et expressions, Niveau 1)

Ecrivez un programme Age.java qui :
  1. demande son âge à l'utilisateur ;
  2. lit la réponse de l'utilisateur et l'enregistre dans une variable age de type entier ;
  3. calcule l'année de naissance (à un an près) de l'utilisateur et l'enregistre dans la variable annee de type entier ;
  4. affiche l'année de naissance ainsi calculée.

Exemple d'exécution du programme:

Donnez votre age : 
22
Votre annee de naissance est : 2001



Exercice 10: Fondue fribourgeoise (Entrées-sorties de base, expressions, Niveau 1)

Le but de cet exercice est d'écrire un programme qui permet d'adapter automatiquement, en fonction du nombre de convives, les quantités d'ingrédients nécessaires à la confection d'une fondue fribourgeoise.

Ecrivez un programme Fondue.java qui :

  1. déclare une constante BASE, initialisée à 4, et qui indique le nombre de personnes pour laquelle est conçue la recette de base ;

  2. déclare une variable fromage, initialisée à 800.0, qui donne la quantité de fromage en grammes nécessaire pour BASE personnes (du «Vacherin fribourgeois» en l'occurrence !) ;

  3. déclare une variable eau, initialisée à 2.0, qui donne la quantité d'eau en décilitres nécessaire pour BASE personnes ;

  4. déclare une variable ail, initialisée à 2.0, qui donne le nombre de gousses d'ail nécessaires pour BASE personnes (on choisit le type double car on veut pouvoir utiliser des moitiés de gousses par exemple) ;

  5. déclare une variable pain, initialisée à 400.0, qui donne la quantité de pain en grammes nécessaire pour BASE personnes ;

  6. demande à l'utilisateur d'introduire le nombre de convives pour lequel on veut préparer la recette ;

  7. lit la réponse de l'utilisateur et l'enregistre dans une variable nbConvives de type entier ;

  8. adapte les quantités de chaque ingrédient en faisant une règle de trois (nouvelleQuantite = quantiteDeBase * nbConvives / BASE ) ;

  9. et affiche la recette pour le nombre de convives voulus selon l'exemple ci-dessous.

Exemple d'exécution du programme

Entrez le nombre de personne(s) conviée(s) à la fondue : 3

Pour faire une fondue fribourgeoise pour 3 personnes, il vous faut : 
 - 600.0 gr de Vacherin fribourgeois
 - 1.5 dl d'eau
 - 1.5 gousse(s) d'ail
 - 300.0 gr de pain
 - du poivre à volonté


Exercice 11: Expression polynômiale (Opérateurs et expressions, Niveau 1)

Écrivez un petit programme Java, Degre3.java, vous permettant d'évaluer un polynôme du 3ème degré de la forme:

((a+b)/2)x
3 + (a+b)2x2 + a + b + c

Exemple d'exécution:

  Entrez a (int) : 1
  Entrez b (int) : 2
  Entrez c (int) : 3
  Entrez x (double) : 3.5
  La valeur du polynôme est : 180.5625 
Notez qu'il n'y a pas d'opérateur simple pour la puissance 3 en Java. Il faut utiliser des multiplications. Vous introduirez également au besoin des variables auxiliaires pour rendre le calcul plus efficace. N'oubliez pas de faire en sorte que le nom de la classe soit identique au nom du fichier.



Exercice 12: Opérateurs d'incrémentation/décrémentation (Opérateurs et expressions, Niveau 1)

Compilez et exécutez les deux programmes Moyenne1.java et Moyenne2.java. Expliquez pourquoi la valeur retournée est différente d'un programme à l'autre.

1
2
3
4
5
6
7
8
class Moyenne1 {

    public static void main(String[] args) {
        double noteProgrammation = 6.0;
        double noteAlgebre = 5.0;
        System.out.println("Ma moyenne est " + (noteProgrammation++ + noteAlgebre) / 2.0 );
    }
}

1
2
3
4
5
6
7
8
class Moyenne2 {

    public static void main(String[] args) {
        double noteProgrammation = 6.0;
        double noteAlgebre = 5.0;
        System.out.println("Ma moyenne est " + (++noteProgrammation + noteAlgebre) / 2.0 );
    }
}



Exercice 13: Types (Types de base, Niveau 1)

Indiquez, pour chaque affectation dans le programme Transtypage ci-dessous, si l'affectation est possible et, le cas échéant, la valeur exacte qui sera affectée à la variable.

 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
class Transtypage {

    public static void main(String[] args) {
        int n1 = 2;
        double r1 = 2.7;

        int n2 = 2.7;
        double r2 = 5;

        int n3 = (int) 5.6;
        double r3 = 5.6;

        int n4 = 9;
        double r4 = (double) n4;
        double r5 = (int) r4;

        int n5 = 19 / 4;
        int n6 = n5 / r5;
        double r6 = 5.0;
        int n7 = (int) (n5 / r5);
        double r7 = 19.0 / r6;

        double r8 = 15.0 / n3;
        double r9 = 19 / 4;
        double r10 = (double) (19 / 4);
        double r11 = (double) 19 / (double) 4;
    }
}



Exercice 14: Variable, affectation (Opérateurs et expressions, Niveau 2)

Implémentez en Java un algorithme vous permettant de permuter les valeurs de deux variables.

Exemple d'exécution:

  Entrez x: 1
  Entrez y: 2
  Avant permutation:
  x : 1
  y : 2
  Après permutation:
  x : 2
  y : 1



Exercice 15: Un peu de tout, division d'entiers (Opérateurs et expressions, Niveau 2)

Une tante fortunée vous envoie un jour une petite enveloppe (en francs tout ronds) pour vos études à l'EPFL. L'étudiant prévoyant et organisé que vous êtes décide de gérer cette somme de la façon suivante :

Vous décidez également de gérer cette somme en francs tout rond. Le reste de l'argent sera destiné à acheter un bouquet de fleur à votre maman pour la prochaine fête des mères. En supposant qu'un café à Sat vaut 2 Frs, qu'un numéro du Flash en vaut 4 et qu'un billet de métro vaut 3 Frs, écrivez le programme RoseBlanches.java [1] vous permettant de produire la sortie suivante:

Exemple d'exécution du programme:

  Combien avez-vous reçu d'argent (Frs)? 800
  Livre et Fournitures: 600 Frs
  Vous pouvez ensuite acheter:
   33 cafes a Sat
   16 numeros du Flash
   22 billets de métro
  et il vous restera 4 Frs pour les roses blanches.
Indication: utilisez des variables de type int. Le résultat d'une division de deux int sera tronqué à un int. Utilisez l'opérateur % qui vous donne le reste de la division entière.


[1] ... le petit clin d'oeil culturel de la journée ;-) (mais ne pas écouter l'interprétation de Berthe Sylva si vous êtes d'humeur sombre !)


Dernière mise à jour: 06/10/2023  (Revision: 1.2)