Quelqu'un peut-il m'aider?
Ecrire un programme Scratch qui simule un lancé de dé à 6 faces (par exemple 100 fois)
et qui présente la fréquence d'apparition de chaque nombre (1 ; 2 ; 3 ; 4 ; 5 ; 6). On cherchera dans SCRATCH (et utilisera dans le programme) la fonction qui génère un nombre aléatoire entre 1 et 6.....
b) Modifier le programme précédent afin de simuler 2 lancés de dés « simultanés » et d'afficher la fréquence d'apparitions de la somme des 2 nombres obtenus.
Bonjour a tous !
Quelqu'un peut-il m'aider?
Ecrire un programme Scratch qui simule un lancé de dé à 6 faces (par exemple 100 fois)
et qui présente la fréquence d?apparition de chaque nombre (1 ; 2 ; 3 ; 4 ; 5 ; 6). On cherchera dans SCRATCH (et utilisera dans le programme) la fonction qui génère un nombre aléatoire entre 1 et 6.....
b) Modifier le programme précédent afin de simuler 2 lancés de dés « simultanés » et d?afficher la fréquence d?apparitions de la somme des 2 nombres obtenus.
Merci d'avance
*** message déplacé ***
pour compléter/corriger un message on le fait dans une réponse (à soi-même), on ne crée pas une autre discussion
cela serait du multipost et c'est interdit
bonjour,
comme si Scratch etait adapté à ce genre de chose en seconde
y des profs je te jure ...
Scratch c'est pour animer des lutins et faire des jeux !
bon passons.
quel que soit le langage utilisé il faut commencer par clarifier très précisément avec des mots et des phrases en français l'enchainement précis des opérations à effectuer
c'est exclusivement de la réflexion et du bon sens et de la compréhension de ce que l'on souhaite faire.
une forme d'introspection pour préciser ce qu'on fait vraiment si on le fait soi-même à la main sans programme ni ordi ni rien.
ensuite et ensuite seulement on traduira ça dans le langage choisi (que ce soit Scratch ou ... Python ... ou autre)
donc à toi de réfléchir à comment tu ferais ça toi-même à la main.
Tout d'abord merci pour votre réponse mais je n'ai pas compris ce qu'il faut que je fasse ?
Il faut (d'après ce que j'ai compris) "traduise" mon énoncé en français? C'est ça ?!
réfléchir ce que tu ferais à la main toi-même sans ordi ni rien pour que toi même tu fasses les opérations qui sont demandées par l'énoncé
que répèteras tu ? comment, sous quelle condition ? quelles opérations sur quelles quantités (= variables) ? comment elles sont enchainées, dans quel ordre ?
et décrire cela en français.
comment calcule-t-on une fréquence ?
comme on a 6 fréquences à calculer il faudra faire çà dans un tableau (une case pour compter les fois où on obtient un 1, une case pour les 2 etc)
ou utiliser 6 variables séparées
etc
mouais.. on attend toujours
comme,déja dit on va utiliser un tableau de 6 valeurs puisqu'il y a 6 valeurs possibles
l'enchainement des opérations pourrait être, en français
initialiser les 6 cases du tableau à 0
répéter 100 fois :
| lancer le dé, c'est à dire tirer un nombre n au hasard entre 1 et 6
| ajouter 1 à la case n° n du tableau
ici on a dans chaque case le nombre de fois qu'on a eu cette valeur là
la fréquence est ce nombre divisé par 100
ou tel quel si on dit que c'est en pourcentage
afficher le tableau
il n'y a plus qu'à traduire ça en Scratch (beurk)
en Scratch un tableau est réalisé sous forme d'une liste
une liste ne fonctionne pas tout à fait de la même façon qu'un tableau
dans une liste on peut faire varier le nombre d'éléments en ajoutant ou supprimant des éléments à la liste
ne pas confondre une liste vide et une liste qui contient 6 éléments nuls.
comme quand on lance le script on ne sait pas ce qu'il y a dans la liste (des trucs qui trainent des exécutions précédentes)
on va commencer par vider la liste, c'est à dire supprimer tous ses éléments
la variable qui contient cette liste est appelée ici "frequence", on l'appelle comme on veut
à chaque fois qu'on supprime le premier élément de la liste , elle "remonte d'un cran" et ce jusqu'à ce qu'il n'en reste plus.
puis la remplir de 6 éléments nuls.
qui ajoute 6 fois un élément à la liste, et cet élément vaut 0
tout ceci correspond à la phrase :
"initialiser les 6 cases du tableau à 0" de la description textuelle en français.
à toi de traduire la suite
modifier la valeur d'une case du tableau par son ancienne valeur augmentée de 1 se fera par une instruction :
dans laquelle on glisse une opération d'addition, avec une reférence à cette case là (n° n)
Bonjour à tous les deux,
@Mathafou: je reviens sur le site après de longues années dans la perspective d'aider des lycéens dans les semaines à venir, lycéens de ma ville que j'ai invités à s'inscrire aux sites ILE.
J'ai découvert il y a 2 ans un petit peu Scratch en faiant du soutien scolaire à une collégienne, maintenant en lycée, qui d'ailleurs n'a jamais voulu venirr ici.
Pour ma part, j'ai été bestial en choisissant 6 variables incrémentées en cas de tirage, en utiilisant 6 contrôles IF .. ALORS ..FIN
A la sortie de la boucle , je montre les 6 variables initialisées bien entendu à 0 avant la boucle de 100 répétitions. Je montre aussi le nombre de tirages effectués (variable incrémentée à chaque répétition)
Quand j'exécute mon programme, seule la variable de la valeur du tirage se retrouve différente de 0!
D'où vient mon problème?
Merci d'avance
Bonjour, Revelli
très certainement d'une mauvaise imbrication de ce qui est dans la boucle et de qui n'y est pas ... dans un IF et ce qui n'y est pas etc
(car étape d'analyse en français omise ou mal faite au départ)
ou de fautes de frappes
mais tout ça on discute dans le vide vu que tu ne montres pas ton code.
(comme une photo du code Scratch avec autant de structures que ça (6 IF) va être illisible, le recopier en texte)
PS : le nombre de tirages effectués
on le connait , c'est 100 !!!
il n'y a pas besoin de quelque variable que ce soit pour ça.
ça confirme ma suspicion de mauvaise analyse au départ
Merci @Mathafou
Cela fait 50 ans presque que je fais de la programmation, du Fortran à Java en passant par Pascal. Je viens d'ailleurs de recommencer à programmer une résilutuiion de grille Sudoku dans Excel avec VBA.
J'avais fait le test avec une seule variable concernant le tirage valant 1, avant de compléter mon code et j'avais déjà ce problème. Rien à voir avec les problèmes d'imbrication.
J'ai alors créé la variable nombre de tirages dans la boucle, incrémentée de 1 à chaque itération dans la boucle, car cela me permettait de voir si le problème venait ou non du tirage aléatoire et du contrôle "Si ...alors...fin dans ma boucle)!
En fait c'est le contrôle "Si Valeur_Tirage = 1" qui ne marche pas!
D'ailleurs, je ne comprends pas pourquoi je dois moi-même taper le nom de la variable testée dans ce contrôle!
toujours pareil, on ne sait rien des détails de ton code
mais, peut être est-ce tout simple l'erreur :
pourquoi je dois moi-même taper le nom de la variable testée dans ce contrôle!
on ne tape jamais un nom de variable ni un signe = ni une expression dans Scratch
on glisse et dépose la variable depuis la liste des variables pour la mettre dans l'emplacement libre voulu de l'expression
si ont tape, ce sera le texte qu'on tapé, qui est le nom de la variable, et pas la variable
il n'y a aucune chance que le texte "valeur_tirage" soit le même texte que "1" !!
(du coup comme c'est du texte, pour comparer il prend le "1" comme du texte aussi et pas une valeur)
Bonjour @Mathafou
J'ai fermé l'onglet "ilemath". Or je suis débutant sur ce forum. Donc j'ai pris du temps a recherché cette discussion sur le forum et je l'ai finalement trouvé ce matin. C'est pourquoi, je n'ai pas pu vous transmettre ce que j'avais fait.
P-S: Merci d'avoir fait le début du scratch. Je continue à le faire et je vous le transmet.
Comment fait)on pour insérer une photo dans "ilemaths"
pas de problème.
pour retrouver ses propres sujets on clique sur "Mes messages"
pour insérer une figure (attention jamais de photos ni scans de textes)
Est ce que vous voyez ce que j'ai fait ?? J'essaye d'envoyer une capture d'écran. Esc)ce que cela est possible ?🤨
Merci d'avance !!
Bonjour,
On voit la même chose que toi ... pour l'instant pas d'image.
Si ta capture d'écran est sous forme d'un fichier image (jpeg ou autre format acceptés et moins de 6Mo), il n'y a pas de raison que cela me fonctionne pas.
Relis les instructions et essaye à nouveau.
pour mettre une image il faut respecter à la lettre
sans quoi simuler 100 lancé d'un dé et connaitre les fréquences n'est pas sorcier ( python , vba , c++ ...)
l'énoncé demande en Scratch
on peut faire plein de choses avec Scratch, pas seulement "pour les enfants"
et c'est à mon avis bien plus puissant que Algobox préconisé un temps
notion de sous programmes (appelés "blocs" et autant qu'on en veut (2 seulement dans Algobox, appelés "fonctions" et encore, on n'y fait pas ce qu'on veut)
et de coprogrammes ( plusieurs "lutins" pouvant "dialoguer" entre eux et interagir via des échanges de messages, notion de variables "locales" à un lutin, ou partagées)
quant au choix du langage en général,c'est SURTOUT une question de mode
ce fut la mode du C et autres Pascal, la mode de Algobox
désormais c'est la mode de Python
et je disais même dès le début :
PS : parmi les inconvénients (et ils sont de taille !)
répertoires des opérations possibles (fonctions prédéfinies et de bibliothèques) très limité, ainsi que les structures de données simplistes.)
Scratch c'est pour apprendre les bases basiques de l'algorithmique
(d'où ma remarque "en seconde")
Bonjour @Mathafou,
Je n'ai pas utiliser votre "liste" car je n'ai jamais utilise de "liste" dans Scratch. Mais je voudrait bien que vous m'expliquiez.
Merci d'avance
P-S: Je me suis trompé en mettant "répéter 1 fois" mais c'est plutôt "répéter 100 fois" car j'essayai de faire la 2ème question
eh bè ...
drolement compliqué ton truc
avec plein de choses inutiles et surtout ne correspondant pas à ce qui est demandé !
(par exemple 100 fois)
et qui présente la fréquence
tu sais ce qu'est la fréquence ?
c'est le nombre d'occurrences favorables divisé par le nombre de lancer
par exemple la fréquence du 2 c'est le nombre de fois où on a eu un 2 divisée par le nombre de lancer
si je lance 132 fois le dé et que j'obtiens 20 fois le 2 , la fréquence du 2 est 20/132 = 0.15 ou encore 15%
là tu ne fais que les compter tu ne calcules pas la fréquence
tu n'obtiendras la fréquence en seulement les comptant sans diviser que si tu fais exactement 100 lancers et alors le nombre de fois du 2 est bien sa fréquence en pourcentages
de plus tu dois faire tout toi même "à la main" pour utiliser ton programme
appuyer sur espace
puis cliquer 100 fois toi-même sur le drapeau
(bon , ça c'est juste une erreur de saisie je pense)
et à l'intérieur c'est une mécanique infernale :
envoi de message , quand on reçoit ce message (quel intérêt de s'envoyer un message à soi-même ???) appel de "lancer"
pourquoi ne pas appeler directement "lancer" ?????
ça m'épate !
(voire même ne pas définir le bloc "lancer" et mettre son contenu directement dans la boucle principale ...)
tu fais des bloc, OK, je dirais même très bien, mais alors utilises les intelligemment
et avec une seule action de l'utilisateur pour lancer l'ensemble du processus
nota : ma version de Scratch écrit "ajouter à [variable] [valeur]
au lieu de ajouter [valeur] à [variable], c'est pareil
PS : "répéter 100 fois" car j'essayai de faire la 2ème question
non, répéter 100 fois c'est la 1ère question
la deuxième c'est définir 11 variables somme2 à somme12
pour les 11 sommes possibles de deux dés (de 1+1 à 6+6)
et "rallonger la sauce"
(deux fois plus d'instructions dans le bloc raZ, deux fois plus de "SI" dans "lancer")
je n'ai jamais utilise de "liste"
utiliser une liste va faire un programme 6 fois plus petit (et même 11 fois plus petit pour la question 2)
bonne occasion pour essayer
je n'avais moi même jamais utilisé de listes dans Scratch avant cet exo, j'ai découvert comment ça fonctionne à ce moment
voir mes messages qui en parlent
le 02-05-20 à 10:32 j'ai quasiment tout dit de ce qu'on a à savoir, rien de plus n'est nécessaire que les trois morceaux que j'ai indiqué
nota : la variable nombre ne sert strictement à rien du tout dans ce programme.
je ne l'ai mise que pour coller au plus près à ce que tu avais fait.
pour l'utiliser il faudrait à la fin en plus diviser chacune des facen par nombre pour avoir les fréquences
et multiplier par 100 pour avoir en pourcentages
on pourrait mettre alors n'importe quel nombre de répétitions dans le "répéter 100 fois"
et de toute façon répéter n fois , on sait dès le départ qu'à la fin "nombre" sera égal à n déja connu ! totalement inutile de les compter.
en effet je me suis trompé mais je ne comprend pas comment votre programme calcule la fréquence
ET aussi je ne comprend pas pourquoi, pour la question deux, il faut définir 11 variables
mon programme est exactement le même que le tien (apres correction du répéter 100 fois paru pendant ma frappe) mais écrit plus proprement
il ne "calcule" pas la fréquence
il calcule le nombre d'occurrence de chaque valeur dans face1 à face6
sur exactement 100 lancers
les fréquences ce serait le nombre d'occurrences divisé par100 (le nombre de tirages)
et multiplié par 100 pour avoir en pourcentages
diviser par 100 et multiplier par 100, c'est ne rien faire.
les face1 à face6 qu'il faudrait tout à la fin diviser par le nombre de lancer (dans nombre) et multiplier par 100 à la fin sont en fait les fréquences en pourcentages sans rien faire du tout
mais cela impose de faire exactement toujours 100 lancers.
sinon il faudrait effectivement faire ce calcul de fréquence à la fin. :
dans la même optique ajouter un bloc "calcul"
le reste étant inchangé
on pourrait alors mettre n'importe quel nombre de répétitions au lieu de 100
(ici j'ai par exemple mis 1000)
question 2 :
on demande les fréquences de chacune des valeurs de la somme des deux dés
il y a 11 valeurs possibles de cette somme
donc 11 événements possibles dont il faut pour chacun compter le nombre d'occurrence dans une variable, donc 11 variables. de somme2 à somme12
à la place de 6 valeurs de face dans face1 à face6
comprendre cela n'est pas de la programmation mais de la compréhension de l'expérience décrite par l'énoncé quand il dit "la fréquence d'apparitions de la somme des 2 nombres obtenus"
les différents événement d'une telle expérience étant les 11 valeurs différentes de la somme de deux nombres chacun étant indépendamment entre 1 et 6
(de 1+1 = 2 à 6+6 = 12, ça fait 11 valeurs)
ton programme est illisible, (car) inutilement compliqué (et donc bien trop "gros" à tasser dans une seule image)
et toujours le même défaut de devoir faire plusieurs actions (3 actions à faire !!) pour avoir le résultat.
alors que TOUT doit être déclenché par une seule et unique action :
par exemple cliquer sur le drapeau et c'est tout
pas de touche espace ou je ne sais quoi en plus.
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :