Lerne Tipps zum Debuggen deines Codes und zur Fehlerbehebung in MIT App Inventor
Das sind die Aktivitäten für diese Lektion:
WAS IST DEBUGGING?
Debuggingist der Prozess, mit dem Programmierer/innen herausfinden, warum ihr Code nicht funktioniert, und ihn dann reparieren, damit er funktioniert.
Der Begriff Debugging stammt von Admiral Grace Hopper, einer Pionierin der Computertechnik. Sie arbeitete in den 1940er Jahren an der Harvard Universität am Mark II Computer und eine Motte blieb im Computer stecken und verhinderte, dass er funktionierte.
Um die Motte loszuwerden, sagte sie, sie würden das System "debuggen". Programmierer verwenden den Begriff heute für "Fehler in meinem Code beheben".
PROGRAMMIERTIPPS
Die Fehlersuche ist oft der frustrierendste und zeitaufwändigste Teil des Programmierens, deshalb ist es wichtig, dass du dir dafür viel Zeit nimmst!
Und auch geduldig sein!
KLEINE STÜCKE
Manchmal sind Programmierer/innen versucht, ihre gesamte App in einem Rutsch zu programmieren und sie dann zu testen.
Fallen Sie nicht auf diese Versuchung herein!!!
Wenn etwas nicht richtig funktioniert, was wahrscheinlich ist, ist es schwer herauszufinden, wo man überhaupt anfangen soll, um den Fehler zu beheben.
Unterteile den Code für deine App in kleine Abschnitte.
Bringe eine Sache zum Laufen, bevor du mit der nächsten Sache beginnst.
Programmiere ein bisschen, teste ein bisschen, bestätige, dass es funktioniert, dann programmiere noch ein bisschen mehr, teste noch ein bisschen mehr, usw.
Wenn deine App zum Beispiel 5 Schaltflächen hat, die alle unterschiedliche Funktionen haben,
- Codiere die Aktion für die erste Schaltfläche
- Teste dann, ob es funktioniert.
- Gehe auf die zweite Schaltfläche
- Wiederhole.
Es ist besser, den Code an einer Stelle zu korrigieren, als zurück zu gehen und ihn an 5 Stellen zu korrigieren, wenn es einen Fehler in deinem Code gibt.
VERSIONSKONTROLLE
Nehmen wir an, du folgst der "Small Chunks"-Regel und hast einen Teil deiner App gebaut und funktioniert.
Du fügst einen neuen Code hinzu und plötzlich funktioniert alles nicht mehr.
OH NEIN!
Du versuchst, den neuen Code zu löschen, aber deine App funktioniert immer noch nicht. Du bist dir nicht sicher, was schief gelaufen ist und wünschst dir, du hättest einen "Rückgängig"-Button.
Um solche Szenarien zu vermeiden, können Sie die Versionen deiner App speichern, während du Teile zum Laufen bringst.
Wenn du einen Fehler machst und nicht weißt, wie du ihn beheben kannst, kannst du zur letzten gespeicherten Version zurückkehren.
Außerdem kannst du die Versionskontrolle nutzen, um mit neuen Funktionen zu experimentieren, ohne dir Sorgen machen zu müssen, dass deine funktionierende App kaputt geht.
Es gibt zwei Möglichkeiten, verschiedene Versionen in App Inventor zu speichern: "Speichern unter/save as" und "Kontrollpunkt/checkpoint".
Der "Checkpoint" Option speichert eine Kopie unter dem von dir gewählten Namen, aber du arbeitest mit dem Original weiter. Die Idee dahinter ist, dass du die Version, die funktioniert, "eincheckst" und mit der Hauptversion des Projekts weiterarbeitest.
Die "Projekt speichern unter / Save project as" erstellt eine Kopie des Codes, an dem du gerade arbeitest, und speichert sie unter einem neuen Namen. Alle Änderungen, die du vornimmst, werden in die neue Kopie übernommen.
BLÖCKE ZUSAMMENBRECHEN
Das Zusammenklappen von Blöcken ist eine Möglichkeit, deinen Code zu organisieren, wenn dein Arbeitsbereich mit Blöcken überfüllt ist.
Wenn du mit der rechten Maustaste auf einen Block klickst, siehst du eine Option, mit der du ihn einklappen kannst.
Um deine Blöcke wieder zu erweitern, klicke mit der rechten Maustaste auf sie und wähle "Expand Block".
Zusammengeklappte Blöcke komprimieren sie auf einen Balken auf deinem Bildschirm.
Sie funktionieren genauso wie normale Blöcke, sie nehmen nur weniger Platz ein. Das kann hilfreich sein, wenn du Blöcke hast, die du nicht mehr bearbeiten musst und deinen Bildschirm aufräumen willst
BLÖCKE DEAKTIVIEREN
Du kannst auch Blöcke deaktivieren.
Sie bleiben auf deinem Bildschirm, werden aber nicht in der App ausgeführt.
Mit deaktivierten Blöcken kannst du deine App ohne bestimmte Codeblöcke testen. Du kannst sie später aktivieren und sie laufen dann.
Du kannst auch Blöcke deaktivieren, die du nur zum Testen benutzt hast, wie z.B. Melder.
Es gibt zwei Möglichkeiten, Blöcke zu deaktivieren in App Inventor
Wenn du Blöcke einfach aus einem Event-Handler-Block herausziehst, werden sie deaktiviert und können nicht ausgeführt werden. Da sie nicht Teil eines Ereignisses sind, werden sie auf keinen Fall jemals ausgeführt. Du kannst sie jederzeit wieder einrasten lassen, um sie zu verwenden.
Du kannst auch mit der rechten Maustaste auf einen Block oder eine Gruppe von Blöcken klicken und "Block deaktivieren / Disable Block" wählen. Die Blöcke werden ausgegraut dargestellt, um anzuzeigen, dass sie nicht ausgeführt werden. Auf diese Weise kannst du eine ganze Gruppe von Blöcken deaktivieren.
Um deine Blöcke wieder zu aktivieren, klicke einfach mit der rechten Maustaste und wähle "Block aktivieren / Enable Block".
KOMMENTARE
Programmierer hinterlassen oft Kommentare in ihrem Code, um zu erklären, was er tut.
Kommentare können hilfreich sein, wenn sich andere Leute deinen Code ansehen, z. B. Teamkollegen, Mentoren und Richter.
Kommentare können auch hilfreich sein, wenn du später zu deinem Code zurückkehrst und vergessen hast, welche Teile davon funktionieren.
Um einen Kommentar hinzuzufügen, klicke mit der rechten Maustaste auf die Blöcke und wähle "Kommentar hinzufügen / Add Comment".
Danach erscheint ein Fragezeichen in der Ecke des Blocks und du kannst Text hinzufügen. Du kannst den Kommentar ansehen, indem du auf das Fragezeichen klickst.
Mentor Tipp
Beste Praktiken: Kommentare sind das Hilfreichste beim Programmieren.
Es ist schon oft vorgekommen, dass ein Programmierer etwas kodiert hat, dann schlafen gegangen ist und am nächsten Morgen zurückkam und keine Ahnung hatte, was er in der Nacht zuvor gemacht hat. Schreibe immer Kommentare!
It’s also a great way to check your knowledge, because if your coding blocks are easy to comment on then you must understand them really well! Another thing to be aware of is that <, >, =, ≤, ≥ are hard for students for the first time (and for programmers who are years into their careers). When we set a math statement to < when it should be ≤ this is called an “off by one” error and this is a problem that happens to developers with 20 years of experience 😛 It is a very popular problem so be on the lookout for that.
Die beste Art des Debuggens ist das Gummienten-Debugging! Das ist der Fall, wenn du wirklich in deinem Code feststeckst und er keinen Sinn ergibt. Du möchtest dir Zeit nehmen, um mit jemandem darüber zu sprechen, um zu sehen, ob er das Problem erkennen kann, aber leider ist niemand da! Also hast du eine treue Gummiente an deinem Schreibtisch und erklärst deinem Entenfreund das Problem laut. Du musst es allerdings in sehr einfachen Worten tun, damit sie es verstehen, und danach findest du das Problem selbst! Alle meine Kolleginnen und Kollegen haben Gummienten an ihren Schreibtischen und machen das ziemlich oft!
Leitfragen an die Schüler: Was glaubst du, wie lange erfahrene Programmierer brauchen, um Bugs zu beheben? Man könnte meinen, dass sie sehr schnell darin sind, aber jede große Website hat Seiten, auf denen man sehen kann, wie lange Bugs existieren(z.B. Facebook) und sie zeigen auch an, ob eine ihrer Seiten ausgefallen/kaputt ist und sie gerade debuggen (Beispiel Facebook).
Wie findest du Bugs? (viele, viele Tests!) Wie viel solltest du testen? Wie viel solltest du andere Leute testen lassen?
Woran erkennst du, dass du einen Fehler gefunden hast? Manchmal klickst du ewig auf ein Bild, um dann festzustellen, dass die Schaltfläche, auf die du eigentlich klicken solltest, unter dem Bild liegt. Ist das ein Fehler? Das ist eine Design-Entscheidung, die der App-Hersteller getroffen hat, und er denkt nicht, dass es ein Fehler ist, aber du vielleicht schon.
Mentorentipps werden durch die Unterstützung von AmeriCorps bereitgestellt.
DEBUGGING-TIPPS
MELDER UND ETIKETTEN
Der Notifier Komponente kann dir helfen herauszufinden, warum dein Code fehlerhaft ist.
Um einen Melder in deine App Inventor App einzubinden, ziehe ihn aus der Benutzeroberflächen-Palette herüber.
Der einfachste Weg, den Notifier zu nutzen, ist das Hinzufügen von ShowAlert-Blöcken mit Informationen, damit du siehst, dass bestimmte Blöcke gelaufen sind (oder nicht).
Zusätzlich zu den Meldungen kannst du auch Informationen wie den Wert einer Variablen oder die Position eines ImageSprites anzeigen.
Du kannst auch Labels hinzufügen, um aktuelle Informationen in deiner App anzuzeigen.
Du könntest zum Beispiel den Wert einer Variablen wissen wollen, wenn bestimmte Ereignisse eintreten, während die App läuft.
Du kannst Label.Text auf alles setzen, was du wissen möchtest, und es wird in deiner App angezeigt.
Wenn du deinen Fehler behoben hast, kannst du das Label entweder unsichtbar machen oder es ganz aus deiner App löschen.
DO IT
Die Do itFunktion ist ein weiteres großartiges Werkzeug für die Fehlersuche.
Während du deine App live testest, entweder mit einem Telefon und der AI Companion App oder mit dem Emulator, hast du Zugriff auf einen neuen Befehl, "Do It".
Der Befehl ist ausgegraut, bis du ein Telefon oder den Emulator über das Menü "Verbinden" anschließt.
Mit Do it kannst du einen Block ausführen, ohne mit der App selbst zu interagieren, sodass du den aktuellen Wert einer Variablen oder eines Elements sehen kannst.
Ziehe einfach einen "get global"-Variablenblock heraus und klicke mit der rechten Maustaste. Wähle "Do It" aus dem Dropdown-Menü und der Codeblock wird ausgeführt.
Über dem Kästchen mit dem Ergebnis erscheint ein gelbes Do It-Kästchen. Das kann auch für jede andere Komponenteneigenschaft funktionieren!
Du kannst Do It auch verwenden, um etwas in deiner App zu ändern. Du könntest zum Beispiel ein Element in einer Liste ändern wollen. Ziehe den entsprechenden Block heraus und wähle Do It. Du wirst das Ergebnis nicht sehen, aber die Liste wird in deiner App aktualisiert.
Du kannst auch einen bestehenden Codeblock in deiner App ausführen.
Hier werden zum Beispiel die ListView-Elemente mit Do It aktualisiert. Das wird sich in der App widerspiegeln. Die ListView zeigt die neuen Elemente an, die mit dem Do It-Befehl gesetzt wurden.
TESTDATEN VERWENDEN
Wenn du viele Informationen in deiner App verwenden willst, kann es hilfreich sein, Testdaten zu verwenden. Testdaten sind einfachere, kleinere Datensätze, mit denen du sicherstellen kannst, dass deine App richtig funktioniert.
Angenommen, du entwickelst eine App, die Restaurants in der Nähe anzeigt. Du verwendest Google Sheets, um die Restaurantinformationen zu speichern.
Du kannst mit einem oder zwei Testrestaurants beginnen und deine App testen, um sicherzustellen, dass sie funktioniert.
Sobald es getestet ist und funktioniert, kannst du die kompletten Restaurantdaten in dein Google Sheet einfügen.
EIGENSCHAFTEN ÄNDERN
Wenn du deine App live testest, kannst du einen Eigenschaftswert im Designer ändern, während du die App ausführst, und die Auswirkungen sehen.
Manchmal kann das helfen, ein Problem aufzudecken.
Du könntest zum Beispiel ein Spiel programmieren. Die Position eines Sprites sieht für dich auf deinem Handy nicht richtig aus, wenn es läuft.
Während des Live-Tests kannst du
- Gehe zum Designer
- ändere die X- und Y-Werte des Sprites
- Die Position des Sprites auf dem Bildschirm in der laufenden App wird geändert.
Nutze dies, um die Koordinaten auf deinem Bildschirm zu testen und zu verstehen.
AKTIVITÄT 1: DEN FEHLER BEHEBEN
Behebung von Fehlern in der Timer App
- Lade die App auf App Inventor.
- Verbinde dich mit dem Emulator oder dem Gerät, um die App zu testen.
- Try pressing Start without typing anything into the textbox. What happens?
- Versuche, 0 oder eine negative Zahl für die Anzahl der Sekunden einzugeben. Was passiert?
- Behebe die Fehler mit bedingten Blöcken!
AKTIVITÄT 2: EINEN KOMMENTAR HINZUFÜGEN
Füge einen Kommentar zu deinem App Inventor Projekt hinzu
Füge mindestens einen Kommentar zu deiner App hinzu, der erklärt, was eine Gruppe von Blöcken macht. Wähle eine Gruppe von Blöcken aus, die deiner Meinung nach am schwersten zu verstehen ist, denn diese Blöcke wären wahrscheinlich für andere, z. B. ein Teammitglied, am schwersten zu verstehen.
REFLEXION
Diese Tipps können dir helfen, wenn du mit der Programmierung deiner mobilen App für dein Technovation-Projekt beginnst.
Aber denk daran...
ÜBERPRÜFUNG DER SCHLÜSSELBEGRIFFE
- Debugging - der Prozess, den Programmierer nutzen, um herauszufinden, warum ihr Code nicht funktioniert, und ihn zu korrigieren
- Version Control - Speichern von Arbeitsversionen deiner App, wenn du Fortschritte machst
- Test data - ein einfacheres Set von Daten, mit denen du sicherstellen kannst, dass deine App richtig funktioniert
- Comments - Text, der in den Code eingefügt wird, um zu erklären, was er tut
ZUSÄTZLICHE RESSOURCEN
Hier sind einige weitere App Inventor Ressourcen zur Fehlersuche.