Seconde astude : Le défilement de texte.
Il s'agit plutôt d'un algorithme dont le secret reste à vérifier.
Le défilement de texte nécessite de raffraichire l'écran pour que l'espace allouer précédemment puisse accueillir le texte suivant et enfin ajouter une ligne en fin de liste de ligne.
Ici, l'astuce consiste en deux trois comparaisons dont la premiere permet de libérer le texte précédent, une seconde pour libérer la dernière ligne de l'espace pour afficher la dernière ligne de la liste de lignes et la troisième en une comparaison permettant l'incrémentation de la position de début d'affichage de la liste.
La taille de l'espace est une constante ; La variable Old_Count indique la position de la dernière lecture dans la liste, la variable Count indique la position de la ligne lue et la variable Line_Index, le nombre de ligne affichées.
Pour parcourire la liste, nous avons besoin d'une variable supplémentaire : Line_Count.
Le premièr teste permet la libération lors du défilement automatique du texte.
Le second teste permet d'afficher les premières lignes avant que le défilement automatique soit nécessaire.
L'instruction d'incrémentation est une instruction postérieure.
Ces comparaisons sont des équilibres entre espace consomé et espace consomable à une ligne près.
Le teste de sortie de lecture permet d'arrêter l'affichage lorsque l'espace est alloué dans son entièreté.
L'incrémentation ou la décrémentation de la position de lecture de la liste est une action différée pouvant être de 1 ou plus et -1 ou moins.
Le retour au début consiste en une remise à zéro de la variable dédiée à cet effet.
Le saut en fin est une affectation de la variable évoquée selon le nombre de lignes dans la liste en en déduisant l'espace alloué.
Première comparaison : si vraie alors libérer l'écran
Deuxième comparaison : si vraie alors libérer l'écran
Troisième comparaison : si vraie alors incrémenter la position de bébut d'écrirure.
Algorithme : (pseudo code)
Code :
- loop
- pour la liste faire
- Test 1 -> Effacer l'écran ; Si non Test 2 -> Effacer l'écran.
- Lire la ligne
- Afficher la ligne
- Incrémenter le nombre de lignes affichées
- Test 3 -> incrémenter
- Incrémenter l'espace alloué.
- Condition de sortie.
- Incrémenter le total de lignes consomées.
- Fin de liste.
- Remise à zéro de l'espace alloué.
- (Saisie des instructions de commande)
- Remise à zéro du total de lignes lues.
- end loop;
|
Arithmétique
Test 1 : (Count - Old_Count) + 1 > Espace libre - Line_Index
Test 2 : (Count - (Old_Count-1) + Line_index) > Espace libre + Line_Index + 1
Test 3 : Espace libre/2 + (Count - (Old_Count-1)) < (Espace libre - Line_Index) + (Count - (Old_Count-1))
On peut exprimer cette troisième comparaison par l'expression "chemin parcouru inférieur à chemin parcourable".
Au quel cas après l'incrétemntation, l'incrémentation entrainerait un résultat faux et c'est pourquoi nous incrémentons la variable permettant de conserver l'espace parcouru, ici à la moitier de l'espace libre.
Espace consomé = Espace parcouru - Position de lecture
Espace alloué = nombre de ligne affichée
Espace libre = Taille de l'espace.
Sortie : Si Esace libre <= Line_Index;
Ansi, la dernière ligne affichée est affichée deux fois.
Ce qui permet de replacer la position courante à la dernière ligne à laquelle peut succéder une saisie.
Variables :
La variable Line_Index est un entier naturel initialisé à un.
La variable Old_Count est un entier devant couvrir l'ensemble de la liste initialisée à zéro.
La variable Line_Count est un entier relatif devant couvrire le double de la liste initialisée à zéro.
">" suppérieur
"<" inférieur
"+" adition ou somme
"-" soustraction ou déduction
"( et )" calcule prioritaire
Il vous faudrat encore affecter les variables concernées par le parcour de l'affichage possible grace à une saisie.
Message édité par lady287 le 18-03-2026 à 15:05:04
---------------
jovalise (C) 2002 Manuel De Girardi ; web site