Wenn die Programme bzw. Skripte umfangreicher werden läuft man Gefahr den Überblick zu verlieren. Außerdem kann es passieren, das gleiche oder ähnliche Programmteile an verschiedenen Stelle benötigt werden und mehrfach implementiert werden. In allen Programmiersprachen gibt es dazu Möglichkeiten dies zu mit Hilfe von besonderen Strukturen zu vermeiden. Man nutzt dazu so genannte Prozeduren und Funktionen. In objektorientierten Programmiersprachen fasst man dies unter dem Begriff Methode zusammen. In Snap! kann man Prozeduren und Funktionen umsetzen, indem man eigene Blöcke definiert.
Angenommen ein Programm soll an 3 verschiedenen vorgegebenen Stellen ein Quadrat mit der Seitenlänge von 50 Pixeln zeichnen. Ein mögliches
Programm sähe z. B. so aus:
Bei dem Programm fällt auf, dass sich einzelne Programmabschnitte, nämlich das Zeichnen
des Quadrats (hier rot markiert) immer wiederholen. Da die die Positionen der Quadrate aber keinem Schema folgen, sondern frei
gewählt sind, wird man den gesamten Algorithmus nicht durch eine dreifache Wiederholung vereinfachen können.
Stattdessen wäre es hilfreich, wenn es einen eigenen Block für den rot markierten Teil gäbe. Genau
das werden wir nun tun. Dazu gibt es am unteren Ende aller Blöcke in den Kategorien die Schaltfläche
. Die folgende Animation zeigt wie man
zur Erstellung des Blocks vorgehen muss.
Wir haben nun einen eigenen Block erzeugt, der von der aktuellen Position und Richtung
des Sprites aus ein Quadrat mit der Kantenlänge von 50 Schritten zeichnet. Damit vereinfacht sich
das ursprüngliche Programm und wird vor allem viel übersichttlicher und besser lesbar:
Durch Rechtsklick auf den neuen Block erhält man übrigens die Möglichkeit, das Programm des Blocks nachträglich zu verändern.