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.

Slides:



Advertisements
Présentations similaires
La programmation orientée objet avec Java L3-MIAGE Plan
Advertisements

GEF 243B Programmation informatique appliquée
Les fonctions A quoi ça sert ?
Formation universitaire à .NET: Introduction à C#
Spécialisation/généralisation Héritage Polymorphisme
Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro Nathan Cohen
La classe String Attention ce n’est pas un type de base. Il s'agit d'une classe défini dans l’API Java (Dans le package java.lang) String s="aaa"; // s.
(Classes prédéfinies – API Java)
L’ interruption de boucle
D. Defour, B. Goossens, D. Parello A quoi servent les registres? D. Defour, B. Goossens et D. Parello.
TD 1 IJA Introduction Objet, méthode, attribut Classe, instance
Les entrées /sorties en Java François Bonneville
CYCLE 6 : FONCTIONS FONCTIONS avec paramètres en Entrée 1- Pourquoi les FONCTIONS peuvent échanger des données en E entre elles ? 2- Comment écrire des.
1)Boucle for 2)Boucle while
1 Une introduction à Java IFT 287 (Semaine 1). 2 Java - Historique Développé par Sun Microsystems en 1994 –Inventeur James Gosling (canadien!) Objectif.
Points importants de la semaine Les commentaires. Les variables. Les instructions conditionnelles. Les instructions itératives (les boucles).
Structures collectives en Java
Introduction à la programmation (420-PK2-SL) cours 12 Gestion des applications Technologie de linformation (LEA.BW)
UNIVERSITE CHOUAIB DOUKKALI Département des mathématiques
Les méthodes en java Une méthode est un regroupement d’instructions ayant pour but de faire un traitement bien précis. Une méthode pour être utilisée.
POO-L3 H. Fauconnier1 Chapitre IV 1. classe Object, clonage 2. interfaces 3. classes internes et imbriquées.
Faculté I&C, Claude Petitpierre, André Maurer 1 Java.
Langage Oriente Objet Cours 4.
Badr Benmammar Programmation concurrente et temps réel en Java Badr Benmammar
Laboratoire d'Informatique de l’Université de Franche-Comté
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
© 2007 P. Van Roy. All rights reserved. FSAB1402: Informatique 2 Le Langage Java et les Exceptions Peter Van Roy Département dIngénierie Informatique,
Classes abstraites et Interfaces
Langage Oriente Objet Cours 2.
66 Utilisation des classes et des objets. 6-2 Objectifs A la fin de ce cours, vous serez capables de : Créer de nouvelles classes à laide de Eclipse Utiliser.
Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro Nathan Cohen
Points importants de la semaine Les constantes de compilation. Les fonctions.
Design Pattern Memento. Principe : Enregistrer les changements d'états d'un objet Objectif : Pouvoir restituer les états précédents d'un objet.
IFT 6800 Atelier en Technologies d’information
1 Les paquetages («packages»). 2 L'objectif avec les paquetages («packages») est de rendre accessibles aux utilisateurs des classes définies par d'autres.
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 3 : Classes et Objects.
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
Badr Benmammar Programmation concurrente et temps réel en Java Badr Benmammar
COURS DE PROGRAMMATION ORIENTEE OBJET :
COURS DE PROGRAMMATION ORIENTEE OBJET :
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure dInformatique (ESI) Plate-forme.NET.
CSI 1502 Principes fondamentaux de conception de logiciels
CSI1502 Principes fondamentaux en conception des logiciels
Récursion IFT1025: Programmation 2 Jian-Yun Nie. Définition Le fait pour un programme ou une méthode de s'appeler lui-même. Par exemple –Définir la notion.
Une introduction à Java
Les méthodes en java • Une méthode est un regroupement d’instructions ayant pour but de faire un traitement bien précis. • Une méthode pour être utilisée.
La librairie assert.h.
Informatique et science du numérique
Notion de fonction A partir d’un exemple Types de fonctions
SPIP SPIP est le système de publication développé par le minirézo.
Présentation rapide d’
Tutorat en bio-informatique
Entrées / Sorties.
Constructeurs H Batatia. Variable statique Une variable statique est partagée par tous les objets d’une classe.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 3 – Classes et objets en Java Master 1 SIGLIS1 Java Lecteur - Chapitre 3 Classes et objets en Java.
Introduction au langage C Fonctions et Procédures
Strings et Tableaux en Java
Les classes présenté par: RAHMOUNE RIME / ZEKRI SELMA.
Le polymorphisme.
Cours 4 (14 octobre) Héritage. Chapitre III Héritage.
Conception de Programmes - IUT de Paris - 1ère année Cours 2 – Références et passage de paramètres Les Références –Introduction aux références.
Conception de Programmes - IUT de Paris - 1ère année Conception de Programmes Objectifs et organisation du cours Introduction à la P.O.O.
LIFI-Java 2004 Séance du Mercredi 29 sept. Cours 4.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 2 – Java Premiers pas Master 1 SIGLIS1 Java Lecteur - Chapitre 2 - Java Premiers Pas.
1 Cpt JAVA : Eclipse (bis) Debogage. 2 Code à tester public class siecle { int t; public siecle() { super(); t=1; } static public boolean vrai() { return(false);
Généricité.
22 Concepts de base du langage Java. 2-2 Objectifs A la fin de ce cours, vous serez capables de : Identifier les éléments essentiels de Java Identifier.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Correction du TD Chapitre 2.
Java Réalisé par: Mouna POKORA. PLAN: Définition : Historique: Caractéristiques: un langage orienté objet: un langage interprété : un langage portable:
Int 10. Int 6.
Transcription de la présentation:

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 décrire une fonction,.comment déclarer et utiliser une fonction,.comment se déroule lappel à une fonction dans un programme.

Les fonctions (ou sous-programmes) permettent de regrouper des instructions qui sont utilisées plusieurs fois dans un programme.

Par exemple, imaginons que lon souhaite calculer un nombre à une certaine puissance. 5 3 = 5 x 5 x 5

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); }

Si on souhaite afficher aussi 9 4, on fera...

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 là

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.

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

Avant daller 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 ?

Dans un téléphone portable, il existe une fonction (un sous programme) permettant denvoyer des SMS à vos correspondants. Pour marcher, cette fonction a besoin :.dun message à envoyer.dun destinataire à qui lenvoyer Ce nest pas à la fonction de décider du contenu du message ni de la personne à qui lenvoyer. La fonction denvoi de SMS a donc besoin de deux données dentrée (on dit deux paramètres) : un message et un numéro à qui envoyer le message.

Pour reprendre notre exemple, la fonction qui calcule un entier élevé à une certaine puissance a besoin :.dun entier n qui sera lentier dont on calculera une puissance,.dun entier p qui sera la puissance à laquelle sera élevée n. Ce nest pas à la fonction de décider des valeurs de p ou de n.

Ecrire une fonction en Java

On doit écrire une fonction qui prendra en entrée deux entiers n et p, et affichera à lécran n p.

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 dentrée dont votre fonction a besoin, entre parenthèses.

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.

Attention ! Lorsque lon écrit le code de la fonction, on doit considérer que les données dentré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 ça Sauf cas spécial, n et p sont considérées comme étant déjà déclarées et possèdent une valeur.

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); }

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 à lintérieur du public class Main, en dehors du public static void main. ici ou là Ce qui donne …

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 lon a ici deux fonctions :.la fonction puissance.la fonction main

Utiliser une fonction

Maintenant que lon a écrit la fonction puissance, on va lutiliser 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 (lordre est important), et terminer par un point virgule.

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 lefface… et on appelle notre fonction à la place (nom de la fonction, suivi des paramètres – ici, deux entiers). Remarque : lordre des paramètres a une importance. Si on avait écrit puissance(3,5), cest 3 à la puissance 5 qui sera affiché. puissance(5,3); On peut aussi passer des variables comme paramètre… Cette partie permet dafficher 9 à la puissance 4. On lefface, 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.

Comment se passe lappel à une fonction dans un programme ?

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 lexécution de ce code ? Cest 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 quil 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, jusquici 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é.

Dernières précisions

On vient de voir que lorsquune fonction est appelée, les paramètres dentré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 lappel à 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 naura aucune influence sur a ou b.

Pour les tableaux, cest différent : les tableaux sont transmis à la fonction. Si on possède une fonction où un tableau est donné en paramètre dentrée, et que lon 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.

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; …. }

Pour terminer, sachez que vous avez tout à fait le droit dappeler une fonction dans une autre fonction…