Inscription / Connexion Nouveau Sujet
Niveau seconde
Partager :

Scratch

Posté par
Thoramon
30-04-20 à 16:25

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.

Posté par
Thoramon
Scratch 30-04-20 à 16:32

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

Posté par
mathafou Moderateur
re : Scratch 30-04-20 à 16:49

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.

Posté par
Thoramon
re : Scratch 30-04-20 à 17:00

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 ?!

Posté par
mathafou Moderateur
re : Scratch 30-04-20 à 17:14

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

Posté par
Thoramon
re : Scratch 30-04-20 à 17:20

Merci,
je vous recontacte lorsque je l'ai fait

Posté par
mathafou Moderateur
re : Scratch 02-05-20 à 10:32

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

Scratch

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.

Scratch

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 :

Scratch

dans laquelle on glisse une opération d'addition, avec une reférence à cette case là (n° n)

Posté par
Revelli
re : Scratch 02-05-20 à 14:00

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

Posté par
mathafou Moderateur
re : Scratch 02-05-20 à 14:38

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)

Posté par
mathafou Moderateur
re : Scratch 02-05-20 à 14:46

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

Posté par
Revelli
re : Scratch 02-05-20 à 15:55

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)!

Posté par
mathafou Moderateur
re : Scratch 02-05-20 à 15:59

re-
sans le code on ne peut pas en dire grand chose...

Posté par
Revelli
re : Scratch 02-05-20 à 16:42

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!

Posté par
mathafou Moderateur
re : Scratch 02-05-20 à 17:08


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

Scratch

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)

Posté par
Revelli
re : Scratch 02-05-20 à 17:14

Merci beaucoup!

Autant pour moi!

Posté par
Thoramon
re : Scratch 03-05-20 à 10:24

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.

Posté par
Thoramon
re : Scratch 03-05-20 à 10:29

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"

Posté par
mathafou Moderateur
re : Scratch 03-05-20 à 11:16

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)

attentionextrait de c_faq la FAQ du forum :

Q05 - Puis-je insérer une image dans mon message ? Comment faire ? Quelle image est autorisée ?


l'image à joindre peut être obtenue par photo / scan ou copie d'écran cadrée sur la seule partie intéressante
mais il faut faire preuve de bon sens :
assez inutile de mettre une image illisible !
un programme Scratch un peu conséquent sera donc de préférence tapé en texte (sinon illisible car écrit trop petit)

Scratch
sera écrit

quand le drapeau est cliqué
Répéter jusqu'à longueur de fréquence = 0
|   Supprimer l'élément 1 de la liste fréquence
+---

en notant par exemple par des | et des +--- les "contours" de structure de boucles et de tests
absolument indispensable de préciser ainsi ce qui est dans la structure de controle et ce qui n'y est pas.
en respectant l'imbrication des controles qui sont dans des controles etc

et en ajoutant des parenthèses dans les expressions pour en traduite l'empilement si besoin

Scratch

la première s'écrivant 1+(2*3) < 5
la seconde (1+2)*3 < 5
les parenthèses traduisant la "hauteur" de l'opération

bref on peut parfaitement écrire entièrement un programme Scratch "en texte".
pas dit que toutes ces règles d'écriture là soient toutes utiles ici, c'est juste en général.

Posté par
Thoramon
re : Scratch 03-05-20 à 11:29

Bonjour à tous
Voila ce que j'ai fait. Pouvez-vous me dire si cela est bien??
Merci d'avance

Posté par
Thoramon
re : Scratch 03-05-20 à 11:30

P-S: je n'est pas réussi à la poster

Posté par
Thoramon
re : Scratch 03-05-20 à 12:40

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 !!

Posté par
ZEDMAT
re : Scratch 03-05-20 à 12:52

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.

Posté par
mathafou Moderateur
re : Scratch 03-05-20 à 12:56

pour mettre une image il faut respecter à la lettre

attentionextrait de c_faq la FAQ du forum :

Q05 - Puis-je insérer une image dans mon message ? Comment faire ? Quelle image est autorisée ?



fichier au format exclusivement gif, png ou jpg/jpeg
pas trop gros (de tête limité à 6Mo ou moins, en général une 100ne de Ko suffit)
image elle même pas trop grande (de l'ordre de 800 pixel maximum en largeur, bref qui tient dans la page en taille réelle)

bouton Img
avec "Parcourir" choisir le fichier et le valider par le bouton "ouvrir " ou "OK de la boite de dialogue
cliquer sur Attacher

l'image doit alors être visible sous le message et quand on clique sur le bouton Aperçu

elle est si on ne fait rien d'autre attachée à la fin du message
si on veut la mettre dans le texte on se place dans le texte là où on veut la mettre et on clique sur l'aperçu de l'image en dessous (on clique, on n'essaie même pas de glisser déposer ça ne peut pas marcher)

mais je répète :
pour un programme Scratch on peut le taper en texte pur au clavier !
et ce sera sans doute plus lisible qu'une image avec des caractères riquiqui ou floue.

Posté par
flight
re : Scratch 03-05-20 à 13:45

salut

Scratch c'est un programme pour enfant il me semble ...  sauf erreur  

Posté par
flight
re : Scratch 03-05-20 à 13:46

sans quoi simuler 100 lancé d'un dé et connaitre les fréquences n'est pas sorcier ( python , vba , c++ ...)

Posté par
mathafou Moderateur
re : Scratch 03-05-20 à 14:16

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 :

mathafou @ 30-04-2020 à 16:49

comme si Scratch etait adapté à ce genre de chose en seconde
y [ a ] des profs je te jure ...
Scratch c'est pour animer des lutins et faire des jeux !

bon passons.
quel que soit le langage utilisé ... etc


ce que je vois comme avantage à Scratch :
programmation "écrite" sous forme graphique en assemblant des briques prédéfinies
Algobox était un peu aussi avec cette optique, le simple clic sur l'opération à insérer générant une structure toute faite et il n'y a plus qu'à la remplir

et il n'y a pas que Scratch qui fait ça !! des programmes bien plus sérieux ont un environnement de développement du même genre !!! (des briques à assembler graphiquement)

l'inconvénient de Scratch : le même
saisie très lourdingue pour écrire une formule
devient vite très encombrant
on n'apprend pas à maitriser une syntaxe

on rejoint ceux qui ont été nourris aux lignes de commande du DOS et de Unix par rapport à ceux qui ont été nourris au clics de souris de Windows et des environnements graphiques "à fenêtres"

Posté par
mathafou Moderateur
re : Scratch 03-05-20 à 14:26

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")

Posté par
Thoramon
re : Scratch 04-05-20 à 09:10

Bonjour à tous,

Et là est ce que vous la voyez ??

Scratch

Posté par
Thoramon
re : Scratch 04-05-20 à 09:12

Bonjour,
normalement vous la voyez c'est pourquoi je vous joint le programme en plus grand !

Scratch

Posté par
Thoramon
re : Scratch 04-05-20 à 09:14

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

Posté par
Thoramon
re : Scratch 04-05-20 à 09:55

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

Posté par
mathafou Moderateur
re : Scratch 04-05-20 à 10:43

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

Scratch

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é


Posté par
mathafou Moderateur
re : Scratch 04-05-20 à 10:54

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.

Posté par
Thoramon
re : Scratch 04-05-20 à 11:23

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

Posté par
Thoramon
re : Scratch 04-05-20 à 11:51

Voilà, je me suis corrigé
Dites-moi si c'est lisible

Scratch

Scratch

Posté par
mathafou Moderateur
re : Scratch 04-05-20 à 12:22

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"

Scratch

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)

Posté par
mathafou Moderateur
re : Scratch 04-05-20 à 12:30

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.

Posté par
mathafou Moderateur
re : Scratch 04-05-20 à 12:53

j'ai fini par distinguer que tu utilises une liste

par contre je n'ai pas pu lire ce que tu en faisais ... (trop petit, illisible)
en tout cas deux listes, c'est inutile.



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Inscription gratuite

Fiches en rapport

parmi 1699 fiches de maths

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !