Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.

Forum Casio - Autres questions


Index du Forum » Autres questions » aide de programmation pour un novice
Titer22 Hors ligne Membre Points: 18 Défis: 0 Message

aide de programmation pour un novice

Posté le 05/05/2012 22:49

Bonjour à tous,

Voila j'ai donc le programme ci dessous a faire sur ma calculatrice mais je suis novice en matiere de programmation et j'aurai voulu que quelqu'un m'aide si possible.

Variables : A, K, N sont des entiers naturels
X et Y sont des réels compris entre 0 et 1
Début
affecter à A la valeur 0
affecter à K la valeur 1
saisir N
tant que K =< N
affecter à X une valeur aléatoire comprise entre 0 et 1
affecter à Y une valeur aléatoire comprise entre 0 et 1
si Y-X²<0 alors affecter à A la valeur A+1
sinon affecter à K la valeur K+1
afficher A/N
Fin

Moi sur ma calculatrice a l'aide de mon livre et d'internet ( tout seul) j'ai taper un programme qui evidemment ne marche pas, voici ce que j'ai taper

A->0
K->1
?->N
For 1->K to N Step 1
Next
Ran# ->X
Ran# ->Y
If Y-X²<0
Then
A->A+1
Else
K->K+1
A/N afficher (triangle en bas a droite)

Merci de votre aide


Eiyeron Hors ligne Ancien modérateur Points: 5525 Défis: 57 Message

Citer : Posté le 05/05/2012 22:52 | #


T'as oublié un IfEnd puis un Next a la fin d ton programme! Sinon il est juste.
Ils servent à fermer la condition "si" et la boucle "for", si tu les mets pas, comment la Calto sait si tu dois revenir dans la boucle?

Ajouté le 05/05/2012 à 22:53 :
Ah oui, pour l\'assignation k->K+1, c\'est l\'inverse qu\'il faut faire
Titer22 Hors ligne Membre Points: 18 Défis: 0 Message

Citer : Posté le 05/05/2012 23:01 | #


A la fin, c'est a dire avant le A/N ou après, et pour K->k+1 je doit inverser pour A aussi ou pas ?
Eiyeron Hors ligne Ancien modérateur Points: 5525 Défis: 57 Message

Citer : Posté le 05/05/2012 23:02 | #


C'est k+1->k, tu calcules l'opération puis tu la mets dans la variable
Titer22 Hors ligne Membre Points: 18 Défis: 0 Message

Citer : Posté le 05/05/2012 23:04 | #


Excusez moi mais je ne comprend vraiment pas ce que je dois faire? donc j'ai modifier mon k->k+1 et maintenant ?
Eiyeron Hors ligne Ancien modérateur Points: 5525 Défis: 57 Message

Citer : Posté le 05/05/2012 23:15 | #


Cette modification est à faire de partout ou c'est dans le mauvais sens, je n'ai fait qu'un exemple.
Sinon, pour la fin, tu dois ajouter
IfEnd
Next

Et le next juste après le for, tu l'enlèves, ok?
Attends, ça le paraît bizarre TOn truc
Je vais le réécrire mais je compte sur toi pour le comprendre:

0->A
?->N
1->K
While K<= N
Ran# ->X
Ran# ->Y
If Y-X^2<0
Then A+1->A
Else A/N[DISP]
K+1->K
IfEnd
Next

Ça devrait aller, après si tu comprends pas, je vais ajouter un post pour expliquer

Ajouté le 05/05/2012 à 23:17 :
En gros, tu as une condition \"tant que\", ce qui fait que tu n\'as pas forcément une boucle de type \"for\", car si dans une boucle for, à chaque tour, K augmente, ici, ce n\'est pas forcément le cas, donc attention, si K doit augmenter à chaque fois, tu fois revenir sur une boucle de type for

Et l\'assignation, c\'est comme ça : Valeur->Variable
Ne0tux Hors ligne Membre d'honneur Points: 3505 Défis: 265 Message

Citer : Posté le 05/05/2012 23:28 | #


Bonsoir !

Je pense que ceci résumera les conseils avisés d'Eiyeron :

[b][strike]A - > 0[/strike] [/b]    [green]// Les assignations se font dans l'autre sens ! valeur -> variable...  [/green]
[b][strike]K - >1[/strike][/b]
[b]0 -> A[/b]
[b]1 -> K[/b]
?->N

For 1 -> K to N [strike]Step 1[/strike]    [green]// Le pas de cette fonction est par défaut de "1". Dans ce cas, il n'est donc pas nécessaire de le préciser ! ;)  [/green]

[b][strike]Next[/strike][/b]    [green]// "Next" défini la fin de la boucle "For...To". Sa position, d'après ce que j'ai compris, doit plutôt être plus bas.[/green]

Ran# -> X
Ran# -> Y

If Y-X²<0
Then [b][strike]A - > A+1[/strike][/b]
[b]A+1 -> A[/b]
[b]K-1 -> K[/b]     [green]// Explication plus bas dans le topic  :p [/green]
[b][strike]Else
K - > K+1[/strike][/b]    [green]// Ici, pas besoin d'incrémenter la varaible K, puisque la fonction "For...To" le fait toute seule comme une grande ! ;) C'est pour ça que le choix de cette boucle est plus judicieux qu'une boucle "While"...[/green]
[b]Ifend[/b]    [green]// à l'image de "next", "ifend" défini la fin d'une condition en 'If...Then...Else" : son utilisation est indispensable.[/green]

A/N[DISP]

[b]Next[/b]    [green]// C'est ici qu'il me semble que la boucle "For...To" doive prendre fin...[/green]


Si tu as d'autres questions, n'hésite pas !

Mes principaux jeux : Ice Slider - CloneLab - Arkenstone

La Planète Casio est accueillante : n'hésite pas à t'inscrire pour laisser un message ou partager tes créations !
Eiyeron Hors ligne Ancien modérateur Points: 5525 Défis: 57 Message

Citer : Posté le 05/05/2012 23:34 | #


Merci bien Neo, j'aimerais placer une petite reserve: on est dans le cas d'un while et pas d'un for. Et tes assignations sont inversées, Neo!
Ne0tux Hors ligne Membre d'honneur Points: 3505 Défis: 265 Message

Citer : Posté le 05/05/2012 23:37 | #



Pour les assignations, j'ai du corriger pendant que tu écrivais ton message.

En ce qui concerne la boucle "While", je ne suis pas d'accord avec toi. Une boucle "For" dans ce cas convient parfaitement.

Ne perdons pas de vue que toutes les boucles permettent de faire la même chose, avec des niveaux de praticité différents...

Mes principaux jeux : Ice Slider - CloneLab - Arkenstone

La Planète Casio est accueillante : n'hésite pas à t'inscrire pour laisser un message ou partager tes créations !
Eiyeron Hors ligne Ancien modérateur Points: 5525 Défis: 57 Message

Citer : Posté le 05/05/2012 23:39 | #


Non, il n'augmente K que si la condition n'est pas validée, relis bien son algo
Ne0tux Hors ligne Membre d'honneur Points: 3505 Défis: 265 Message

Citer : Posté le 05/05/2012 23:41 | #



Et bien dans ce cas là, il lui suffit de décrémenter K seulement dans le cas ou la condition est vérifiée !

Comme ça, on gagne la place qu'occupait "Else" !

Mes principaux jeux : Ice Slider - CloneLab - Arkenstone

La Planète Casio est accueillante : n'hésite pas à t'inscrire pour laisser un message ou partager tes créations !
Eiyeron Hors ligne Ancien modérateur Points: 5525 Défis: 57 Message

Citer : Posté le 05/05/2012 23:43 | #


Écoute, autant lui faire faire ce que son prof attend de lui, pas d'un programmeur avisé (tu noteras l'absence de Isz, avec p pourrait gagner un octet et de la vitesse...
Le prof à sur lui une correction, si ça change trop par rapport à un truc simple, t'es marron...

Ajouté le 05/05/2012 à 23:44 :
Écoute, autant lui faire faire ce que son prof attend de lui, pas d\'un programmeur avisé (tu noteras l\'absence de Isz, avec p pourrait gagner un octet et de la vitesse...
Le prof à sur lui une correction, si ça change trop par rapport à un truc simple, t\'es marron...
Titer22 Hors ligne Membre Points: 18 Défis: 0 Message

Citer : Posté le 06/05/2012 00:00 | #


Merci, mais j'ai une erreur synthaxe lorsque je veux lancer le programme, pourtant j'ai recopier le programme de Ne0tux et j'ai reverifier :/

Ajouté le 06/05/2012 à 00:02 :
c\'est bon ça marche, je n\'vais pas l\'edit avec les assignation

Ajouté le 06/05/2012 à 00:11 :
Etes vous sur du programme, je ne vuos remets pas en cause sauf que le programme me donne tout le temps 0 pour des chiffres positifs et dans le cas d\'un nombre negatif ex -2 il me reaffiche -2
Dark storm En ligne Labélisateur Points: 11578 Défis: 176 Message

Citer : Posté le 06/05/2012 00:18 | #


Utilise plutôt le code d'Eiyeron un peu plus haut
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Ne0tux Hors ligne Membre d'honneur Points: 3505 Défis: 265 Message

Citer : Posté le 06/05/2012 08:19 | #


Ah oui, pour un nombre négatif, la boucle "For...To" n'est plus appropriée !

D'un autre côté, je te rappelle que tu as écris dans ton premier message :

Variables : A, K, N sont des entiers naturels




Du coup, si tu tiens toujours à utiliser un entier relatif, la boucle "While" conviendra d'avantage, et le code d'Eiyeron sera parfait !

Mes principaux jeux : Ice Slider - CloneLab - Arkenstone

La Planète Casio est accueillante : n'hésite pas à t'inscrire pour laisser un message ou partager tes créations !
Titer22 Hors ligne Membre Points: 18 Défis: 0 Message

Citer : Posté le 06/05/2012 14:52 | #


D'accord merci, dernier probleme, quel est le signe entre K et N apres while ?
Eiyeron Hors ligne Ancien modérateur Points: 5525 Défis: 57 Message

Citer : Posté le 06/05/2012 14:53 | #


Vu uqe tu ne fais qu'augmenter une variable qui part de 0, c'est forcément positif, non?
Titer22 Hors ligne Membre Points: 18 Défis: 0 Message

Citer : Posté le 06/05/2012 15:00 | #


Oui, de toutes façon, N represente le nombre de flechettes lancées, il ne peut etre negatif, mais quel est le signe entre K et N apres le while stp
Pierrotll Hors ligne Ancien administrateur Points: 5488 Défis: 41 Message

Citer : Posté le 06/05/2012 15:17 | #


Inférieur ou égal (SHIFT PRGM F6 F3 F6)
Eiyeron Hors ligne Ancien modérateur Points: 5525 Défis: 57 Message

Citer : Posté le 06/05/2012 15:32 | #


Ne serait-ce pas l’algorithme de Monte-carlo?[Ici]
SI oui, alors tu dois changer la condtion par
If [SQRT](X²+Y²)<0
Titer22 Hors ligne Membre Points: 18 Défis: 0 Message

Citer : Posté le 06/05/2012 16:19 | #


Oui cela ressemble bien a la methode de monte carlos, surtout l'exemple avec determiner la valeur de pi, j'ai exactement la meem illustration dans mon bouquin, par contre j'ai eu beau essayer tout les algorithmes que vous m'avez proposer avec les modifications et tout, rien ne change j'ai toujours 0 comme valeur d'affichage est-ce normal ?

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2023 | Il y a 87 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd