Tutoriel Un premier programme en Java - partie 1
Introduction
Bienvenue dans la première partie de ce tutoriel d’introduction à la programmation en Java ! Java est un langage de programmation puissant et polyvalent qui est à la base de nombreuses applications que vous utilisez peut-être tous les jours, comme certaines applications Android ou des jeux comme Minecraft. Parce qu’il est orienté objet et très largement utilisé, Java est le langage que nous avons choisi pour l’apprentissage de la programmation à l’EPAI.
Avec ce tutoriel, nous visons à vous donner un aperçu bref, mais aussi complet que possible de l’utilisation de votre environnement de programmation et de la programmation en Java. Nous vous guidons pas à pas pour vous aider à construire votre premier programme : un jeu du pendu avec une interface en ligne de commande très simple.
Dans cette première partie, nous entrons tout de suite dans le vif du sujet en créant le répertoire du projet et le squelette du programme. Nous voyons ensuite comment programmer l’affichage de messages dans le terminal et comment exécuter notre programme. Nous terminons en passant en revue les différentes méthodes d’affichage de Java.
Avant de commencer, assurez-vous d’avoir suivi le tutoriel « Installer un environnement de programmation ». Si vous avez déjà installé votre environnement et que vous êtes prêt à faire vos premiers pas en programmation, commençons sans plus attendre !
Préparer le répertoire de notre projet
Lorsque l’on commence un travail avec un ordinateur, la première chose à faire est de se demander où enregistrer le résultat et quel nom lui donner.
Pour la première question : c’est un projet de programmation pour le module 319, nous le plaçons donc dans le sous-répertoire « m319 » de notre répertoire « projets ».
Vérifions d’abord que ces répertoires existent. Pour cela, ouvrez un terminal (sans privilège), tapez l’une après l’autre les commandes ci-dessous et pressez la touche [Entrer ⏎] pour lancer chacune d’elles. Ces commandes fonctionnes sous Windows, macOS et Windows.
1
2
cd $HOME\projets
cd m319
Si les deux commandes s’exécutent sans erreur, vous vous trouvez maintenant dans le sous-répertoire « m319 » du répertoire « projets ».


Si la première commande échoue, cela signifie que le répertoire « projets » n’existe pas. Si la seconde commande échoue, cela signifie que le répertoire « m319 » n’existe pas. Dans les deux cas, reprenez la fin du tutoriel « Guide d’installation des outils nécessaires à la programmation en Java dans le cadre des modules de programmation à l’EPAI », ou demandez de l’aide avant de poursuivre.
Répondons maintenant à la seconde question : « Quel nom donner à notre travail ? »
Voici les éléments d’information dont nous disposons :
- Le résultat d’un projet de programmation est un répertoire.
- Le nom de ce répertoire doit indiquer ce dont il s’agit.
- Par convention, nous prendrons l’habitude d’écrire les noms de répertoire en minuscules, sans accents et sans espaces.
- C’est un premier programme en Java.
Compte tenu de cela, le nom du répertoire de notre projet pourrait être : « first‑java‑program ».
Dans le terminal, lancez l’une après l’autre les commandes ci-dessous. La première crée le répertoire, la deuxième permet de nous rendre dans ce répertoire, et la troisième ouvre le répertoire courant (.) dans Visual Studio Code.
Remarque : De manière générale dans le terminal, le répertoire « . » représente le répertoire courant, c’est-à-dire celui dans lequel nous nous trouvons. Le répertoire « .. » représente le répertoire parent du répertoire courant.
1
2
3
mkdir first-java-program
cd first-java-program
code .
Ces commandes fonctionnent sous Windows, macOS et Linux. La figure ci-dessous montre leur effet sous Windows et macOS. L’effet sous Linux est semblable à l’effet sous macOS.


Si tout a bien fonctionné, le répertoire « $HOME/projets/m319/fist-java-program » doit maintenant être ouvert dans Visual Studio Code.
Comme c’est la première fois que vous ouvrez ce répertoire, « Visual Studio Code » s’assure que vous faites confiance à l’auteur des programmes qui s’y trouvent (ou qui s’y trouveront) et que vous l’autorisez à les exécuter. Il vous propose, par la même occasion, de lui accorder la même autorisation pour le répertoire « m319 ».

Nous voilà prêts à programmer. Commençons !
Ajouter un fichier à notre projet
Pour commencer, voyons comment afficher dans le terminal un message de bienvenue pour notre jeu de pendu. Pour cela, ajoutons un fichier à notre projet et nommons-le « HangmanGame.java » (attention, il est important de respecter les majuscules et les minuscules).

Un fichier avec l’extension « .java » est un fichier de texte qui contient du code écrit avec le langage de programmation Java. En Java, un fichier contient toujours la « définition d’une classe » et le nom de cette classe doit être exactement le même que le nom du fichier. C’est pourquoi l’éditeur de texte vous propose de choisir l’une des possibilités de définir la classe « HangmanGame ». Sélectionnez la première.
Afficher un message de bienvenue
Pour ordonner à l’ordinateur d’afficher notre message de bienvenue dans le terminal, beaucoup de langages de programmation utilisent le mot Print
suivi du texte qu’il doit afficher entre guillemets (double quotes), par exemple : Print("Bienvenue dans le jeu du pendu !")
.
Le mot Print
est le nom d’un « sous-programme » ou, dans le vocabulaire de la programmation orientée objet, le nom d’une « méthode ». Le texte entre guillemets est une « chaîne de caractères ». La ligne de code Print("Bienvenue dans le jeu du pendu !")
est un « appel de méthode ». Elle ordonne à l’ordinateur d’« appeler » la méthode Print
pour afficher dans le terminal, la chaîne de caractère « passée en paramètre ».
Remarque : En programmation, une ligne de code qui ordonne à l’ordinateur de faire quelque chose qui à un effet (ici, afficher un texte dans le terminal) est une « instruction ». Un appel de méthode est une instruction.
Si l’on écrit cette instruction directement dans la définition de notre classe, c’est-à-dire entre les accolades ({}, en anglais, braces), l’éditeur nous informe qu’il y a une « erreur de syntaxe ».

Une erreur de syntaxe, pour un langage de programmation, est comme une erreur de grammaire pour une langue naturelle. Elle indique qu’une « construction syntaxique », l’équivalent d’une phrase, n’est pas formée correctement.
En effet, dans un programme en Java, une instruction ne peut pas se trouver directement dans la définition d’une classe. Une instruction doit se trouver dans la « définition d’une méthode », qui doit elle-même se trouver dans la définition d’une classe. De plus, la première instruction d’un programme doit impérativement se trouver dans une méthode appelée main
.

main
La définition d’une classe et la définition d’une méthode main
constituent le plus petit programme possible en Java. Le nom de la classe doit être écrit en « UpperCamelCase », et doit être parlant. Par exemple, le nom du programme, comme ici, ou Exercice1, Exercice2, etc., s’il s’agit d’un exercice. Le code de notre programme doit se trouver entre les accolades de la définition de la méthode main
. Nous vous recommandons d’apprendre par cœur les quelques lignes de code ci-dessous.
Remarque : En Java, une ligne qui commence par une double barre oblique (slash) est une ligne de commentaire. Les commentaires servent à documenter le code et sont ignorés par le compilateur ou l’interpréteur.
1
2
3
4
5
6
7
8
9
10
// Définition de la classe HangmanGame
public class HangmanGame {
// Définition de la méthode main
public static void main(String[] args) {
// Instructions du programme
}
}
main
Essayons une nouvelle fois de donner l’ordre d’écrire notre message de bienvenue. Nous avons à nouveau une erreur de syntaxe. Cette fois, plaçons notre curseur sur l’erreur et voyons ce que nous dit l’éditeur.

main
L’éditeur nous informe que la méthode « Print » n’est pas définie dans main
, ce qui est vrai. Java est un langage orienté objet, une méthode doit soit être appelée sur une classe ou sur un objet. Par exemple :
- Math.sin(30)
- System.out.print(“Hello world !”)
Dans le premier exemple, le nom de la méthode est le mot sin
. On remarque que le mot qui se trouve à gauche du point : Math
, commence par une majuscule. C’est donc le nom d’une classe. Le point (.) entre Math
et sin
indique que la méthode sin
est appelée sur la classe Math
.
Dans le deuxième exemple, le nom de la méthode est le mot print
et le mot qui se trouve immédiatement à gauche du point : out
, commence par une minuscule. C’est donc le nom d’un objet. Le point (.) entre « out » et print
indique que la méthode print
est appelée sur l’objet out
. Plus précisément, la méthode est appelée sur l’objet référencé par la variable out
de la classe System
(System.out
).
La classe System
est une représentation très simplifiée de notre programme. La variable out
de cette classe représente la sortie standard (stdout). Par défaut, la sortie standard est l’écran du terminal. La classe System
a également une variable in
qui représente l’entrée standard (stdin). Par défaut, l’entrée standard est le clavier du terminal.
Pour afficher notre message de bienvenue dans le terminal, nous devons donc appeler notre méthode Print
sur l’objet qui représente la sortie standard (System.out
). Essayons.

L’éditeur nous informe qu’il y a encore deux erreurs de syntaxe. En effet, Java est « sensible à la casse » et, par convention, le nom d’une méthode commence par une minuscule. De plus, en Java, une instruction se termine généralement par un point-virgule. Nous devons donc écrire print
avec en minuscule et terminer l’instruction par un point-virgule.
1
2
3
4
5
public class HangmanGame {
public static void main(String[] args) {
System.out.print("Bienvenue dans le jeu du pendu !");
}
}
Nous voilà enfin prêts à exécuter notre programme.
Exécuter le programme
Notre programme a une interface utilisateur en ligne de commande (CLI). Pour l’exécuter, nous avons donc besoin d’un terminal. Nous pouvons bien sûr utiliser celui que nous avons ouvert pour créer le répertoire du projet et lancer Visual Studio Code, mais Visual Studio Code dispose d’un terminal intégré.
Pour ouvrir le terminal intégré, sous Windows, allez dans le menu « View » et cherchez l’entrée « Terminal ». Sous macOS, allez dans le menu « Terminal », et cherchez l’entrée « New Terminal ». Le terminal s’ouvre alors juste au-dessous de la fenêtre de l’éditeur.

Pour exécuter un programme en Java, nous avons besoin d’un programme capable d’exécuter du code Java. Un tel programme est appelé « interpréteur ». L’interpréteur de Java est le programme appelé java
que nous avons installé avec le OpenJDK.
Dans la fenêtre du terminal, lancez la commande ci-dessous pour exécuter votre programme.
1
java HangmanGame.java
Le programme affiche le message de bienvenue et comme il ne contient pas d’autres instructions, il se termine.

Une autre manière d’exécuter le programme est de cliquer sur le petit lien « Run » que Visual Studio Code affiche juste au-dessus de la méthode main
.

Cette action exécute dans le terminal une commande un peu plus compliquée que celle que vous avez saisie à la main, mais qui produit exactement le même effet.
Autres méthodes d’affichage
Avant de terminer cette première partie, voyons encore les autres méthodes d’affichage de Java.
Nous l’avons déjà vu, la méthode print
affiche le texte que nous lui passons en « paramètres ». Les paramètres d’une méthode sont les données d’entrée de cette méthode. La méthode print
ne prend qu’un seul paramètre, le texte qu’elle doit afficher.
Essayons d’ajouter un autre message à la suite du message de bienvenue. Tapez le code suivant à l’intérieur de la méthode main
juste après l’instruction d’affichage du message de bienvenue.
1
System.out.print("Le jeu consiste à deviner un mot en proposant une lettre à la fois. Vous avez droit à 10 propositions erronées.");
Si vous exécutez votre programme, vous remarquez que le texte du deuxième message vient d’afficher immédiatement à la suite du message de bienvenue.

print
ne fait pas de retour à la ligne Pour afficher un message avec un retour à la ligne, nous pouvons utiliser la méthode println
à la place de la méthode print
. Nous pouvons également utiliser un appel à la méthode println
sans paramètre pour afficher une ligne vide après le message de bienvenue, comme l’illustre la copie d’écran ci-dessous.
Remarque : en Java, un appel de méthode a toujours des parenthèses. Si la méthode n’a pas de paramètre, les parenthèses sont vides.

println
En guise d’exercice, modifiez le code pour afficher la chaîne de caractères "Vous avez droit à 10 propositions erronées."
, immédiatement au-dessous de la chaîne de caractères "Le jeu consiste à deviner un mot en proposant une lettre à la fois."
. Exécutez le code pour voir l’effet de votre modification.

Le nombre de propositions incorrectes auxquelles a droit la joueuse ou le joueur est une donnée du programme. De plus, cette valeur peut varier pour adapter le niveau de difficulté. Nous devons donc placer cette valeur dans une « variable ». De manière générale, une variable représente une donnée stockée dans la mémoire de l’ordinateur, et permet d’associer un nom à une valeur. En Java, le nom doit être composé de lettres minuscules et majuscules et de tirets du bas (_). Par convention, on écrit le nom d’une variable en « lowerCamelCase ». Appelons notre variable maxNumberOfWrongGuess
et affectons-lui la valeur 10.

maxNumberOfWrongGuess
L’éditeur nous informe qu’il y a une erreur de syntaxe. En plaçant le curseur sur l’erreur, nous apprenons que le mot maxNumberOfWrongGuess
n’est pas reconnu comme étant une variable. En effet, en Java, il est nécessaire de déclarer une variable avant de pouvoir lui affecter une valeur et l’utiliser. La syntaxe d’une déclaration de variable est le nom d’un « type de donnée » suivi d’une espace et du nom de la variable.
Le type de donnée d’une variable détermine quelles valeurs peuvent lui être affectées et quelles opérations peuvent être appliquées à ces valeurs. Par exemple, une variable de type String
(chaîne de caractères) représente une donnée dont la valeur est un texte. Une variable de type int
représente une donnée dont la valeur est un nombre entier. Une variable de type double
représente une donnée dont la valeur est un nombre à virgule.
Dans notre cas, le nombre maximal de propositions incorrectes est un nombre entier. Nous déclarerons donc notre variable maxNumberOfWrongGuess
avec le type int
. Lorsque l’on déclare une variable et qu’on lui affecte une valeur sur la même ligne, on dit que l’on définit cette variable. La ligne de code est une « définition de variable ».

maxNumberOfWrongGuess
On remarque que le nom de la variable est toujours souligné, mais cette fois elle l’est en jaune. Ce n’est pas une erreur, mais un avertissement. L’éditeur nous avertit que la variable est déclarée, mais qu’elle n’est pas utilisée et qu’elle est donc inutile.
Faisons donc quelque chose avec cette variable. Remplacez l’instruction d’affichage de la chaîne de caractères "Vous avez droit à 10 propositions erronées."
par le code ci-dessous.
1
2
3
int maxNumberOfWrongGuess = 10;
System.out.println("Vous avez droit à " + maxNumberOfWrongGuess + " propositions erronées.");
Dans cette instruction, les opérations avec l’opérateur +
ne sont pas des additions, mais des « concaténations », car dans les deux cas, l’une des deux valeurs (opérandes) est une chaîne de caractères. Une concaténation est la juxtaposition de deux chaînes de caractères. Dans notre cas, la concaténation de la chaîne "Vous avez droit à "
, du nombre entier 10 transformé en chaîne de caractères ("10"
), et de la chaîne " propositions erronées."
, produit la chaîne "Vous avez droit à 10 propositions erronées."
. Remarquez l’espace à la fin de la première chaîne et l’espace au début de la seconde.
Exécutez votre programme pour vérifier qu’il fonctionne correctement.

Il existe une autre méthode d’affichage qui permet de faire la même chose de manière plus élégante : la méthode printf
. Remplacez le dernier appel à la méthode println
par la ligne de code ci-dessous.
1
System.out.printf("Vous avez droit à %d propositions erronées.\n", maxNumberOfWrongGuess);
printf
La méthode printf
prend plusieurs paramètres. Le premier est une chaîne de caractères qui contient un ou plusieurs emplacements pour la valeur d’une variable. Une telle chaîne est appelée un modèle (template). Dans notre code, %d
est un emplacement pour un nombre entier. On peut également avoir des emplacements pour des chaînes de caractère (%s
) ou pour des nombres à virgules (%f
). Il doit y avoir ensuite un paramètre supplémentaire pour la valeur de chaque emplacement. Dans notre code, il n’y a qu’un emplacement, il n’y a donc qu’un seul paramètre après la chaîne. Enfin, la méthode printf
ne fait pas de retour à la ligne. Pour ajouter un retour à la ligne dans une chaîne de caractère, on utilise la combinaison \n
.
Remarque: Dans une chaîne de caractère en Java (et dans beaucoup d’autres langages de programmation), la barre oblique inversée (\, en anglais, backslash) est le « caractère d’échappement ». Ce caractère indique que le caractère suivant a une signification spéciale. Par exemple, dans « \n », le « n » qui suit le caractère d’échappement ne représente pas la lettre n, mais un retour à la ligne (line feed). Pour écrire un backslash dans une chaîne de caractères, il faut le doubler ("\\"
).

printf
Nous voilà parvenus au terme de cette première partie.
Conclusion
Félicitations, vous venez d’accomplir vos premiers pas en Java et dans votre apprentissage de la programmation ! Dans ce tutoriel, vous avez appris à :
- Créer un répertoire pour votre projet dans le terminal.
- Ouvrir le répertoire courant dans Visual Studio Code avec la commande
code .
- Écrire un programme minimal en Java (définition d’une classe et de la méthode main).
- Exécuter un programme en Java dans le terminal intégré de Visual Studio Code.
- Utiliser les méthodes d’affichage print, println et printf.
- Déclarer et définir une variable.
N’hésitez pas à expérimenter avec le code que vous avez écrit, à essayer différentes chaînes de caractères et différentes valeurs pour la variable. Il est important de pratiquer, alors continuez à écrire du code et à vous amuser !
Au besoin, n’hésitez pas à demander de l’aide à votre enseignant ou à vos camarades. Bonne programmation !