Catégorie : Programmation

Même si Blockly intègre par défaut les constructions de base utilisées en programmation, il n'en reste pas moins qu'il subsiste des oublis importants, surtout si on veut créer des programmes plus élaborés. Par exemple : la possibilité d'insérer des commentaires, d'utiliser des variables locales, de connaître l'état et la position de la souris, et d'afficher des expressions mathématiques. C'est la raison d'être de cette catégorie de blocs.


Commentaire

Paramètres
• une valeur texte (le texte vide par défaut, mais qui peut être une expression textuelle quelconque)

Fonctionnement
• un commentaire ne modiie en rien l'exécution d'un programme : il est tout simplement ignoré
• en fait, les commentaires servent à renseigner l'humain qui veut comprendre le programme

Remarques
• éviter les commentaires «évidents», qui ne font que décrire en mots l'action d'un ou de plusieurs blocs


Aller vers une page web

Paramètres
• une adresse web (absolue ou relative)
• une option (dans la même fenêtre ou dans une autre fenêtre)

Fonctionnement
• ouvre la page web dont l'adresse est spécifiée selon l'option choisie

Remarques
• si les fenêtres surgissantes sont bloquées dans le navigateur web utilisé, on ne peut ouvrir dans une autre fenêtre
   que suite à une action de l'utilisateur (par exemple : un clic sur un bouton)


Faire

Paramètres
• un bloc fonction avec composante retour

Fonctionnement
• exécute la fonction en question, et « oublie » la valeur retournée, s'il y en a une
• effet visuel : transforme en un bloc fonction sans composante retour

Remarques
• pour une discussion plus détaillée, voir l'appendice ci-dessous

Faire après délai

Paramètres
• un bloc fonction avec composante retour
• une valeur délai (0 ci-dessus, mais qui peut être une expression numérique quelconque)

Fonctionnement
• attend le temps spécifié, puis exécute la fonction en question
• effet visuel : transforme en un bloc fonction sans composante retour

Remarques
• les blocs successifs d'un programme p5Visuel sont donc exécutés séquentiellement, mais on n'attend pas nécessairement
  que l'exécution du bloc courant soit terminée avant de commencer l'exécution du bloc suivant. C'est le cas, par exemple,
  lorsqu'on accomplit une tâche comme charger un fichier. Il existe plusieurs mécanismes pour gérer ce phénomène,
  et l'exécution après délai en est un.


Variable locale

Paramètres
• un bloc variable

Fonctionnement
• déclare que la variable en question est locale

Remarques
• par défaut, toutes les variables de p5Visuel sont globales
• ce bloc doit être utilisé à l'intérieur de la définition d'une fonction (pour déclarer une variable locale à cette fonction)
• ce bloc n'a aucun effet s'il est utilisé en dehors de la définition d'une fonction


Quitter la fonction

Paramètres
• une valeur (facultative)

Fonctionnement
• termine immédiatement l'exécution de la fonction contenant ce bloc
• si un paramètre valeur est présent, la valeur est retournée (dans le contexte d'appel de la fonction)


Est un nombre ?

Paramètres
• une valeur expression (vide ci-dessus, mais qui peut être une expression textuelle quelconque)

Fonctionnement
• retourne vrai si l'expression en question représente un nombre, et faux sinon

Remarques
• exemple de nombre reconnu  :  -14.4729 (point décimal et non virgule décimale)
• exemple de nombre non reconnu : 1+1 (les opérations arithmétiques ne sont pas acceptées)


Afficher une valeur avec un certain nombre de décimales

Paramètres
• une valeur (3.1415926536 ci-dessus, mais qui peut être une expression numérique quelconque)
• un nombre de décimales (4 ci-dessus, mais qui peut être une expression textuelle numérique)

Fonctionnement
• retourne un texte correspondant à la valeur affichée avec le nombre de décimales spécifié

Remarques
• le nombre de décimales doit être un entier entre 0 et 20
• si le nombre de décimales dépasse 15, on doit s'attendre à des pépins dus à la conversion décimal <--> binaire


Évaluer une expression constante

Paramètres
• une valeur expression (vide ci-dessus, mais qui peut être un calcul mathématique sans variables)

Fonctionnement
• retourne la valeur de l'expression en question
• si l'expression comporte une variable ou une erreur, retourne NaN

Remarques
• utile pour évaluer une expression entrée par l'utilisateur du programme


Radians

Paramètres
• une valeur angle (0 ci-dessus, mais qui peut être une expression numérique quelconque)

Fonctionnement
• suppose que angle est exprimé en degrés, et retourne angle exprimé en radians

Degrés

Paramètres
• une valeur angle (0 ci-dessus, mais qui peut être une expression numérique quelconque)

Fonctionnement
• suppose que angle est exprimé en radians, et retourne angle exprimé en degrés


Bouton de souris enfoncé ?

Paramètres : aucun

Fonctionnement
• retourne vrai si le bouton de la souris est enfoncé, et faux sinon


Position X souris

Paramètres : aucun

Fonctionnement
• retourne la coordonnée en x de la position de la souris
• le système de coordonnées choisi dépend de la zone graphique choisie (à l'aide du bloc Choisir la zone graphique)
    * le canevas (qui est une zone graphique avec des propriétés particulières)
    * une zone graphique
       Note importante : pour obtenir la position en x dans une zone graphique, le canevas doit avoir été défini au préalable
    * la fenêtre contenant la page web (dans le cas où aucune zone graphique n'a été spécifiée)

Remarques
• la position est spécifiée dans le système de coordonnées de l'objet choisi :
    * l'origine (0,0) en en haut à gauche du canevas, de la zone graphique, ou de la fenêtre
    *
l'axe des x pointe vers la droite
    *
l'axe des y pointe vers le bas
• si aucun choix n'a été fait au moyen du bloc Choisir la zone graphique, on utilisera la dernière zone graphique créée
  si aucune zone graphique n'a été créée, on utilisera la fenêtre
• voir l'exemple suivant


Position Y souris

Paramètres : aucun

Fonctionnement
• retourne la coordonnée en y de la position de la souris
• le système de coordonnées choisi dépend de la zone graphique choisie (à l'aide du bloc Choisir la zone graphique)
    * le canevas (qui est une zone graphique avec des propriétés particulières)
    * une zone graphique
       Note importante : pour obtenir la position en y dans une zone graphique, le canevas doit avoir été défini au préalable
    * la fenêtre contenant la page web (dans le cas où aucune zone graphique n'a été spécifiée)

Remarques
• la position est spécifiée dans le système de coordonnées de l'objet choisi :
    * l'origine (0,0) en en haut à gauche du canevas, de la zone graphique, ou de la fenêtre
    *
l'axe des x pointe vers la droite
    *
l'axe des y pointe vers le bas
• si aucun choix n'a été fait au moyen du bloc Choisir la zone graphique, on utilisera la dernière zone graphique créée
  si aucune zone graphique n'a été créée, on utilisera la fenêtre
• voir l'exemple suivant


Remplacer dans texte

Paramètres
• une valeur texte (rien ci-dessus, mais qui peut être une variable quelconque)
• une valeur avant (vide ci-dessus, mais qui peut être un  texte quelconque)
• une valeur après (vide ci-dessus, mais qui peut être un texte  quelconque)

Fonctionnement
dans le texte, remplace toutes les occurences de la chaîne de caractères avant par la chaîne de caractères après


Substituer valeurs dans expression

Paramètres
• une valeur texte (rien ci-dessus, mais qui peut être une variable quelconque)
• une valeur liste (rien ci-dessus, mais qui peut être une  liste quelconque)

Fonctionnement
dans le texte, remplace toutes les occurences de @n par le (n-1) ième élément de la liste

Remarques
• exemple : si le texte est "@1+@2" et si la liste est [0,1] alors le texte retourné sera "0+1"

• notez qu'on compte les occurences à partir de 1 (@0 ne serait pas modifié) même si les éléments de la liste débutent au 0 ième


Finaliser expressions mathématiques

Paramètres : aucun

Fonctionnement
demande à MathJax de faire le rendu de toutes les expressions mathématiques fabriquées à l'aide de blocs code math

Remarques
• ce bloc est habituellement placé à la fin des instructions déclenchées par un clic de bouton, un changement de valeur
  d'une glissière, ou de la fonction actions en boucle


Code math

Paramètres
• une valeur texte (rien ci-dessus, mais qui peut être une variable quelconque)

Fonctionnement
le texte entré en paramètre doit être un code AsciiMath (par exemple : un code produit par le Visual Math Editor)
• le texte retourné par le bloc est une version compréhensible par MathJax

Remarques
• le recours au bloc code math ne provoque pas le rendu de l'expression mathématique en symbolisme usuel :
  pour celà, il faudra avoir recour au bloc Finaliser les expressions mathématiques


Choix du type d'axes du canevas

Paramètres
choix entre deux types d'axes
     informatique (origine en haut à gauche)
     mathématique (origine au centre)

Fonctionnement
• le choix des axes doit se faire avant de créer le canevas
• l'axe des x pointe toujours vers la droite
• l'axe des y pointe vers le bas (si les axes sont de type informatique) ou vers le haut (si les axes sont de type mathématique)

Remarques
• par défaut, les axes sont de type informatique


Information pour fins de débogage

Paramètres
information

Fonctionnement
• l'information est affichée dans une boîte de dialogue
• on clique sur Ok si on veut poursuivre l'exécution du programme
• on clique sur Annuler si on veut stopper l'exécution du programme

Remarques
• si l'information est une liste, chaque élément est affiché sur une ligne séparée


Essayer d'exécuter ... et faire ... en cas d'erreur

Paramètres
• des instructions (rien ci-dessus, mais ça peut être une liste d'instructions quelconque)
• des instructions en cas d'erreur (rien ci-dessus, mais ça peut être une liste d'instructions quelconque)

Fonctionnement
• les instructions sont exécutées
• s'il n'y a pas d'erreur lors de cette exécution, le bloc se termine
• en cas d'erreur lors de cette exécution, les instructions en cas d'erreur sont exécutées

Remarques
• ce bloc sert surtout à gérer le débogage



Appendice : commandes VS opérateurs [retour (ou non) de valeurs par les fonctions]

(Pour les utilisateurs expérimentés)

Blockly fait une distinction très nette entre deux types de fonctions :
• les commandes qui ne retournent pas de valeur (fonctions définies via des blocs sans composante retour),
               
• et les opérations qui en retournent une (fonctions définies via des blocs avec composante retour).
               

Par contre, dans le cadre de p5Visuel, on traduit les programme Blockly en  JavaScript, qui est utilisé dans la fabrication de nos pages web.   Or JavaScript ne fait pas une distinction marquée entre les commandes et les opérateurs : en fait, dans le cas d'une fonction associée à un clic sur un bouton, Blockly exige l'utilisation d'une opération, alors que la fonction appelée est foncièrement une commande.

Pour retrouver cette souplesse de JavaScript dans Blockly, p5Visuel propose des moyens de transformer
• une opération en commande : en utilisant le bloc Faire

• une commande en opération : en utilisant le bloc Quitter avec une valeur de retour dans la définition de la commande.