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