Introduction à l`algorithmique et à la programmation (Info 2
Transcription
Introduction à l`algorithmique et à la programmation (Info 2
Introduction à l’algorithmique et à la programmation (Info 2) Neuvième cours: Fonctions personnalisées Matthieu Puigt IUT du Littoral Côte d’Opale DUT Génie Industriel et Maintenance [email protected] http://www-lisic.univ-littoral.fr/~puigt/ . Retrouvez ce document sur : http://www-lisic.univ-littoral.fr/~puigt/teaching.html Année universitaire 2014–2015 M. Puigt Info 2 – Cours 9 2014–2015 1 Pourquoi des fonctions personnalisées ? (1) Voir http://www.pise.info/algo/procedures.htm Nombreux algorithmes peuvent être longs î plusieurs traitements identiques ou similaires. Exemple : répondre par oui ou non M. Puigt Mauvaise structure : ... Ecrire “Etes-vous marié ?” ; Resp1 ← “X” ; TantQue (Resp1 6= “Oui”) ET (Resp1 6= “Non”) Ecrire “Entrez Oui ou Non” ; Lire Resp1 ; FinTantQue ... Ecrire “Avez-vous des enfants ?” ; Resp2 ← “X” ; TantQue (Resp2 6= “Oui”) ET (Resp2 6= “Non”) Ecrire “Entrez Oui ou Non” ; Lire Resp2 ; FinTantQue ... Info 2 – Cours 9 2014–2015 2 Pourquoi des fonctions personnalisées ? (1) Voir http://www.pise.info/algo/procedures.htm Nombreux algorithmes peuvent être longs î plusieurs traitements identiques ou similaires. Exemple : répondre par oui ou non î Optimisation en isolant les instructions où on doit répondre par oui ou non î Fonction dont le rôle sera de renvoyer la réponse (oui ou non). Fonction RepOuiNon() en Caractère ; Variable Truc en Caractère; Début Truc ← “X” ; TantQue (Truc 6= “Oui”) ET (Truc 6= “Non”) Ecrire “Entrer Oui ou Non” ; Lire Truc ; FinTantQue Retourner Truc ; FinFonction Apparition de l’instruction Retourner qui dit quelle est la valeur à renvoyer Une fonction s’écrit toujours en-dehors de la procédure principale. M. Puigt Info 2 – Cours 9 2014–2015 2 Pourquoi des fonctions personnalisées ? (2) L’exemple précédent s’écrit alors : Bonne structure : ... Ecrire “Etes-vous marié ?” ; Resp1 ← RepOuiNon() ; ... Ecrire “Avez-vous des enfants ?” ; Resp2 ← RepOuiNon() ; ... Notez la présence de parenthèses, comme pour les fonctions prédéfinies Notez aussi que la fonction ne produit qu’une seule valeur (comme pour les fonctions prédéfinies) Quand on veut sortir plus d’une valeur, on fait appel à une procédure (en dehors du cadre du cours, mais détaillé dans pise.info) M. Puigt Info 2 – Cours 9 2014–2015 3 Passage d’arguments (1) Dans l’exemple précédent, il n’y avait pas d’argument à la fonction RepOuiNon. Cependant, elle était toujours appelée après une instruction d’écriture î Améliorer l’algorithme en incluant cette instruction dans la fonction. lorsqu’on appelle la fonction, on doit lui préciser quel message elle doit afficher avant de lire la réponse la fonction doit être “prévenue” qu’elle recevra un message, et être capable de le récupérer pour l’afficher. Le message devient un argument (ou un paramètre) de la fonction Fonction RepOuiNon(Msg en Caractère) en Caractère ; Variable Truc en Caractère; Début Ecrire Msg ; Truc ← “X” ; TantQue (Truc 6= “Oui”) ET (Truc 6= “Non”) Ecrire “Entrer Oui ou Non” ; Lire Truc ; FinTantQue Retourner Truc ; FinFonction M. Puigt Info 2 – Cours 9 2014–2015 4 Passage d’arguments (2) Dans l’exemple précédent, la procédure principale est alors encore simplifiée : ... Resp1 ← RepOuiNon(“Etes-vous marié ?”) ; ... Resp2 ← RepOuiNon(“Avez-vous des enfants ?”) ; ... Remarque : on n’a passé qu’un seul argument en entrée mais on peut bien sûr en avoir plusieurs. C’est souvent le cas (par ex : les fonctions d’Excel nécessitent plusieurs paramètres en entrée) M. Puigt Info 2 – Cours 9 2014–2015 5 Deux mots sur l’analyse fonctionnelle Factorisation du code : tâche difficile (mais très importante) : constituer systématiquement les fonctions adéquates quand on doit traiter un problème donné. La conception d’une application se résume alors à : 1 2 3 4 M. Puigt Analyse : identifier le problème à traiter, en inventoriant les fonctionnalités nécessaires, les tenants et les aboutissants, les règles explicites ou implicites, les cas tordus, etc. Analyse fonctionnelle : procéder à un découpage de l’application entre une procédure qui jouera le rôle de chef d’orchestre, ou de donneur d’ordre, et des modules périphériques (fonctions ou sous-procédures) qui joueront le rôle de sous-traitants spécialisés. Algorithmique : détailler l’enchaînement logique des traitements de chaque (sous-)procédure ou fonction Codage (ou programmation) : procéder sur machine à l’écriture (et au test) de chaque module dans le langage voulu Info 2 – Cours 9 2014–2015 6 Exercices 1 Ecrivez une fonction qui renvoie la somme de cinq nombres fournis en argument. 2 Ecrivez une fonction qui renvoie le nombre de voyelles contenues dans une chaîne de caractères passée en argument. Au passage, notez qu’une fonction a tout à fait le droit d’appeler une autre fonction. 3 Réécrivez la fonction Trouve, vue précédemment, à l’aide des fonctions Mid et Len (comme quoi, Trouve, à la différence de Mid et Len, n’est pas une fonction indispensable dans un langage). Ecrivez une fonction qui purge une chaîne d’un caractère, la chaîne comme le caractère étant passés en argument. Si le caractère spécifié ne fait pas partie de la chaîne, celle-ci devra être retournée intacte. Par exemple : 4 Purge(“Bonjour”,“o”) renverra “Bnjur” Purge(“J’ai horreur des espaces”,“ ”) renverra “J’aihorreurdesespaces” Purge(“Moi, je m’en fous”, “y”) renverra “Moi, je m’en fous” M. Puigt Info 2 – Cours 9 2014–2015 7
Documents pareils
Corrigé Série d`exercices n°4 : Les fonctions et procédures
Exemple le nombre est 3524, on doit afficher 4253.
Procedure Miroir (x : entier) ;
Declaration
Variable
a, b : entier ;
Debut
Tantque x ≠ 0 Faire
Debut
a x Mod 10 ;
Ecrire (a) ;
x x Div 10 ;
Fi...