|
Voici les programmes pour TI-89 et TI-V200 :
Introduction |
Cette section regroupe quelques programmes que j'ai réalisé ou qui m'ont aidé durant mes années d'études. Ces programmes sont spécifiques à la TI-V200, certains pourront fonctionner sur la TI-89 et d'autres seront esthétiquement pas terrible !
Ma récente venue et collaboration au programme T3 durant l'année scolaire 2007/2008 m'a remis dans mes anciens programmes... (oui, je sais, une page vide pendant 3 ans, c'est long...)
Programmes de lycée |
- Dérivée d'un quotient.
Ce programme détaille la dérivée d'un quotient de type $(u(x))/(v(x))$ étape par étape.
- Télécharger le fichier
- Le code avec les commentaires :
deriqo()
Prgm
Local ux,vx
ClrIO
DelVar x
Dialog
Title "Integration par partie"
Text "Version 1.1"
Text " créé par Sly"
EndDlog
©etiennesy@wanadoo.fr
©On rappelle la formule
Disp "derivee d'un quotient"
Disp "(uv)'=(u'v-uv')/(v2)"
©On demande les deux fonctions avec x comme variable
Disp "entrer u(x)":Input ux
Disp "entrer v(x)":Input vx
©On donne les dérivées
Disp "u'=",δ(ux,x)
Disp "v'=",δ(vx,x)
Pause
©On donne les morceaux
Disp "u'v puis uv' puis v2"
Disp "",factor(δ(ux,x)*vx),factor(δ(vx,x)*ux),vx^2
Pause
©On donne la fonction dérivée factorisée
Disp "(uv)'=",factor(δ(ux*vx,x))
EndPrgm
- Intégration par parties.
Ce programme détaille l'intégration par parties étape par étape.
- Télécharger le fichier
- Le code avec les commentaires :
intppart()
Prgm
Local ux,vx,α,β,h,j
ClrIO
DelVar x
Dialog
Title "Intégration par partie"
Text "Version 1.1"
Text " créé par Sly"
EndDlog
©etiennesy@wanadoo.fr
©On rappelle la formule
Disp "integ par partie $int$uδv(x)=[uv(x)]-$int$vδu(x)"
©On demande les deux fonctions avec x en variable
Input "u(x) =",ux
Input "v'(x) =",vx
Disp "Resultat : u(x)*v(x) puis v(x)*δu(x)"
ux*$int$(vx,x)->h
δ(ux,x)*$int$(vx,x)->j
Disp h,j
Pause
ClrIO
©On demande les bornes
Input "borne inf =",α
Input "borne sup =",β
Disp "Resultat : [uv] puis $int$vδu puis $int$uδv"
©On calcule la valeur de [uv] en α,puis en β
h|x=β->h1:h|x=α->h2
©On donne le résultat
Disp h1-h2,$int$(δ(ux,x)*$int$(vx,x),x,α,β),(h1-h2)-$int$(δ(ux,x)*$int$(vx,x),x,α,β)
EndPrgm
- Complexe.
Ce programme permet d'avoir les attributs principaux sur les complexes ainsi que résoudre des équations complexes.
- Télécharger le fichier
- Le code avec les commentaires :
complex()
Prgm
Local a,b,c,d,e,g,h,j,z,l,k,on,eq1,eq2,rep,aze,equation
ClrIO
Dialog
Title "Complex"
Text "Version 1.1"
Text " créé par Sly"
EndDlog
©etiennesy@wanadoo.fr
x+ι*y->z
2->c
Dialog
DropDown "choix",{"equation","calcul","quitter"},c
EndDlog
©Pour quitter
If c=3 Then
Stop
EndIf
©Pour faire des calculs sur le nombre complexe z
If c=2 Then
©On cherche le module et l'argument (en radian et degré)
Prompt z
Disp "z=",z
Disp "|z|=",abs(z)
setMode("Angle","RADIAN")
Disp "Arg de z=",angle(z)
Pause
setMode("Angle","DEGREE")
Disp "Arg de z=",angle(z)
Pause
setMode("Angle","RADIAN")
EndIf
©Pour résoudre une équation
If c=1 Then
Prompt equation
Disp expand(equation)
factor(real(equation))->eq1
cFactor(imag(equation))->eq2
Disp "Les équations sont :",eq1,eq2
Pause
ClrIO
Input "combien d'équation(s)?",aze
©On demande le nombre d'équations pour pallier au cas d'une équation
If aze=1 Then
ClrIO
solve(eq1,x)->l
solve(eq2,y)|l->k
solve(eq1,x)|k->j
Disp j,k,"","z=",j+ι*k
Pause
©Les autres cas
Else
Lbl suite
ClrIO
Disp eq1,eq2
Prompt a,b,d,e,g,h
Disp simult([[a,b][d,e]],[[g][h]])
InputStr "encore(1->oui,2->non)",on
If on=1 Then
Goto suite
Else
Stop
EndIf
EndIf
EndIf
ClrIO
EndPrgm
Programmes du supérieur |
- Tableau des élèments.
Ce programme n'est pas de moi mais je le trouve très bien fait et il m'a servi en physique/chimie. Je ne détaillerai pas le code (trop long), mais je laisse l'archive (3 fichiers).
- Télécharger le fichier
- Mot de passe.
Ce programme permet d'avoir un mot de passe sur sa machine. On peut même l'éteindre et la rallumer, la machine demande toujours le mot de passe. N'oubliez pas le mot de passe... (il existe un moyen pour casser le programme néanmoins !)
- Télécharger le fichier
- Le code avec les commentaires :
interdit()
Prgm
Local xwv
Lbl de
©Try permet de passer outre les erreurs
Try
ClrIO
InputStr "Mot de passe :",xwv
©Changer m_d_p par votre mot de passe
If xwv="m_d_p" Then
ClrIO
Else
Goto de
EndIf
©S'il y a une erreur, on la supprime et on revient...
Else
ClrErr
Goto de
EndTry
EndPrgm
- Algorithme de César.
Le principe de cryptographie de César. Il décalait toutes les lettres de deux rangs pour former une phrase codée. Le programme permet de faire avec un décalage de 1 à 25 lettres, sans ponctuation autre que des espaces.
- Télécharger le fichier
- Le code avec les commentaires :
cesar()
Prgm
Local nn,ph,ii,oor,ch,ess,dd,phf
Lbl debut
ClrIO
Dialog
Title "César"
Text "Version 1.1"
Text " créé par Sly"
©On demande la phrase codée ainsi que la clé
Text "entrer la phrase à coder/décoder"
Request "Phrase",ph
Text "donner le decalage"
Request "n",nn
EndDlog
©etiennesy@wanadoo.fr
expr(nn)->nn
dim(ph)->dd
""->phf
For ii,1,dd
ord(mid(ph,ii,1))->oor
©Si le iième terme est un espace
If oor=32 Then
phf&" "->phf
Else
©sinon, on fait tourner la roue
char(mod(oor-97+nn,26)+97)->ch
phf&ch->phf
EndIf
EndFor
Disp "Phrase finale",phf
Pause
Dialog
Title "Recommencer ?"
DropDown "Un autre essai",{"oui","non"},ess
EndDlog
If ess=1 Then
Goto debut
Else
Stop
EndIf
EndPrgm
- Jeu.
Petit jeu très simple du plus grand ou plus petit. La machine choisit un nombre et l'opérateur doit le trouver en un minimum de coups... C'est par la programmation de ce genre de code que j'ai commencé à programmer !
- Télécharger le fichier
- Le code avec les commentaires :
jeubete()
Prgm
Local xx,s,yy,c
ClrIO
Dialog
Title "Jeu bête"
Text "Version 1.1"
Text " créé par Sly"
EndDlog
©etiennesy@wanadoo.fr
Lbl b2
ClrIO
©la machine choisit un entier entre 1 et 100
int(rand(99)+1)->xx
0->s
©l'opérateur choisit un nombre
Disp "Un nombre entre 1 et 100"
Lbl b1
Input yy
s+1->s
©l'opérateur a trouvé le bon nombre
If yy=xx Then
Disp "Gagné !!!"
Disp "En "&string(s)&" coups."
Pause
Dialog
DropDown "recommencer",{"oui","non"},c
EndDlog
If c=1:Goto b2
If c=2:Stop
©l'opérateur trouve un nombre trop grand
ElseIf yy>xx Then
Disp "trop grand"
Goto b1
©l'opérateur trouve un nombre trop petit
ElseIf yy<xx Then
Disp "trop petit"
Goto b1
EndIf
EndPrgm
Programmes spécifiques au CAPES |
- Produit vectoriel.
Ce programme permet d'obtenir le produit vectoriel de deux vecteurs.
- Télécharger le fichier
- Le code avec les commentaires :
pvec()
Prgm
local aa,bb,cc,uu,vv,ww
ClrIO
Dialog
Title "Produit vectoriel"
text "version 1.1"
Text "créé par Sly"
EndDlog
©etiennesy@wanadoo.fr
©On demande les coordonnées des deux vecteurs
Dialog
Title "Premier vecteur"
Request "a=",aa
Request "b=",bb
Request "c=",cc
EndDlog
Dialog
Title "Second vecteur"
Request "u=",uu
Request "v=",vv
Request "w=",ww
EndDlog
©On utilise la fonction de la calculatrice crossP
crossP([[expr(aa)][expr(bb)][expr(cc)]],[[expr(uu)][expr(vv)][expr(ww)]])->res
Disp "résultat :",string(res[1]),string(res[2]),string(res[3])
EndPrgm
- PPF.
Un super programme (!) dont je ne retrouve plus l'utilité... et ce n'est pas Pile ou Face... Si quelqu'un trouve, ce serait sympa de me prévenir.
- Télécharger le fichier
- Le code avec les commentaires (enfin, pas encore):
ppf(p,a)
Prgm
local k,i,s,r
ClrIO
Dialog
Title "ppf"
Text "Version 1.1"
Text " créé par Sly"
EndDlog
©etiennesy@wanadoo.fr
p-1->k
0->i
While fPart(k)=0
i+1->i
k/2->k
EndWhile
i-1->s
(p-1)/2^s->q
Disp "s=",s,"q=",q
If mod(a^q,p)=1 Then
Disp "ppf"
Stop
EndIf
For r,0,s-1
If mod(a^(q*2^r),p)=p-1 Then
Disp "ppf"
Stop
EndIf
EndFor
Disp "pas ppf"
EndPrgm
- Critère de Routh (spécial SI).
Ce critère permet d’analyser la stabilité des systèmes linéaires asservis en science de l'ingénieur niveau math spé.
- Télécharger le fichier
- Le code avec les commentaires :
routh()
Prgm
Local d,i,j,c,l
ClrIO
Dialog
Title "CRITERE DE ROUTH"
Text " Version 1.1"
Text " créé par Sly"
EndDlog
©etiennesy@wanadoo.fr
©On demande le degré du polynôme pour adapter la taille de la matrice
Dialog
Title "Degré du polynôme"
Request "Degré ",d
EndDlog
expr(d)->d
int(d/2)+2->c
d+2->l
©On créé une matrice qui sera retournée en résultat
newMat(l,c)->mat1
©On demande les coefficients du polynôme
For i,1,d+1
Dialog
Title "Coefficient a"&string(i-1)
Request "a"&string(i-1)&" ",#("a"&string(i-1))
EndDlog
expr(expr("a"&string(i-1)))->#("a"&string(i-1))
EndFor
©On fait les calculs
For j,d+1,1,-1
expr("a"&string(j-1))->mat1[((-1)^(d-j)+1)/2+1,int((d+1-j)/2)+1]
EndFor
For i,3,l
For j,1,c-1
(mat1[i-1,1]*mat1[i-2,j+1]-mat1[i-1,j+1]*mat1[i-2,1])/(mat1[i-1,1])->mat1[i,j]
EndFor
EndFor
ClrIO
Disp "Résultat : dans la matrice mat1"
Pause
Disp mat1
©On supprime toutes les variables en trop
For i,1,d+1
DelVar #("a"&string(i-1))
EndFor
EndPrgm
Programmes divers |
- Nombre premier ou non.
Ce programme (en fait, il y a un sous-programme) dit si un nombre est premier ou non. Il donne dans ce dernier cas un diviseur du nombre de départ. Attention, le temps de calcul est très long !
- Télécharger le fichier
- Le code avec les commentaires :
prem(n)
Prgm
2->d
0->w
©On fait tourner une boucle
while d^2«n and w=0
n-d*int(n/d)->r
©Si le reste est nul, on sort de la boucle et on retourne dans l'autre programme
if r=0
1->w
d+1->d
endwhile
EndPrgm
premier1()
Prgm
clrio
Dialog
Title "Nombre premier"
Text "Version 1.1"
Text " créé par Sly"
EndDlog
©etiennesy@wanadoo.fr
prompt n
©On lance tout simplement l'autre programme...
prem(n)
©... et on analyse la réponse
if w=1 then
disp string(n)&" est divisible par "&string(d-1)
else
disp string(n)&" est premier"
endif
EndPrgm
- Liste des nombres premiers.
Ce programme réutilise une partie du programme précédent en créant la liste des nombres premiers jusqu'à un nombre choisit par l'opérateur. De même, le temps de calcul peut être très long.
- Télécharger le fichier
- Le code avec les commentaires :
prem(n)
Prgm
2->d
0->w
©On fait tourner une boucle
while d^2«n and w=0
n-d*int(n/d)->r
©Si le reste est nul, on sort de la boucle et on retourne dans l'autre programme
if r=0
1->w
d+1->d
endwhile
EndPrgm
premier2()
Prgm
Local i,n
ClrIO
Dialog
Title "liste nombres premiers"
Text "Version 1.1"
Text " créé par Sly"
EndDlog
©etiennesy@wanadoo.fr
Prompt n
©On crée une liste dans laquelle on met déjà 2
{2}->l1
©On utilise l'autre programme pour tester les nombres, les uns après les autres
For i,1,int((n-1)/2)
2*i+1->a
prem(a)
If w=0
augment(l1,{a})->l1
EndFor
©On donne le résultat
Pause l1
EndPrgm
- Le crible d'Eratosthène.
Le crible d'Eratosthène permet d'obtenir la liste des nombres premiers en barrant succéssivement tous les multiples de la liste des entiers jusqu'à un certain terme (choisi par l'opérateur).
- Télécharger le fichier
- Le code avec les commentaires :
eratos()
Prgm
Local i,j,m,l1,x,k,y
ClrIO
Prompt n
int((n-1)/2)->m
seq(2*i+1,i,1,m)->l1
1->i
3->x
©Cette boucle permet de tester tous les nombres jusqu'à la racine carrée du nombre de départ
While x$<= sqrt ((n))$
i->k
©Cette boucle écrase les multiples en décalant la liste
For j,i+1,dim(l1)
l1[j]->y
If int(y/x)$!=$y/x Then
k+1->k
y->l1[k]
EndIf
EndFor
i+1->i
l1[i]->x
mid(l1,1,k)->l1
EndWhile
©On rajoute 2 à la liste et on donne le résultat
augment({2},l1)->l1
Pause l1
EndPrgm
- Liste des diviseurs.
Cette fonction permet d'avoir la liste des diviseurs d'un nombre choisi par l'opérateur. Cette méthode est longue.
- Télécharger le fichier
- Le code avec les commentaires :
divis(n)
Func
Local k,l1
©On créé une liste avec 1 au départ
{1}->l1
For k,2,n
©On regarde si la partie entière du quotient est égal au quotient
If int(n/k)=n/k
augment(l1,{k})->l1
EndFor
©On renvoie le résultat
l1
EndFunc
- Algorithme d'Euclide.
Cette fonction utilise l'algorithme d'Euclide pour déterminer le PGCD de deux nombres.
- Télécharger le fichier
- Le code avec les commentaires :
euclid1(a,b)
Func
Local l1
©On créé une liste à deux termes
{a,b}->l1
©tant que le deuxième terme est non nul, on continue l'algorithme
While l1[2]$!=$0
{l1[2],l1[1]-int(l1[1]/(l1[2]))*l1[2]}->l1
EndWhile
©On renvoie le résultat
"pgcd = "&string(l1[1])
EndFunc
- Algorithme d'Euclide pour les équations diophantiennes.
Ce programme permet de déterminer une solution particulière d'une équation diophantienne de type ax+by=c avec a, b et c 3 entiers relatifs. La détermination s'appuie sur l'algorithme d'Euclide.
- Télécharger le fichier
- Le code avec les commentaires :
euclide(a,b)
Prgm
Local r,u,v,w,x,y,z,q
Dialog
Title "Equation diophantienne"
Text "Version 1.1"
Text " créé par Sly"
EndDlog
©etiennesy@wanadoo.fr
©On initialise l'algorithme
a->r
b->y
1->u
0->v
0->w
1->x
©On utilise l'algorithme d'Euclide et on fait permuter les lettres
While y$!=$0
int(r/y)->q
u->z:w->u:z-q*w->w
v->z:x->v:z-q*x->x
r->z:y->r:z-q*y->y
EndWhile
©On n'oublie pas le signe !
sign(r)->s
abs(r)->r
ClrIO
Disp "Pgcd de "&string(a)&" et "&string(b)&" = "&string(r)
Disp string(r)&" = "&string(a)&"*("&string(s*u)&") + "&string(b)&"*("&string(s*v)&")"
EndPrgm
- Dichotomie.
Ce programme est plus complet que la simple fonction ci après. Il permet de trouver la valeur d'une solution réelle par le principe de dichotomie.
- Télécharger le fichier
- Le code avec les commentaires :
dicho()
Prgm
Local b1,b2,b3,amp,f
Dialog
Title "Dichotomie"
Text "Version 1.1"
Text " créé par Sly"
EndDlog
©etiennesy@wanadoo.fr
©On demande les informations
Dialog
Title "entrer la fonction"
Request "f(x)=",ff
Request "borne inf",bi
Request "borne sup",bs
Request "Amplitude",am
EndDlog
expr(ff)->f(x)
approx(expr(bi))->b1
approx(expr(bs))->b2
expr(am)->amp
ClrIO
©On regarde s'il y a bien une solution...
If f(b1)>0 and f(b2)>0 or f(b1)<0 and f(b2)<0 Then
Disp "Pas de solution"
Stop
EndIf
©...et si une solution n'est pas une borne
If f(b1)=0 Then
Disp "la solution est ",b1
Stop
ElseIf f(b2)=0 Then
Disp "la solution est ",b2
Stop
EndIf
©On commence l'algorithme en regardant le sens de la fonction et en permuttant tour à tour
While b2-b1>amp
(b1+b2)/2->b3
If f(b1)>0 and f(b2)<0 Then
If f(b3)<0 Then
b3->b2
ElseIf f(b3)>0 Then
b3->b1
ElseIf f(b3)=0 Then
Disp "La solution est :",b3
Stop
EndIf
ElseIf f(b1)<0 and f(b2)>0 Then
If f(b3)<0 Then
b3->b1
ElseIf f(b3)>0 Then
b3->b2
ElseIf f(b3)=0 Then
Disp "La solution est :",b3
Stop
EndIf
EndIf
EndWhile
©On donne l'encadrement
Disp "L'encadrement est :","[ "&string(min(b1,b2))&" ; "&string(max(b1,b2))&" ]"
DelVar ff,bi,bs,am
EndPrgm
- Dichotomie (2).
Cette fonction donne seulement une solution approchée (ou exacte) par le principe de dichotomie.
- Télécharger le fichier
- Le code avec les commentaires :
dicho2(a,b,ε)
Func
Local c
©On divise par 2 l'encadrement
While (b-a)/2»ε
(a+b)/2->c
©On fait les tests
If f(c)=0
Return approx(c)
If f(a)*f(c)<0 Then
c->b
Else
c->a
EndIf
EndWhile
©On renvoie le résultat
approx(c)
EndFunc
- Méthode simultanée de la corde et Newton.
Ce programme permet de trouver un encadrement d'une racine d'amplitude déterminée par l'opérateur par les méthodes simultanées de la corde et de Newton. De même que pour la dichotomie, on peut faire une fonction beaucoup plus rapide (s'il y a des demandes...).
- Télécharger le fichier
- Le code avec les commentaires :
cord_new()
Prgm
Local b1,b2,amp,f,c,t
Dialog
Title "Encadrement par la corde et Newton"
Text "Version 1.1"
Text " créé par Sly"
EndDlog
©etiennesy@wanadoo.fr
©On demande les informations
Dialog
Title "entrer la fonction"
Request "f(x)=",ff
Request "borne inf",bi
Request "borne sup",bs
Request "Amplitude",am
EndDlog
©On prépare le terrain avec les dérivées première et seconde de la fonction
expr(ff)->f(x)
approx(expr(bi))->b1
approx(expr(bs))->b2
expr(am)->amp
δ(f(x),x)->gg(x)
δ(gg(x),x)->hh(x)
ClrIO
©On regarde si une solution existe
If f(b1)>0 and f(b2)>0 or f(b1)<0 and f(b2)<0 Then
Disp "Pas de solution"
Stop
EndIf
©On regarde si une borne n'est pas solution
If f(b1)=0 Then
Disp "la solution est ",b1
Stop
ElseIf f(b2)=0 Then
Disp "la solution est ",b2
Stop
EndIf
©On utilise l'algorithme
While b2-b1$>=$amp
(b1*f(b2)-b2*f(b1))/(f(b2)-f(b1))->c
If f(b1)*hh(b1)>0 Then
b1-f(b1)/gg(b1)->t
Else
b2-f(b2)/gg(b2)->t
EndIf
©On remplace les bornes sup et inf
min(c,t)->b1
max(c,t)->b2
EndWhile
©On donne le résultat
Disp "L'encadrement est :","[ "&string(approx(min(b1,b2)))&" ; "&string(approx(max(b1,b2)))&" ]"
DelVar ff,bi,bs,am,gg,hh
EndPrgm
- Méthode de la tangente d'Euler.
Cette méthode permet de construire une courbe approchée solution d'une équation différentielle.
- Télécharger le fichier
- Le code avec les commentaires :
eqdiff2()
Prgm
Local aa,xaa,yaa,hh,xmm,tr,i
ClrIO
FnOff
PlotsOff
Dialog
Title "Equation différentielle par Euler"
Text "Version 1.1"
Text " créé par Sly"
EndDlog
©etiennesy@wanadoo.fr
©On demande les informations
Dialog
Title "Equa diff y'=ay par la methode d'Euler"
Request "a",aa
Request "x0",xaa
Request "y0",yaa
Request "h",hh
Request "xm",xmm
DropDown "Tracer une courbe",{"oui","non"},tr
EndDlog
©On réccupère les données
expr(aa)->a
expr(xaa)->xa
expr(yaa)->ya
expr(xmm)->xm
expr(hh)->h
©On créé deux listes
seq(x,x,xa,xm,h)->list1
seq(0,x,xa,xm,h)->list2
ya->list2[1]
©On lance l'algorithme
For i,1,(xm-xa)/h
(1+a*h)*list2[i]->list2[i+1]
EndFor
1->xscl
1->yscl
©on affiche les points reliés par des segments correspondant à la solution approchée
NewPlot 1,2,list1,list2,,,,3
ZoomData
Pause
©Une courbe est tracée si l'opérateur l'a demandée
If tr=1 Then
Dialog
Request "Entrez la fonction",g
EndDlog
expr(g)->y1(x)
DispG
Pause
EndIf
DispHome
EndPrgm
- Courbe intégrale par la méthode d'Euler.
Ce programme permet de tracer une courbe intégrale à partir de la méthode d'Euler.
- Télécharger le fichier
- Le code avec les commentaires :
euler_1()
Prgm
Local ff,xaa,yaa,hh,xmm,tr,i
ClrIO
FnOff
PlotsOff
Dialog
Title "Courbe integral y'=f(x) par la méthode d'Euler"
Text "Version 1.1"
Text " créé par Sly"
EndDlog
©etiennesy@wanadoo.fr
©On demande les informations
Dialog
Title ""
Text "Entrer f(x)"
Request "f(x)",ff
Request "x0",xaa
Request "y0",yaa
Request "h ",hh
Request "xm",xmm
DropDown "Tracer une courbe",{"oui","non"},tr
EndDlog
©On réccupère les données
DelVar x
expr(ff)->f
expr(xaa)->xa
expr(yaa)->ya
expr(xmm)->xm
expr(hh)->h
©On créé deux listes
seq(u,u,xa,xm,h)->l1
seq(0,u,xa,xm,h)->l2
ya->l2[1]
©On lance l'algorithme, différent du programme précédent
For i,1,(xm-xa)/h
l1[i]->x
l2[i]+h*f->l2[i+1]
EndFor
©on affiche les points reliés par des segments correspondant à la solution approchée
NewPlot 1,2,l1,l2,,,,5
ZoomData
Pause
©Une courbe est tracée si l'opérateur l'a demandée
If tr=1 Then
Dialog
Request "Entrez la fonction",g
EndDlog
expr(g)->y1(x)
DispG
Pause
EndIf
DispHome
delvar x,xa,ya,f,h,xm,l1,l2,g,y1
EndPrgm
|