Calculatrices Casio Graphiques : Jeux, programmes, cours, pompes, astuces et programmation sur calculatrice graphique Casio et ClassPad 300 : programmes casio et jeux casio...

Programmes et jeux pour calculatrices Casio Graph et calculatrice ClassPad 300, jeux casio, cours...Calcul formel pour Casio Graph 85
 

Forum Casio

 

Programmes et jeux pour calculatrices Casio Graph et calculatrice ClassPad 300, jeux casio, cours...: Forums

Forum Casio

Un espace convivial pour poser vos questions ou simplement venir discuter... Entrer

Forum Programmation

Toutes les discussions à propos de la programmation sur calculatrices Casio... Entrer

Foire aux Questions

Les réponses aux questions les plus courantes sont ici ! Entrer

Forum principal Jeuxcasio.com
  

Mon programme: problème

Auteur Mon programme: problème
Mouchoirdu76
Programmeur Basic



Messages: 13
Calculatrice : Graph 85
Message posté: 11-11-2011 à 18:14     Editer/Supprimer les messages postés   Renvoyer une note
Bonjour !

J'ai une calculette Casio Graph 85 et je me suis mis à programmer au début de l'année. Je suis en train de faire un programme, le plus complexe que j'ai jamais créé, mais j'ai quelques problèmes !

- Quand j'utilise la fonction Locate, le texte ne s'affiche pas !
- J'ai lus et réécris la fonction:
For 1->T To 3500
Next
Qui pourrait m'expliquer ce que j'ai écris ?
- J'ai fais un menu. On nous propose 3 choix. Je voudrais faire en sorte que si on appuie sur la touche correspondant, on arrive au bon programme, et si on appuie sur aucune touche ou sur une mauvaise touche, rien ne se passe. Mais je n'y arrive pas !


Merci d'avance pour votre aide, j'essaierais de mettre à jour ce topic le plus souvent possible quand j'ai besoin pour apprendre à programmer !



PierrotLL
Administrateur



Messages: 1854
Calculatrice : Graph 85
Message posté: 11-11-2011 à 20:26     Editer/Supprimer les messages postés   Renvoyer une note
La fonction Locate :
Locate X,Y,"TEXT" ou Locate X,Y,N (N ou n'importe quelle autre variable)
Affiche le texte ou la valeur de la variable prise en 3ème paramètre aux coordonnées X,Y (X entre 1 et 21, Y entre 1 et 7) sur l'écran texte.

La boucle For :
For valeur_initiale -> variable To valeur_finale Step pas
instructions
Next
C'est une boucle. On commence par initialiser la variable avec la valeur initiale. On exécute les instructions contenues dans la boucle, puis on ajoute la valeur du pas à la variable, et on continu tant que la valeur de la variable est différente de la valeur finale.
"Step" est facultatif, il permet de préciser le pas de la boucle. Par défaut il est de 1
Ton exemple est donc une boucle qui tourne 3500 fois sans effectuer aucune action, elle ne sert donc qu'à ralentir le programme.

Pour gérer les touches du clavier, il faut utiliser la fonction GetKey. Elle renvoie un numéro qui correspond à la touche actuellement enfoncée, ou 0 si aucune touche n'est enfoncée. Pour connaitre les numéros des touches, tu peux faire ce programme très simple :
1->A
While 1
GetKey->K
If K!=A
Then K->A
ClrText
Locate 10,4,K
IfEnd
WhileEnd



Mouchoirdu76
Programmeur Basic



Messages: 13
Calculatrice : Graph 85
Message posté: 11-11-2011 à 21:35     Editer/Supprimer les messages postés   Renvoyer une note
Bonjour et merci beaucoup pour la réponse rapide !


Pour Locate, je fais exactement comme tu me dis (j'ai d'ailleurs suivis vos cours sur le site !) mais le texte que je veux afficehr avec Locate ne s'affiche pas, cela fait un blanc à l'écran. Le "," à mettre après les chiffres se trouve bien dans la liste des caractères ?

Le programme que tu m'a donné pour déterminer les chiffres des touches ne fonctionnent pas bien: j'ai pourtant bien suivis et bien retranscris chaque étape, et pourtant quand je lance le programme, j'ai le droit à un beau 0, et pas de réaction du programme, même quand j'appuie sur les touches.
Quand j'appuie sur une touche juste après le démarrage, je n'ai rien qui s'affiche...


Voici en gros mon projet: je veut créer Oméga, un programme qui regrouperais tout ce que j'ai créé depuis le début. J'ai un programme pour calculer les trinômes (qui m'a servis à débuter, même si je sais que ma calculette possède une option pour sa), et un programme qui permet de cacher un texte, utile pour cacher ses cours lors d'un contrôle. (destiné à mes camarades, pas pour moi ! )
Voici le début du code:

Quote:
"Oméga"
" "
" "
"Texte"
"Novembre 2011"
" "
"VERSION 0.3"
For 1->T To 3500
Next
'Fonction qui permet "d'éteindre" la page d'accueil au bout d'un certain temps.
ClrText
Lbl M
"Que souhaitez-vous"
"faire ?"
" "
" "
"(1) Calculer un trinôme"
"(2) Options"



C'est juste après ce code que je veut mettre une fonction qui fait que si on appuie sur 1, on iras calculer un trinôme. Si on appuie sur 2, on iras dans les options. Si on apuie sur rien ou sur une autre touche, il ne ce passe rien.
C'est cette fonction que je n'arrive pas à programmer...

J'ai essayé ceci:

Quote:
If GetKey=72
Then Goto 2
Else
If GetKey=62
Then Goto 3
IfEnd



Et évidemment, sa ne marche pas !



PierrotLL
Administrateur



Messages: 1854
Calculatrice : Graph 85
Message posté: 11-11-2011 à 23:20     Editer/Supprimer les messages postés   Renvoyer une note
Pour Locate il faut utiliser la virgule, la touche virgule, au dessus de DEL.

Le programme que je t'ai donné pour GetKey est bon. Mais j'ai oublié de préciser que "!=" correspondait au signe "différent de" et "->" à la simple flèche.

Pour ton menu, tu peux effectivement faire :
Lbl 0
ClrText
"1) CHOIX 1"
"2) CHOIX 2"
"3) CHOIX 3"
While 1
GetKey->K
K=72=>Goto 1
K=62=>Goto 2
K=52=>Goto 3
WhileEnd
Lbl 1
// menu 1
Goto 0
Lbl 2
// menu 2
Goto 0
Lbl 3
// menu 3
Goto 0



Mouchoirdu76
Programmeur Basic



Messages: 13
Calculatrice : Graph 85
Message posté: 11-11-2011 à 23:37     Editer/Supprimer les messages postés   Renvoyer une note
Pour Locate, c'est vraiment bizarre, sa ne s'affiche toujours pas !

Voici ce que j'écris:

Quote:
Locate 1,4,"Oméga"



Sachant qu'il y a encore du texte en dessous !

Pour le programme (sur les numéros des touches), c'est bon, il fonctionne à merveille, c'est génial, merci ! =D

Et encore une fois merci, mon menu marche super bien maintenant, j'en ai même profité pour apprendre et comprendre GetKey et une nouvelle boucle !
Merci beaucoup !



PierrotLL
Administrateur



Messages: 1854
Calculatrice : Graph 85
Message posté: 12-11-2011 à 01:19     Editer/Supprimer les messages postés   Renvoyer une note
C'est peut-être l'accent qui pose problème, essaye déjà avec juste des lettres en majuscules.


Mouchoirdu76
Programmeur Basic



Messages: 13
Calculatrice : Graph 85
Message posté: 12-11-2011 à 09:22     Editer/Supprimer les messages postés   Renvoyer une note
Non, Locate ne marche toujours pas !
En fait, sa ne marche pas sur mon cas actuel, mais j'ai réussis à le faire marcher ailleurs dans le programme, je vait essayer de comprendre pourquoi.


- Peut-on stocker du texte dans une variable ?
- Le nom d'une variable n'est compris qu'entre A et Z ou on peut l'appeler différemment, tel que AM ou encore P2 ?
- Si la variable A=1.25693, comment faire pour afficher sa valeur arrondie au dixième, au centième, ect... ou mieux, sous sa forme fractionnaire ?



PierrotLL
Administrateur



Messages: 1854
Calculatrice : Graph 85
Message posté: 12-11-2011 à 10:59     Editer/Supprimer les messages postés   Renvoyer une note
Si ta Graph 85 a l'OS 2, alors elle a les fonctions str (les chaines de caractères). Ce sont des variables spéciales qui contiennent du texte. Exemple : "PHRASE"->Str 1
Le mot clé Str se trouve dans le menu VARS F6 F5.
Et il y a plusieurs fonctions pour manipuler les chaines de caractères dans SHIFT VARS F6 F6 F1.
Si ta calculatrice n'a pas ces fonctionnalités, tu peux télécharger l'application de mise à jour sur le site de Casio.

Les noms de variables sont limités à une seule lettre. Mais il y en a quelques unes en rab, comme Ans, r, teta (qui sont de touches du clavier), et a0, a1, a2, b0, b1, b2 (qui sont dans VARS F6 F2(RECR) F2(RANG). On peut aussi considérer que les données du ViewWindow (la fenêtre de vue en mode graphique) Xmin, Xmax ... etc, peuvent être utilisées comme des variables si toutefois on n'utilise pas de fonction graphique dans le programme.

Pour obtenir la troncature au dixième, tu peux faire .1Int 10A (A=1.25693, 10A=12.5693, Int 10A=12, .1Int 10A=1.2)



Mouchoirdu76
Programmeur Basic



Messages: 13
Calculatrice : Graph 85
Message posté: 12-11-2011 à 11:18     Editer/Supprimer les messages postés   Renvoyer une note
Super ! Je met à jour tout de suite et je teste tout sa, normalement je n'aurais pas de problème !


Merci beaucoup en tout cas, sa m'a permsi d'apprendre beaucoup de choses sur la programmation !



Mouchoirdu76
Programmeur Basic



Messages: 13
Calculatrice : Graph 85
Message posté: 22-11-2011 à 12:43     Editer/Supprimer les messages postés   Renvoyer une note
Bonjour, c'est encore moi !


Je veut cette fois créer un programme qui utile la fonction "=>" (la double-flèche qui remplace If-Then-IfEnd).
Le problème c'est que je veut effectuer plusieurs opérations après la double-flèche.

Voici ce que je veut faire:
A=1=>Locate 1,1,"Texte1" Goto A
A=2=>Locate 1,1,"Texte2" Goto A
A=3=>Locate 1,1,"Texte3" Goto A

Mais sa ne fonctionne pas !


Merci d'avançe !


Mouchoirdu76



PierrotLL
Administrateur



Messages: 1854
Calculatrice : Graph 85
Message posté: 22-11-2011 à 14:57     Editer/Supprimer les messages postés   Renvoyer une note
Une seule instruction après la double flèche.
A=1=>Locate 1,1,"Texte1"
A=1=>Goto A



Mouchoirdu76
Programmeur Basic



Messages: 13
Calculatrice : Graph 85
Message posté: 22-11-2011 à 19:46     Editer/Supprimer les messages postés   Renvoyer une note
Super ! Sa marche nickel ! Merci !


Et si je veut faire en sorte qu'il choisisse un nombre entier entre 2 et 6, je fais comme sa:

Int 6Ran# +2->A



drsi-prog1max
Administrateur



Messages: 762
Calculatrice : Graph 65
Message posté: 22-11-2011 à 19:52     Editer/Supprimer les messages postés   Renvoyer une note
Non, si tu veux un entier entre 2 et 6, il y a 5 possibilités (2,3,4,5,6), donc il faut faire 5Ran# et non pas 6Ran#. Ca fera donc Int 5Ran#+2->A


 
Mouchoirdu76
Programmeur Basic



Messages: 13
Calculatrice : Graph 85
Message posté: 22-11-2011 à 21:40     Editer/Supprimer les messages postés   Renvoyer une note
Ah d'accord, mais sa marche vraiment si on veut un nombre entre 2 et 6 seulement ? Ou pourquoi pas un nombre entier entre 12 et 56 ?


drsi-prog1max
Administrateur



Messages: 762
Calculatrice : Graph 65
Message posté: 23-11-2011 à 13:08     Editer/Supprimer les messages postés   Renvoyer une note
Int 45Ran#+12


 
Mouchoirdu76
Programmeur Basic



Messages: 13
Calculatrice : Graph 85
Message posté: 23-11-2011 à 13:59     Editer/Supprimer les messages postés   Renvoyer une note
J'ai essayé et sa ne marche pas...


En gros, voilà ce que j'ai tapé:

O=2=> Int 5Ran# +2

(Si O est égale à 2, choisir un nombre entier UNIQUEMENT entre 2 et 6)

Le problème c'est qu'il choisis un nombre entre 2 et, je suppose, l'infinis !



drsi-prog1max
Administrateur



Messages: 762
Calculatrice : Graph 65
Message posté: 23-11-2011 à 18:27     Editer/Supprimer les messages postés   Renvoyer une note
O=2=>Int 5Ran#+2
Je traduis :
Si O=2 alors prendre la troncature à l'unité de 5* Ran# +2
(Ran# fournit un nombre aléatoire entre 0.000000000 et 0.999999999).

Donc, vu le code que tu a mis, la calculatrice choisi bien un entier entre 2 et 6 lorsque O=2.
Le problème c'est que que ce nombre, tu lui dis de ne rien en faire (tu devrais l'enregistrer dans une variable ou au moins l'afficher).



 
Mouchoirdu76
Programmeur Basic



Messages: 13
Calculatrice : Graph 85
Message posté: 23-11-2011 à 22:20     Editer/Supprimer les messages postés   Renvoyer une note
Oui, j'ai oublie de preciser que je stockais la valeur dans une variable !
J'ai decide de reecrire tout le code, et pour une raison qui m'echappe, sa a marche ! oO
Comme je travaille sur calculatrice et non sur ordinateur pour des raisons pratiques, une erreur a du se glisser et je ne les pas vus, pourtant j'ai cherché...

Je vait pousser le vice plus loin en voulant choisir un nombre entier aléatoire entre 2 et 6 qui n'est pas egale a la variable C puis la stocker dans cette meme variable C (pour eviter de tomber sur le meme chiffre). Je suppose que l'on fait:

Int 5Ran# +2=\\=C ->C

Mais évidemment, sa fait tout le contraire ! Je teste différent truc, mais sa ne fonctionne plus du tout donc bon, je pense que j'ai mal orthographié mon idée de départ.



PierrotLL
Administrateur



Messages: 1854
Calculatrice : Graph 85
Message posté: 24-11-2011 à 13:49     Editer/Supprimer les messages postés   Renvoyer une note
T'as une façon de raisonner bizarre pour écrire un truc pareil

Ran# retourne un nombre entre 0 et 1 non compris
Tu le multiplies par 5, prends la partie entière du résultat, y ajoute 2.
Et ensuite, tu testes si ce nombre est différent de C
Si c'est vrai, alors le résultat sera 1, si c'est faux le résultat sera 0.

Bref, voilà le code qu'il te faut :
Do
Int 5Ran#+2
LpWhile Ans=C
Ans->C



drsi-prog1max
Administrateur



Messages: 762
Calculatrice : Graph 65
Message posté: 24-11-2011 à 14:46     Editer/Supprimer les messages postés   Renvoyer une note
Do
Int 5Ran#+2
LpWhile Ans=C
Ans→C

Do ... LpWhile est une boucle.
A chaque passage dans la boucle, la calculatrice calcule un nombre aléatoire, donc celui-ci est contenu dans la variable Ans (variable contenant toujours le dernier résultat).
La condition de sortie de boucle est Ans≠C (le nombre aléatoire doit être différent de C).
Donc la boucle doit s'exécuter tant que Ans=C.
En sortant de la boucle, on enregistre le dernier nombre aléatoire calculé (qui est différent de C) dans C.



Edit : faut que je fasse gaffe à ma touche F5... 1h de retard...



 
Mouchoirdu76
Programmeur Basic



Messages: 13
Calculatrice : Graph 85
Message posté: 24-11-2011 à 21:34     Editer/Supprimer les messages postés   Renvoyer une note
Sachez que je raisonne comme un plouc, c'est d'ailleurs pour sa que mes résultats en math sont minables, je n'ai pas de logique ! x)
Le problème c'est que j'aime la programmation, et quand j'essayedes trucs, sa ne marche pas car je fais n'importe quoi ! Alors au bout de 10 échecs et de recherche veine, je poste ici !


Enfin sinon merci pour l'aide, sa marche bien et j'apprend des trucs, que je réutilise régulièrement ! Merci aussi pour le petit complément d'explication sur la boucle Do !

Là actuellement je suis en train d'étudier la partie du cours sur le rafraichissement partiel, mais je n'ai pas trop compris comment définir les zones a effacer...



PierrotLL
Administrateur



Messages: 1854
Calculatrice : Graph 85
Message posté: 24-11-2011 à 22:02     Editer/Supprimer les messages postés   Renvoyer une note
C'est simple, quand on affiche un espace avec la fonction Text, ça efface une zone de 4*5 pixels. Avec 2 espaces, ça fait une zone de 8*5 pixels.
Dans le cours, il fait ça avec une boucle For pour effectuer cette action à différentes hauteur, histoire d'effacer une zone plus haute que 5 pixels.
Mais ce genre de méthode est lente, et en général il est préférable d'effacer tout l'écran et de tout redessiner.

Et ne t'en fais pas pour la logique, à force de programmer ça va venir.



Mouchoirdu76
Programmeur Basic



Messages: 13
Calculatrice : Graph 85
Message posté: 28-11-2011 à 08:43     Editer/Supprimer les messages postés   Renvoyer une note
Là cette fois j'ai un bug de syntaxe avec la boucle while/whileend...

La calculatrice m'affiche SYNTAX ERROr alors que j'ai pourtant bien copié mon code ! Cela fait:

While 1
GetKey->M
M=28=>Goto F
M=79=>Goto M
M=78=>E->1
M=79=>E->2
WhileEnd


J'essaye aussi de créer une boucle qui vérifie la présence d'un programme X, est-ce que c'est possible au moins ?

Est-il possible de dire à la calculatte: Va Goto B dans le programme Test ?

Si dans mon programme 1 A=2 et que j'utilise ensuite la commande progr "2", A seras-t-il égale à 2 dans ce programme 2 ?
Et si je fais l'inverse ?



PierrotLL
Administrateur



Messages: 1854
Calculatrice : Graph 85
Message posté: 28-11-2011 à 14:40     Editer/Supprimer les messages postés   Renvoyer une note
Il n'y a apparemment pas d'erreur dans ton bout de code. Lorsque l'erreur survient, appuie sur la flèche de gauche et le curseur sera placé dans le code à l'emplacement de l'erreur.

Non il n'est pas possible de vérifier l'existence d'un programme.

Il n'y a rien de prévu pour sauter à Lbl B dans le programme Test. Mais on peut utiliser une astuce, par exemple tester au début de "Test" si B=1, alors Goto B. Comme ça dans le programme appelant tu n'a qu'à faire 1->B:Prog"TEST"

Et oui, toutes les variables sont communes à tous les programmes. Il n'y a aucune variable locale.



Mouchoirdu76
Programmeur Basic



Messages: 13
Calculatrice : Graph 85
Message posté: 28-11-2011 à 15:42     Editer/Supprimer les messages postés   Renvoyer une note
Merci pour les réponses !


Le problème dans ma boucle, c'est qu'il m'affiche une erreur de syntaxe sur le Whileend, et là je ne comprend pas trop pourquoi...



Meetic - Les règles du jeu ont changé | MeeticAffinity
  
Bloquer le sujet Déplacer le sujet Supprimer le sujet
 
     


Toutes les pages et les images de jeux casio appartiennent à http://www.jeuxcasio.com ©2002-2020
Toute reproduction partielle ou totale de Jeuxcasio.com ou de son contenu est strictement interdite. | Casio est une marque déposée par le groupe Noblet

Bac Français Meeticadblocktest Amazon.com Expedia.com Ebookers
Opodo
Amazon.fr eBay Fr