Formation JAVA
Ou
Comment devenir un programmeur chevronné en quelques semaines.
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.
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.
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.
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)
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)
{
}
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 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 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.
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