Die vorliegenden Materialien wurden von André Tempel erstellt und von Daniel Hoherz geprüft. Sollten andere Editoren die Materialien erstellt haben, werden diese explizit genannt.
Die Online-IDE ist ab jetzt unsere neue Entwicklungsumgebung (IDE – Integrierte Entwicklungsumgebung
oder integrated development environment). Dort wird in der Programmiersprache Java
programmiert.
Du gelangst über diesen Link auf die Seite: https://online-ide.de/
Das Fenster der Anwendung sieht im Browser so aus:
Damit man unsere Liste nutzen kann, befindet sich der Code für diese links oben unter Informatik
11. Den Code muss man sich nicht anschauen. Man kann die Liste jetzt aber in jedem anderen
Programm, welches man unter Informatik 11 erstellt, nutzen.
Ein neues Programm kann man erstellen erstellen, indem man neben Informatik 11 auf das + klickt
und dann einen entsprechenden Namen eingibt:
Speichern braucht man nicht explizit. Die IDE speichert automatisch jeglichen Fortschritt.
Unten im Fenster der IDE gibt es noch einen weiteren Bereich:
Wenn ein geschriebenes Programm Fehler enthält, wird die jeweilige Zeile und häufig auch die
passende Stelle im Code sofort markiert und im unteren Fenster findest du bei Fehler eine Beschreibung
des Fehler:
Die Zeile 1 ist links rot markiert und hinter Liste() siehst du die rote Markeirung, wo das Semikolon fehlt. Unten steht sogar, dass ein Semikolon erwartet wird.
⚠️ Achtung
Nicht alle Fehler im Code werden korrekt angezeigt. Rechtschreib- und Syntaxfehler werden aber immer erkannt und markiert.
Prüfe regelmäßig, ob dein Code markiert ist und korrigiere direkt alle Fehler.
Wenn du ein Programm ausführen möchtest, geht das durch einen Klick auf den grünen Pfeil:
Nach der Ausführung siehst du rechts eventuelle Ausgaben oder auch Fehler, die bei der Ausführung des Programms passieren:
Einen häufigen Fehler, siehst du im folgenden Bild:
Hier ist das folgende Problem aufgetreten:
Es gibt genau einen Wert, der in der Liste temperaturen gespeichert ist. Dieser beQndet sich am Index
0.
In Zeile 3 soll aber der in temperaturen gespeicherte Wert am Index 1 ausgegeben werden. Dieser existiert aber nicht und deshalb gibt es eine „IndexOutOfBoundsException“ → „Der Index ist außerhalb der vorhanden Grenzen“.
Da Zeile 3 aber ein korrekter Javacode ist, wurde dieses Problem nicht vor der Ausführung erkannt.
Deshalb findest du keine Fehlermeldung im unteren Bereich der IDE. Solche Fehler, nennt man
Laufzeitfehler.
In dieser Aufgabe sollen Temperaturdaten von 10 verschiedenen Schulen in einer Liste gespeichert
werden.
Starten Sie die Online-IDE, loggen Sie sich ein und ändern Sie Ihr Passwort, indem Sie auf das Menschen-Symbol links neben Ihrem Namen klicken. Legen Sie dann ein neues Programm mit dem namen ListeTest an.
Erstellen Sie einen Algorithmus, welcher die folgenden Anforderungen erfüllt. Nutzen Sie als Hilfe den Java-Code des Einstiegsprogramms.
Eine Liste temperaturen soll deklariert werden.
Die folgenden zehn Temperaturwerte sollen in die Liste eingetragen werden: 25.0, 27.5, 28.0, 31.0, 33.5, 33.1, 32.0, 33.0, 31.0 und 26.8 (Achtung: Geben Sie 31.0 und nicht 31,0 ein!)
Für die Umsetzung der Eingabe und Ausgabe der Temperaturdaten werden Sie eine bedingte Schleife in Java benötigen. In der folgenden Abbildung ist ein identisches Programm für eine Liste mit dem Namen testListe mit 12 gespeicherten Elementen einmal in Scratch und einmal in Java abgebildet.
Bedingte Schleife in Scratch
Bedingte Schleife in Scratch
Bedingte Schleife in Java
Bedingte Schleife in Java
Untersuchen Sie, was das Scratch-Programm macht.
Untersuchen Sie das Java-Programm und vergleichen Sie es mit dem Scratch-Programm hinsichtlich der folgenden Aspekte:
Welche Anweisungen im Java-Programm sind exakt einer Anweisung in Scratch zuzuordnen?
Die markierte Komponente 1. des Java-Codes ist nicht im Scratch-Programm enthalten. Erläutern Sie, was dort passiert und wo man dies in Scratch vorgenommen hat.
Die Änderung der Variable index (Markierung 4.) wird in Java ebenfalls anders notiert. Beschreiben Sie in eigenen Worten die lila markierte Anweisung im Java-Code.
Eine Liste in Scratch und eine Liste in Java unterscheiden sich in einer entscheidenden Tatsache:
Erläutern Sie mit Hilfe der obigen Abbildungen, weshalb sich die grün markierte Anweisung 2.
im Java-Code vom Äquivalent in Scratch unterscheidet.
Die Messstation soll die gespeicherten Daten auch versenden können. Dies modellieren wir zunächst mit der „println()„-Anweisung. Für eine Liste in Java existiert auch die Möglichkeit, ein bestimmtes gespeichertes Element zu erhalten, welches dann in einer print-Anweisung ausgegeben werden kann.
Erweitern Sie Ihr Programm so, dass alle gespeicherten Temperaturdaten der Reihenfolge nach ausgegeben werden in den beiden folgenden Varianten:
Die gespeicherten Temperaturen sollen mit jeweils einer einzelnen „println()„-Anweisung ausgegeben werden.
Die gespeicherten Temperaturen sollen mit einer „while“-Schleife ausgegeben werden.
Verändern Sie Ihr Java-Programm mit der „while„-Schleife jeweils so, dass je einmal eine der folgenden Anforderungen umgesetzt werden:
Die Temperaturen sollen beginnend mit dem letzten rückwärts ausgegeben werden.
Es soll, beginnend mit der ersten Temperatur, nur jede zweite Temperatur ausgegeben werden.
Hinweis: Wenn man in Java Bedingung mit kleiner, größer oder gleich benötigt, gibt es diese Varianten:
Beispiel verbal
Beispiel in Java
„Index soll größer 0 sein“
(index > 0)
„index soll größer oder gleich 0 sein“
(index >= 0)
„index soll gleich 0 sein“
(index == 0)
Beurteilen Sie, inwiefern eine Umsetzung mit einer Schleife hier Vorteile bietet, im Vergleich zur Ausgabe der Liste mit einzelnen „println()„-Anweisungen .
Starten Sie die Online-IDE, loggen Sie sich ein und ändern Sie Ihr Passwort, indem Sie auf das Menschen-Symbol links neben Ihrem Namen klicken. Legen Sie dann ein neues Programm mit dem namen ListeTest an.
Mit der Anweisung Liste name = new Liste(); wird eine neue Listenvariable mit dem Namen name deklariert.
Mit der Anweisung name.fuegeHinzu(Zahl z) wird einer Liste mit dem Namen name die
Zahl z hinten hinzugefügt. Das Wort „Zahl“ wird im Code aber nicht geschrieben.
Erstellen Sie ein Programm, welches die folgenden Anforderungen erfüllt.
Eine Liste temperaturen soll deklariert werden.
Die folgenden zehn Temperaturwerte sollen in die Liste eingetragen werden: 25.0, 27.5, 28.0, 31.0, 33.5, 33.1, 32.0, 33.0, 31.0 und 26.8 (Achtung: Geben Sie 31.0 und nicht 31,0 ein!)
Für die Umsetzung der Eingabe und Ausgabe der Temperaturdaten werden Sie eine bedingte Schleife in Java benötigen. In der folgenden Abbildung ist ein identisches Programm für eine Liste mit dem Namen testListe mit 12 gespeicherten Elementen einmal in Scratch und einmal in Java abgebildet.
Bedingte Schleife in Scratch
Bedingte Schleife in Scratch
Bedingte Schleife in Java
Bedingte Schleife in Java
Untersuchen Sie, was das Scratch-Programm macht.
Untersuchen Sie das Java-Programm und vergleichen Sie es mit dem Scratch-Programm hinsichtlich der folgenden Aspekte:
Welche Anweisungen im Java-Programm sind exakt einer Anweisung in Scratch zuzuordnen?
Die markierte Komponente 1. des Java-Codes ist nicht im Scratch-Programm enthalten. Erläutern Sie, was dort passiert und wo man dies in Scratch vorgenommen hat.
Die Änderung der Variable index (Markierung 4.) wird in Java ebenfalls anders notiert. Beschreiben Sie in eigenen Worten die lila markierte Anweisung im Java-Code.
Eine Liste in Scratch und eine Liste in Java unterscheiden sich in einer entscheidenden Tatsache:
Erläutern Sie mit Hilfe der obigen Abbildungen, weshalb sich die grün markierte Anweisung 2.
im Java-Code vom Äquivalent in Scratch unterscheidet.
Die Abbruchbedingung im Java-Code (Blaue Markierung 3) unterscheidet sich ebenfalls,
von der in Scratch. Erläutert, weshalb das so ist.
Hinweis: Eine Schleife ist eine „wiederhole solange“- und eine Schleife ist eine „wiederhole
bis“-Schleife.
Die Messstation soll die gespeicherten Daten auch versenden können. Dies modellieren wir zunächst mit der „println()„-Anweisung. Für eine Liste in Java existiert auch die Möglichkeit, ein bestimmtes gespeichertes Element zu erhalten, welches dann in einer print-Anweisung ausgegeben werden kann.
Für eine Liste mit dem Namen name kann man z. B. mit name.elementAmIndex(2);
das dritte gespeicherte Element erhalten.
Erweitern Sie Ihr Programm so, dass alle gespeicherten Temperaturdaten der Reihenfolge nach ausgegeben werden in den beiden folgenden Varianten:
Die gespeicherten Temperaturen sollen mit jeweils einer einzelnen „println()„-Anweisung ausgegeben werden.
Die gespeicherten Temperaturen sollen mit einer „while“-Schleife ausgegeben werden.
Ersetzen Sie die farbig unterlegten Beschreibungen durch den jeweils korrekten Java-Code.
Verändern Sie Ihr Java-Programm mit der „while„-Schleife jeweils so, dass je einmal eine der folgenden Anforderungen umgesetzt werden:
Die Temperaturen sollen beginnend mit dem letzten rückwärts ausgegeben werden.
Hinweis: Dafür müssen Sie den Startwert, die Abbruchbedingung und die Veränderung der Variable index verändern.
Es soll, beginnend mit der ersten Temperatur, nur jede zweite Temperatur ausgegeben werden.
Hinweis: Dafür müssen Sie, ausgehend von der ursprünglichen Ausgabe, nur die Veränderung
der Variable index verändern.
Hinweis: Wenn man in Java Bedingung mit kleiner, größer oder gleich benötigt, gibt es diese Varianten:
Beispiel verbal
Beispiel in Java
„Index soll größer 0 sein“
(index > 0)
„index soll größer oder gleich 0 sein“
(index >= 0)
„index soll gleich 0 sein“
(index == 0)
Beurteilen Sie, inwiefern eine Umsetzung mit einer Schleife hier Vorteile bietet, im Vergleich zur Ausgabe der Liste mit einzelnen „println()„-Anweisungen .
Programmierende Personen nutzen KI-Anwendungen, um effizienter zu sein und vor allem einfachen oder langwierigen Code maschinell erstellen zu lassen.
Hierbei gilt, dass je höher die eigene Programmierkompetenz, desto mehr profitieren diese Personen von dieser KI-Nutzung.
Anfängerinnen und Anfänger können zwar sehr leicht mit KI-Unterstützung auch komplexere Programme erzeugen, sind jedoch selten in der Lage die Funktionalität dieser Programme beurteilen und den erhaltenen Code adäquat anpassen zu können.
Möchte man trotzdem die Vorteile, die eine KI-Unterstützung bietet, nutzen, sollte man speziell für das eigene Programmierniveau angepasste KI-Assistenten nutzen.
Schauen wir uns einen Vergleich an.
Die folgenden Aufgaben aus der vorherigen Aufgabe 2 sollen KI-unterstützt gelöst werden.
ChatGPT-5-Chat
Überblick
Du sollst alle gespeicherten Temperaturdaten aus deiner Liste ausgeben – einmal ganz „simpel“ mit einzelnen println-Aufrufen pro Element und einmal mit einer while-Schleife. Außerdem sollst du mit while:
rückwärts ausgeben, und
nur jede zweite Temperatur ausgeben.
Unten findest du fertige Methoden, die du direkt in deine Klasse Liste einfügen kannst, sowie ein kurzes Main-Beispiel, wie du sie aufrufst.
d) Alle Temperaturen ausgeben
Variante 1: „Jeweils eine einzelne println()-Anweisung“ (per Index in einer Schleife)
Füge in Liste folgende Methode ein. Sie gibt pro Temperatur genau eine println-Zeile
aus und nutzt elementAmIndex(i):
public void druckeAlleMitEinzelnenPrintln() {
for (int i = 0; i < length; i++) {
println(elementAmIndex(i));
}
}
Hinweis: Auch wenn „einzelne println-Anweisung“ gefordert ist, brauchst du natürlich
eine Schleife, um alle Elemente zu erreichen. „Einzeln“ bezieht sich darauf, dass jede
Temperatur in einer eigenen Zeile ausgegeben wird.
Variante 2: Ausgabe mit einer while-Schleife
public void druckeAlleMitWhile() {
int i = 0;
while (i < length) {
println(elementAmIndex(i));
i++;
}
}
Optional (effizienter): Wenn du nicht jedes Mal von vorne über elementAmIndex suchen
möchtest, kannst du die Liste direkt per Zeiger durchlaufen:
public void druckeAlleMitWhileE[zient() {
Element p = anf;
while (p != null) {
println(p.inhalt);
p = p.next;
}
}
e) Varianten mit while-Schleife
1) Rückwärts ausgeben (vom letzten zum ersten)
Mit elementAmIndex geht das bequem:
public void druckeRueckwaertsMitWhile() {
int i = length - 1;
while (i >= 0) {
println(elementAmIndex(i));
i--;
}
}
2) Nur jede zweite Temperatur (beginnend mit der ersten)
public void druckeJedeZweiteMitWhile() {
int i = 0; // 0 = erste Temperatur
while (i < length) {
println(elementAmIndex(i));
i += 2;
}
}
Beispiel: Verwendung in einer Main-Klasse
public class Messstation {
public static void main(String[] args) {
Liste daten = new Liste();
daten.fuegeHinzu(21.5);
daten.fuegeHinzu(22.1);
daten.fuegeHinzu(20.8);
daten.fuegeHinzu(23.0);
daten.fuegeHinzu(19.9);
// d) Variante 1
println("Alle (einzeln mit println):");
daten.druckeAlleMitEinzelnenPrintln();
// d) Variante 2 (while)
println("Alle (while):");
daten.druckeAlleMitWhile();
// e) 1) Rückwärts (while)
println("Rueckwaerts (while):");
daten.druckeRueckwaertsMitWhile();
// e) 2) Jede zweite (while)
println("Jede zweite (while):");
daten.druckeJedeZweiteMitWhile();
}
}
Hinweise
Deine Methode elementAmIndex(i) wird bei ungültigem Index eine IndexOutOfBoundsException – die Schleifen oben sind so formuliert, dass das
nicht passiert.
Wenn die Liste sehr groß wird, sind Varianten, die jedes Mal elementAmIndex(
i) aufrufen, langsamer, weil jedes Mal vom Anfang gesucht wird. Die
„E[zient“-Variante traversiert die Liste direkt mit einem Zeiger und ist linear.
Für die Rückwärtsausgabe ist elementAmIndex aber praktisch, weil es
eine einfach verknüpHe Liste ist.
KI-Assistent
Allgemeine Lösungshinweise
Zunächst sollt ihr euch überlegen, wie ihr alle Elemente der Liste der Reihe nach abrufen
und ausgeben könnt, ohne dafür Arrays oder andere Datentypen zu nutzen. Dabei
könnt ihr die Methode elementAmIndex(i) verwenden, um das jeweilige Element anhand
des Index zu erhalten. Variante 1: Einzelne println()-Ausgabe pro Element
Überlegt, wie ihr den bekannten Index nutzen könnt, um jedes Element einzeln
auszugeben.
Anschließend könnt ihr für jedes Temperatur – also für jeden gültigen Index
von 0 bis laengeDerListe()-1 – eine eigene println()-Anweisung schreiben.
Variante 2: Ausgabe mittels while-Schleife
Ihr könnt eine while-Schleife verwenden. Beginnt mit einem Startwert für
den Index (z. B. 0) und arbeitet euch solange vor, bis ihr alle Elemente der
Liste abgerufen habt.
Denkt daran, in der Schleife den Index schri$weise zu erhöhen, ohne den Inkrementoperator
(also schreibt "index = index + 1").
Erweiterung der while-Schleife (Teil e)
Ausgabe in umgekehrter Reihenfolge
Überlegt, wie ihr den Index beginnend vom letzten Element (also dem Wert
laengeDerListe()-1) zurücksetzen könnt.
Nutzt eine while-Schleife, die solange wiederholt, bis ihr den Index auf 0
(oder kleiner) reduziert habt. Achtet darauf, den Index in jedem Schleifendurchlauf
zu dekrementieren (etwa "index = index - 1").
Ausgabe jeder zweiten Temperatur (beginnend von der ersten)
Setzt den Index initial auf 0.
Definiert eine while-Schleife, die immer den Wert an der aktuellen Position
ausgibt und anschließend den Index um 2 erhöht (also "index = index + 2").
Achtet darauf, dass die Schleifenbedingung so formuliert wird, dass nur gültige Indexwerte ausgelesen werden.
Zusammenfassender Denkansatz
Nutzt die Methode elementAmIndex() aus eurer Liste, um an elementare
Daten heranzukommen.
Überlegt genau, welche Schleifenbedingung für die einzelnen Varianten erforderlich
ist:
Von 0 bis laengeDerListe()-1 (vorwärts)
Von laengeDerListe()-1 bis 0 (rückwärts)
Von 0 in Schritten von 2 (jede zweite Temperatur)
Verwendet bei den while-Schleifen die Ausgangsbedingungen und Aktualisierungen
des Index so, dass keine Überschreitung der Listenlänge erfolgt.
Mit diesen Hinweisen solltest du in der Lage sein, den Lösungsweg schrittweise umzusetzen.
Falls du weitere Details oder konkrete Ideen zur Logik benötigst, lass es mich
wissen!
Fragt man diese KI nach weiterer Hilfe, werden die Hinweise deutlich konkreter (Folgefrage:
"Kannst du mir konkreter helfen?" / Es werden hier nur die neuen Hinweise
für e) abgebildet) Detailliertere Hinweise zur Umsetzung
Ausgabe mit einer while-Schleife
Idee: Nutze eine while-Schleife, um die Schleifenvariable (z. B. index) zu kontrollieren
und iteriert so durch die Liste.
Grundsätzlicher Aufbau einer while-Schleife:
Initialisiere einen Zählervariable (zum Beispiel index = 0).
Formuliere die Schleifenbedingung (z. B. index <
laengeDerListe()).
In der Schleife:
Benutze elementAmIndex(index), um den aktuellen
Wert abzurufen,
Führe eine println()-Anweisung aus, um diesen Wert
auszugeben,
Erhöhe den Index, z. B. indem du schreibst "index = index
+ 1".
Erweiterung a): Ausgabe in umgekehrter Reihenfolge
Idee: Für diese Variante startest du mit dem letzten Element der Liste (Index
= laengeDerListe() - 1) und gehst rückwärts.
Vorgehensweise:
Initialisiere den Index mit dem Wert "laengeDerListe() - 1".
Verwende eine while-Schleife mit der Bedingung, dass der Index
größer oder gleich 0 sein muss.
In der Schleife rufst du das Element mit elementAmIndex(index)
ab und gibst es per println() aus.
Verringere den Index in jedem Durchlauf um 1, also "index = index
- 1".
Achte darauf, dass die Schleifenbedingung korrekt formuliert ist,
damit nach dem letzten Element die Schleife endet, wenn der Index
unter 0 fällt.
Erweiterung b): Ausgabe jeder zweiten Temperatur ab der ersten
Idee: Du willst nur jedes zweite Element der Liste ausgeben, beginnend mit
dem Element an Index 0.
Vorgehensweise: Setze den Startwert für den Index auf 0.
Formuliere die while-Schleife so, dass noch geprüH wird, ob der
aktuelle Index kleiner als laengeDerListe() ist.
In der Schleife holst du dir das Element an der aktuellen Position
mittels elementAmIndex(index) und gibst es aus.
Erhöhe den Index aber diesmal um 2 in jedem Schleifendurchlauf (das heißt, du springst direkt zur übernächsten Temperatur).
Überprüfe dabei, dass dein Index-Wert die Länge der Liste nicht
überschreitet.
Zusammenfassung des Vorgehens:
Einzelne Ausgaben:
Iteriere über alle gültigen Indizes und gebe jeden Temperaturwert
einzeln mit println() aus.
While-Schleife (vorwärts):
Initialisiere index = 0
Bedingung: index < laengeDerListe()
Ausgabe: println(elementAmIndex(index))
Aktualisierung: index = index + 1
Während-Schleife (rückwärts):
Initialisiere index = laengeDerListe() - 1
Bedingung: index >= 0
Ausgabe: println(elementAmIndex(index))
Aktualisierung: index = index - 1
While-Schleife (jeder zweite Wert):
Initialisiere index = 0
Bedingung: index < laengeDerListe()
Ausgabe: println(elementAmIndex(index))
Aktualisierung: index = index + 2
Mit dieser detaillierten Beschreibung solltest du in der Lage sein, die Lösung schrittweise
selbst zu implementieren. Solltest du weitere Fragen haben oder noch detailliertere
Hinweise benötigen, lass es mich wissen!
Analysieren Sie in Partnerarbeit die beiden KI-Ausgaben und beurteilen Sie diese anhand der folgenden Kriterien:
Wie verständlich sind die Hinweise?
Wie passen die Hinweise zum im Unterricht behandelten Inhalten?
Helfen die Hinweise, eigenständig zu einer Lösung zu kommen?
Wie würden Sie nach den dargestellten Hinweisen weiter mit der jeweiligen KI vorgehen?
In der Programmierung sind Kontrollstrukturen wie die Wegweiser und Ampeln deines Codes. Ohne sie würde ein Programm einfach nur stur eine Zeile nach der anderen abarbeiten. In der 11. Klasse bilden sie das Fundament für alles, was folgt.
Hier ist eine Übersicht der wichtigsten Strukturen, erklärt am Beispiel eines intelligenten Einlasssystems für ein Kino.
Die einfache bedingte Anweisung (if)
Die bedingte Anweisung ist die simpelste Form. Ein Codeblock wird nur dann ausgeführt, wenn eine bestimmte Bedingung wahr (true) ist. Wenn sie falsch ist, passiert einfach gar nichts.
Logik: "Falls du ein Ticket hast, darfst du eintreten."
if (hatTicket == true) {
println("Willkommen im Kinosaal!");
}
Die Verzweigung (if-else)
Bei einer Verzweigung gibt es zwei Wege. Das Programm muss sich entscheiden: Entweder wird Weg A genommen oder Weg B. Es gibt kein "Dazwischen".
Logik: "Falls du 12 Jahre oder älter bist, darfst du den Film sehen. Andernfalls musst du leider draußen bleiben."
if (alter >= 12) {
println("Viel Spaß beim Film!");
} else {
println("Dieser Film ist leider noch nichts für dich.");
}
Die bedingte Schleife (while)
Eine Schleife wiederholt einen Codeblock so lange, wie eine Bedingung erfüllt ist. Man nennt sie "bedingt", weil sie vor jedem Durchgang prüft: "Soll ich nochmal?"
Logik: "Solange noch Popcorn im Eimer ist, iss ein Stück."
int popcornStuecke = 50;
while (popcornStuecke > 0) {
println("Mampf... noch " + popcornStuecke + " übrig.");
popcornStuecke--; // Eines essen, also eins weniger im Eimer
}
println("Eimer leer!");
Wichtig: Achte bei while-Schleifen immer darauf, dass die Bedingung irgendwann false wird. Vergisst man das (z. B. das popcornStuecke--), landet man in einer Endlosschleife.
Grundlage für diese Teilaufgabe ist ein Programm, in dem eine Liste mit zehn Temperaturwerten (25.0, 27.5, 28.0, 31.0, 33.5, 33.1, 32.0, 33.0, 31.0 und 26.8) initialisiert wurde. Eine Wissenschaftlerin möchte flexibel auswählen können, von welcher Schule sie sich die Temperatur anzeigen lässt.
Dazu soll zu Beginn des Programms eine zusätzliche int-Variable schule deklariert und mit einem eingegebenen Indexwert der Liste initialisiert werden. Dies geschieht über folgende Anweisung: int schule = Input.readInt("Für welche Schule soll Hitzefrei geprüft werden?");
Anschließend soll die Liste mithilfe einer Schleife durchlaufen werden. In jedem Durchlauf ist zu prüfen, ob der aktuelle Wert von index dem gewünschten Wert der Variablen schule entspricht. Wenn dies der Fall ist, soll die gespeicherte Temperatur ausgegeben werden. Zur Umsetzung dieser Logik sind entsprechende Kontrollstrukturen erforderlich.
Untern sind jeweils eine bedingte Anweisung und eine Verzweigung in Scratch und Java dargestellt.
Scratch
Java
Bedingte Anweisung in Scratch
if (index == tag) {
println(temperaturen.elementAmIndex(index));
}
Bedingte Anweisung in Java
Verzweigung in Scratch
if (temperaturen.elementAmIndex(5) == 30.0) {
println("Die Temperatur an Tag 5 ist 30.0 °C");
}
else {
println("Die Temperatur an Tag 5 ist nicht 30.0 °C");
}
Verzweigung in Java
Beschreiben Sie, wie die beiden Algorithmen in Scratch arbeiten.
vergleichen Sie diese mit dem Äquivalent in Java.
Initialisieren Sie eine int-Variable schule mit der weiter oben gezeigten Anweisung zur User-Eingabe.
Jetzt soll die Liste temperaturen mit einer while-Schleife durchlaufen werden.
In jedem Durchlauf wird geprüft, ob der aktuelle Index dem Wert von schule entspricht.
Wenn dies so ist, soll die Temperatur an dieser Schule ausgegeben werden.
Erweitern Sie Ihr Programm um diese Funktionalität und speichern Sie Ihr Programm unter dem Namen
"Temperaturwerte" ab.
Untern sind jeweils eine bedingte Anweisung und eine Verzweigung in Scratch und Java dargestellt.
Scratch
Java
Bedingte Anweisung in Scratch
if (index == tag) {
println(temperaturen.elementAmIndex(index));
}
Bedingte Anweisung in Java
Verzweigung in Scratch
if (temperaturen.elementAmIndex(5) == 30.0) {
println("Die Temperatur an Tag 5 ist 30.0 °C");
}
else {
println("Die Temperatur an Tag 5 ist nicht 30.0 °C");
}
Verzweigung in Java
Beschreiben Sie, wie die beiden Algorithmen in Scratch arbeiten.
vergleichen Sie diese mit dem Äquivalent in Java.
Initialisieren Sie eine int-Variable schule mit der weiter oben gezeigten Anweisung zur User-Eingabe.
Jetzt soll die Liste temperaturen mit einer while-Schleife durchlaufen werden.
In jedem Durchlauf wird geprüft, ob der aktuelle Index dem Wert von schule entspricht.
Wenn dies so ist, soll die Temperatur an dieser Schule ausgegeben werden.
while( Abbruchbedingung zum Schleifendurchlauf){
if(Pürfe, ob index gleich tag ist){
Ausgabe der Temperatur am Index index
}
}
Erweitern Sie Ihr Programm um diese Funktionalität und speichern Sie Ihr Programm unter dem Namen
"Temperaturwerte" ab.
Wenn Sie sich einloggen wollen, dann können sie das hier machen.
Unsere Wissenschaftlerin möchte nun die vorliegenden Messdaten analysieren. Hierfür möchte sie
zunächst die Durchschnittstemperatur der zehn Temperaturen ermitteln.
Sichten Sie Ihre Lösungen aus Scratch zu diesen Anforderungen und klären Sie noch einmal die algorithmische Vorgehensweise, um diese Anforderungen algorithmisch umzusetzen.
Um Messdaten, wie z. B. Temperaturen, Luftfeuchtigkeit, Bodenfeuchtigkeit, Regenmenge, CO2-Gehalt oder Feinstaubgehalt automatisiert auswerten zu können, muss ein Computer diese Daten speichern können. Wie Sie bereits aus den Vorjahren wissen, sind dafür Variablen notwendig.
Es gibt Programmiersprachen, die datentypsensitiv sind und es gibt Programmiersprachen, die sind es nicht. Du kennst bisher Open Roberta Lab und Scratch:
(Typsensitiv)
Open Roberta: Sie müssen für eine Variable festlegen, was für einen Typ die Variable haben soll. Sie haben hauptsächlich mit Zahlen und Zeichenketten gearbeitet.
(Nicht typsensitiv)
Scratch 3: Beim Erstellen einer Variable müssen Sie nicht festlegen, von welchem Typ die Variable sein soll. Es gab aber einen besonderen Typ von Variablen, Listen. Mit etwas Ähnlichem werden Sie später auch noch in Java arbeiten.
Java ist, wie Open Roberta, typsensitiv. Sie müssen beim Anlegen, dem Deklarieren einer Variablen, also stets angeben, von welchem Datentyp die Variable ist. Wir arbeiten aktuell nur mit den folgenden Datentypen:
Datentyp
Beschreibung
Beispiel in Java
Liste
Eine Aneinanderreihung mehrerer Daten, die mit einem Index versehen sind
Liste werte = new Liste();
werte.fuegeHinzu(10.4);
werte.fuegeHinzu(11.4);
werte.loescheAmIndex(1);
Grundlage ist wieder das Prtogramm mit der Liste der zehn Tmeperaturen.
Deklarieren Sie zwei neue double-Variablen mit den Namen summe und durchschnitt und initialisieren Sie beide Variablen mit dem Wert 0.0.
Erweitern Sie Ihr Programm so, dass zunächst mit einer Schleife die Summe der zehn Temperaturen berechnet wird, und lassen Sie sich danach den Wert der Summe in einem aussagekräftigen Satz ausgeben.
Erweitern Sie es anschließend so, dass nach der Berechnung der Summe auch der Durchschnitt berechnet wird. Lassen Sie sich auch diesen Wert in einem angemessenen Satz ausgeben.
Speichern Sie Ihr Programm abschließend ab.
Sichten Sie Ihre Lösungen aus Scratch zu diesen Anforderungen und klären Sie noch einmal die algorithmische Vorgehensweise, um diese Anforderungen algorithmisch umzusetzen.
Um Messdaten, wie z. B. Temperaturen, Luftfeuchtigkeit, Bodenfeuchtigkeit, Regenmenge, CO2-Gehalt oder Feinstaubgehalt automatisiert auswerten zu können, muss ein Computer diese Daten speichern können. Wie Sie bereits aus den Vorjahren wissen, sind dafür Variablen notwendig.
Es gibt Programmiersprachen, die datentypsensitiv sind und es gibt Programmiersprachen, die sind es nicht. Du kennst bisher Open Roberta Lab und Scratch:
(Typsensitiv)
Open Roberta: Sie müssen für eine Variable festlegen, was für einen Typ die Variable haben soll. Sie haben hauptsächlich mit Zahlen und Zeichenketten gearbeitet.
(Nicht typsensitiv)
Scratch 3: Beim Erstellen einer Variable müssen Sie nicht festlegen, von welchem Typ die Variable sein soll. Es gab aber einen besonderen Typ von Variablen, Listen. Mit etwas Ähnlichem werden Sie später auch noch in Java arbeiten.
Java ist, wie Open Roberta, typsensitiv. Sie müssen beim Anlegen, dem Deklarieren einer Variablen, also stets angeben, von welchem Datentyp die Variable ist. Wir arbeiten aktuell nur mit den folgenden Datentypen:
Datentyp
Beschreibung
Beispiel in Java
Liste
Eine Aneinanderreihung mehrerer Daten, die mit einem Index versehen sind
Liste werte = new Liste();
werte.fuegeHinzu(10.4);
werte.fuegeHinzu(11.4);
werte.loescheAmIndex(1);
Deklarieren Sie zwei neue double-Variablen mit den Namen summe und durchschnitt und initialisieren Sie beide Variablen mit dem Wert 0.0.
Erweitern Sie Ihr Programm so, dass zunächst mit einer Schleife die Summe der zehn Temperaturen berechnet wird, und lassen Sie sich danach den Wert der Summe in einem aussagekräftigen Satz ausgeben. Hierfür können Sie folgendermaßen vorgehen:
Nachdem die beiden neuen Variablen initialisiert wurden, wird eine Variable für den index der Liste auf 0 gesetzt.
Dann beginnt eine while-Schleife.
In jedem Durchlauf der Schleife wird der aktuelle Wert in der Liste auf den aktuellen Wert der Variable summe addiert.
Dann wird der Wert der Variable index um 1 erhöht.
Nach der Schleife wird mit einer geeigneten print-Anweisung ein Satz zur Ausgabe der summe aufgebaut.
Erweitern Sie das Programm anschließend so, dass nach der Berechnung der Summe auch der durchschnitt berechnet wird. Lassen Sie sich auch diesen in einem vernünftigen Satz ausgeben. Hierfür können Sie folgendermaßen vorgehen:
Nachdem die Summe berechnet und ausgegeben wurde, wird der Wert der Variable durchschnitt korrekt berechnet.
Anschließend wird mit einer geeigneten print-Anweisung ein Satz zur Ausgabe des Durchschnitts aufgebaut.
Speichern Sie Ihr Programm abschließend ab.
Wenn Sie sich einloggen wollen, dann können sie das hier machen.
Angenommen, ein Reihe von Temperatursensoren misst die Temperaturen an verschiedenen Schulen im Hochsommer. Die Temperaturwerte des Programms "Temperaturwerte" sollen dies darstellen.
Natürlich hoffen die Schülerinnen und Schüler, dass es einen Hitzefrei-Tag gibt, wenn es sehr warm ist. Dafür müssen jedoch bestimmte Bedingungen erfüllt sein. Wenn diese Bedingungen erfüllt sind, gibt es Hitzefrei.
Dieses Konzept kennt ihr bereits aus Open Roberta und Scratch 3. Es gibt zwei Arten von Entscheidungen: Eine bedingte Anweisung und eine Verzweigung.
Bei Scratch 3 sind alle sechseckigen Blöcke Bedingungen. Das sind Blöcke, deren "Antwort" nur "wahr" oder "falsch" sein kann. Unten sehen Sie eine Auswahl solcher Blöcke und zusätzlich deren Äquivalente in Java.
index == tag && werte.elementAmIndex(index) > 33.0
!(index == tag || werte.elementAmIndex(index) > 33.0)
index == tag
Ordnen Sie die Bedingungen in Java den dazugehörigen Bedingungen in Scratch 3 zu.
Erstellen Sie für jede Bedingung in Scratch 3 mit einem "nicht"-Block eine äquivalente Bedingung ohne das äußere "nicht" in Scratch 3 und in java.
Als Grundlage für diese Aufgabe dient wieder das Programm mit der Liste temperaturen.
Um eine automatisierte Statistik über hitzebedingte Unterrichtsausfälle aufzustellen, werden wir
die vorliegenden Temperaturdaten entsprechend analysieren.
Angenommen, die Leitung einer Behörde muss den Unterricht ausfallen lassen, sobald eine Temperatur von über 33 °C gemessen wird. Allerdings gilt dies nur, wenn es sich um einen Schultag, also nicht Samstag oder Sonntag handelt.
Begründe Sie, weshalb für diese Situation weitere Variablen notwendig sind.
Das Programm soll es nun ermöglichen, dass man eingeben kann, ob es sich um einen Schultag oder nicht handelt. Man kann das unter einer Wahrheitswert-Variable, boolean, schultag so erfragen
und speichern.
boolean schultag = Input.readBoolean("Ist heute ein Schultag? (true oder false)");
Anschließend soll, wie in Aufgabe 1 eine Ganzzahl-Variable für den gewünschten Index in der Liste erfragt und gespeichert werden. Möglich sind hierbei Werte von 0 bis 9.
Dann soll geprüpft werden, ob die Bedingungen für einen hitzebedingten Unterrichtsausfall erfüllt sind.
Wenn das so ist, soll eine entsprechende Aussage ausgegeben werden. Wenn das nicht so ist, soll ebenfalls eine entsprechende Aussage ausgegeben werden.
Erweitern Sie Ihr Programm entsprechend, probieren Sie aus, ob es für schultag true und false
korrekt arbeitet und speichern Sie es ab.
Hier sind verschiedene Varianten für die Überprüfung von Aufgabenteil b) dargestellt. Vor den abgebildeten Varianten werden die zehn bekannten Temperaturen in die Liste temperaturen eingefügt.
Untersuchen Sie, ob die Varianten das Problem lösen und erläutern Sie bei nicht funktionierenden Varianten die Fehler.
Beurteilen Sie, ob eine der funktionierenden Varianten besser ist oder keine Variante einen entscheidenden Vorteil bietet.
Angenommen, die Leitung einer Behörde muss den Unterricht ausfallen lassen, sobald eine Temperatur von über 33 °C gemessen wird. Allerdings gilt dies nur, wenn es sich um einen Schultag, also nicht Samstag oder Sonntag handelt.
Begründe Sie, weshalb für diese Situation weitere Variablen notwendig sind:
Eine Wahrheitswert-Variable schultag, die true oder false sein kann.
Eine Ganzzahl-Variable schule, die einen Wert von 0 bis 9 haben kann.
Das Programm soll es nun ermöglichen, dass man eingeben kann, ob es sich um einen Schultag oder nicht handelt. Man kann das unter einer Wahrheitswert-Variable, boolean, schultag so erfragen
und speichern.
boolean schultag = Input.readBoolean("Ist heute ein Schultag? (true oder false)");
Anschließend soll, wie in Aufgabe 1 eine Ganzzahl-Variable für den gewünschten Index in der Liste erfragt und gespeichert werden. Möglich sind hierbei Werte von 0 bis 9.
Dann soll geprüpft werden, ob die Bedingungen für einen hitzebedingten Unterrichtsausfall erfüllt sind.
Wenn das so ist, soll eine entsprechende Aussage ausgegeben werden. Wenn das nicht so ist, soll ebenfalls eine entsprechende Aussage ausgegeben werden.
Erweitern Sie Ihr Programm entsprechend, probieren Sie aus, ob es für schultag true und false
korrekt arbeitet und speichern Sie es ab.
Hinweis: Sie können verschieden vorgehen, z. B.:
zwei ineinander geschachtetlte bedingte Anweisung (if)
eine Verzweigung (if-else)
eine bedinge Anweisung und ein und-Operatir (&&)
Hier sind verschiedene Varianten für die Überprüfung von Aufgabenteil b) dargestellt. Vor den abgebildeten Varianten werden die zehn bekannten Temperaturen in die Liste temperaturen eingefügt.
Untersuchen Sie, ob die Varianten das Problem lösen und erläutern Sie bei nicht funktionierenden Varianten die Fehler.
Beurteilen Sie, ob eine der funktionierenden Varianten besser ist oder keine Variante einen entscheidenden Vorteil bietet. Analysieren Sie hierzu den Algorithmus auf die folgenden vier Fälle,
temperaturen.elementAmIndex(schule) > 33 und schultag = wahr
temperaturen.elementAmIndex(schule) <= 33 und schultag = wahr
temperaturen.elementAmIndex(schule)> 33 und schultag = falsch
temperaturen.elementAmIndex(schule) <= 33 und schultag = falsch
Wenn Sie sich einloggen wollen, dann können sie das hier machen.