====== Plug and Project: Programmieren mit Scratch ====== Dies ist ein Einstiegsprojek zu PnP im Bereich der Softwareprogrammierung. Um zu den anderen Projekten zu kommen, gehe bitte auf die Hauptseite von [[wiki:informatiksysteme:plug_and_project:start|Plug and Project]]. ===== Kurzbeschreibung ===== In diesem Projekt sollen die Schülerinnen und Schüler Temperatursensorwerte grafisch darstellen mittels Scratch. Da Scratch beim Einlesen externer Daten begrenzt ist, werden in diesem Einstiegsprojekt für Softwareprogrammierung die Daten vergegeben und müssen "nur" noch importiert werden im Scratchprogramm. ==== Keywords ==== PnP, Plug and Project, Raspbian, Scratch, Programmieren, Temperatur ===== Einstieg ===== In diesem Projekt sollt ihr die Temperaturdaten von einer Datei einlesen und mit diesem einen Tagesgraph darstellen. Dafür benötigt ihr einerseits Scratch und die Datei mit den Temperaturwerten. Die Links findet ihr weiter oben. Es werden nun die einzelnen Bereiche und ein paar wichtige Begriffe erklärt: ==== Bühne und Objekte==== {{ :wiki:informatiksysteme:plug_and_project:objektbuehne.png?200|}} Objekte und Bühnen sind das Herzstück von Scratch. Der verschiedenen Programmierblöcke werden in den einzelnen Bühnen und Objekten zusammengesteckt. Auf dem Bild siehst du im unteren Bereich die weiße Bühne und rechts davon den Fuchs als Objekt. Beides davon ist anklickbar und bietet eine Arbeitsfläche zum Programmieren. Über die Funktionen in der Mitte kannstdu auch neue Objekte erzeugen oder einfügen. Durch das Interagieren der Objekte funktioniert das Programm. \\ \\ \\ \\ \\ ==== Die Bereiche von Scratch==== Vieles kann bei Scratch von selbst entdeckt werden und diese Anleitung dient nicht primär dazu, jeden einzelne Funktion zu beleuchten, dies sollt ihr im Eigenstudium machen. Es werden hier nur die einzelnen Bereiche der einzelnen Blockfunktionen kurz beleuchtet:\\ {{ :wiki:informatiksysteme:plug_and_project:allebereiche.png?200|}} * **Bewegung:** Hier findest du alle Blöcke, die mit der Bewegung eines Objektes zu tun haben, meist werden dabei die x- und y-Koordinaten festgelegt oder verändert. Generell liegt über der gesamten Bühne ein x-y-Koordinatensystem, an dem man sich richten kann. X beschreibte dabei die waagrechte und y die senkrechte Koordinate des Objekts. * **Aussehen:** Beim Aussehen geht es um die Farbveränderung eines Objektes oder des Hintergrundes. Außerdem kann dein Objekt über gewisse Blöcke hier "sprechen" und wie du schon eventuell in der Bildbearbeitung gelernt hast, kann man Objekte in den Hintergrund und andere in den Vordergrund holen, was bei Überlappungen wichtig sein könnte. * **Klang:** Bei Klang gibt es Blöcke, mit denen man Töne einspielen kann. Dies ist für unser Projekt zur Zeit nicht wichtig. * **Malstift:** Das Objekt kann eine Spur hinterlassen, wenn man das hier aktiviert, die man farblich auch festlegen kann. * **Steuerung:** Dies ist unser wichtigster Bereich. Hier kann man ein Blockprogramm starten (der Block mit der grünen Fahne), Verzweigungen und Schleifen erzeugen, Programme stoppen und Signale zu anderen Objekten senden. In jedem Scratch-Programm werden viele Steuerungs-Blöcke gebraucht. Auch kann ein kurzes Warten des Programmes festgelegt werden, mit dem man das Zeichnen von Graphen auch gut sichtbar machen kann. * **Fühlen:** Dies ist der große Bereich der Abtastungen. Hier kann man Funktionen einbauen, die zu Wirkung kommen, wenn ein anderes Objekt, oder der Rand berührt wird. Auch können hier Maustasten eingebaut werden und was besonders wichtig ist, externe Sensordaten können hier überprüft werden. * **Operatoren:** Du findest hier die Rechenoperatoren, die besonders als Bedingungen für Schleifen und Verzweigungen dienen. Es gibt hier auch Blöcke, mit denen du Texte zerlegen kannst. * **Variablen:** Für effizientes Programmieren sind Variablen und Listen, die du hier findest, sehr wichtig. Was genau Variablen sind, findest du weiter unten auf dieser Seite. Jedenfalls können hier Variablen und Listen erzeugt und verändert werden. ==== Variable==== {{ :wiki:informatiksysteme:plug_and_project:variableundliste.png?350|}} Eine Variable bei Scratch ist ein Container für eine Zahl oder für Zeichen. Mithilfe von Variablen kann man verschiedene Bausteine bei Scratch mit der selben Zahl ansteuern (und dadurch, dass man den Wert der Variable verändert, ändert sich auch der Code, die diese Variable benutzen. Dies ist für das nächste Thema wichtig. ==== Liste==== Eine Liste enthält mehrere Elemente, die man durch einen gezielten Durchlauf (zum Beispiel in einer Schleife) alle abrufen und ablesen kann. Damit kann man eine große Menge an Daten von einer externen Quelle (zum Beispiel durch eine .txt-Datei) einlesen und damit arbeiten. Das Importieren von Daten funktioniert so, dass man zuerst eine Liste erzeugen muss (der Button dazu ist im Bild rechts zu sehen) und dann auf der Bühne rechts die Liste rechtsklickst und dann auf importieren klickst. \\ \\ ==== Schleife==== Schleife ist ein allgemeiner Begriff für Blöcke bei Scratch, die es ermöglichen, Code mehrmals auszuführen unter speziellen Bedingungen. Links siehst du die verschiedenen Arten von Schleifen, die ganz kurz von Oben nach Unten beschrieben sind: * Die Code in der ersten Schleife wird so oft wiederholt, bis ein spezielles Ereignis eintritt. Dies könnte zum Beispiel sein, dass eine Variable i = 3 ist. {{:wiki:informatiksysteme:plug_and_project:alleschleifen.png?200 |}} * Die zweite Schleife wird eine bestimmte Anzahl oft ausgeführt. Hier könnte auch stattdessen eine Variable eingefügt werden. * Die dritte Schleife nimmt kein Ende, außer durch einen Abbruch des Programmes (dies kann auch durch Blöcke realisiert werden). * Die vierte Schleife ähnelt der ersten, doch wird hier der Inhalt so oft wiederholt, so lange die Bedingung in dem <>-Kästchen stimmt (zum Beispiel i < 3). \\ \\ \\ ==== Signale==== {{ :wiki:informatiksysteme:plug_and_project:signale.png?direct&150|}} Mit Signale kannst du andere Programmblöcke in anderen Objekten starten und so kannst du einen geregelten Ablauf einführen. Wenn du zum Beispiel nacheinander was zeichnen willst, kannst du nach der ersten Zeichnung mit einem Signal die zweite Zeichnung starten. \\ \\ \\ \\ ===== Erste Aufgabe: Koordinatensystem der Temperaturkurve ===== Zu Beginn wollen wir ein einheitliches (am Besten durch Variablen) dimensioniertes Koordinatensystem für die Temperaturkurve zeichnen. Der Abstand von einem Strich zum Nächsten sollte gleich sein, damit man die richtigen Ergebnisse global einfach eintragen kann.