Université Joseph Fourier
DEUG STPI - 2ème année - IUP MIAG - 1ère année
Introduction aux systèmes et réseaux
 
Construction d'un tableur réparti
Étape 1 : tableur centralisé
On rappelle qu'un tableur est un tableau rectangulaire de cases, dont chacune peut contenir soit une valeur numérique, soit une expression, fonction du contenu des autres cases. Lorsqu'on change la valeur d'une case, le contenu de toutes les cases est automatiquement recalculé et s'affiche sur l'écran.

L'objectif du travail est de construire un tableur réparti. Un tel tableur comporte plusieurs exemplaires du tableau, chacune gérée par un processus différent, et pouvant se trouver sur des machines différentes. Lorsqu'on modifie une case quelconque du tableau sur une des machines, toutes les versions sont automatiquement mises à jour et réaffichées.

La première étape de ce travail consiste à construire un tableur unique (centralisé). Comme le but premier du travail n'est pas la construction proprement dite du tableur, mais l'initiation aux méthodes et outils de l'informatique répartie, une version préliminaire du tableur centralisé est fournie. 

Mais attention : cette version est incomplète et incorrecte. Une première étape du travail consiste à corriger l'erreur et à améliorer les fonctions.

Lire attentivement le programme, faire marcher le tableur, et surtout bien comprendre son fonctionnement. Noter que le programme est court, ce qui montre la puissance de Tcl-TK. Quand vous aurez bien compris, et fait les modifications, vous serez familiers avec les principaux mécanismes de Tcl et TK. Pour comprendre la fonction des commandes, utiliser si besoin le manuel en ligne, consultable sur le serveur (man <nom de la commande>, ou éventuellement man -s n <nom de la commande> lorsque la commande Tcl porte le même nom qu'une commande Unix). Par rapport aux commandes de Tcl que vous connaissez, le programme utilise deux fonctions "nouvelles" : regexp et regsub.

Pour faire marcher le tableur :

Vous verrez s'afficher le tableur (sous la forme d'un tableau 3 x 3). Vous pourrez alors le faire fonctionner (la convention pour les formules est de noter c(i,j) le contenu de la case (colonne i, ligne j)). Par exemple :

Attention : l'entrée d'un nombre ou d'une formule dans une case n'est validée qu'après avoir entré "Retour chariot". Noter qu'il y a deux modes d'affichage : dans l'un on affiche le texte qui a été entré dans les cases, dans l'autre on affiche le résultat du calcul. On passe de l'un à l'autre au moyen du bouton Text.

Les formules peuvent utiliser les opérations élémentaires de l'arithmétique, les parenthèses, et comporter des constantes entières (exemple : -5), réelles (exemple : 3.14) ou des variables de la forme c(i,j). Attention : ne pas laisser d'espace dans c(i,j) (pourquoi cette restriction ? - peut-on modifier le programme pour la lever ?).

Essayez aussi d'introduire des fonctions élémentaires (sin(c(0,1)), exp(c(0,1)), etc.) dans les formules. Que constatez vous ? Expliquez.

Quand vous aurez bien compris comment fonctionne le programme du tableur, il vous sera demandé de le modifier. Il faudra corriger l'erreur, puis améliorer les fonctions.

1) Correction de l'erreur

D'abord, trouver l'erreur !

Indications :

Ensuite, modifier le programme pour corriger l'erreur. Attention, ce n'est pas tout-à-fait immédiat, même si la correction ne comporte que quelques lignes de programme. La partie "amélioration des fonctions" est plus facile.

Pour faire cette correction, il vous sera sans doute nécessaire d'utiliser la commande catch de Tcl. Voir sa fonction dans le manuel en ligne.

2) Amélioration des fonctions

a) Rajouter un bouton étiqueté "Clear", dont la fonction est de remettre à zéro toutes les cases du tableur.

b) Le tableur a une taille fixe (3 x 3). Faire un tableur de taille quelconque (n lignes x p colonnes), les nombres n et p étant saisis au début du programme.