Formation JAVA

Ou

Comment devenir un programmeur chevronné en quelques semaines.

 

 

1         Introduction

Il faut bien sur avant de commencer à parler de quoi que ce soit, définir un vocabulaire commun. JAVA est un langage de programmation, pour pouvoir l’utiliser, il faut donc avoir des connaissances en programmation. La programmation, c’est la technique (ou l’art) qui permet de modéliser un problème concret sous forme d’algorithme et ensuite de traduire cet algorithme dans le langage de programmation cible (dans notre cas le JAVA).

Tout d’abord un mot d’avertissement, devenir programmeur n’est pas une sinécure, c’est un métier difficile et très demandant. Il exige une constante remise en cause de ses connaissances, car les technologies ne cessent d’évoluer. Avant Internet, un programmeur pouvait tranquillement se reposer sur ses acquits et terminer sa carrière avec les technologies qu’il avait apprises à l’école. Maintenant, nous sommes dans une société en constante évolution, avec des technologies elles-mêmes en constante évolution. Pour être programmeur, il faut être pugnace, persévérant et combatif. Tout d’abord face à l’ordinateur qui ne fait jamais ce qu’on lui demande, un ordinateur ou un disque dur qui plante peut faire perdre plusieurs semaines de travail s’il n’y a pas de sauvegarde régulière. Ensuite il faut se battre avec le langage qu’on utilise pour programmer qui n’a pas forcément été conçu pour résoudre les problèmes que l’on veut résoudre, et puis également avec le commanditaire du programme (le client ou le chef de projet) qui n’a généralement qu’une idée très imprécise de ce qu’il veut obtenir comme résultat final.

Un chef de projet informatique est dans la même situation que le programmeur, c’est également un informaticien, avec tout ce que cela implique, mais en plus il doit faire des choix technologiques et avoir des arguments pour pouvoir les imposer à ses supérieurs (ou a son client) et aux développeurs. Ces arguments, il ne pourra les acquérir qu’avec une connaissance approfondie des différentes technologies qui sont à sa disposition et la meilleur manière d’appréhender ces technologies, c’est de les pratiquer en étant soit même développeur.

 

Si cela ne vous a pas déjà découragé, nous pouvons entamer cette formidable aventure qu’est la découverte de l’algorithmique et de la programmation.

2         Algorithmique

2.1       Introduction à la notion d’algorithme

De manière générale, un algorithme peut se définir comme une description finie d’un enchaînement d’opérations. Un algorithme est destiné à un processeur qui est capable de comprendre et d’exécuter cette suite d’instruction.

 

 « Garde à vous ! » est un algorithme que le soldat (le « processeur ») comprend et exécute en se mettant dans la position du garde à vous.

 

Une partition musicale est également un algorithme qui permet à un orchestre (le « processeur ») d’exécuter un morceau de musique, c’est à  dire de reproduire sous forme de musique les instructions de l’auteur.

 

 

Chaque instrument joue de manière séquentielle les notes qui lui sont indiqués par la partition. L’orchestre peut jouer plusieurs mélodie en parallèle grâce à la multitude d’instruments.

 

Une recette de cuisine est également un algorithme décrivant comment le cuisinier (notre processeur) va exécuter la recette, c’est à dire réaliser un plat. Un plat peut faire appel à la connaissance d’autre plat, par exemple pour faire une tarte aux pommes, il faut savoir faire de la pâte brisée. Pour que le cuisinier exécute la recette de la tarte aux pommes, il également exécuter la recette de la pâte brisée. Pour sa tarte, il aura besoin de 400g de pâte brisée, il va donc exécuter la recette de la pâte brisée avec comme paramètre 400g comme quantité de pâte à réaliser.

Le résultat de retour sera 400g de pâte brisée, qu’il pourra utiliser pour exécuter sa tarte aux pommes. On peut considérer la recette de la pâte brisée comme une sous-recette, qui permet de décrire des recettes plus élaborées.

Pour faire la tarte aux pommes il faut également éplucher et couper des pommes, mais cette opération ne donne pas lei à une sous-recette, c’est une opération élémentaire, qui ne demande pas de description supplémentaire.

Un livre de cuisine est organisé en recette dont certaines sont utilisées dans d’autres recettes. Cette organisation évite les répétitions et rend plus simple la lecture du livre. C’est une idée fondamentale qui correspond à l’idée de module (en informatique on utilisera plutôt procédure, fonction ou encore sous-programme). Ainsi une recette peut contenir des opérations élémentaires ou bien des appels à des modules. Un module n’est rien d’autre qu’une recette, et vice-versa.

2.2       Un algorithme pour multiplier

On va ici utiliser quelques notions mathématiques de base, l’adition et la multiplication. On va également une notation algébrique standard.

On cherche à définir l’opération multiplication à partir de l’adition, pour cela on utilise une définition par induction :

-         si a est un entier positif non nul alors définit a*b de la manière suivante :

o       a*b=(a-1+1)*b=(a-1)*b+1*b

o       a*b=(a-1)*b +b

-         si a est un entier nul (c’est à dire zero) alors on définit a*b de la manière suivante:

o       a*b=0*b

o       a*b=0

Les deux règles précédentes définissent un algorithme.

Nous allons exécuter cet algorithme avec deux entiers a=3 et b=6 et tenter ce calculer 3*6 :

3, 2, et 1 sont positifs et non nuls alors la première règle s’applique :

-         3*6=2*6+6

-         2*6=1*6+6

-         1*6=0*6+6

0 c’est zéro, alors

-         0*6=0

on remplace 2*6, 1*6 et 0*6  par leur valeur et on obtient :

-         3*6=((1*6)+6)+6

-         3*6=(((0*6)+6)+6)+6

-         3*6=0+6+6+6

-         3*6=18

Et voilà ! Nous venons d’exécuter notre premier algorithme. On voit que multiplier par 3 consiste à ajouter 3 fois le nombre 6 et 1 fois le nombre zéro, donc on peut redéfinir la multiplication par :

a*b=0+b+b+…+b (autant de fois b que a)

2.3       Un langage pour décrire les algorithmes

Nous nous rendons bien compte que le français n’est pas le langage le plus rigoureux pour définir des suites d’opérations à exécuter. Nous allons donc essayer de formaliser les notions dont nous allons avoir besoin pour décrire de manière systématique les algorithmes.

- Un enchaînement séquentiel d’opérations O1, O2, …, On se note :

{

    O1;

O2;

On;

}

Et indique qu’il faut executer l’opération O1 puis l’opération O2 etc.

-         Un enchaînement conditionnel se note :

if (C)

{

    Ovrai

}

else

{

    Ofaux

}

      Et indique que si la condition C est vrai il faut éxécuter l’opération Ovrai et que si elle est fausse il faut exécuter l’opération Ofaux.

-     la boucle se note :

       while (C)

       {

           O

       }

      Et indique que tant que la condition C est vrai, il faut exécuter de manière répétitive l’opération O. Attention, si la condition ne devient jamais fausse, alors nous sommes en présence d’une boucle infinie et l’algorithme ne va jamais se terminer.

-     les commentaires sont des textes libres que l’on peut placer n’importe où, mais qui ne doivent pas être exécuter, ils sont simplement utiliser pour rendre la lecture du code plus simple au lecteur humain.

       /* ceci est un commentaire */

       // ceci est un autre commentaire


 

On peut maintenant réécrire notre algorithme pour la multiplication :

// soit deux entiers positifs a et b

{

   // c est un compteur

   on définit un entier c qui vaut 0;

   // r est le résultat de l’opération

   on définit un entier r qui vaut 0;

   while(c est plus petit que a)

   {

        on rajoute b à r;

on rajoute 1 à c;

}

// maintenant que la boucle est finie

// r contient le résultat de l’opération

afficher ‘‘a*b=’’ puis la valeur de r

}

 

Bien sur, il faut encore un peut travailler pour obtenir notre premier programme en JAVA, il faudrait savoir comment définir des entiers, leu donner une valeur, savoir aussi comment afficher des informations à l’écran.

2.4       Notion de variable en JAVA

Pour pouvoir mémoriser un entier positif a, nous utilisons une variable que l’on peut se représenter comme une boîte dans laquelle nous plaçons une valeur. Avant de pouvoir utiliser une variable, il faut la déclarer, une fois déclarer, on peut lui donner une valeur.

 

int a;  // je declare une variable a entière

a=32;   // je donne la valeur 32 à la variable a

2.5       Afficher le résultat

Pour afficher un résultat en JAVA, il suffit de d’appeler la recette de l’impression : System.ou.print() ou encore la recette de l’impression et aller à la ligne : System.out.println(). Ainsi pour afficher « a*b= » on donnera l’instruction :

   System.out.print(“a*b=”);

Pour afficher la valeur de r on donnera l’instruction:

   System.out.print(r);

Attention, ici pas de guillemets, car c’est la valeur qu’on veut afficher, et non pas le caractère r.