Java : les bases et la syntaxeAuteur : Julien Gauchet le 01/09/2017 (1 revision)

1. Initialiser un projet

Les étapes ci-dessous permettent de créer un projet permettant d'afficher un texte dans la console :

  • Etape 1 : ouvrir éclipse
    • Ouvrir éclipse
    • Le workspace est le dossier de travail d'éclipse, dans ce dossier seront enregistrées les sources du projet que vous allez créér
    • Une fois éclipse ouvert, fermet l'onglet Welcome, le Project explorer apparait alors
  • Etape 2 : créer le projet
    • Clic droit dans le project exporer (barre de gauche) puis File, New Project
      Créer un nouveau projet java
    • Choisir Java Project puis Suivant
    • Entrer un nom pour le projet "PremierProjet" par exemple et choisir le JRE8 puis cliquer sur Finish
    • Eclipse vous propose d'ouvrir la vue java, cliquer sur Yes
  • Etape 3 : créer le programme
    • Cliquer sur le + qui permet d'afficher le contenu du projet
    • Clic droit sur src, New, Class
      Créer une classe
    • La méthode main() est la méthode qui sera exécutée lors du lancement du programme et System.out.println permet d'afficher un texte dans la console. La classe doit contenir le code suivant :
    • public class PremiereClasse {
      
      	public static void main(String[] args) {
      		System.out.println("Ma première classe");
      	}
      
      }
  • Etape 4 : Exécuter le programme
    • Cliquer sur la flèche verte en haut du navigateur
      Exécuter un programme
    • La console affiche le texte entré

2. La syntaxe java

2.1. Les règles de base

  • Java est sensible à la casse
  • Les blocs de code sont encadrés par des accolades
  • Chaque instruction se termine par un caractère ';' (point virgule).
  • Une instruction peut tenir sur plusieurs lignes
  • L'indentation est ignorée par le compilateur mais permet une meilleure compréhension du code

2.2. Les variables

Déclaration des variables

Une variable possède un nom, un type et une valeur. La déclaration d'une variable doit donc contenir deux choses : un nom et le type de données qu'elle peut contenir. Une variable est utilisable dans le bloc où elle est définie.

La déclaration d'une variable permet de réserver la mémoire pour en stocker la valeur.

Le type d'une variable peut être

  • soit un type élémentaire dit aussi type primitif déclaré sous la forme type_élémentaire variable
  • soit une classe déclarée sous la forme classe variable
long nombre;
int compteur;
String chaine;

Types de variables courament utilisés

TypeUtilisationplage de valeurs
booleanvaleur logiquetrue ou false
intentier 32bit-2147483648 à 2147483647
longentier 64bit-9223372036854775808 à 9223372036854775807
doublenombre à virgule 64bit2.22507e-308 à 1.79769e+308
charcaractère unicode\u0000 à \uFFFF
Stringchaine de caractères unicode

Affectation de valeurs aux variables

Pour affecter des valeurs aux variables, on utilise le symbole "=" soit sur une variable préalablement déclarée soit lors de la déclaration.

  • Les chaines de caractères (String) sont entourées de doubles quotes : "
  • Les char sont entourés de simples quotes : '
  • Les boolean et les umériques ne sont pas entourés
long nombre=125;
int compteur=10;
String chaine="azety";
char c='c';
nombre=10;

2.3. Les conditions

Les conditions en java s'écrivent de la manière suivante :

if (boolean) {
    // bloc exécuté si boolean est vrai
} 
else if (boolean2) {
    // bloc exécuté si boolean2 est vrai
} 
else {
	// bloc exécuté dans tous les autres cas
}

La liste (non exhaustive) ci-dessous reprend les comparateurs les prus fréquement utilisés pour élaborer la condition

  • == permet de tester l'égalité
  • != permet de tester l’inégalité
  • < strictement inférieur
  • <= inférieur ou égal
  • > strictement supérieur
  • >= supérieur ou égal
  • && l'opérateur ET. Il permet de préciser une condition
  • || le OU. Même combat que le précédent

Exemples de conditions

int var=10;
if (var>10) {
    System.out.println("Superieur à 10");
} 
else {
	System.out.println("Inférieur à 10");
}

String chaine="abc";
if(chaine.equals("abc")){
	System.out.println("chaine abc");
}
else {
	System.out.println("autre chaine");
}

2.4. Les boucles for

La boucle for s'écrit de la manière suivante

for ( [initialisation]; [condition]; [modification]) {
    // code à exécuter dans la boucle
}
  • [initialisation] : correspond à l'initialisation du compteur de boucle : int i=0; long i=1;
  • [condition] : est la condition d'arrêt : i<10
  • [modification] : estla manière dont on incrémente le compteur : i++; i+=2; i--;
for (int i=0; i<10; i++) {
    System.out.println("étape "+i);
}

2.5. Les boucles while

Le code ci-dessous est exécuté tant que le booléen est vrai. Si avant l'instruction while, le booléen est faux, alors le code de la boucle ne sera jamais exécuté

while ([condition]){
	// code à exécuter dans la boucle
}

Ne pas mettre de ; après la condition sinon le corps de la boucle ne sera jamais exécuté

Cette boucle est au moins exécutée une fois quelle que soit la valeur du booléen;

do {
   // code à éxécuter
} while ( boolean );

2.6. Les commentaires

Il existe trois types de commentaire en Java :
Type de commentairesExemple
commentaire abrégé
// commentaire
commentaire multiligne
/* commentaires ligne 1
   commentaires ligne 2 */
commentaire de documentation automatique
/**
  * commentaire de la méthode
  * @param val la valeur à traiter
  * @return la valeur de retour
  */

2.7. Les fonctions

Pour l'instant nous n'allons nous intéresser qu'aux fonctions "static", à ce niveau, il est compliqué de donner un sens à ce mot dans la mesure où nous n'avons pas encore parlé de la modélisation objet. Il convient donc pour l'instant de ne pas trop s'attarder sur le sens de ce terme. Les fonctions s'écrivent de la manière suivante

static [type_retour] nomFonction([entrees]){
	// Corps de la fonction
	[return éventuel]
}

Par exemple, pour une fonction qui permet de retourner une chaine de caractères

static String nomFonction(String s1, String s2){
	return s1+":"+s2;
}

Les fonctions ne retornant rien sont caractérisées par un retour void (muet)

static void nomFonction(String s1){
	System.out.println("> "+s1);
}

3. Auto-formation, niveau 1

Les exercices suivants ont pour but de vous faire faire des recherches et d'évoluer dans votre connaissance du langage java, il convient donc de les mener à bien en effectuant des recherches sur internet. Tous les exercices sont corrigés sauf le dernier qui est un projet un peu plus conséquent, en cas de difficulté me contacter. Dans tous les cas, quand il sera terminé, il faudra me l'envoyer par mail.

3.1. Calculer une factorielle

Le but de cet exercice est de calculer une factorielle en java : 5! = 5*4*3*2. Pour celà, créer une fonction qui sera appelée dans une méthode main().

public class FactorielleIterative {

public static void main(String[] args) {
	int f = factorielle(5);
	System.out.println(f);
}

static int factorielle(int k) {
	int res = 1;
	for (int i = 2; i <= k; i++) {
		res = res * i;
	}
	return res;
}
}

3.2. Nombres premiers

Créer une fonction permettant de savoir si un nombre est premier (un nombre est premier s'il n'est divisible que par lui même et par 1). Une fois cette fonction créée, lister tous les nombres premiers entre 0 et 100

public class NombresPremiers {

	public static void main(String[] args) {
		for (int i = 2; i < 101; i++) {
			if (isPremier(i)) {
				System.out.println(i);
			}
		}
	}

	static boolean isPremier(int n) {
		boolean res = true;
		for (int i = 2; i < n - 1; i++) {
			if (n % i == 0) {
				res = false;
			}
		}
		return res;
	}
}

3.3. Numéroter un fichier

L'exercice consite à lire un fichier texte et à afficher son contenu numéroté dans la console

public class NumeroterFichier {

    public static void main(String[] args) throws IOException {
        File f = new File("D:/exemple.txt");
        numeroter(f);
    }

    static void numeroter(File f) throws IOException {
        try (FileInputStream ips = new FileInputStream(f); InputStreamReader ipsr = new InputStreamReader(ips); BufferedReader br = new BufferedReader(ipsr)) {
            String ligne;
            int compteur = 1;
            while ((ligne = br.readLine()) != null) {
                System.out.println(compteur + " : " + ligne);
                compteur++;
            }
        }
    }
}

3.4. Projet final : Jeu de Motus

Réalisez un jeu qui permet à l'utilisateur de découvrir un mot comme dans motus :

  • Un mot est sélectionné aléatoirement parmi les 7773 mots du fichier mots de 6 lettres
  • La première lettre de ce mot est affichée dans la console, les lettre inconnues sont replacées par des -. Par exemple, si le mot est pentue, la console afficher P------
  • Le joueur tape dans la console une proposition et valide avec la touche entrée
  • Si le mot est correct, le jeu est terminé, un message de félicitation est affiché
  • Sinon, toutes les lettres qui étaient à la bonne place dans le mot seront affichées, les autres seront replacées par des tirets. Par exemple, si l'utilisateur a entré le mot peinte, lui sera affiché PE---E
  • Et ainsi de suite