La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

1 Algorithmique, cours 3 Septembre 2010. 2 Les fonctions 1. Motivation 2. Définitions 3. Utilisation des fonctions 4. Déclaration des fonctions 5. Liens.

Présentations similaires


Présentation au sujet: "1 Algorithmique, cours 3 Septembre 2010. 2 Les fonctions 1. Motivation 2. Définitions 3. Utilisation des fonctions 4. Déclaration des fonctions 5. Liens."— Transcription de la présentation:

1 1 Algorithmique, cours 3 Septembre 2010

2 2 Les fonctions 1. Motivation 2. Définitions 3. Utilisation des fonctions 4. Déclaration des fonctions 5. Liens entre déclaration et utilisation 6. Pourquoi une fonction ?

3 3 1 Motivations C’est pratique d’avoir une fonction racine(x) De ne pas avoir à le recalculer à chaque fois On ne peut peut-être pas avoir des fonctions prédéfinies pour tout

4 4 Les fonctions sont utiles Pour ne pas répéter des calculs laborieux Pour rendre lisibles les algorithmes

5 5 2 Définitions C’est quoi une fonction ? Un nom Le type du résultat Les types des arguments Un effet (le lien entre les arguments et le résultat) En maths… ln : ℝ  ℝ est la fonction qui étant donné un réel x calcule le logarithme (népérien) de x

6 6 Vocabulaire abs : ℝ  ℝ x ↦ si x<0 –x si x  0 x Argument ou paramètre formel Type du résultat Type de l’argument Nom de la fonction

7 7 Vocabulaire abs(15) abs(3*(-5)) Argument ou paramètre d’appel

8 8 Exemple On sait que pour convertir les degrés Fahrenheit en degrés Celsius il convient de multiplier par 9, diviser par 5 et ajouter 32 : x ↦ C_to_F(x) = 9x/5+32 Autrement dit 0°C=32°F, 36°C=100.8°F (notons en passant que l’on utilise un algorithme pour convertir…)

9 9 Vocabulaire Une fonction a un nom, un type pour le résultat et des types pour les arguments Les arguments lors de la déclaration sont des arguments formels Les arguments lors de l’utilisation sont des arguments d’appel

10 10 3 Utilisation de fonctions Une fonction est employée sur des arguments d’appel et possède une valeur (se rappeler… la valeur de la fonction f en…)

11 11 Fonctions prédéfinies ( ℝ  ℝ ) sin, cos, abs, racine, exp sont des fonctions prédéfinies réel → réel Exemple : abs est la fonction ℝ  ℝ telle que x ↦ abs(x) Remarque : x est un paramètre formel

12 12 Fonctions prédéfinies longueur est une fonction prédéfinie chaîne de caractères → entier Exemple longueur(‘ce jour’) vaut 7

13 13 Utilisation On appelle ou utilise une fonction sur des paramètres d’appel : log (3) (3 est un paramètre d’appel) Ces paramètres d’appel sont : des valeurs des expressions Il faut bien sûr que les types coïncident log(« ceci est un beau jour ») pose problème

14 14 Utilisation (où ?) dans une expression 1+log(3) abs(7)<8 L’expression peut intervenir : dans une affectation opposé ← hypothénuse*sin(angle) dans un affichage afficher(sin(angle)) dans une conditionnelle si sin(angle)<0.5 alors …

15 15 Utilisation (vocabulaire) Il faut distinguer l’expression appelante qui contient la fonction et l’expression paramètre d’appel opposé ← hypothénuse*sin(angle*2) L’expression appelante L’expression paramètre d’appel

16 16 Attention au type ! Dans une affectation A ← (3,5+B) ou C on ne peut remplacer A que par un appel de fonction dont le résultat est numérique et C par un appel de fonction dont le résultat est booléen Exemple Pour B abs(17), log(0,7)… Pour C premier(47), pair(22)…

17 17 Fonctions prédéfinies Dans les différents langages de programmation il y a des fonctions prédéfinies Dans chaque cas, la fonction est prévue pour fonctionner avec des arguments de types particuliers Il peut y avoir des bibliothèques de fonctions contenant de très nombreuses fonctions (pas uniquement numériques)

18 18 Utilisation de fonctions prédéfinies On peut utiliser une fonction dont le type du résultat est T dans toute expression appelante où on s’attend à trouver une sous-expression de type T

19 19 4 Déclaration de fonctions Déclarer une fonction c’est : 1. la spécifier (types) 2. expliciter le calcul permettant de passer des paramètres à la valeur résultat

20 20 Déclaration (exemple) fonction C_to_F(temp_en_C réel ) : réel début retourner(1,8*temp_en_C + 32) fin

21 21 Déclaration (écriture) fonction nom_f (paramètres formels et types) : début instructions fin nom_f est un identificateur Il peut y avoir 0, 1 ou plusieurs paramètres formels Le corps de la fonction

22 22 Exemples saisie est une fonction à 0 arguments a  saisie() abs est une fonction à 1 argument afficher(abs(-3))

23 23 Ecriture (suite) Le corps de la fonction contient une unique instruction retourner(exp), dernière instruction de la fonction, dont l’effet est : A) évaluer exp B) interrompre l’exécution de la fonction puisque la valeur de celle-ci a maintenant été calculée C) transmettre à l’expression appelante la valeur en question

24 24 fonction nom_f (paramètres formels) : début instructions; retourner(exp) fin nom_f est un identificateur Le type de exp est

25 25 5 Liens entre déclaration et utilisation Dans un programme il existera des règles très précises nous disant où il faut placer la déclaration de la fonction. En algorithmique ce n’est pas un enjeu

26 26 fonction nom_f (paramètres formels et types) : type début instructions fin (dans l’appel) V  nom_f(paramètres d’appel)

27 27 Effet de l’appel Les paramètres d’appel sont évalués La valeur obtenue est transférée aux paramètres formels (il y a un contrôle ou une conversion de types) Le corps de la fonction est exécuté avec les valeurs retenues jusqu’à ce qu’une instruction retourner(exp) soit exécutée La valeur de la fonction est alors replacée dans l’expression appelante

28 28 Exemple très simple V  double(3) fonction double(i : entier) : entier début i  2*i ; retourner (i) fin i  3; transmission de paramètres i  2*i ;exécution du corps de la fonction V  itransmission du résultat

29 29 Exemple très simple 1) v  double(3) a) fonction double(i : entier) : entier b) début c)i  2*i ; d)retourner (i) e) fin vi Avant 1)? Avant a)? Après a)3 Après b)3 vi Après c)6 Après d)6 Après 1)6

30 30 Définition et utilisation d'une fonction a)fonction C_to_F(temp_en_C réel ) : réel début b)retourner(1,8*temp_en_C + 32) fin Utilisation dans l'algorithme début 1)temp1 ← saisie(); 2)temp2 ← C_to_F (temp1) ; 3)afficher(temp2) fin temp1 temp2Temp_en_C Avant 1)?? Après 1)10? Avant a)? Après a)10 Après b)10 Après 2)1050 Après 3)1050

31 31 Passages de paramètres Les paramètres d’appel sont évalués La valeur est transférée aux paramètres formels (il y a un contrôle ou une conversion de types) Le corps de la fonction est exécuté jusqu’à ce que l’instruction retourner(exp) soit exécutée La valeur de la fonction est alors replacée dans l’expression appelante

32 32 Écriture d'une fonction comme un algorithme ! fonction enDollar(mtt_en_euro réel) : réel mtt_en_dollar réel /* cette fonction convertit les euros en dollars au cours de 2004 */ début mtt_en_dollar ← 1.4*mtt_en_euro ; retourner(montant_en_dollar) fin

33 33 fonction estMajeur( âge entier) : booléen /* fonction qui indique si l’age d’une personne est celle d’un adulte ou non */ début retourner(âge>=18) fin Utilisation si estMajeur(monÂge) alors …

34 34 Plus compliqué… fonction UEestValidée( moyUE réel, moySem réel, moyAn réel): booléen /* l’enseignant ne répond pas de la correction de la règle*/ déclarations valid booléen début si moyUE ≥ 10 alors valid ← vrai sinon si moySem ≥ 10 alors valid ← vrai sinon valid ← (moyAn ≥ 10) fin si fin si ; retourner(valid) fin

35 35 Déclarations et appels Les paramètres d’appel doivent coïncider en type, en nombre et en ordre avec les paramètres formels Les paramètres d’appel sont évalués et ces valeurs sont utilisées dans la fonction. La valeur retournée est la valeur de la fonction C’est « comme si » on recopiait le corps de la fonction dans l’algorithme appelant

36 36 6 Pourquoi une fonction ? (1) Donner un nom à une portion d'algorithme ---> lisibilité, modularité

37 37 Pourquoi une fonction ? (2) « factoriser » une portion d'algorithme ---> facilité d'écriture lisibilité longueur du code source maintenabilité " écrire une fois, utiliser plusieurs fois "

38 38 Pourquoi une fonction ? (3) « partager » une portion d'algorithme avec d'autres algorithmes ---> réutilisabilité, facilité d'écriture " écrire une fois, utiliser plusieurs fois " Bibliothèques de fonctions

39 39 Pourquoi une fonction ? (4) utiliser une portion d'algorithme dans différents contextes ---> réutilisabilité, généricité " écrire une fois, utiliser plusieurs fois " Bibliothèques de fonctions

40 40 Pourquoi une fonction ? (5) "partager le travail" une portion d'algorithme peut ainsi être écrite par un tiers ---> rapidité d'écriture

41 41 Conclusions Les avantages des fonctions sont : Réutilisabilité Généricité Rend la lecture plus simple Partage du travail Modularité

42 42 Remarques pour la prochaine version Ajouter des exemples, en particulier avec des fonctions où il y a des choses qui se passe Probablement mettre ces slides supplémentaires en annexe (différence de vitesse des amphis) Les historiques d’exécution : en faire 2 tableaux différents avec des flèches de transmission (valeurs, résultat).


Télécharger ppt "1 Algorithmique, cours 3 Septembre 2010. 2 Les fonctions 1. Motivation 2. Définitions 3. Utilisation des fonctions 4. Déclaration des fonctions 5. Liens."

Présentations similaires


Annonces Google