PDA

Voir la version complète : Je débute en scheme et je me sens bête


Excalibur
29/09/2007, 05h40
Bonjour.

Excusez-moi d'avance si je vous pose une question qui est sans doute idiote.

Je débute en Scheme et j'utilise la version 371 de DrScheme.

J'ai un exercice à faire, qui consiste à tracer un sablier en superposant deux triangles par la pointe.

Pour ce faire, je suis amenée à utiliser la primitive graphique filled-triangle.

Or, quand je veux exécuter, je reçois un message d'erreur qui me dit que mon code contient une référence non définie à "filled-triangle".

Je suppose que c'est parce que je ne sais pas comment "un peu cappeler" cette fonction dans le programme.

En C, pour disposer d'une fonction prédéfinie, on fait un include de la librairie voulue.

En Scheme, je ne sais pas, en fait, ce qu'on doit mettre avant de commencer le code des fonctions que l'on veut définir.

Encore que je me demande s'il faut réellement mettre quelque chose. En effet, si je veux faire des calculs, je ne dois rien faire d'autre que d'écrire la fonction de calcul et ça s'exécute correctement. Or, là aussi, on fait appel à des fonctions primitives.

Est-ce qu'il manquerait quelque chose dans mon installation de DrScheme ?

Peut-être comprendrais-je mieux si quelqu'un pouvait m'expliquer comment fonctionnent les sous-dossiers et les fichiers que je trouve dans le répertoire "collects" qui lui-même se trouve dans /home/(nom d'utilisateur)/lib (je suis en effet sous kubuntu).

Merci de me répondre.

Désolée, j'ai tapé quelque chose d'incompréhensible :

"Je suppose que c'est parce que je ne sais pas comment "un peu cappeler" cette fonction dans le programme."

Il faut naturellement lire : comment on peut "appeler" cette fonction ...

Trap D
29/09/2007, 08h35
Essaye en mettant en debut de programme (require lib "graphics.ss" "graphics")), Utilise le langage "Assez gros Scheme"
PS Poste dans la sous cat Scheme.

Excalibur
29/09/2007, 16h28
Merci pour la suggestion.

J'avais effectivement pensé à utiliser "Assez gros Scheme" mais ....

Quand je disais que je débutais, ça impplique entre autres le fait que je ne connais pas les instructions à mettre en début de programme. Autrement dit les instructions de pré-processeur.

Je ne sais pas notamment comment faire pour que le module "lib" soit reconnu et puisse être utilisé. Et avant d'indiquer le module, quid ?

Il doit bien y avoir des instructions communes à tous les compilateurs Scheme, non ?

J'ai vainement cherché sur le Web un manuel dans ce sens, sans doute parce que je n'ai pas trouvé les bons mots-clés pour la recherche. Je pense que ça m'aiderait déjà beaucoup si quelqu'un pouvait me donner au moins une référence à un tel manuel ou mode d'emploi.

Je crois que j'ai compris ce qui se passe. Le problème, c'est que je me base sur le cours LI101 d'une certaine université et que pour pouvoir tester les codes écrits dans le cadre des exercices, il faut disposer de l'environnement propre à ce cours. Autrement dit, il faut que j'arrive à installer un fichier .plt (que j'ai). Parce quand l'environnement est installé, on ne doit rien indiquer en début de programme.

Sur les ordinateurs des salles où se font les TP, cet environnement est disponible mais "ils" utilisent une version de DrScheme ou plutôt de MzScheme plus ancienne que la mienne.

De sorte que je n'arrive pas à installer de fichier .plt.

Quelqu'un pourait-il m'indiquer la marche à suivre pour y arriver sachant que je reçois le message suivant quand je tente l'installation :

setup-plt: Setup version is 371 [3m]
setup-plt: Available variants: 3m
setup-plt: Main collection path is /home/voyou/lib/plt/collects
setup-plt: Collection search path is
setup-plt: /home/voyou/.plt-scheme/371/collects
setup-plt: /home/voyou/lib/plt/collects
cannot install; version (200) of collection ("mzscheme") is required, but version (370) is installed

=== context ===
/home/voyou/lib/plt/collects/setup/unpack.ss:248:42: loop
/home/voyou/lib/plt/collects/setup/unpack.ss:138:10

Il paraît - d'après ce que j'ai trouvé sur une maillist plt-scheme - que l'on peut forcer l' "unpacking" mais je n'ai pas compris ce qu'il faut faire pour ça.

Il faudrait que je puisse y arrver sous Windows XP et sous Feisty.

Pour le moment, je suis très frustrée car il m'est impossible de tester les codes que j'écris à la maison pour résoudre les exercices proposés, alors que je n'ai pas (encore) de gros problèmes de compréhension à ce niveau.

Je risque d'être tout simplement bloquée dans mon apprentissage.

J'espère que mon problème est plus clair maintenant. Parce que souvent, pour les débutants, expliquer clairement aux programmeurs expérimentés quel est l'objet de leurs tourments n'est pas chose facile.

Merci d'avance pour toute aide de nature à débloquer le problème.

Garulfo
01/10/2007, 01h23
Essayes ça


(require (lib "graphics.ss" "graphics"))

(define *viewport* '())

(open-graphics)
(set! *viewport* (open-viewport "fenetre graphique" 400 200))

(define (tracer-ligne x0 y0 x1 y1)
(let ((outil (draw-line *viewport*))
(depart (make-posn x0 y0))
(arrivee (make-posn x1 y1))
)
(outil depart arrivee)
)
)

(tracer-ligne 1 1 200 200)


Est-ce que ça marche ?

Excalibur
01/10/2007, 02h48
Oh oui, ça marche, après sélection du langage "assez gros Scheme". Et ça dessine une jolie fenêtre. Merci.

On dirait que c'est moins la galère qu'avec la SDL pour faire ce genre de choses.

Je crois finalement qu'avec DrScheme tel qu'installé après téléchargement, on a juste des bibliothèques basiques et que si l'on veut aller plus loin, il faut en créer d'autres soi-même ou bien emprunter celles développées par d'autres et même des langages supplémentaires.

Ce qui m'ouvre pas mal de perspectives.

Dans l'immédiat, je crois que je peux considérer mon problème comme résolu.

Garulfo
01/10/2007, 22h45
[...]
Je crois finalement qu'avec DrScheme tel qu'installé après téléchargement, on a juste des bibliothèques basiques et que si l'on veut aller plus loin, il faut en créer d'autres soi-même ou bien emprunter celles développées par d'autres et même des langages supplémentaires.[....]

Il y a aussi un système de module qui te permet de rajouter des trucs.

Menfinbon si tu as besoin d'aide n'hésites pas.

N'oublies pas le bouton :resolu:

Excalibur
02/10/2007, 02h11
Je crois que ça va aller pour le moment.

Encore merci.