Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parAmandine Pinette Modifié depuis plus de 9 années
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).
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.