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.

Slides:



Advertisements
Présentations similaires
La boucle for : init7.c et init71.c
Advertisements

Les fonctions A quoi ça sert ?
Initiation à la programmation et algorithmique cours 4
Initiation à la programmation et algorithmique cours 2
Algorithmique (suite)
Fonctions & procédures
Algorithmique Résume.
3- Déclaration et accès aux objets
C.
Paramètres et pointeurs
Calcul numérique (avec Maple)
5. Les structures répétitives
Les sous-programmes Chapitre n° 5: Objectifs : Activité:
Les bases de l’Algorithmique
Principes de programmation (suite)
Points importants de la semaine Les commentaires. Les variables. Les instructions conditionnelles. Les instructions itératives (les boucles).
Points importants de la semaine Les fonctions. La portée. La passage par copie. Les tableaux.
Semaine #1 INF155 par Frédérick Henri.
Cours 7 - Les pointeurs, l'allocation dynamique, les listes chaînées
Partie 1 Etude de l'existant
Récursivité.
Points importants de la semaine Les boucles. Les types arithmétiques. Les opérateurs.
Introduction à l’algorithmique
Démarche de résolution de problèmes
Algorithmique et Programmation
8PRO100 Éléments de programmation Comment faire prendre une décision à un ordinateur?
Les éléments de base de l’algorithmique
Points importants de la semaine Le paramétrage. La portée. Le passage par copie. Le passage par référence.
RESUMES Module II1 SOMMAIRE CYCLE 1 : Saisir – Afficher – Données
8PRO100 Éléments de programmation Allocation dynamique de la mémoire.
Algorithmique et Programmation
Semaine #1 INF130 par Frédérick Henri.
Semaine #1 INF135 par Frédérick Henri.
Points importants de la semaine Le préprocesseur. La conversion de types. Les fonctions.
Points importants de la semaine Les sous-programmes. Les paramètres.
Points importants de la semaine Les constantes de compilation. Les fonctions.
8PRO107 Éléments de programmation
Partie II Sémantique.
Procédures et fonctions
Plan cours La notion de pointeur et d’adresse mémoire.
Décomposition et paramétrage des algorithmes
 Syntaxe du langage PHP
Introduction au langage C Fonctions et Procédures
Sémantique des instructions pour le langage Z minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Méthodes et outils de conception Introduction à la programmation Paramètre de retour Appel d’une fonction Portée des variables Définition Pourquoi les.
Les types composés Les enregistrements.
1 Système d’exploitation Les scripts csh 1 ère Année Année Tienté HSU.
Cours 4 (14 octobre) Héritage. Chapitre III Héritage.
CPI/BTS 2 Algorithmique & Programmation La récursivité Algo – Prog CPI/BTS2 – M. Dravet – 14/09/2003 Dernière modification: 14/09/2003.
Module algorithmique et programmation
Scripts et fonctions Instructions de contrôle
Algorithmique Tableaux de données
Philippe Gandy - 8 septembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Objets et Actions Élémentaires.
Algorithmique Conditions et Itérations Cours de BTS/CPI 1ère année Algo – Prog CPI/BTS1 – M. Dravet – 17/09/2003 Dernière modification: 17/09/2003.
Philippe Gandy – 6 octobre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Philippe Gandy – 10 novembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Introduction à L’Algorithmique
Algorithmique Boucles et Itérations
L E C ORPS D ’ UN A LGORITHME / P ROGRAMME – L A PARTIE I NSTRUCTION Réalisé par : OUZEGGANE Redouane Département de Technologie Faculté de Technologie.
Philippe Gandy – 13 octobre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Algorithmique et programmation
Introduction à l’Informatique chap 3 Licence SPI Mme Delmotte.
A.Aarabi ´. ´ Objectifs Faciliter la prise en main du logiciel MATLAB Présenter les fonctionnalités utiles au travail scientifique.
L'exécution d'un programme nécessite l'utilisation des ressources de l'ordinateur : temps de calcul pour exécuter les opérations, et l'occupation de la.
Introduction à l’Informatique Licence SPI Mme Delmotte.
L ES INSTRUCTIONS DE L ECTURE, E CRITURE ET A FFECTATION Réalisé par : OUZEGGANE Redouane Département de Technologie Faculté de Technologie – Université.
ALGORITHME ET PROGRAMMATION RÉVISION Informatique et Sciences du Numérique.
La forme exponentielle
Transcription de la présentation:

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 entre déclaration et utilisation 6. Pourquoi une fonction ?

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 Les fonctions sont utiles Pour ne pas répéter des calculs laborieux Pour rendre lisibles les algorithmes

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 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 Vocabulaire abs(15) abs(3*(-5)) Argument ou paramètre d’appel

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 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 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 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 Fonctions prédéfinies longueur est une fonction prédéfinie chaîne de caractères → entier Exemple longueur(‘ce jour’) vaut 7

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 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 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 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 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 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 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 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 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 Exemples saisie est une fonction à 0 arguments a  saisie() abs est une fonction à 1 argument afficher(abs(-3))

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 fonction nom_f (paramètres formels) : début instructions; retourner(exp) fin nom_f est un identificateur Le type de exp est

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 fonction nom_f (paramètres formels et types) : type début instructions fin (dans l’appel) V  nom_f(paramètres d’appel)

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 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 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 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 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 É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 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 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 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 6 Pourquoi une fonction ? (1) Donner un nom à une portion d'algorithme ---> lisibilité, modularité

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

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

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).