Travaux Dirigé numéro 4 L&P
DESS CCI  1999-2000
 

Buts de la séance

 

On veut écrire un programme qui permet d'effectuer des affichages simples sur un écran. Les exercices proposés sont tirés du travail dirigé " Affichage sur un écran " du cours d'algorithmique.

La machine d'affichage que l'on souhaite réaliser a un état qui se caractérise par deux composants : l'écran et le curseur.

On appelle PremPos la première position de la première ligne, et DerPos la dernière position de la dernière ligne. Toute position p de l'écran a un successeur, que l'on appelle succ(p). On convient en outre que succ(DerPos) = PremPos. Avec ces éléments, nous utilisons le lexique suivant.

 

Données :

 
Fonctions :  
Actions : {ei: indifférent, ef: écran vide et posCour=PremPos} {ei: indifférent, ef: égal a ei, l'écran virtuel a été affiché sur l'écran de l'ordinateur} {ei: posCour=p0, ef: posCour=succ(po) et ecran contient le caractère en p0} {ei : indifférent, ef: posCour = position donnée} {ei : posCour = p0, ef: posCour = succ(p0)} {ei : posCour = p0, ef: posCour = 1ere position de la ligne suivant celle de p0}

 

Exercice 1 :

Traduire le lexique précédemment donné dans le langage C.

 

Exercice 2 :

Réaliser les actions suivantes en langage C, en termes des actions plus élémentaires définies dans le lexique :

{affichDes(c,n) affiche n occurrences du caractère c à partir de la position courante. A la fin, le curseur se trouve après le dernier caractère affiché}.

 

{affichRect(n,m,c) affiche n lignes comportant m occurrences de C par ligne. ei : curseur en début de la première ligne du rectangle à tracer, ef : le rectangle est tracé, le curseur est au début de la ligne suivant le dernier caractère affiché}.

 

Exercice 3 :

Réaliser (dans le langage C) les fonctions et actions : estAuDébut, viderEcran, placerCurs et aLaLigne en termes de primitives plus élémentaires. Réaliser ensuite les primitives élémentaires.

 

Exercice 4 :

Réaliser l'action affTriangle, définie comme suit, dans le langage C.

affTriangle : une action (les données : un entier sur [1..Largeur], un caractère)

{affTriangle(n,c) affiche un triangle fait à l'aide du caractère c et composé de 2n-1 lignes. La ligne centrale comporte n caractères. La ième et la 2n-ième lignes comportent i caractères. ei : curseur en début de la première ligne du triangle à tracer, ef : le triangle est tracé, le curseur est au début de la ligne qui suit celle du dernier caractère affiché}

 

Par exemple, affTriangle('*', 3) a l'effet suivant :

*

**

***

**

*