L'environnement de développement interactif que vous utiliserez est appelé "IDLE."
Lors de l'utilisation de VPython, la fenêtre graphique montre des objets en 3D.
(0,0,0) est le centre de la fenêtre graphique. L'axe +x est dirigé vers la droite, l'axe +y est dirigé vers le haut et l'axe +z pointe en direction de l'extérieur de l'écran, vers vous.
x, y et z sont mesurées dans n'importe quelle unité que vous choisissez; la scène est automatiquement redimensionnée convenablement. (Vous pourriez, par exemple, créer une sphère de rayon 1E-15 m pour représenter un noyau, ou une sphère de rayon 1E6 m pour représenter une planète, quoique cela n'aurait pas de sens de poser ces deux objets dans une même fenêtre graphique!)
La sortie de chaque instruction -print- que vous exécutez dans votre programme va dans la fenêtre de sortie, qui est une fenêtre à texte déroulant. Vous pouvez utiliser cette fenêtre pour afficher des valeurs de variables, afficher des listes, des messages, etc. Placez-là où vous pouvez y voir des messages.
Si vous tapez le simple programme suivant dans la fenêtre de code de l'IDLE et que vous le lancez (appuyez sur F5 ou utilisez le menu Run, vous verrez un affichage comme celui montré sur la figure en-dessous.
from visual import *
redbox=box(pos=vector(4,2,3), size=(8.,4.,6.),color=color.red)
greenball=sphere(pos=vector(4,7,3), radius=2, color=color.green)
Visual est le nom du module graphique 3D utilisé par le langage Python. VPython est le nom de la combinaison du langage Python, du module Visual et de l'environnement de développement IDLE.
Dans la fenêtre d'affichage, cliquez et déplacez avec le bouton droit de la souris (laissez appuyée la touche shift sur Macintosh). Déplacez à gauche ou à droite et vous tournez autour de la scène. Pour tourner autour de l'axe horizontal, déplacez la souris vers le haut ou le bas avec le bouton droit de la souris maintenu appuyé. Cliquez et déplacez vers le haut ou le bas la souris avec le bouton du milieu maintenu appuyé pour vous rapprocher ou vous éloignez de la scène (sur une souris à 2 boutons, maintenez appuyé le bouton gauche et droit de la souris; sur une souris à 1 bouton, maintenez appuyée la touche CTRL).
Les objets graphiques que vous créez, tels que les sphères, les boîtes, les courbes continuent d'exister pendant toute la durée d'exécution de votre programme, et le module graphique 3D de Visual continuera de les afficher partout où ils sont. Vous devez donner un nom à chaque objet (tel que redbox ou greenball dans l'exemple au-dessus) si vous souhaitez vous y référer de nouveau plus loin dans votre programme. Tous les objets ont des attributs: propriétés comme greenball.pos (la position de la sphère), greenball.color, et radius ou d'autres paramètres de taille. Si vous changez un attribut d'un objet, tel que sa position ou sa couleur, Visual affichera automatiquement l'objet dans sa nouvelle localisation ou avec sa nouvelle couleur.
Vous pouvez définir des valeurs des attributs dans le "constructeur" (le code utilisé pour créer un objet), et vous pouvez aussi modifier les attributs plus tard:
greenball.radius = 2.2
En plus de la définition de base des attributs, vous pouvez créer de nouveaux attributs. Par exemple, vous pouvez créer une sphère nommée moon; en plus de son rayon et de sa position, vous pouvez lui donner des attributs tels que sa masse (moon.mass) et son moment (moon.momentum).
Les objets dans Visual ne sont pas tous des objets visibles. Par exemple, Visual permet de créer des quantités vectorielles 3D, et exécute des opérations vectorielles sur eux. Si vous créez une quantité vectorielle appelée a, vous pouvez vous référer à ses composantes telles que a.x, a.y, et a.z. Cependant, pour ajouter deux vecteurs a et b, vous n'avez pas besoin d'ajouter les composantes une à une; Visual effectuera l'addition vectorielle pour vous:
a = vector(1.,2.,3.)
b = vector(4.,5.,6.)
c=a+b
Si vous affichez c , vous verrez que c'est un vecteur de composantes (5.,7.,9.).
d = 3.*a # d est un vecteur de composantes (3., 6., 9.)
d = mag(c) # d est un scalaire
z = mag(c)**2 # vous ne pouvez pas élever au carré un vecteur; simplement sa norme
f = cross(a,b) # produit vectoriel
g = dot(a,b) # produit scalaire
h = norm(a) # vecteur normé (unitaire)
Les attributs des objets Visual peuvent être des vecteurs, comme la vitesse ou le moment.
La première ligne de votre programme doit être:
from visual import *
Un commentaire dans un programme Python commence par "#"
# cette ligne est un commentaire
Des variables peuvent être créées n'importe où dans un programme Python, simplement en assignant un nom de variable à une valeur. Le type de la variable est déterminé par l'instruction d'affectation.
a = 3 # un entier
b = -2. # un nombre à virgule flottante
c = vector(0.4, 3e3, -1e1) # un vecteur
Earth = sphere(pos=(0,0,0), radius=6.4e6) # un objet Visual
bodies = [ship, Earth, Moon] # une liste d'objets
Les objets basiques Visual tels que sphere() et box() ont un panel d'attributs tel que la couleur, et vous pouvez définir des attributs supplémentaires tels que la masse ou le moment. D'autres objets, tels que vector(), ont des attributs intégrés mais vous ne pouvez pas créer d'attributs supplémentaires. Les nombres, listes, et autres objets intégrés n'ont pas d'attributs du tout.
La division d'entiers ne prendra pas le chemin que l'on attend, car le résultat est arrondi au plus proche entier inférieur. Ainsi:
a = 2/3
print a # a vaut 0
Pour éviter ceci, placez le point des décimaux après chaque nombre, comme ceci:
b = 2./3.
print b # b vaut 0.6666667, comme attendu
Nous recommandons d'écrire l'instruction suivante au début de votre programme; dans ce cas 2/3 vaudra 0.6666667; il y a 2 underscores avant et après le mot "future":
from __future__ import division
x**2 # et non x^2
10**-2 retourne une erreur; utilisez 10.**-2
If, elif ("else if"), else:
if a == b: # regardez la table des expressions logiques ci-dessous
c = 3.5 # code indenté exécuté si le test est vrai
elif a < b:
c = 0. # c sera remis à zéro si a < b
else:
c = -23.2
== |
égal |
!= |
différent de (aussi <>) |
< |
plus petit que |
> |
plus grand que |
<= |
plus petit ou égal |
>= |
plus grand ou égal |
or |
ou logique |
and |
et logique |
in |
membre d'une séquence |
not in |
non membre d'une séquence |
Une liste est une séquence ordonnée de n'importe quelle sorte d'objets. Elle est délimitée par des crochets.
moons = [Io, Europa, Ganymede, Callisto]
La fonction "arange" (raccourci de "arrayrange") crée une séquence de nombres:
angles = arange (0., 2.*pi, pi/100.)
# nombres de 0. à 2.*pi-(pi/100.) dans un pas de (pi/100.)
numbers = arange(10) # argument entier -> entiers
print numbers # [0,1,2,3,4,5,6,7,8,9]
La plus simple des boucles en Python est la boucle "while". La boucle continue aussi longtemps que l'expression logique spécifiée est vraie:
while x < 23:
x = x + vx*dt
Pour écrire une boucle infinie, utilisez simplement une expression logique qui sera toujours vraie:
while 1==1:
ball.pos = ball.pos + (ball.momentum/ball.mass)*dt
Comme la valeur assignée à l'expression logique VRAI vaut 1, la suite produira aussi une boucle infinie:
while 1:
a = b+c
Les boucles infinies conviennent parce que vous pouvez toujours interrompre le programme en choisissant "Stop Program" dans le menu Run de l'IDLE.
Il est aussi possible de boucler sur les membres d'une séquence:
moons = [Io, Europa, Ganymede, Callisto]
for a in moons:
r = a.pos - Jupiter.pos
for x in arange(10):
# voir "listes" au-dessus
...
for theta in arange(0., 2.*pi, pi/100.):
# voir "listes" au-dessus
Vous pouvez redémarrer une boucle ou la terminer avant son terme:
if a == b: continue # retourne au début de la boucle
if a > b: break # sort de la boucle
Pour afficher un nombre, un vecteur, une liste, ou autre chose utilisez la commande "print":
print Europa.momentum
Pour afficher un message texte, encadrez-le par des cotes:
print "We have just crashed on the Moon with speed", v, "m/s."
Voir Le module Visual de VPython pour une description détaillée de tous les aspects de Visual.
Nous avons résumé un très petit sous-ensemble du langage de programmation Python. Une Documentation Python plus vaste est fournie ici, et il y a des informations supplémentaires sur le site web de Python, mais beaucoup de ces informations supposent que vous ayez déjà une bonne expérience de la programmation dans d'autres langages. Nous recommandons le livre suivant à ceux qui veulent en apprendre plus sur Python: Learning Python, par Mark Lutz & David Ascher, 1999, O'Reilly.
Copyright © 2006 Guillaume et Yoann Duriaud. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.