Skip to content

Commit 229c11a

Browse files
committed
Entier@ maintenant accessible avec les blocs.
1 parent b1f70ff commit 229c11a

3 files changed

Lines changed: 58 additions & 4 deletions

File tree

microalg_export_blockly.l

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,11 @@
9999
"</block>"))
100100
(de Demander ()
101101
"<block type=\"demander\"></block>")
102+
(de Entier@ (MIN MAX)
103+
(pack "<block type=\"entier_pseudo_aleatoire\">"
104+
"<value name=\"MIN\">" MIN "</value>"
105+
"<value name=\"MAX\">" MAX "</value>"
106+
"</block>"))
102107
(de Type (content)
103108
(pack "<block type=\"type\">"
104109
"<value name=\"VALUE\">"

tuto_blocs.html

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ <h1 id="top">MicroAlg - Tutoriel par blocs</h1>
3636
<a href="#prise-en-main-et-affichage">Prise en main et affichage</a>,
3737
<a href="#commentaires">Commentaires</a>,
3838
<a href="#texte-et-concatenation">Texte et concaténation</a>,
39+
<a href="#nbres-pseudo-aleatoires">Nombres pseudo-aléatoires</a>,
3940
<a href="#demander">Demander à l’utilisateur</a>,
4041
<a href="#calculs-nombres">Calculs avec des nombres</a>,
4142
<a href="#calculs-nombres-demandes">Calculs avec des nombres demandés à l’utilisateur</a>,
@@ -177,6 +178,20 @@ <h2 id="texte-et-concatenation"><a href="#texte-et-concatenation">: </a>Texte e
177178
disparaître des emplacements. Recliquer sur l’étoile quand le compte est
178179
bon.</p>
179180

181+
<h2 id="nbres-pseudo-aleatoires"><a href="#nbres-pseudo-aleatoires"></a>Nombres pseudo-aléatoires</h2>
182+
<p>Il est possible d’obtenir un nombre entier
183+
<a href="http://fr.wikipedia.org/wiki/Pseudo-al%C3%A9atoire"
184+
class="wp">pseudo-aléatoire</a> grâce à la commande <code>Entier@</code>.
185+
Il faut lui passer les valeurs minimale et maximale possibles. Lancer
186+
plusieurs fois de suite le programme suivant :</p>
187+
<div id="script-nbres-pseudo-aleatoires"></div>
188+
<script>inject_microalg_editor_in('script-nbres-pseudo-aleatoires', {
189+
blockly_only: true,
190+
src:
191+
'(Afficher (Entier@ 1900 2015))'
192+
});</script>
193+
<p>Comment changer ce programme pour simuler un dé à six faces ?</p>
194+
180195
<h2 id="demander"><a href="#demander"></a>Demander à l’utilisateur</h2>
181196
<p>Il est possible de demander une valeur à l’utilisateur, pour ensuite
182197
l’afficher :</p>

web/blockly_microalg.js

Lines changed: 38 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,13 @@ Blockly.Msg.RENAME_VARIABLE_TITLE = "Renommer toutes les variables '%1' en :";
3131
Blockly.MicroAlg = new Blockly.Generator('MicroAlg');
3232
Blockly.MicroAlg.INDENT = ' ';
3333
Blockly.MicroAlg.addReservedWords(
34-
'=, =/, <, <=, >, >=, ' +
35-
'Affecter_a, Afficher, Aide, Bloc, Booleen?, Concatener, ' +
36-
'Demander, Faire, Faux, Faux?, Initialiser, Nombre, Nombre?, ' +
37-
'Rien, Si, Tant_que, Texte, Texte?, Type, Vrai, Vrai?');
34+
'Affecter_a, Afficher, Aide, Ajouter_a, Alors, Booleen?, Concatener, ' +
35+
'Definir, Demander, En_position, Entier@, Et, Exemples_de, ' +
36+
'Faire, Faux, Faux?, Initialiser, Initialiser@, ' +
37+
'Liste, Liste?, Longueur, Nieme, Nieme@, Nombre, Nombre?, Non, Ou, ' +
38+
'Queue, Retirer_de, Retourner, Rien, Si, Sinon, ' +
39+
'Tant_que, Tester, Tete, Texte, Texte?, Type, ' +
40+
'Vide?, Vrai, Vrai?');
3841

3942
// La suite, jusqu’au commentaire de fin, n’a pas été modifiée.
4043

@@ -396,6 +399,37 @@ Blockly.MicroAlg['demander'] = function(block) {
396399
return '(Demander)';
397400
};
398401

402+
// Bloc Entier@
403+
Blockly.Blocks['entier_pseudo_aleatoire'] = {
404+
init: function() {
405+
this.setHelpUrl(malg_url + '#cmd-Entier@');
406+
this.setColour(250);
407+
this.appendValueInput('MIN')
408+
.setCheck('Number')
409+
.appendField('Entier@');
410+
this.appendValueInput('MAX')
411+
.setCheck('Number');
412+
this.setInputsInline(true);
413+
this.setOutput(true, 'Number');
414+
this.setTooltip('Nombre pseudo-aléatoire entre les valeurs fournies.');
415+
}
416+
};
417+
418+
// Gen Entier@
419+
Blockly.MicroAlg['entier_pseudo_aleatoire'] = function(block) {
420+
var min = Blockly.MicroAlg.statementToCode(block, 'MIN') || '';
421+
var max = Blockly.MicroAlg.statementToCode(block, 'MAX') || '';
422+
if (min + max === '') return '(Entier@)';
423+
var num_lines = (min + max).split('\n').length;
424+
if (num_lines == 1) {
425+
// Prevent indentation if we only have one line.
426+
return '(Entier@ ' + min.substring(Blockly.MicroAlg.INDENT.length) +
427+
' ' + max.substring(Blockly.MicroAlg.INDENT.length) + ')';
428+
} else {
429+
return '(Entier@\n' + min + '\n' + max + '\n)';
430+
}
431+
};
432+
399433
// Bloc Faire
400434
// Gen Faire
401435
// Bloc Initialiser

0 commit comments

Comments
 (0)