Valid XHTML     Valid CSS2    

DECRA, T.P. 1 :

     Gestion de noms et de prénoms, prototypes

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

                    gilles.hunault "at" univ-angers.fr

Table des matières cliquable

  1. Trier des noms et des prénoms avec AWK et PHP

  2. Conception : maquettes et prototypes pour le calcul de co-occurrences

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

 

Rappel : pour utiliser PHP 7 avec une "bonne configuration" dans les locaux du département informatique, vous devez dans un terminal lancer la commande _php7 c'est-à-dire php7 précédé du souligné _. Comme cet alias lance un "docker" il est conseillé d'utiliser, dans ces salles, deux terminaux pour la ligne de commandes et deux explorateurs de fichiers, de façon à pouvoir échanger facilement des fichiers entre le conteneur et votre répertoire usuel de stockage. Attention : gawk et wget ne doivent pas être exécutés dans le terminal du conteneur, mais bien dans l'autre terminal. De plus seul le conteneur dispose de phpunit.

Dans le même genre d'idées, utiliser un répertoire pour tous vos développements de ce T.P., par exemple nommé tp1/ ou DCRA-tp1/ est une pratique conseillée. Le chemin absolu pour vos fichiers du conteneur est, quant à lui, /home/php_dev/Mes_projets_web/.

 

1. Trier des noms et des prénoms avec AWK et PHP

On dispose des deux fichiers de données, nommés nomsprenoms1.txt et nomsprenoms2.txt. On voudrait afficher rapidement et "proprement" ces fichiers par ordre croissant de nom ou de prénom. Trouver une solution en ligne de commande avec AWK et PHP (prototypes) puis fournir une solution Web en PHP avec choix du fichier et choix du critère de tri. On écrira des classes d'objets Chaines et Personnes qu'on viendra tester avec phpunit.

Voici le fichier nomsprenoms1.txt :


     Jeanne Calment
     Jean  Valjean
     Brigitte BARDOT
     Emile ZOLA
     
     

Et le fichier nomsprenoms2.txt :


     Jean Baptiste POQUELIN
     Daniel COHN BENDIT
     Jeanne-Marie de Maillé
     

Voici un exemple de fichier "propre" issu de nomsprenoms2.txt. On a trié par ordre croissant de nom et on a aligné les noms convertis en majuscules.


     COHN BENDIT         Daniel
     DE MAILLE           Jeanne-Marie
     POQUELIN            Jean Baptiste
     

Pour les plus fort(e)s, on produira aussi un fichier Word, Excel et PDF des listes de noms.

On réfléchira aux extensions et généralisations possibles.

Remarque : pour éviter de perdre du temps, on rapatriera en local les fichiers-texte des noms et prénoms via wget.

Solution :  

 

2. Conception : maquettes et prototypes pour le calcul de co-occurrences

Faut-il toujours écrire des prototypes ? Dans quel(s) langage(s) ? Comment utiliser la méthode Agile pour le problème ci-dessous, de calcul de co-occurrences ?

On s'intéresse ici à la production d'un tableau dit "tri croisé amélioré" qui comptabilise les croisements de deux variables qualitatives avec des marges correspondant aux pourcentages globaux.

Voici un exemple de fichier de données nommé elf1.txt :

Et le fichier de résultats recherché elf2.txt sachant qu'on s'intéresse aux champs SEXE et ETUD :


                Homme   Femme   pct Etudes
     NR          2       1        6.1 %
     Primaire    1       5       12.2 %
     Secondaire  3      13       32.7 %
     Bac         5       4       18.4 %
     Supérieur   6       9       30.6 %
     pct Sexe   34.7 %  65.3 %
     

On trouvera la description des données à l'adresse ELF.

Comment produire une solution qui fonctionne quelque soit le tableau de données en entrée ? Pour les plus fort(e)s, on produira aussi les histogrammes de fréquences associés, à savoir :

               non su

On réfléchira aux extensions et généralisations possibles. Nous fournissons à ce titre, deux fichiers de configuration possibles, nommés elf2Data.xml et autreCfg.xml.

Fichier elf2Data.xml


     <TRICROISE>
      <variable1>
        <nom>SEXE</nom>
        <modalites>
          <modalite valeur="1">Homme</modalite>
          <modalite valeur="2">Femme</modalite>
        </modalites>
      </variable1>
      <variable2>
        <nom>EtMarital</nom>
        <modalites>
          <modalite valeur="0">Seul</modalite>
          <modalite valeur="1">En couple</modalite>
        </modalites>
      </variable2>
     </TRICROISE>
     

Fichier autreCfg.xml


     <TRICROISE>
      <variable1>
        <nom>nivEtudes</nom>
        <modalites>
          <modalite valeur="0">Sans</modalite>
          <modalite valeur="1">Primaire</modalite>
          <modalite valeur="2">Secondaire</modalite>
          <modalite valeur="3">Bac</modalite>
          <modalite valeur="4">Sup</modalite>
        </modalites>
      </variable1>
      <variable2>
        <nom>clAGE</nom>
        <modalites>
          <modalite valeur="0">Enfant</modalite>
          <modalite valeur="1">Adulte</modalite>
        </modalites>
      </variable2>
     </TRICROISE>
     

Remarque : comme pour la partie PHP, pour éviter de perdre du temps, on rapatriera en local les fichiers-texte des noms et prénoms via wget.

Solution :  

 

       retour au plan de cours  

 

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

 

retour gH    Retour à la page principale de   (gH)