« Programmation objet et géométrie/Programmation avec DrGeoII » : différence entre les versions

Contenu supprimé Contenu ajouté
m orthographe de Samlltalk
Ligne 1 :
Bien que [[w:DrGeoII|Dr. Geo II]] soit un logiciel de géométrie dynamique, le seul fait qu'il soit muni d'une console ''SmallTalkSmalltalk'' permet d'envisager son utilisation pour l'enseignement de l'algorithmique, dans le cadre de TP de programmation. Le principe de fonctionnement de la console est basée sur les éléments suivants:
 
#Le script ''SmallTalkSmalltalk'' qu'on a tapé dans la console fait partie intégrante de la figure, et est sauvegardé avec celle-ci.
#Le script est un objet abstrait, qui doit être muni d'un ''costume'': Son apparence; celui-ci est la valeur retournée, et s'affiche dans la figure, à l'endroit où l'utilisateur a cliqué avec la souris.
#Chaque objet est inscrit dans son propre script, ce qui peut mener à une impressionnante collection de scripts dans une figure.
 
Pour rester conforme au programme d'algorithmique du Lycée, on insistera ici sur les aspects non objets de ''SmallTalkSmalltalk''.
 
=Affectations successives=
Ligne 32 :
[[Fichier:Crystal Clear app Startup Wizard.png|right]]
 
Comme il faut bien que le programme produise quelque chose, ce sera la valeur finale de ''x'', que le script va sortir de son chapeau comme le ferait un magicien, et que l'on représente donc par un chapeau. Si on entre au clavier ''Control+S'' pour sauvegarder le script, l'absence de message d'erreur indique que le script est correct du point de vue de la syntaxe ''SamllTalkSamlltalk''. Mais pour en voir l'effet, il faut le lancer, ce qu'on fait depuis le menu de ''DrGeoII'' (dernier item, celui avec les objets numériques). Là il suffit de cliquer n'importe où sur la figure pour y trouver l'affichage d'un ''16.0'' qui donne la réponse à la question.
 
==Entrées de données==
Ligne 59 :
[[Fichier:Explosion.svg|160px|right]]
 
L'usage en ''SmallTalkSmalltalk'' est de créer une erreur pour que le débogueur vienne tout seul à la rescousse: Le meilleur moyen de voir un Saint-Bernard, c'est de déclencher une [[w:Avalanche|avalanche]]! En fait c'est très ergonomique, les bogues ayant tendance à survenir très souvent! Pour faire apparaître le débogueur on va donc fermer la figure ''DrGeo'' ce qui fait apparaître une sorte de bureau sur lequel était posée la figure, et là, avec ''Control+K'' (sous [[w:Windows|windows]] c'est ''Alt+K''), on crée (instancie!) un espace de travail ''SmallTalkSmalltalk'', qui ressemble à un éditeur de texte. Là on recopie le script précédent avec une nouvelle variable ''y'' que l'on va traîtreusement diviser par 0 à la fin (certes çe serait plus propre de remplacer la dernière ligne par ''self halt.'' qui là aussi arrêterait la machine SmallTalkSmalltalk en ouvrant le débogueur):
 
<source lang="smalltalk">
Ligne 107 :
[[Fichier:Inkscape paintbrush.svg|right]]
 
On va regarder comment ''DrGeoII'' peut représenter graphiquement la fonction <math>x \mapsto \frac{x^3}{25}-x</math>. Pour éviter d'avoir à écrire trop souvent cette expression, on va définir un objet ''SmallTalkSmalltalk'' appelé ''fonction'' qu'on pourra donc appeler par la suite:
 
<source lang="smalltalk">
Ligne 167 :
</source>
 
On remarque la logique de ''SmallTalkSmalltalk'', pour qui un segment va d'un point à un autre, et n'est pas défini à partir de ses extrémités. Le segment s'appelle ''s'' ce qui permet de le colorier en bleu. On remarque aussi que pour cacher un point ''p'', on lui demande de se cacher, en lui envoyant un message ''hide''.
 
===Avec un polygone===
 
Si on rajoute les deux projetés orthogonaux des extrémités du polygone précédent sur l'axe des abscisses, on peut envisager de fermer le polygone. Pour l'exemple qui suit, on va prendre une fonction positive, c'est-à-dire que sa représentation graphique est entièrement au-dessus de l'axe des abscisses. Ceci pour éviter que le polygone soit croisé, et pour une autre raison qui apparaîtra dans l'exemple. On va donc considérer un nouvel objet, une liste de sommets. C'est pour ''SmallTalkSmalltalk'' une ''OrderedCollection'', qui est un tableau (voir ci-dessous le lancer de dés pour un exemple de tableau) dont le taille n'est pas fixée d'avance, afin de pouvoir y ajouter au fur et à mesure les sommets du polygone. La création du polygone se fera à partir de cette liste de sommets.
 
La liste de sommets, initialement vide, se crée par
Ligne 261 :
</source>
 
mieux encore, si on ne se souvient pas des nombres premiers, on peut les faire tester par ''SmallTalkSmalltalk'':
 
<source lang="smalltalk">