[QB64] Saisie d'un fonction dans un programme de maths

Saisie d'un fonction dans un programme de maths [QB64] - Divers - Programmation

Marsh Posté le 19-04-2016 à 20:26:48    

Salut,
 
J'ai utilisé le BASIC et QBASIC il y a longtemps, quand j'étais au collège et au lycée. J'ai retrouvé une disquette contenant des programmes que j'avais fait alors et je souhaite les améliorer un peu. La plupart sont des programmes de maths. J'ai toujours été fan de Pocket computers et, il y a pas longtemps, j'ai acheté entre autres une Casio fx-850p avec son extension mémoire RP33. Première fois que je code en BASIC Casio et j'aime beaucoup. J'ai téléchargé QB64 sur le PC, et bien entendu, j'ai constaté des différences entre les deux langages, c'est pourquoi je suis ici.
 
J'ai une tripotée de programmes de maths, et aujourd'hui, je fais un programme qui dessine des fonctions. Simple et efficace. Le programme me demande l'échelle du repère, puis dessine la fonction qui est stockée dans une routine FUNCTION... END FUNCTION. J'aimerais que le programme me demande de saisir la fonction, comme le reste car pour le moment il faut que j'édite le programme pour modifier la fonction en question. Pas toptop. Sur la Casio, il y a une fonction nommée VALF qui est intéressante. Je stocke la fonction dans une variable alphanumérique (par exemple F$), et VALF calcule sa valeur numérique et la stocke dans une variable numérique (par example Z : Z=VALF(F$)). Pour illustrer, voici le code pour ma Casio qui me permet de calculer des intégrales via la méthode des trapèzes :
 

Code :
  1. 10 CLS : PRINT "Calcul d'aires";: LOCATE 0,1 : PRINT "Méthode des trapezes :"
  2. 20 CLS : INPUT "Fonction f(x) "; F$
  3. 30 CLS : INPUT "a "; A : CLS : INPUT "b "; B
  4. 40 INPUT "Nombre d'iterations "; N
  5. 50 H=(B-A)/N
  6. 60 X=A : Z1=VALF(F$) : X=B : Z2=VALF(F$) : S=.5*(Z1+Z2)
  7. 70 X=A
  8. 80 FOR I=1 TO N-1
  9. 90 X=X+H
  10. 100 Z=VALF(F$) : S=S+Z
  11. 110 NEXT I
  12. 120 S=S*H
  13. 130 PRINT CHR$(129); "f(x) dx ="; S
  14. 140 END


 
Ci-dessous, le code sur lequel je travaille aujourd'hui, en QB64, et qui me permet de tracer des fonctions :
 

Code :
  1. 'Draw Function
  2. 1
  3. SCREEN 12
  4. COLOR 11
  5. CLEAR
  6. CLS
  7. DEFDBL A-Z
  8. PRINT
  9. PRINT TAB(20); " Tracé d'une fonction"
  10. PRINT
  11. PRINT " Echelle :"
  12. PRINT
  13. INPUT " Valeur minimale de x "; xmin
  14. INPUT " Valeur maximale de x "; xmax
  15. INPUT " Valeur minimale de y "; ymin
  16. INPUT " Valeur maximale de y "; ymax
  17. CLS
  18. WINDOW (xmin + xmin / 10, ymin + ymin / 10)-(xmax + xmax / 10, ymax + ymax / 10)
  19. LINE (xmin, 0)-(xmax, 0)
  20. LINE (0, ymin)-(0, ymax)
  21. FOR i = xmin TO xmax STEP 1
  22.     PSET (i, xmax / 320)
  23. NEXT i
  24. FOR j = ymin TO ymax STEP 1
  25.     PSET (ymin / 320, j)
  26. NEXT j
  27. FOR x = xmin TO xmax STEP 1 / 128
  28.     IF x = xmin THEN PSET (x, f(x)), 14
  29.     LINE -(x, f(x)), 14
  30. NEXT x
  31. Fin:
  32. LOCATE 28, 1
  33. PRINT " Encore (o/n) ?";: z$ = INKEY$
  34. IF z$ = "o" THEN 1 ELSE IF z$ = "n" THEN END
  35. GOTO Fin
  36. END
  37. FUNCTION f (x)
  38. f = x ^ 3 - 3 * x ^ 2 + 2
  39. END FUNCTION


 
Vous l'aurez compris, je cherche un équivalent à VALF dans QB64, afin de m'affranchir de FUNCTION... END FUNCTION, pour ne pas avoir à éditer le programme à chaque fois que je veux remplacer une fonction.
Est-ce possible ?
 
Merci. :)
 
W.


Message édité par ShadowBuilder le 24-04-2016 à 09:05:39

---------------
••• Thinkpad Community rules ! •••
Reply

Marsh Posté le 19-04-2016 à 20:26:48   

Reply

Marsh Posté le 21-04-2016 à 21:44:50    

Up ! :)
 
W.


---------------
••• Thinkpad Community rules ! •••
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed