Adaptations de Blockly

En général, Blockly nous a semblé tout à fait adéquat comme base pour p5Visuel. Mais, à de râres occasions, il nous a semblé que les choix faits par Blockly visaient une clientèle plus jeune et plus débutante que celle que nous avions en tête. Nous nous sommes donc permis de réviser certains de ces choix...


Catégorie : Boucles

Dans le Blockly original,il y a plusieurs mesures de protection pour éviter certaines erreurs dans les structures de boucles, ce qui est bénéfique pour les utilisateurs débutants. Mais les utilisateurs plus avancés utilisent parfois des boucles générales qui peuvent, dans certains cas, ne jamais s'exécuter : c'est une structure de contrôle que permettent plusieurs langages, dont JavaScript. Nous avons donc modifié Blockly afin de permettre de telles boucles «vides», tout en continuant de le protéger contre certaines boucles infinies.


Boucles ascendantes avec indice

Paramètres
• une variable («i» dans le bloc ci-dessus, mais qui peut être quelconque)
• une valeur minimum (1 ci-dessus, mais qui peut être une expression numérique quelconque)
• une valeur maximum (10 ci-dessus, mais qui peut être une expression numérique quelconque)
• une valeur pas (1 ci-dessus, mais qui peut être une expression numérique quelconque)

Fonctionnement
• on donne tout d'abord à la variable la valeur minimum
• on teste si la valeur de la variable est plus petite ou égale à la valeur maximum
        • si oui, on exécute les instructions incluses (après le «faire»),
          puis on ajoute la valeur pas à la variable, et on refait le test ci-dessus
        • si non, le bloc se termine

Remarques
• pour éviter certaines boucles infinies, on remplace toujours la valeur de pas par sa valeur absolue


Boucles descendantes avec indice

Paramètres
• une variable («i» dans le bloc ci-dessus, mais qui peut être quelconque)
• une valeur maximum (10 ci-dessus, mais qui peut être une expression numérique quelconque)
• une valeur minimum (1 ci-dessus, mais qui peut être une expression numérique quelconque)
• une valeur pas (1 ci-dessus, mais qui peut être une expression numérique quelconque)

Fonctionnement
• on donne tout d'abord à la variable la valeur maximum
• on teste si la valeur de la variable est plus grande ou égale à la valeur minimum
        • si oui, on exécute les instructions incluses (après le «faire»),
          puis on soustrait la valeur pas à la variable, et on refait le test ci-dessus
        • si non, le bloc se termine

Remarques
• pour éviter certaines boucles infinies, on remplace toujours la valeur de pas par sa valeur absolue


Catégorie : Listes

Dans le Blockly original, la numérotation des éléments d'une liste commence à un, ce qui semble plus naturel pour les utilisateurs débutants. Par contre, il y a des avantages à ce que cette numération commence à zéro pour des utilisateurs plus avancés, ne serait-ce que parce que c'est comme cela que JavaScript fonctionne. Après mûre réflexion, nous avons opté pour une numération commençant à zéro.


Obtenir un élément d'une liste

Paramètres
• une valeur de position (0 ci-dessus, mais qui peut être une expression numérique quelconque)
• une expression produisant une liste (possiblement une varaible)

Fonctionnement
• retourne l'élément de la liste placé dans la position spécifiée

Remarques
• la numérotation des éléments d'une liste commence en position zéro, et non en position un


Définir un élément d'une liste

Paramètres
• une valeur de position (0 ci-dessus, mais qui peut être une expression numérique quelconque)
• une expression produisant une liste (possiblement une varaible)
• une expression produisant une valeur (qui peut être un nombre, un objet web, une autre liste, etc.)

Fonctionnement
• place la valeur donnée à la position spécifiée de la liste
   Note : si nécessaire, la liste est prolongée de fasçon à pouvoir accueillir un élément à la position spécifiée

Remarques
• la numérotation des éléments d'une liste commence en position zéro, et non en position un


Copie de la liste

Paramètres
• une expression produisant une liste (possiblement une varaible)

Fonctionnement
• retourne une liste qui est une copie de la liste originale

Remarques
•les deux listes (liste originale et liste produite) sont alors disjointes : on peut modifier l'une sans pour autant modifier l'autre