« Programmation objet et géométrie/SmallTalk par l'exemple » : différence entre les versions

Contenu supprimé Contenu ajouté
mAucun résumé des modifications
m orthographe de Smalltalk
Ligne 1 :
[[Image:Stethoscope-2.jpg|right]]
 
Le logiciel [[w:DrGeoII|Dr. Geo II]] illustre la notion de [[w:Récursivité|récursivité]] par l'exemple: Écrit en [[w:SmallTalk|SmallTalkSmalltalk]], il est aussi muni d'une console SmallTalkSmalltalk, ce qui permet d'utiliser ''DrGeoII'' pour regarder comment ''DrGeoII'' lui-même est fait! Ce qui permet (même si ce n'est pas nécessairement recommandé) de modifier DrGeoII depuis DrGeoII, un peu comme un Cyborg qui s'opère, ou comme le [[w:Réparation de l'ADN|vivant]]! Mais sans aller jusqu'à de telles extrémités risquées, on va ici utiliser ce pouvoir d'introspection de ''DrGeoII'' pour regarder quels algorithmes sont utilisés par le logiciel, et le présent article peut être considéré comme une introduction mathématique (et surtout géométrique) au langage ''SmallTalkSmalltalk''.
 
Pour consulter le code source de ''DrGeoII'' depuis ''DrGeoII'', on clique depuis une figure DrGeoII sur ''modifer un script'' et là, on clique sur ''Browse''. Il ne reste alors plus qu'à surfer...
Ligne 40 :
</source>
 
La syntaxe est donnée sur la première ligne, et est à lire ''pgcd avec t1''. Les traits verticaux de la deuxième ligne encadrent la liste des variables, il y en a donc 2 ici. Elles sont initialisées avec les deux entiers (''1/>self'' et ''t1'') dont on veut le pgcd, puis on lance un test de nullité sur ''t2''. Tant que ce test échoue (c'est-à-dire tant que ''t2'' n'est pas nul), on remplace ''t2'' par le reste euclidien et ''t3'' par ''t2''. Puis (c'est-à-dire quand le test de nullité sur ''t2'' réussit) on renvoie la valeur absolue de ''t3''. On voit donc que SmallTalkSmalltalk sait calculer le pgcd de deux entiers relatifs.
 
===Conversion en fraction===
Ligne 60 :
====Simplification====
 
Pour simplifier une fraction, SmallTalk''Smalltalk'' utilise trois variables, la première pour le pgcd du numérateur et du dénominateur, la seconde pour le quotient du numérateur par le pgcd et la troisième, pour le quotient du dénominateur par le pgcd. L'algorithme renvoie 0 si la fraction est nulle, la fraction avec les nouveaux numérateur et dénominateur sinon:
 
<source lang="smalltalk">
Ligne 135 :
=Géométrie analytique=
 
En ''SmallTalkSmalltalk'', les coordonnées d'un point ou d'un vecteur sont écrites sans parenthèses mais séparées par un [[w:Arrobase|arobase]] qui, en anglais, signifie ''at'' (jusqu'à). Donc quand on parle du point de coordonnées (3;2), on le note ''3@2'' qui peut se lire ''de 3 jusqu'à 2''. Cette formule résume assez bien le mouvement des yeux lorsqu'on veut placer ce point dans un graphique: On part de la graduation 3 sur l'axe des abscisses, puis depuis cette graduation, on va vers la hauteur 2 en suivant la parallèle à l'axe des ordonnées.
 
==Points==
Ligne 171 :
===Distance===
 
Pour calculer la distance entre le point courant et un autre point ''t1'', DrGeo a besoin de deux autres variables ''t2'' et ''t3'', où sont stockées respectivement la différence des abscisses et la différence des ordonnées. La fonction retourne la racine carrée de la somme de leurs produits par eux-mêmes (à lire de droite à gauche; on notera que ''SmallTalkSmalltalk'' ne connaît pas les règles de priorité opératoire, ce qui oblige à mettre le second produit entre parenthèses):
 
<source lang="smalltalk">
Ligne 242 :
</source>
 
L'esprit de ''SmallTalkSmalltalk'' demande qu'on considère le produit scalaire comme infixé: Pour calculer le produit scalaire du point courant '''avec''' ''t1'', on multiplie leurs ''x'' respectifs (leurs abscisses) et leurs ''y'' respectifs, on additionne les deux produits, et on retourne la somme.
 
==Droites==