{"id":648,"date":"2021-05-07T11:24:01","date_gmt":"2021-05-07T11:24:01","guid":{"rendered":"https:\/\/gigers.com\/blog\/?p=648"},"modified":"2024-06-24T17:33:33","modified_gmt":"2024-06-24T17:33:33","slug":"snap-dokumentiert-sich-selbst","status":"publish","type":"post","link":"https:\/\/gigers.com\/blog\/snap-dokumentiert-sich-selbst\/","title":{"rendered":"Snap! dokumentiert sich selbst"},"content":{"rendered":"<p>Wenn man Snap! verwenden m\u00f6chte, um wie bei Logo eine Figur auf den Bildschirm zu zeichnen, brauchen Anf\u00e4nger eine Weile, um den Zusammenhang zwischen den einzelnen Befehlen und der Auswirkung auf die Bewegungen zu verstehen. In der Regel erarbeiten sie sich dieses Verst\u00e4ndnis dann im &#8222;Versuch und Irrtum&#8220;-Verfahren, was nicht nur viel Zeit in Anspruch nimmt, sondern je nach Komplexit\u00e4t der Aufgabe auch das Lernen verhindert.<\/p>\n<p>Eine M\u00f6glichkeit hier die Einstiegsh\u00fcrden zu senken, sind sogenannte Cheatsheets, also Zusammenfassungen der wichtigsten Bl\u00f6cke, oder Programme Cards, kurze Programmbeispiele. Beide eignen sich hervorragend f\u00fcr den Unterricht. Leider ist aber das Dokumentieren von Befehlsbl\u00f6cken und das Zusammenstellen solcher Programmieranleitungen aufw\u00e4ndig.<\/p>\n<h3>Animation als Dokumentation<\/h3>\n<p>F\u00fcr Snap! gibt es nun dank des Snap!-Nutzers pumpkinhead einige interessante <a href=\"https:\/\/snap.berkeley.edu\/snap\/snap.html#present:Username=pumpkinhead&amp;ProjectName=script%20builder&amp;editMode&amp;noRun\" target=\"_blank\" rel=\"noopener\">neue Bl\u00f6cke<\/a>, die man zumindest f\u00fcr die Dokumentation einfacherer Programmieraufgaben verwenden kann. Dabei kann ein in Snap! geschriebenes Programm so ausgef\u00fchrt werden, dass es gleichzeitig erkl\u00e4rt, welche Befehle es abarbeitet. Das Beispiel der Konstruktion eines Quadrats soll zeigen, wie dies aussieht.<\/p>\n<figure id=\"attachment_650\" aria-describedby=\"caption-attachment-650\" style=\"width: 510px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-650\" src=\"https:\/\/gigers.com\/blog\/wp-content\/uploads\/2021\/05\/animated_square.gif\" alt=\"\" width=\"510\" height=\"514\" \/><figcaption id=\"caption-attachment-650\" class=\"wp-caption-text\">W\u00e4hrend Snap! ein Quadrat zeichnet, zeigt es, welche Befehle f\u00fcr jeden einzelnen Schritt ben\u00f6tigt werden.<\/figcaption><\/figure>\n<p>In Snap! selbst setzt man folgende Bl\u00f6cke daf\u00fcr ein, um das Programm auszuf\u00fchren.<\/p>\n<figure id=\"attachment_651\" aria-describedby=\"caption-attachment-651\" style=\"width: 525px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-651\" src=\"https:\/\/gigers.com\/blog\/wp-content\/uploads\/2021\/05\/square_with_snap_documented-1024x1010.png\" alt=\"\" width=\"525\" height=\"518\" srcset=\"https:\/\/gigers.com\/blog\/wp-content\/uploads\/2021\/05\/square_with_snap_documented-1024x1010.png 1024w, https:\/\/gigers.com\/blog\/wp-content\/uploads\/2021\/05\/square_with_snap_documented-300x296.png 300w, https:\/\/gigers.com\/blog\/wp-content\/uploads\/2021\/05\/square_with_snap_documented-768x757.png 768w, https:\/\/gigers.com\/blog\/wp-content\/uploads\/2021\/05\/square_with_snap_documented-100x100.png 100w, https:\/\/gigers.com\/blog\/wp-content\/uploads\/2021\/05\/square_with_snap_documented.png 1160w\" sizes=\"auto, (max-width: 525px) 100vw, 525px\" \/><figcaption id=\"caption-attachment-651\" class=\"wp-caption-text\">Mit wenigen Bl\u00f6cken kann eine Selbstdokumentation f\u00fcr Snap! erzeugt werden.<\/figcaption><\/figure>\n<p>Die auszuf\u00fchrenden Bl\u00f6cke werden zuerst als Liste abgespeichert und dann mit einem &#8222;for each&#8220;-Block schrittweise abgearbeitet. Ein Arbeitsschritt besteht darin, einen Befehl ausf\u00fchren und ihn im Anschluss anzeigen zu lassen. Der &#8222;wait&#8220;-Block sorgt daf\u00fcr, dass gen\u00fcgend Zeit f\u00fcr das Lesen der angezeigten Bl\u00f6cke bleibt.<\/p>\n<p>Wenn ein Programm (wie oben) Variablen enth\u00e4lt, muss man diese im Block &#8222;.. put after &#8230;&#8220; noch einmal deklarieren, da die so ausgef\u00fchrten Bl\u00f6cke keinen direkten Zugriff auf die normalen Variablen haben. Damit geht auch die Einschr\u00e4nkung einher, dass die Werte von Variablen w\u00e4hrend der Ausf\u00fchrung des Scripts nicht ge\u00e4ndert werden k\u00f6nnen, die Variablen werden also als Konstanten behandelt.<\/p>\n<figure id=\"attachment_652\" aria-describedby=\"caption-attachment-652\" style=\"width: 600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-652\" src=\"https:\/\/gigers.com\/blog\/wp-content\/uploads\/2021\/05\/Code_fuer_Pythagoras.gif\" alt=\"\" width=\"600\" height=\"601\" \/><figcaption id=\"caption-attachment-652\" class=\"wp-caption-text\">Snap! zeigt, wie man eine Figur zum Satz des Pythagoras zeichnen kann.<\/figcaption><\/figure>\n<p>Die gezeigten Befehle dienen als Grundlage f\u00fcr einen rekursiven Block, mit dem ein sogenannten Pythagorasbaum gezeichnet werden kann.<\/p>\n<p>M\u00f6chte man ein solches Beispiel nicht in Snap! direkt laufen lassen, kann man den Bildschirm mit einem geeigneten Programm aufzeichnen lassen und eine Videodatei zu Verf\u00fcgung stellen oder aber die so erstellte Videodatei mit einem entsprechenden Webdienst in ein animiertes GIF umwandeln.<\/p>\n<p>Ein einfaches Beispiel kann \u00fcber den folgenden Link direkt in Snap! aufgerufen werden: <a href=\"https:\/\/snap.berkeley.edu\/snap\/snap.html#present:Username=mattgig&amp;ProjectName=Selbstdokumentation&amp;editMode&amp;noRun\" target=\"_blank\" rel=\"noopener\">Selbstdokumentation<\/a>.<\/p>\n<h3>Anwendung im Unterricht<\/h3>\n<p>Im Unterricht kann das vorgestellte Verfahren auf zwei Arten verwendet werden. Einerseits wie beschrieben zur Dokumentation insbesondere von Bewegungsabl\u00e4ufen, andererseits kann die L\u00f6sung auch zum Finden von Fehlern in etwas l\u00e4ngeren Programmen benutzt werden. Denn die Verkn\u00fcpfung von schrittweiser Abarbeitung mit dem direkten Anzeigen des verantwortlichen Befehls nach der Ausf\u00fchrung, erlaubt eine Unmittelbarkeit, die sonst beim Programmieren kaum zu erleben ist. Falls Lernende diesen zweiten Weg beschreiten sollen, ist es von Vorteil, die entsprechende Umgebung vorzubereiten. Dazu geh\u00f6rt auch die Deklarierung allf\u00e4lliger Variablen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wenn man Snap! verwenden m\u00f6chte, um wie bei Logo eine Figur auf den Bildschirm zu zeichnen, brauchen Anf\u00e4nger eine Weile, um den Zusammenhang zwischen den einzelnen Befehlen und der Auswirkung auf die Bewegungen zu verstehen. In der Regel erarbeiten sie sich dieses Verst\u00e4ndnis dann im &#8222;Versuch und Irrtum&#8220;-Verfahren, was nicht nur viel Zeit in Anspruch &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/gigers.com\/blog\/snap-dokumentiert-sich-selbst\/\" class=\"more-link\"><span class=\"screen-reader-text\">\u201eSnap! dokumentiert sich selbst\u201c <\/span>weiterlesen<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-648","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/gigers.com\/blog\/wp-json\/wp\/v2\/posts\/648","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gigers.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gigers.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gigers.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gigers.com\/blog\/wp-json\/wp\/v2\/comments?post=648"}],"version-history":[{"count":4,"href":"https:\/\/gigers.com\/blog\/wp-json\/wp\/v2\/posts\/648\/revisions"}],"predecessor-version":[{"id":655,"href":"https:\/\/gigers.com\/blog\/wp-json\/wp\/v2\/posts\/648\/revisions\/655"}],"wp:attachment":[{"href":"https:\/\/gigers.com\/blog\/wp-json\/wp\/v2\/media?parent=648"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gigers.com\/blog\/wp-json\/wp\/v2\/categories?post=648"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gigers.com\/blog\/wp-json\/wp\/v2\/tags?post=648"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}