Rapide survol de WINSCM


Ce document constitue une rapide présentation du logiciel Winscm notamment à travers un exemple de session de travail. Il s'agit du texte distribué à nos étudiants lors de la découverte de cet environnement de programmation. Il ne s'agit pas d'un mode d'emploi présentant toutes les fonctionnalités du logiciel : certaines sont passées sous silence (la gestion de projets par exemple). Néanmoins ce qui suit devrait suffir à une prise en main de Winscm y compris pour un novice.

Ce texte constitue légalement une partie de l'annexe du livre "Débuter la programmation avec Scheme".chez ITP France.

Plan du document


Pour récupérer le logiciel, cliquez ici.

Lancement de l'environnement Winscm
La fenêtre Winscm
Manipulation de base
L'interprète dans l'environnement
Exemple de session de travail

Lancement de l'environnement Winscm

À l'aide de l'explorateur placez-vous dans le répertoire contenant le programme Winscm et double-cliquez sur l'icône Winscm. Une fenêtre de présentation apparaît. Quelques instants après, la fenêtre de l'interprète Scheme s'ouvre puis la fenêtre Winscm apparaît enfin.

La fenêtre Winscm

La fenêtre Winscm comporte un certain nombre d'éléments que l'on retrouve dans la plupart des applications Windows (FIG 1) : une barre de titre, une case système, des cases de réduction et d'agrandissement, une barre de menus, une zone de boutons (permettant d'exécuter les opérations les plus courantes sans passer par les menus), des ascenseurs (permettant de faire défiler le texte quand celui-ci dépasse la capacité d'affichage de la fenêtre).

FIG 1 - La fenêtre principale de Winscm et ses principaux composants
D'autres éléments sont propres à l'application qui nous intéresse :
On active une fenêtre en cliquant dessus.

Un menu contextuel peut être ouvert en cliquant avec le bouton droit de la souris. Le contenu de ce menu dépend de la fenêtre où se trouvait le curseur de la souris au moment du clic.

Manipulation de base
Utilisation des menus

Pour activer un menu, deux solutions :

Vous pouvez ensuite choisir la commande qui vous intéresse en utilisant la souris ou les flèches de direction. Remarquez qu'à chaque sélection d'une commande, une description de l'action de celle-ci apparaît dans la barre d'état, en bas à gauche.
Quitter Winscm

Toute première chose à savoir : comment quitter* le logiciel... Plusieurs solutions, à vous de choisir :

Dans chacun des cas, une confirmation est demandée. Si un fichier (un programme) est en cours d'écriture et a été modifié depuis la dernière sauvegarde, il vous est alors offert la possibilité de le sauvegarder.
Activation de l'aide

Une aide est consultable, soit en passant par le menu Aide, soit en cliquant sur le bouton représentant un point d'interrogation, soit en appuyant la touche F1 (l'aide est alors contextuelle : elle dépend de la situation courante ; ainsi si le menu Fichier est ouvert et que la sélection est sur la commande Enregistrer, en appuyant sur F1, on ouvre la fenêtre d'aide directement sur l'explication de cette commande).

Au sein de l'aide, il est possible d'accéder aux différentes informations soit grâce à l'index, soit en cliquant sur les portions de texte en rouge ce qui permet d'accéder directement au sujet concerné.

Quelques commandes utiles pour l'édition

La plupart des commandes décrites ci-dessous sont accessibles par un des boutons de la zone de boutons.

D'autres commandes
L'interprète dans l'environnement

C'est dans cette fenêtre, et dans celle-ci uniquement, que vous effectuerez les évaluations : c'est la fenêtre du langage, les autres fenêtres ne permettent que de faciliter l'édition.

L'interprète se trouve dans la fenêtre Winscm. Il est possible d'afficher la zone de l'interprète en plein écran en appuyant simultanément sur les touches Alt et Entrée (après avoir sélectionné la fenêtre en cliquant dedans). On retourne à l'environnement en appuyant sur les mêmes touches.

Exemple de session de travail

Cet exemple illustrera, entre autres choses, les liens qui existent entre la zone d'édition et la zone de l'interprète. Il permettra également de découvrir le fonctionnement des principales fonctionnalités du logiciel. Vous pourrez ensuite en savoir plus en consultant l'aide (menu Aide, choix Index ou touche F1).

Ouverture d'un fichier

Dans cette session, nous allons travailler sur un programme déjà commencé. Il faut donc commencer par ouvrir le fichier contenant ce programme. Cela se fait en activant la commande Ouvrir du menu Fichier, ou en cliquant sur le bouton représentant un classeur ouvert, ou encore en activant le menu contextuel de la zone de variables et en choisissant ouvrir.

Une fenêtre s'ouvre alors vous proposant de choisir votre fichier (FIG 2). Celui qui nous intéresse se trouve dans le répertoire c:\winscm95\travail. Il se nomme exemple1.scm.

FIG 2 - Fenêtre permettant de choisir le fichier à ouvrir

Il faut donc sélectionner le bon répertoire dans la zone des répertoires, puis cliquer deux fois sur le nom du programme dans la zone des noms de programmes. Le fichier s'ouvre alors. On voit apparaître dans la fenêtre d'édition, la liste des objets définis dans la zone de variables.

Accès au code

En cliquant sur l'un des noms (on dit identificateur), le texte (ou code) le définissant apparaît dans la zone d'édition.

Cliquons sur l'identificateur cub (FIG 3). Le texte correspondant à sa définition apparaît en plusieurs couleurs et les lignes sont décalées les unes par rapport aux autres (on parle d'indentation) selon des conventions qui seront expliquées plus tard. Le code des couleurs utilisé est le suivant :

FIG 3 - Visualisation du code définissant la variable (ici fonction) cub
Définition d'une nouvelle variable

Pour pouvoir définir une nouvelle fonction deux possibilités sont offertes :

  • passer par le menu Fonctions, puis la commande Ajouter ;
  • dans la zone d'édition, presser le bouton droit de la souris, un menu contextuel apparaît, il suffit alors de sélectionner la commande Nouvelle Expression (FIG 4 ).
  • FIG 4 - Pour définir une nouvelle expression

    La fenêtre d'édition se vide de son contenu ; on peut alors entrer le code de la variable que l'on souhaite définir. Tapez donc le code suivant (pour l'instant sans trop le comprendre, quoique...) qui définit la nouvelle variable carre+1 :

    Les identificateurs lambda et define sont prédéfinis dans le langage, ils apparaissent donc en vert. carre a été, quant à lui, défini par l'utilisateur (vous) dans le fichier de travail actuel (la preuve : il apparaît dans la zone de variables) ; il apparaît donc en bleu. Les autres éléments apparaissent en noir.

    Vous avez sans doute remarqué que lors de la frappe d'une parenthèse fermante, la parenthèse ouvrante correspondant clignotait. De plus, à gauche de la barre d'états, est affiché le début de l'expression qui vient d'être terminée par cette parenthèse. Cela s'avère indispensable lorsque plusieurs expressions sont imbriquées les unes dans les autres. Vous en serez convaincu très rapidement.

    On remarque également que l'indentation est automatique ; elle est réalisée dans le but d'améliorer la lisibilité des programmes. Vous vous rendrez vite compte que lors de la rédaction de fonctions un peu longues cela est indispensable. La règle d'indentation est la suivante :les différentes sous-expressions d'une expression sont alignées les unes en dessous des autres.

    Sauvegarde du travail

    Il y a deux phases distinctes. Pour les distinguer, nous désignerons la première par ``ranger'' et la seconde par ``sauvegarder''.

    Il s'agit dans un premier temps de faire en sorte que la variable soit connue dans le fichier. Le rangement de la définition est automatique si la touche Entrée est frappée après la dernière parenthèse. Une autre solution est de cliquer dans la zone d'édition sur le bouton droit et de choisir la commande Ranger. Un en-tête apparaît lors du rangement de la variable si l'option Entete du menu contextuel de la zone de variables est activée ; il permet de faciliter l'écriture de commentaires.

    Si une erreur est détectée (toutes les erreurs de syntaxe ne le sont pas) lors du rangement, un message vous le signale. Vous pouvez quand même ranger le texte écrit, la variable apparaît alors en rouge. Elle pourra être corrigée par la suite.

    Pour sauvegarder le fichier, il faut soit utiliser l'une des commandes Enregistrer ou Enregistrer sous du menu Fichier, soit cliquer sur le bouton représentant une disquette. La commande Enregistrer sous permet de changer le nom de sauvegarde du fichier de travail (FIG 5).

    FIG 5 - Sauvegarde du fichier de travail sous le nom monfichier.scm

    Vous pouvez par exemple enregistrer le fichier sur lequel vous travaillez actuellement sous un nouveau nom (monfichier.scm par exemple). Remarquons que l'extension ``.scm'' est ajoutée par défaut aux fichiers créés. La fenêtre d'édition prend le nom du fichier.

    Interaction éditeur-interprète

    Il est important d'avoir conscience que pour l'instant, dans la mesure où aucune interaction avec l'interprète n'a eu lieu, les objets définis dans le fichier que nous venons d'ouvrir ne sont pas connus de l'interprète. Pour s'en convaincre, il suffit d'essayer d'évaluer l'expression (carre+1 2) : une erreur se produit signalant que l'identificateur carre est inconnu (unknown variable). En effet, toute variable doit être définie pour pouvoir être évaluée (et donc utilisée).

    Pour que la variable carre+1 soit connue de l'interprète, il faut lui faire évaluer sa définition. Un moyen est de sélectionner la variable dans la zone de fonctions, puis de faire apparaître dans la zone d'édition le menu contextuel (rappelez-vous, cela se fait en cliquant le bouton droit dans cette zone) et de choisir la commande Evaluer(FIG 6). L'autre solution est de cliquer sur le bouton représentant un ballon dirigeable. Cette évaluation est automatique lors du rangement si l'option Auto du menu contextuel de la zone de variables est activée.

    FIG 6 - Menu contextuel de la zone d'éition ; il permet l'évaluation d'une expression.

    Dans l'un ou l'autre cas, on remarque qu'il se passe quelque chose dans la fenêtre de l'interprète. On remarque en effet que le code de carre+1 a été transmis à l'interprète qui l'a évalué. Tout se passe donc maintenant comme si la définition (define carre+1 (lambda ... )) avait été directement écrite dans la fenêtre de l'interprète. Celui-ci l'a donc évaluée et connaît maintenant cet identificateur, ce que nous allons vérifier.

    Évaluons à nouveau l'expression (carre+1 1)... une nouvelle erreur se produit ! Mais cette fois-ci, c'est la variable carre qui est inconnue. En effet, celle-ci est utilisée dans la définition de carre+1. Mais la variable carre doit avoir été définie avant toute utilisation de son identificateur. Il faut donc évaluer également la définition de carre, ce qui peut être fait de la même manière que pour carre+1.

    Une fois fait, l'évaluation de (carre+1 1) est enfin possible sans erreur, et le résultat de l'évaluation est retourné.

    Maintenant si l'on veut utiliser la variable cube, il faudrait recommencer la même opération pour cette variable, et ainsi de suite pour chacune des variables à définir. Cela pourrait finir par devenir fastidieux dans le cas où l'on aurait beaucoup de variables à définir. Heureusement une autre solution existe, elle consiste à activer le menu contextuel de la zone de variables (FIG 7) et à choisir la commande Evaluer tout (présente également dans le menu Fonctions). Dans ce cas, toutes les variables définies dans le fichier (c'est-à-dire celles dont les noms apparaissent dans la zone de fonctions) sont évaluées. Elles peuvent donc maintenant toutes être utilisées.

    FIG 7 - Menu contextuel de la zone d'édition ; il permet d'évaluer toutes les expressions en une seule fois

    Il est bien entendu également possible d'écrire des expressions qui ne sont pas des définitions. Ces expressions apparaissent dans la zone de variables sous le nom !divers_1, \linebreak !divers_2, etc. dans leur ordre chronologique d'écriture (FIG 8).

    FIG 8 - Une expression qui n'est pas une définition apparaît dans une rubrique !diversX

    Pour évaluer une expression !divers_1, il faut la sélectionner puis choisir évaluer dans le menu contextuel.

    On peut supprimer une expression en la sélectionnant puis en activant le menu contextuel de la zone des variables et en choisissant la commande Supprimer.

    Importation de variables

    Il arrive parfois que l'on ait besoin d'utiliser une variable déjà définie dans un autre fichier. Par exemple, imaginons que nous souhaitions utiliser la variable deuxX2+1 définie dans le fichier C:\winscm\travail\exemple2.scm. Réécrire le texte de sa définition pourrait passer pour une perte de temps... Pour éviter cela, il suffit d'activer la commande Inserer variable du menu Fichier. Il suffit alors de choisir le fichier contenant les variables voulues (en l'occurrence exemple2.scm), puis dans la liste des variables qui s'affiche, il vous suffit de cliquer (une fois) sur chacune de ces variables lorsqu'elles vous sont proposées, puis d'ouvrir le menu contextuel et de choisir Select. On peut également insérer tout un fichier par la commande Inserer du menu Fichier (FIG 9).

    FIG 9 - Insertion de variables

    Ces variables apparaissent alors dans la zone de fonction du fichier exemple1.scm. Il faut maintenant l'évaluer pour pouvoir l'utiliser.

    Notons qu'il est possible d'importer une variable directement d'un autre ``browser'' déjà ouvert par ``glisser/lâcher'' (``drag and drop'' en anglais) : il suffit de cliquer (sans relâcher) sur le nom de la variable dans la zone de variables où elle est définie et d'amener le pointeur de la souris (toujours sans relâcher le bouton) jusqu'à la zone de variables du fichier où on veut l'importer.

    Changer l'ordre des définitions

    En ``mode texte'', il faut utiliser le ``copier/coller''. En ``mode browser'', il faut sélectionner la variable à déplacer, activer le menu contextuel et choisir Déplacer. Il faut ensuite sélectionner la variable avant ou après laquelle on veut la placer, puis dans le menu contextuel choisir Déplacer Avant ou Déplacer Après (FIG 10). Sinon, il faut choisir Annuler Déplacement.

    FIG 10 - hangement de l'ordre des définitions des variables.
    Quitter une fenêtre d'édition

    Pour quitter la fenêtre d'édition, il suffit de double-cliquer sur sa case système ou de cliquer sur le bouton de fermeture. Essayez. Aviez-vous pensé à sauver le fichier ? Heureusement un message vous prévient dans le cas contraire ! D'une manière générale, il est toujours bon de penser à sauvegarder régulièrement votre fichier de travail (rappelons qu'il suffit simplement de cliquer sur le bouton représentant une disquette) : on n'est jamais à l'abri d'une coupure de courant ou d'un mauvais fonctionnement du logiciel.

    Sauvegarde sur une disquette

    Pour enregistrer un fichier sur une disquette, il faut activer la commande Enregistrer sous du menu Fichier. Puis, dans la zone lecteur, choisir le lecteur de disquettes (généralement repéré par A: ou B:). Et enfin, donner le nouveau nom au fichier dans la zone Nom de fichier.

    Réinitialisation de l'interprète

    Si, pour une raison ou une autre, un problème apparaissait dans l'interprète et que sa fenêtre soit détruite, il est possible de le réinitialiser en choisissant la commande Fichier - Reinitialiser Scheme. Vous aurez alors éventuellement le choix entre plusieurs interprètes possibles (selon votre configuration), choisissez-en un en double-cliquant dessus (FIG 11).

    FIG 11 - Réinitialisation de l'interprète.


    Notes :

    Il y a un léger problème sans conséquence avec la version pour Windows 95 lors de la fermeture : vous devez cliquer OK à la suite d'un message sans incidence. [retour]

    La sélection de texte se fait en plaçant le curseur au début de la portion de texte à sélectionner, puis, en laissant le bouton gauche de la souris appuyé, à déplacer le curseur jusqu'à la fin de la zone à sélectionner (on peut alors relâcher le bouton !). [retour]


    scheme@lifl.fr: pour plus d'informations.

    routier@lifl.fr