Valid XHTML     Valid CSS2    

Décomposition, Conception et Réalisation d'Applications

T.D. 1 : Commentaires et documentations

                    gilles.hunault "at" univ-angers.fr

Table des matières cliquable

  1. Révisons un peu GREP

  2. Révisons un peu AWK

  3. Commentaires

  4. Documentations internes et externes

  5. Documentations et rendus automatiques

  6. Une bonne pratique version 1

  7. Une bonne pratique version 2

  8. Comment ça marche ?

Il est possible d'afficher toutes les solutions via ?solutions=1 et de les masquer via ?solutions=0.

 

1. Révisons un peu GREP

Rappeler les principaux paramètres de grep. En particulier, à quoi servent les paramètres -i et -n ? Pourquoi ne peut-on pas utiliser -h pour avoir l'aide sur la commande grep ?

Si on a défini l'alias suivant : alias 'grep=grep --color=auto -a -i -n' comment avoir accès à la commande grep originale sans supprimer l'alias ?

Comment afficher avec grep la liste des fichiers PHP du répertoire courant qui contiennent l'expression preg_ ?

Comment afficher avec grep la liste des fichiers PHP du répertoire courant qui ne contiennent pas l'expression preg_ ?

A quoi sert zgrep ?

Solution :  

 

2. Révisons un peu AWK

Comment fonctionne AWK ? Pourquoi parle-t-on d'un langage condition/action ?

Ecrire un script oneliner en AWK pour afficher la ligne 1 de chaque fichier T*txt précédée du nom du fichier.

Ecrire un script oneliner en AWK pour afficher la ligne 1 ou 3 de chaque fichier td*php précédée du nom du fichier.

Ecrire un script AWK pour numéroter les fonctions d'un fichier PHP.

Solution :  

 

3. Commentaires

Quels sont les symboles usuels pour définir des commentaires, disons en Bash, C++, Javascript et PHP ?

Quelle est la différence entre un commentaire ligne et un commentaire bloc ?

Quelle expression régulière permet de trouver les lignes qui commencent par le symbole # (dièse) ? En déduire une ligne de deux commandes enchainées sous Linux qui compte le nombre de lignes commençant par de tels commentaires dans un fichier Perl. Modifier cette solution pour que le symbole de commentaire puisse être précédé d'un ou plusieurs espaces.

Ecrire un script AWK minimal puis un script "propre" pour donner le pourcentage de lignes commentaires qui commencent par # pour un seul fichier.

A quoi peut servir d'utiliser plusieurs fois le symbole # (dièse) dans les commentaires ?

De façon générale, comment garantir qu'il y aura des commentaires dans un fichier ?

Solution :  

 

4. Documentations internes et externes

Que signifient les termes UG, PG et RM dans le contexte du développement, de la programmation et de la documentation ?

Et les sigles IG, KB, FAQ ?

A quoi correspondent les expressions documentation interne et documentation externe ?

À quoi sert un (une ?) RFC ?

Dans quelle mesure le schéma actanciel de Greimas permet de mieux comprendre le rôle des différents acteurs/actants et participants d'un logiciel et de sa documentation ? Au sens de la narratologie, peut-on utiliser les termes d'intradiégétique et d'extradiégétique lorsqu'on traite de la documentation d'un logiciel ?

 

Solution :  

 

5. Documentations et rendus automatiques

Que désigne le terme de documentation automatique ? S'agit-il vraiment de documentation ?

Comment assure-t-on un rendu automatique dans un page Web, un document PDF etc. lorsqu'il s'agit de documentation technique, éventuellement automatique, en particulier lorsqu'on doit afficher du code informatique et qu'on veut une coloration syntaxique des divers éléments de code ?

Qu'est-ce que Markdown ? et un jupyter notebook ?

Solution :  

 

6. Une bonne pratique version 1

On voudrait convertir une quantité (variable quant) de pouces à centimètres et réciproquement (variable unit).

Ecrire le code PHP correspondant aux commentaires à la place des lignes VOTRE CODE ICI pour le texte suivant qui implémente une version 1 de la solution. Que faut-il ajouter pour tester le code en ligne de commandes afin de vérifier la conversion de 3 centimètres ? Recommencer avec du code R. Est-ce plus simple, plus facile ? Le code proposé est-il correct ? Que peut-on en conclure ?


     # conversion pouces/cm et cm/pouces
     # version 1 (gH)
     
     # 1. calcul à partir de quant et unit (variable resultat)
     #    si unit est "pouces" on multiplie quant par 2.54
     #    sinon on divise quant par 2.54
     
     VOTRE CODE ICI
     
     # 2. affichage arrondi (variable arrondi)
     #    on veut produire "3 pouces correspondent à 7.62 cm à 0.01 près"
     #    et "3.1234567*2.54 pouces correspondent à 7.93 cm à 0.01 près"
     
     VOTRE CODE ICI
     

Solution :  

 

7. Une bonne pratique version 2

Ecrire le code PHP correspondant aux commentaires à la place des lignes VOTRE CODE ICI pour le texte suivant. Que faut-il ajouter pour tester le code en ligne de commandes ? Recommencer avec du code R. Est-ce plus simple, plus facile ? Que peut-on en conclure ?

Recommencer avec du code Python. Est-ce plus simple, plus facile ? Que peut-on en conclure globalement ?

Que manque-t-il pour disposer d'une «bonne» fonction de conversion ?


     # conversion pouces/cm et cm/pouces
     # version 2 (gH)
     
     fonction conv(quant,unit)
     
     # 1. essai de calcul à partir de quant et unit (variable resultat)
     #    on initialise convOk à 0
     #    si unit est "pouces" on multiplie quant par 2.54 et on met 1 dans convOk
     #    si unit est "cm"     on divise    quant par 2.54 et on met 1 dans convOk
     
     VOTRE CODE ICI
     
     # 2. affichage arrondi si l'unité était correcte comme dans l'algorithme précédent
     #    prévoir un affichage si unité incorrecte
     
     VOTRE CODE ICI
     
     # 3. renvoi du resultat exact et du status de conversion
     
     renvoyer(resultat,convOk)
     
     fin_fonction # conv
     

Solution :  

 

8. Comment ça marche ?

Essayer d'expliquer la conception (hors interface Web) du mini-système documentaire disponible dans les pages système de présentation de fonctions PHP et système de présentation de fonctions R.

Combien de temps vous faudrait-il pour refaire ces deux systèmes ? Et pour les généraliser à n'importe quel code des langages classiques ?

Solution :  

 

       retour au plan de cours  

 

Code-source PHP de cette page ; code Javascript associé.

 

retour gH    Retour à la page principale de   (gH)