dimanche 27 juillet 2014

Réalisation d'un éditeur de texte en utilisant les listes chaînées



I- Le cadre général :

a.      But du Mini-projet:

Ce projet consiste à concevoir un éditeur de texte contenant les fonctionnalités de base communes à tous les éditeur en utilisant les listes  chaînées.

b.      Présentation du sujet :

Un éditeur de texte est un logiciel destiné à la création et l'édition de fichiers textes. Chaque système d'exploitation fournit un éditeur, tant son usage est courant, voire incontournable pour certaines tâches (souvent informatiques (administration de système et développement logiciel)).
                      
Les éditeurs de texte se divisent en deux catégories:
·         Les éditeurs plein écran (ou full-screen),
·         Les éditeurs en mode caractère.
Un éditeur plein écran n'interagit avec l'unité centrale que lorsqu'elle est pressée une touche comme Entrée ou l'une des touches de fonction (Fn) ou d'action (PAn) du terminal. Le reste du temps, ce sont les capacités d'insertion native fournies par l'unité de contrôle du terminal qui permettent l'ajout, la suppression ou l'insertion de caractères dans toutes les lignes affichées sur l'écran.

c.      Quelques opérations de base :

Les fonctionnalités les plus élémentaires d'un éditeur sont:
      
-          Ouvrir un fichier (en proposant parfois une liste de fichiers récemment ouverts, ou déjà existants, voire en permettant de restreindre cette liste par un filtre)
-          Ajouter du texte dans une ligne, ou des lignes dans un fichier
-          Ôter des caractères dans une ligne, ou des lignes d'un fichier
-          Rechercher/remplacer une chaîne texte (la recherche n'est pas toujours disponible).
-       Sauvegarder le fichier, ou au contraire sortir en renonçant aux modifications (en cas de grosse erreur comme un effacement involontaire de texte).    

d.     Analyse générale :

Editer un texte semble très intuitif à toute personne sachant utiliser un ordinateur et un éditeur. Du point de vue d’un programmeur, il faut penser à toutes les fonctionnalités que doit proposer un tel programme. De l’ouverture d’un fichier à sa sauvegarde, en passant par les différentes opérations possibles sur le texte et l’annulation de celles-ci. Toutes ces fonctionnalités s’appliquent à des données.

Les fonctionnalités de l'éditeur à réaliser :

Parmi celles-ci certaines sont « indispensables » au bon fonctionnement de l'éditeur et au respect du cahier des charges. En voici une synthèse :

·    Ouvrir ou créer un fichier ;
·         Sauvegarde du fichier sous ;
·         Sauvegarde du fichier si le fichier existe déjà ;
·         Insertion du texte à la position courante ;
·         Suppression du texte à la position courante ;
·         Ajouter du texte après la ligne courante ;
·         Donner la position du curseur ;
·         Faire la recherche ;
·     Et d’autres fonctionnalités….

Un éditeur de texte porte bien son nom : son rôle est en effet d’éditer du texte… La donnée fondamentale est donc un texte. Texte qui peut provenir d’un fichier chargé en mémoire, ou qui peut également être créé de « toute pièce » dans l’éditeur.
                        
Afin que cet éditeur puisse servir de manière effective,il faut disposer de données persistantes qui permettent de stocker de manière définitive ce texte (dans un fichier). Lors de son chargement en mémoire, le texte est placé ligne par ligne dans une liste chaînée et devient une donnée résidente jusqu’à un nouvel enregistrement.

En dehors du texte, des données relatives aux opérations que l’on veut effectuer sont indispensables : les coordonnées x et y de la position courante par exemple. Nombre de lignes et nombre de caractères dans la ligne courante sont également des données q'on aura besoin d’extraire du texte.

Un dernier type de données est utilisé, il s’agit de la liste des commandes acceptées et reconnues par l’interpréteur de commande. Ces données sont réunies dans une liste les faisant correspondre aux fonctions voulues. On traite ces données en les comparants à une saisie de l’utilisateur.

II- Architecture de l'application :

Lors du lancement du programme, on obtient la fenêtre suivante qui demande soit d’ouvrir un fichier existant soit la création d’un nouveau fichier. Cette opération aboutira à la création d’une liste doublement chaînée contenant le texte en cours d’édition, chaque ligne étant rattachée à celle la précédant et à celle la suivant.

Une fois cette opération effectuée, Une fenêtre de saisie s’ouvre, permettant de d’éditer le texte avec toutes les fonctionnalités habituelles de déplacement du curseur ou des lignes, de la saisie du texte ou encore sa suppression.


Lorsqu’on clique sur ECHAP,  un prompt «  EDITEUR> » s’affiche nous permettant de saisir la fonctionnalité qu’on veut  effectuer. La plus simple étant « help » ; l’aide nous permet de consulter les différentes commandes relatives à chaque fonctionnalité disponible sur notre éditeur.


Ainsi, l’utilisateur peut saisir les commandes qu’il désire suivies éventuellement de leurs paramètres. Ces commandes appelleront les fonctions voulues afin qu’elles s’exécutent et laissent à nouveau la place à l’interpréteur de commande, déjà prêt pour la commande suivante. 
Les fonctions réalisant des opérations sur le texte reçoivent toutes un pointeur sur la liste doublement chaînée. Elles peuvent être appelées les unes à la suite des autres. 
En fin d’édition, il pourra être utile de sauvegarder les modifications du texte dans un fichier.