# Documentation de p5Visuel

## par André Boileau

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