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

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

Plus en détail