30
Les fonctions en Java Partie I Le type void

Les fonctions en Java Partie I Le type void. Dans cette rapide présentation, je vais expliquer :.à quoi servent les fonctions.à quoi faut-il penser avant

Embed Size (px)

Citation preview

Page 1: Les fonctions en Java Partie I Le type void. Dans cette rapide présentation, je vais expliquer :.à quoi servent les fonctions.à quoi faut-il penser avant

Les fonctions

en Java

Partie I

Le type void

Page 2: Les fonctions en Java Partie I Le type void. Dans cette rapide présentation, je vais expliquer :.à quoi servent les fonctions.à quoi faut-il penser avant

Dans cette rapide présentation, je vais expliquer :

.à quoi servent les fonctions

.à quoi faut-il penser avant d’écrire une fonction,

.comment déclarer et utiliser une fonction,

.comment se déroule l’appel à une fonction dans un

programme.

Page 3: Les fonctions en Java Partie I Le type void. Dans cette rapide présentation, je vais expliquer :.à quoi servent les fonctions.à quoi faut-il penser avant

Les fonctions (ou sous-programmes)

permettent de regrouper des

instructions qui sont utilisées plusieurs fois

dans un programme.

Page 4: Les fonctions en Java Partie I Le type void. Dans cette rapide présentation, je vais expliquer :.à quoi servent les fonctions.à quoi faut-il penser avant

Par exemple,

imaginons que l’on souhaite calculer un

nombre à une certaine puissance.

53 = 5 x 5 x 5

Page 5: Les fonctions en Java Partie I Le type void. Dans cette rapide présentation, je vais expliquer :.à quoi servent les fonctions.à quoi faut-il penser avant

En Java, on ferait

public class Main{

public static void main (String[] args){

int cpt, result;result = 1;

for (cpt = 1; cpt <= 3; cpt = cpt+1)

{result = result*5;

}

System.out.println(result);}

}

Page 6: Les fonctions en Java Partie I Le type void. Dans cette rapide présentation, je vais expliquer :.à quoi servent les fonctions.à quoi faut-il penser avant

Si on souhaite afficher aussi 94, on fera...

Page 7: Les fonctions en Java Partie I Le type void. Dans cette rapide présentation, je vais expliquer :.à quoi servent les fonctions.à quoi faut-il penser avant

public class Main{

public static void main (String[] args){

int cpt, result;result = 1;

for (cpt = 1; cpt <= 3; cpt = cpt+1)

{result = result*5;

}System.out.println(result);

result=1;

for (cpt = 1; cpt <= 4; cpt = cpt+1)

{result = result*9;

}System.out.println(result);

}}

On remarque de

grandes similarités

dans le code

ici et

Page 8: Les fonctions en Java Partie I Le type void. Dans cette rapide présentation, je vais expliquer :.à quoi servent les fonctions.à quoi faut-il penser avant

Pour éviter de dupliquer le code, on va écrire

une fonction qui décrira les instructions à

suivre pour calculer un entier n élevé à une

puissance p.

Page 9: Les fonctions en Java Partie I Le type void. Dans cette rapide présentation, je vais expliquer :.à quoi servent les fonctions.à quoi faut-il penser avant

A quoi réfléchir avant d’écrire une fonction ?

Page 10: Les fonctions en Java Partie I Le type void. Dans cette rapide présentation, je vais expliquer :.à quoi servent les fonctions.à quoi faut-il penser avant

Avant d’aller plus loin, il faut se poser une

première question :

De quoi ma fonction a-t-elle besoin pour

effectuer son travail ?

ou autrement dit

De quelles valeurs ma fonction ne peut pas

décider par elle-même ?

Page 11: Les fonctions en Java Partie I Le type void. Dans cette rapide présentation, je vais expliquer :.à quoi servent les fonctions.à quoi faut-il penser avant

Dans un téléphone portable, il existe une fonction

(un sous programme) permettant d’envoyer des

SMS à vos correspondants.

Pour marcher, cette fonction a besoin :

.d’un message à envoyer

.d’un destinataire à qui l’envoyer

Ce n’est pas à la fonction de décider du contenu du

message ni de la personne à qui l’envoyer.

La fonction d’envoi de SMS a donc besoin de deux

données d’entrée (on dit deux paramètres) : un

message et un numéro à qui envoyer le message.

Page 12: Les fonctions en Java Partie I Le type void. Dans cette rapide présentation, je vais expliquer :.à quoi servent les fonctions.à quoi faut-il penser avant

Pour reprendre notre exemple,

la fonction qui calcule un entier élevé à une

certaine puissance a besoin :

.d’un entier n qui sera l’entier dont on calculera une

puissance,

.d’un entier p qui sera la puissance à laquelle sera élevée

n.

Ce n’est pas à la fonction de décider des valeurs de p ou

de n.

Page 13: Les fonctions en Java Partie I Le type void. Dans cette rapide présentation, je vais expliquer :.à quoi servent les fonctions.à quoi faut-il penser avant

Ecrire une fonction en Java

Page 14: Les fonctions en Java Partie I Le type void. Dans cette rapide présentation, je vais expliquer :.à quoi servent les fonctions.à quoi faut-il penser avant

On doit écrire une fonction qui prendra en entrée

deux entiers n et p, et affichera à l’écran np.

Page 15: Les fonctions en Java Partie I Le type void. Dans cette rapide présentation, je vais expliquer :.à quoi servent les fonctions.à quoi faut-il penser avant

Pour écrire la fonction, on commencera par écrire

les mots clefs public static

Puis, on écrit void (on verra à quoi sert ce

mot clef dans la seconde présentation).

Ensuite, donnez un nom à votre fonction : ici, on

appellera notre fonction puissance

Enfin, écrivez toutes les données d’entrée dont

votre fonction a besoin, entre parenthèses.

Page 16: Les fonctions en Java Partie I Le type void. Dans cette rapide présentation, je vais expliquer :.à quoi servent les fonctions.à quoi faut-il penser avant

Ici, cela donnera

public static void puissance (int n, int p){

}

Tout le code de la

fonction devra se trouver

entre ces deux

accolades.

Puis on écrit le code de la fonction entre les deux

accolades.

Page 17: Les fonctions en Java Partie I Le type void. Dans cette rapide présentation, je vais expliquer :.à quoi servent les fonctions.à quoi faut-il penser avant

Attention !

Lorsque l’on écrit le code de la fonction, on doit

considérer que les données d’entrée (ici, n et p)

sont déjà déclarées et initialisées.

public static void puissance (int n, int p){

}

N’écrivez donc pas quelque chose comme ça

int n;

p = 4;

ou çaSauf cas spécial, n et p sont considérées comme

étant déjà déclarées et possèdent une valeur.

Page 18: Les fonctions en Java Partie I Le type void. Dans cette rapide présentation, je vais expliquer :.à quoi servent les fonctions.à quoi faut-il penser avant

On peut maintenant écrire le code de la fonction :

public static void puissance (int n, int p){

int cpt, result;

result = 1;

for (cpt = 1; cpt <= p; cpt = cpt+1){

result = result*n;}

System.out.println(result);}

Page 19: Les fonctions en Java Partie I Le type void. Dans cette rapide présentation, je vais expliquer :.à quoi servent les fonctions.à quoi faut-il penser avant

On place la fonction dans le fichier Main.java.

public class Main{

public static void main (String[] args){

int cpt, result;result = 1;

for (cpt = 1; cpt <= 3; cpt = cpt+1)

{result = result*5;

}

System.out.println(result);}

}

La fonction doit être

placée à l’intérieur

du public class Main,

en dehors du public

static void main.

ici

ou làCe qui donne …

Page 20: Les fonctions en Java Partie I Le type void. Dans cette rapide présentation, je vais expliquer :.à quoi servent les fonctions.à quoi faut-il penser avant

public class Main{

public static void puissance (int n, int p)

{int cpt, result;result = 1;

for (cpt = 1; cpt <= p; cpt = cpt+1)

{result =

result*n;}

System.out.println(result);}

public static void main (String[] args){

int cpt, result;result = 1;

for (cpt = 1; cpt <= 3; cpt = cpt+1){

result = result*5;}System.out.println(result);

result=1;

for (cpt = 1; cpt <= 4; cpt = cpt+1){

result = result*9;}System.out.println(result);

}}

Remarquez que l’on a ici deux

fonctions :

.la fonction puissance

.la fonction main

Page 21: Les fonctions en Java Partie I Le type void. Dans cette rapide présentation, je vais expliquer :.à quoi servent les fonctions.à quoi faut-il penser avant

Utiliser une fonction

Page 22: Les fonctions en Java Partie I Le type void. Dans cette rapide présentation, je vais expliquer :.à quoi servent les fonctions.à quoi faut-il penser avant

Maintenant que l’on a écrit la fonction

puissance, on va l’utiliser afin de raccourcir

la fonction main.

Pour ce faire, il faut écrire le nom de la

fonction, suivi, entre parenthèses, des

valeurs à transmettre à la fonction

(l’ordre est important), et terminer par un

point virgule.

Page 23: Les fonctions en Java Partie I Le type void. Dans cette rapide présentation, je vais expliquer :.à quoi servent les fonctions.à quoi faut-il penser avant

Regardons la fonction main…public static void main (String[] args){

int cpt, result;

}

result = 1;

for (cpt = 1; cpt <= 3; cpt = cpt+1){

result = result*5;}System.out.println(result);

result=1;

for (cpt = 1; cpt <= 4; cpt = cpt+1){

result = result*9;}System.out.println(result);

Cette partie sert à afficher 5

à la puissance 3.

On l’efface… et on appelle

notre fonction à la place

(nom de la fonction, suivi

des paramètres – ici, deux

entiers).

Remarque : l’ordre des

paramètres a une

importance.

Si on avait écrit

puissance(3,5), c’est 3 à la

puissance 5 qui sera

affiché.

puissance(5,3);

On peut aussi passer des

variables comme

paramètre…

Cette partie permet

d’afficher 9 à la puissance 4.

On l’efface, et on déclare

deux entiers : a, qui vaut 9,

et b, qui vaut 4.

int a = 9;int b = 4;

puissance (a, b);

Puis on appelle la fonction

puissance.

Page 24: Les fonctions en Java Partie I Le type void. Dans cette rapide présentation, je vais expliquer :.à quoi servent les fonctions.à quoi faut-il penser avant

Comment se passe l’appel à une fonction dans

un programme ?

Page 25: Les fonctions en Java Partie I Le type void. Dans cette rapide présentation, je vais expliquer :.à quoi servent les fonctions.à quoi faut-il penser avant

Reprenons notre code général

public class Main{

public static void puissance (int n, int p)

{int cpt, result;result = 1;

for (cpt = 1; cpt <= p; cpt = cpt+1)

{result =

result*n;}

System.out.println(result);}

public static void main (String[] args){

puissance (5, 3);

int a = 9;int b = 4;puissance (a, b);

}}

Comment se déroule l’exécution

de ce code ?

C’est par la fonction main que

Java commence à lire les lignes

de code.

Le programme débute donc par

cette ligne de code.

Java se rend alors compte qu’il

doit exécuter la fonction

puissance.

Il recopie la valeur 5 dans n …

(n vaudra 5 quand la fonction

puissance sera exécutée)

5

…et il recopie la valeur 3 dans p

(p vaudra 3 quand la fonction

puissance sera exécutée).

3

Puis, Java exécute la fonction

puissance, de la première ligne …

… jusqu’à la dernière.

Une fois la fonction terminée,

Java revient là où il était, et

continue son exécution (n et p

sont « effacés »).

Puis Java continue la fonction

main, jusqu’ici

Java doit exécuter à nouveau la

fonction puissance.

Il recopie la valeur de a dans n…

et la valeur de b dans p…

9 4

Puis la fonction puissance est

exécutée (avec n=9, et p=4).

Une fois la fonction terminée,

Java revient là où il était.

Une fois arrivé à la fin de la

fonction main, le programme est

terminé.

Page 26: Les fonctions en Java Partie I Le type void. Dans cette rapide présentation, je vais expliquer :.à quoi servent les fonctions.à quoi faut-il penser avant

Dernières précisions

Page 27: Les fonctions en Java Partie I Le type void. Dans cette rapide présentation, je vais expliquer :.à quoi servent les fonctions.à quoi faut-il penser avant

On vient de voir que lorsqu’une fonction est appelée,

les paramètres d’entrée sont recopiés dans la fonction.

public class Main{

public static void puissance (int n, int p)

{……

}

public static void main (String[] args){

int a = 9;int b = 4;puissance (a, b);

}}

Ici, lors de l’appel à la fonction

puissance, a est recopié dans n,

et b est recopié dans p.

Si on modifie la valeur de n ou de p dans la fonction

puissance, ça n’aura aucune influence sur a ou b.

Page 28: Les fonctions en Java Partie I Le type void. Dans cette rapide présentation, je vais expliquer :.à quoi servent les fonctions.à quoi faut-il penser avant

Pour les tableaux, c’est différent : les tableaux sont transmis

à la fonction.

Si on possède une fonction où un tableau est donné en

paramètre d’entrée, et que l’on modifie ce tableau dans la

fonction, les changements resteront après que la fonction soit

terminée.

Ceci est expliqué plus en détail dans la présentation sur les

attributions de valeur.

Page 29: Les fonctions en Java Partie I Le type void. Dans cette rapide présentation, je vais expliquer :.à quoi servent les fonctions.à quoi faut-il penser avant

Autre chose : Si on possède des variables avec le

même nom dans des fonctions différentes, Java

considère ces variables comme des entités

différentes.

public class Main{

public static void puissance (int n, int p)

{int a = 3;…

}

public static void main (String[] args){

int a = 9;….

}}

Ici, les deux variables a sont

vues comme deux variables

différentes et séparées.

Tout se passe comme si ceci

était en réalité écrit…

public class Main{

public static void puissance (int n, int p)

{int puissance_a = 3;…

}

public static void main (String[] args){

int main_a = 9;….

}}

Page 30: Les fonctions en Java Partie I Le type void. Dans cette rapide présentation, je vais expliquer :.à quoi servent les fonctions.à quoi faut-il penser avant

Pour terminer, sachez que vous avez tout à

fait le droit d’appeler une fonction dans une

autre fonction…