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.
À 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 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).

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.
Pour activer un menu, deux solutions :
Toute première chose à savoir : comment quitter* le logiciel... Plusieurs solutions, à vous de choisir :
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é.
La plupart des commandes décrites ci-dessous sont accessibles par un des boutons de la zone de boutons.
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.
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).
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.

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.
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 :
Pour pouvoir définir une nouvelle fonction deux possibilités sont offertes :

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 :
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.
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).

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.
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.

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.

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).

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.
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).
![]() |
![]() |
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.
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.
![]() |
![]() |
![]() |
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.
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.
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).


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.