Discuss Scratch

LeNomPasEncorePris
New to Scratch
5 posts

Utilisation des entrées booléennes

Bonjours a tous,

Je viens de me mettre a Scratch depuis aujourd'hui et je rencontre quelques difficultés avec l'interface proposé par Scratch.

Je vous explique mon problème, je voudrais permuter deux variables sans passer par une troisième je pensais donc réaliser mon programme Scratch avec le calcul suivant :

A = 5;
B = 10;

A = A*B; // 5 x 10 = 50
B = A/B; // 50 / 5 = 10
A = A/B; // 50 / 10 = 5

En sachant cela j'ai réaliser ceci sous Scratch :
quand le drapeau vert pressé
demander [Entrer A] et attendre
dire (regroupe [A vaut] [réponse]) pendant (2) secondes
demander [Entrer B] et attendre
dire (regroupe [B vaut] [réponse]) pendant (2) secondes


<(A) = ((A) / (B))>
<(A) = ((A) * (B))>
<(B) = ((A) / (B))>

Mais je n'arrive pas a placer mes entrées booléennes, des idées ? Ou alors il ne vaut pas du tout faire comme cela ?

Merci d'avance pour vos réponses !

Last edited by LeNomPasEncorePris (Nov. 29, 2017 15:56:15)

SBissay
Scratcher
500+ posts

Utilisation des entrées booléennes

Les booléens ne prennent que les valeurs VRAI ou FAUX (ou plutôt, dans Scrach, True ou False). Du coup, tu ne pourras pas passer un nombre de cette façon.

La manière de faire passer un nombre en argument est d'utiliser un entrée numérique (nombre), avec un bloc du type :

définir mafonction (x)
des choses

quand le drapeau vert pressé
mafonction ((A) / (B))

Generative art :              Pivot  :               Sudoku :
LeNomPasEncorePris
New to Scratch
5 posts

Utilisation des entrées booléennes

Je vais essayer cela, merci pour votre réponse !
smrman
Scratcher
1000+ posts

Utilisation des entrées booléennes

LeNomPasEncorePris wrote:

A = 5;
B = 10;

A = A*B; // 5 x 10 = 50
B = A/B; // 50 / 5 = 10
A = A/B; // 50 / 10 = 5

Bonjour, il me semble qu'il y a quand même une erreur là dedans…

si A=50 (ligne 1) B= 50/10 = 5 et non 10 …

En effet, de toutes les façon possible, il n'y a pas moyen d'échanger 2 valeurs sans passer par une 3ème…

rousseau-wallon
Scratcher
61 posts

Utilisation des entrées booléennes

Sa méthode est correcte, le seul problème c'est qu'elle ne marche pas dans le cas où A ou B vaut 0
(cas que l'on peut traiter séparément avec une instruction conditionnelle)

Et pourquoi ne pas utiliser plus simplement la brique “mettre à…” : A à A fois B, puis B à A sur B et enfin A à A sur B.
Ainsi l'échange est réalisé.

SBissay
Scratcher
500+ posts

Utilisation des entrées booléennes

Juste au passage, une solution simplissime :

définir Permuter (a) (b)
mettre [A v] à (b)
mettre [B v] à (a)

quand le drapeau vert pressé
demander [A] et attendre
mettre [A v] à (réponse)
demander [B] et attendre
mettre [B v] à (réponse)
Permuter (A) (B)::custom

Bon, je suis conscient que c'est un peu tricher (vu qu'en fait on utilise les arguments de la fonction comme deux variables non déclarées), mais il fallait que je le dise ^^

Generative art :              Pivot  :               Sudoku :

Powered by DjangoBB

Standard | Mobile