1

Salut à tous,

Je fais appel à vous car je suis embêté par un programme où je suis bloqué.

Je voulais programmer pour le bac, quelque chose qui ressemble à ça http://www.spc.ac-aix-marseille.fr/phy_chi/Menu/Activites_pedagogiques/livre_TS/11_Ondes_mecaniques_progressives/CH_ondes-progressives.swf

Je sais plus comment on appelle le concept mais en gros, ce serait genre : programme=Maths {chapitre 1 --> notion1
--> notion2

{chapitre 2 --> notion1
--> notion 2

Voilà en gros le topo

Et mon code ressemble à ça : PRGM MATHS =

clrhome
disp "geométrie dans l'espace : 1" //genre si tu veux voir les notions de géom, tape 1
pause
disp " " //pour sauter une ligne, j'ai oublier la cmd
disp "suites : 2"
pause
ETC ....
prompt N // le nombre correspondant au chapitre voulu
if n=1
then
prgm P1
if n=2
then prgm2
ETC...

// donc là je tape 1

PRGM P1=

clrhome
disp "éléments de cours : 1" //pour quelques notions de cours, taper 1
pause
disp" "
disp"trouver D dans l'équation d'un plan avec un point A : 2" //taper 2 ...
ETC....
pause
promp N
if N=1
then
prgm P1A
ETC....

// je tape 1

prgm P1A=

disp" toutes les notions de cours importantes"



Voilà en gros comment je voulais coder mon programme mais ça bloque car apparemment on ne peut pas utiliser autant de sous-programmes qu'on veut...

Donc j'ai essayé de me pencher sur lbl et goto mais j'y comprend aps grand chose et en plus je vois pas comment recréer ce que je voulais faire.

Faire un menu ça va pas, pas assez d'options et puis pas assez de caractères dispo pour écrire les titres des sous-programmes voulus.


Merci si vous trouvez une solution, si c'est avec lbl et goto, je prends aussi mais apr contre va falloir bien expliquer car j'ai pas vraiment pigé le truc ^^

Bonne soirée

2

[nosmile]A la limite si tu veux avoir vraiment la place d'écrire des tas de trucs utilise l'écran graphique :
0→Ymin
0→Xmin
62→Ymax
94→Xmax
AxesOff
ClrDraw
Text(0,0,"Geometrie dans l'espace : 1
Text(6,0,"Suites : 2
Repeat K
getKey→K
End
If K=92tonguergmTRUC1
If K=93tonguergmTRUC2
Repeat getKey:Endetc...

Théoriquement ça doit marcher, y'a pas de limites aux appels de sous-programmes. A mon avis c'est que t'as du oublier des "End" à la fin de tes tests.

Sinon pour piger comment ça marche, au départ on initialise l'écran graphique (coordonnées X et Y min/max, désactivation des axes et nettoyage), ensuite on affiche aux coordonnées souhaitées tous nos trucs ((0,0)=haut et à gauche), puis on test les touches du clavier. Là c'est un peu plus compliqué : chaque touche à un code qui lui est propre, qu'on récupère grâce à la fonction "getKey". Par exemple pour la touche "1" c'est 92, et pour la "2" c'est 93.

Pour connaitre ces codes ("Clear" pour quitter) :
Repeat K=45
Repeat K
getKey→K
End
Disp KEnd

Sinon les labels c'est assez simple : t'en poses un à l'intérieur de ton programme et dès que celui-ci rencontre un "Goto [label]", il y saute et continue à ce point.

3

Salut!

Merci beaucoup de ta réponse.

Alors j'ai essayer les ends et sauf erreur ça marche pas non plus.

Par contre j'ai essayé ton truc avec le graphe. Donc plusieurs choses: pour les xmin tout ça je l'ai fait dans window car je n'ai pas trouvé de commande pour ça et de plus comment je fais quand je dois utiliser le graphe pour des fonctions? xD

d'autre part pour le getkey jcrois avoir pigé seulement avec ton code, quand je tape 1 ça me met une erruer qui pointe entre le if et le k=92

et aussi, jvoulais rappeler que l'appel de sous-programmes se fait à 3 niveaux, MATIERE-->CHAPITRE-->NOTION

C'est possible avec le graphe?

MErci grin

4

Pour tracer des graphs ensuite, suffit de rajouter ça :
StoreGDB 1
[ton prog]RecallGDB 1


Ensuite pour l'erreur, t'es sûr d'avoir été chercher "If" dans les menus ? La variable K est bien en majuscule ?

Sinon le fait d'appeler plusieurs programmes je ne pense pas que ça pose problème, et ce n'est pas lié à l'utilisation du graph.

5

Bonjour,

avec ce bout de code en plus, jai une autre erreur :x

"err:argument"

et elle pointe sur l'espace après "storeGDB"

de plus, l'erreur précédente, je semble l'avoir résolue simplement en suppirman,t l'espace que j'avais mis entre "if" et "K" mdr

Mais comme je te l'ai dit, le store GDB nécessite un "argument" aisni que le Recall GDB qcar si je suprrime le premier, l'erreur s'affiche au second.
Quel est cet argumet nécessaire?


Merci encore!

6

Ah ouais faut choisir un numéro pour la GDB (j'ai édité).

7

finalement ça va mieux mais un problème quand même :

tout d'abord, est-ce impossible de faire en sorte que le graphe s'affiche normalement une fois qu'on a fini avec le programme? (j'ai rajouté axes on juste avant recallgdb1 mais ça ne les remet pas quand je quiite le prog
parce que pour le bac, si j'ai besoin de tracer une fonction j'aimerais autant ne pas avoir à remettre tout en place systématiquement ^^

sinon , j'ai changé la syntaxe pour l'appell de sous-programmes et là ça a l'air de marcher

au lieu de

if n=1
then
prgm1

j'ai mis comme toi :

if n=1tonguergm1
if n=2tonguermg2

etc...


EDIT: d'ailleurs, le problème que j'ai eu avec IF c'est que je l'ai écrit au lieu de mettre le"if"... quel abruti désolé!


merci pour ton aide!

8

Ca sert à rien de mettre "AxesOn" après "RecallGDB 1", puisque cette dernière fonction remet tous les paramètres du graphs comme ils étaient avant le prog. En gros retire ça et re-règle ton graph comme tu veux (je suppose :
-10→Ymin
-10→Xmin
10→Ymax
10→Xmax AxesOn
).

Enfaite avec les "If", s'il n'y a qu'une fonction ensuite (ici "prgmMACHIN"), il n'est pas nécessaire de mettre un "Then" et un "End". Mais dans le cas où tu veux mettre quand même un "Then", le "End" est obligatoire après toutes les commandes qui suivent la vérification du test.

9

ah ouais niquel merci

et une petite chose, la fonction "cleardraw" elle est pas censée effacer le graph précédent quand on lance le prog?

parce que moi j'ai quand meme la courbe précédente quand je lance mon programme oO


encore merci!

10

Ah si faut que tu rajoutes "FnOff" en début de programme et "FnOn" à la fin.