Mis à jour le 18/10/2017
  • 10 heures
  • Facile

Ce cours est visible gratuitement en ligne.

Ce cours est en vidéo.

Vous pouvez obtenir un certificat de réussite à l'issue de ce cours.

J'ai tout compris !

Faites transporter un message par vos lutins

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

Vous avez vu que saisir une URL permet d’accéder à une ressource sur le Web. Avant de vous expliquer plus en détail comment cette ressource arrive, depuis son point de départ (sa source) jusqu’à vous (sa destination), je vous propose une petite activité sur Scratch qui va permettre de simuler le trajet de la ressource.

Mettez votre réseau en place

Votre objectif, ici, c’est de satisfaire votre cliente : elle fait une requête auprès de vous, et en tant qu’admirable serveur, vous devez accéder à sa demande.

Dans notre exemple précédent, souvenez-vous que Bobby avait enfin pu satisfaire Ada Lovelace après s’être perdu dans son manoir. Mais Ada est tellement satisfaite qu’elle demande qu’on lui livre à nouveau des petits pains d’épices au miel.

Problème : le sens de l’orientation de Bobby ne s’est pas amélioré entre temps. Heureusement pour lui, son ami Bretzel dispose de toute une armée de petits bretzels prêts à aider. Ces petits bretzels, que nous nommerons A, B, C, D, E, F et G , sont placés à des endroits stratégiques dans le manoir :

 La cuisine étant le lieu de stockage des gourmandises, c’est de là que tout partira. Pour éviter à Bobby d’avoir à se déplacer - et donc lui éviter de se perdre - les routeurs-bretzels ont été installés. Ils vont permettre d’acheminer les paquets de pâtisseries, chacun des bretzels passant le paquet à l’un de ses voisins.

Pour ce faire, il vous faut un lutin-client (Ada Lovelace, matérialisée par le bretzel D, dans notre exemple) et un lutin-serveur (Bobby dans notre exemple). Il vous faut également un lutin-paquet (ici les pâtisseries), qui est la chose demandée par le client au serveur. Mais il vous faut également placer un réseau de petits lutins-routeurs (les bretzels) qui permettront au paquet d’arriver jusqu’au client.

Puis passez à la suite pour commencer à coder et déterminer à quels voisins chacun des routeurs peut envoyer le paquet.

Déterminez une liste de voisins

Dans notre exemple, le bretzel A est le premier qui reçoit le paquet. Pour le faire parvenir à Ada Lovelace, il peut soit l’envoyer au bretzel B, soit au bretzel E. S’il l’envoie à B, alors B devra l’envoyer à C, qui lui-même l’enverra à D : le paquet est alors arrivé à destination. Mais si A l’envoie à E, E l’enverra alors à F, qui lui-même l’enverra à G, qui l’enverra à C, qui l’enverra à D : le paquet arrive à destination.

Évidemment, de notre point de vue, si A envoyait le paquet à B directement, il arriverait à destination plus rapidement. Quoique… N’entrons pas dans les détails, mais considérons simplement, à ce stade, que A (comme Bobby dans la partie précédente) ne connaît pas le plus court chemin : il a ses deux voisins B et E, et donne aléatoirement le paquet à l’un ou l’autre. Nous allons donc devoir dire à A qui sont ses voisins, en créant une liste spécifique pour A.

Pour cela, dans la catégorie Données, je clique sur “Créer une liste” :

Une fenêtre apparaît, je sélectionne “Pour ce lutin uniquement” :

Puis je nomme ma liste “voisins” :

Et je valide en cliquant sur “Ok”. Ma liste apparaît alors, mais uniquement pour le lutin A :

 J’écris donc le script qui va me permettre d’ajouter, dans cette liste, les voisins de A, en l’occurrence B et E :

Passez ensuite au routage à proprement parler…

Envoyez le paquet !

Bien… votre réseau est en place, mais il reste l’essentiel à faire : acheminer le paquet de la source vers la destination.

Dans notre exemple, ça donne ça :

Quand on clique sur Bobby, il envoie le paquet à A. A peut alors soit l’acheminer via B, soit via E.

La première étape, c’est d’indiquer vers quel voisin le paquet doit aller. Pour cela, j’ai créé une variable pour tous les lutins, que j’ai appelée “destination”. Cette variable va me permettre de savoir, à tous moments, vers quel routeur doit aller le paquet. La destination finale est bien sûr le client (représenté ici par le bretzel D).

Dans l’exemple, j’ai choisi de déclencher l’action d’envoi en cliquant sur Bobby. La première destination étant nécessairement le bretzel A, j’initialise ma variable, et j’envoie un signal à tous les lutins pour indiquer que Bobby a été cliqué (ou autrement dit, que la requête a été faite).

Lorsque le lutin-paquet reçoit ce signal, il va créer une copie de lui-même, ou un clone, que vous retrouverez dans la catégorie Contrôle :

C’est cette copie qui se déplacera. Où ira-t-elle ? Vers les coordonnées du lutin-routeur inscrit dans la variable “destination”. Pour indiquer ces coordonnées variables, vous trouverez les blocs adéquats dans la catégorie Capteurs :

À cette étape, votre variable “destination” est initialisée au premier routeur, ici A. La copie du lutin-paquet se déplace donc jusqu’au routeur A. Bien sûr, nous ne pouvons pas nous arrêter là : il faut changer la destination maintenant que le premier routeur a été atteint.

Le lutin A doit donc déjà détecter qu’il a bien reçu le paquet. Et si c’est le cas, il va rediriger la destination du paquet vers l’un de ses voisins (voisins que vous avez déterminés à l’étape précédente), comme ceci :

Si vous testez votre programme à ce stade, vous verrez que rien ne change : votre paquet va vers votre premier routeur, puis s’arrête. Pourtant, la variable “destination” change bien ! Mais souvenez-vous, votre lutin-paquet ne bouge qu’une seule fois : vers A. Il va donc falloir lui dire de répéter cette action :

Je vous laisse donc coder tous vos routeurs (ça devrait prendre 3 minutes à peine !) et re-tester votre programme.

Si vous cliquez plusieurs fois sur votre lutin-serveur (ici Bobby), vous vous apercevrez peut-être d’un bug curieux : tous les clones arrivés à destination se déplacent à nouveau. Et c’est normal, puisque c’est ce que vous avez codé…

Pour parer à cela, vous pouvez supprimer vos clones une fois qu’ils sont arrivés à destination, comme ceci :

En résumé

  • Les routeurs permettent d’acheminer un paquet vers la destination.

  • Plusieurs chemins sont possibles pour aller vers une même destination.

  • Dans Scratch, les listes permettent de stocker des variables.

  • Dans Scratch, un clone est une copie du lutin qui peut avoir son existence propre et être utilisée temporairement.

 

Exemple de certificat de réussite
Exemple de certificat de réussite