Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT →
Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
utilisateurs:hypathie:tutos:algo-la-presentation-d-une-procedure [29/11/2014 08:38] Hypathie créée |
— (Version actuelle) | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== ALGO : La présentation d'une procédure====== | ||
- | * Objet : Ce que doit contenir la **présentation** d'une procédure | ||
- | * Niveau requis : {{tag>débutant avisé}} | ||
- | * Commentaires : //Contexte d'utilisation du sujet du tuto. // | ||
- | |||
- | |||
- | ===== Introduction : la méthode de présentation d'une procédure===== | ||
- | La **méthode d'approche du problème se décompose en six étapes** ; le résultat obtenu, de l'analyse du problème, c'est la procédure. | ||
- | |||
- | Imaginons un client, un jury, n'importe qui cherche une solution générale, codable en n'importe quel langage de programmation, car ce qu'on a comme programme pour une application informatique, n'est pas super. Par ce qu'on est un super concepteur, on a une idée de comment faire quelque chose, ou comment faire mieux quelque chose. Mais on est pas tout seul. Il faut être compris par les autres, et aussi permettre à son idée d'être choisie. Plus elle sera claire, parlante pour ceux des autres branches, électroniciens, clients, etc, etc, mieux cela voudra. | ||
- | |||
- | Pour ce faire, il faut savoir exposé ce qu'est le problème à résoudre AVANT de donner la solution qui permet de le résoudre. | ||
- | |||
- | Prenons pour exemple, une procédure qui compte les voyelles d'un mot comporte trois étapes. | ||
- | |||
- | Il s'agit distinguer l'exposé de la procédure de la procédure elle-même. | ||
- | |||
- | ====Méthode de définition du problème d'une solution==== | ||
- | |||
- | Les six étapes pour présenter une procédure : | ||
- | |||
- | - poser le problème (la moulinette); | ||
- | - définition de la nature (type) des données ; | ||
- | - le jeu d'essai ; | ||
- | - définition de l'interface (ce que fait dans cette procédure en termes algorithmiques) ; | ||
- | - définition en termes algorithmique du programme de test ; | ||
- | - la procédure | ||
- | <note tip> | ||
- | * Les cinq première étape de la méthode d'approche définit ce qu'il faut faire (le quoi ?) ; | ||
- | * La sixième étape définit comment on le fait (le comment). | ||
- | </note> | ||
- | |||
- | ====Le compte rendu d'une procédure==== | ||
- | Les trois étapes du compte rendu: | ||
- | |||
- | - Le jeu d'essai ; | ||
- | - le programme de validation de la procédure ; | ||
- | - le programme de la procédure | ||
- | |||
- | ===== Rédiger une procédure qui compte les voyelles d'un mot.===== | ||
- | On cherchera à exprimer la résolution en meta-langage d'une procédure qui permet de retourner le nombre de voyelles contenu dans une phrase.\\ | ||
- | |||
- | On partira du principe que cette phrase est arrêtée par un point. | ||
- | |||
- | ===1) Un schéma de ce qu'il faut faire avec cette procédure=== | ||
- | |||
- | <code> | ||
- | |||
- | Entrée | | Sortie | ||
- | phrase ----> | procédure compte voyelle |----> nombre de voyelles | ||
- | </code> | ||
- | |||
- | |||
- | ===2) Définition des données : le structure de données=== | ||
- | On définit les types.\\ | ||
- | |||
- | * Phrase : | ||
- | On crée un type phrase pour le type "chaîne de caractère" | ||
- | |||
- | <code c> | ||
- | chaine = tableau[N] de caractères | ||
- | </code> | ||
- | ''chaine'' : nom de ce nouveau type\\ | ||
- | ''tableau'' : mot clé | ||
- | ''[N]'' : taille du tableau ou indice maximal | ||
- | ''de caractères'' : nature ou type | ||
- | |||
- | ===3) Jeu d'essai === | ||
- | |||
- | Il permet de penser aux cas limites pour définir plus en détail ce qu'il faut faire avec cette procédure.\\ | ||
- | En tant que débutant, on pose que la condition d'arrêt est donnée. C'est-à-dire on n'envisagera pas le cas où l'utilisateur oublie le point à sa phrase. | ||
- | |||
- | <code> | ||
- | | phrase | nombre de voyelles | | ||
- | 1 |"oiseau." | 5 | | ||
- | 2 | "." | 0 | | ||
- | 3 |"kwskwz." | 0 | | ||
- | 4 |"oie." | 3 | | ||
- | |||
- | </code> | ||
- | |||
- | 1) L'utilisateur rentre un mot.\\ | ||
- | 2) Et si l'utilisateur ne rentre que la condition d'arrêt, est-ce que doit contenir la procédure pour que le programme fonctionne ?\\ | ||
- | 3) l'utilisateur est polonais ; pas de voyelle à son mot LOL \\ | ||
- | 4) Il choisit un mot contenant que des voyelles | ||
- | |||
- | ===4) définition de l'interface === | ||
- | Quand le problème se compliquera, il pourra y avoir plusieurs interfaces.\\ | ||
- | Il s'agit là de réécrire ce qu'on a définit précédemment en termes algorithmiques. | ||
- | |||
- | Voilà comment le formalisme exige que soit déterminé l'interface de la procédure :\\ | ||
- | |||
- | <code> | ||
- | procédure CompteVoyelle(entrée phrase : chaine , sortie nbrVoyelle : entier) | ||
- | |||
- | // CompteVoyelle : Cette procédure permet de compter les voyelles d'une phrase. | ||
- | // phrase : c'est la phrase analysée | ||
- | // nbrVoyelle : nombre de voyelles (a e i o u) d'une phrase | ||
- | |||
- | |||
- | </code> | ||
- | <note tip> | ||
- | **__Explications__**\\ | ||
- | |||
- | Il s'agit de définir les paramètres formelles (imaginaires ) de la procédure en entrée et en sortie, ces paramètres prendront d'autre noms lorsque la procédure sera utilisée dans le programme de la procédure.\\ | ||
- | |||
- | ''procédure CompteVoyelle(entrée phrase : chaine , sortie nbrVoyelle : entier'' | ||
- | |||
- | ''CompteVoyelle'' : nom de la procédure ; la syntaxe du nom sera repris **à l'identique** dans l'algorithme final pour **l'appel** (utilisation) de la procédure.\\ | ||
- | |||
- | ''phrase'' : nom de la variable d'entrée, dans cette "notice", **dans cette "notice**"\\ | ||
- | ''chaine'' : nom du type créé (un tableau nommé chaine) : __ré-utilisé (c'est une fonction) par le programme de test de la procédure__.\\ | ||
- | |||
- | ''nbrVoyelle'' : nom de la variable de sortie, **dans cette "notice"**\\ | ||
- | ''entier'' : type de la variable chaine (elle est d'un type existant). | ||
- | </note> | ||
- | |||
- | ===5) Le programme (en langage algorithmique) d'essai === | ||
- | Là encore on définit le QUOI((ce qu'il faut faire)), et pas encore le COMMENT((comment cette procédure fonctionne)).\\ | ||
- | |||
- | <code c> | ||
- | CONSTANTES | ||
- | |||
- | N = 43 // taille maximum d'une phrase | ||
- | STOP = '.' // Caractère terminateur | ||
- | |||
- | TYPE | ||
- | chaine = tableau[N] de caractère | ||
- | |||
- | VARIABLES | ||
- | Texte : chaine // texte à analyser | ||
- | nbV : entier // nombre de voyelles du texte | ||
- | |||
- | PROCÉDURE | ||
- | CompteVoyelle | ||
- | /*On colle là ce qu'on a rédigé précédemment, "la notice" de la procédure*/ | ||
- | |||
- | début | ||
- | écrire ("Donnez votre texte.") | ||
- | lire (Texte) | ||
- | comptevoyelle(texte , nbV) | ||
- | fin | ||
- | |||
- | </code> | ||
- | |||
- | On voit que ce programme de test utilise la notice de la procédure **CompteVoyelle** est utilise le type ''chaine'' avec des variables nommées différemment. (Chacun est maître chez soi !). | ||
- | |||
- | C'est le programme que le concepteur lit pour lui-même est vérifié que sa procédure fonctionne. | ||
- | |||
- | ===6) Le code de la procédure === | ||
- | |||
- | C'est le programme de la procédure.\\ | ||
- | On rédige cette fois en termes algorithmiques ce que définissait la notice de la procédure à l'étape n°4, en langage imaginaire. | ||
- | C'est ce programme que le codeur en C ; C# ; C++ ... lira et traduira dans le langage de programmation qui est le sien. | ||
- | |||
- | <code c> | ||
- | INTERFACE | ||
- | procédure CompteVoyelle(entrée phrase : chaine , sortie nbrVoyelle : entier) | ||
- | |||
- | // CompteVoyelle : Cette procédure permet de compter les voyelles d'une phrase. | ||
- | // phrase : c'est la phrase analysée | ||
- | // nbrVoyelle : nombre de voyelles (a e i o u) d'une phrase | ||
- | |||
- | VARIABLES | ||
- | |||
- | i : entier | ||
- | |||
- | début | ||
- | |||
- | i := 1 // indice de parcours | ||
- | nbVoyelle := 0 // nombre de voyelle cherché dans la phrase | ||
- | |||
- | TQ phrase[i] <> STOP faire | ||
- | | ||
- | // Traiter un caractère | ||
- | | ||
- | SI ((phrase[1] = 'a') OU (phrase[1] = 'e') OU (phrase[1] = 'i') OU (phrase[1] = 'o') | ||
- | OU (phrase[1] = 'u') OU (phrase[1] = 'y')) | ||
- | |||
- | ALORS | ||
- | nbVoyelle := nbVoyelle + 1 | ||
- | |||
- | FINSI | ||
- | | ||
- | i := i + 1 | ||
- | | ||
- | FinTQ | ||
- | |||
- | </code> | ||
- | |||
- | =====Conclusion : Archiver une procédure===== | ||
- | |||
- | Une procédure est un outil qui doit être archivé, documenté pour que d'autre s'en serve sans ce poser de question ; ils l'utiliseront comme une recette de cuisine. | ||
- | |||
- | |||
- | - Le jeu d'essai ; | ||
- | - le programme de validation de la procédure ; | ||
- | - le programme de la procédure |