Erster Tag im Go-Praktikum
AFB I–IIEmma kann Python und macht ein Schülerpraktikum bei einem kleinen Wetterdienst. Dort ist alles in Go geschrieben — eine Sprache, die sie noch nie benutzt hat. Am ersten Tag bekommt sie dieses Programm, das die Tageshöchstwerte einer Woche (in °C) auswertet:
package main
import "fmt"
func main() {
temps := []int{18, 23, 25, 19, 27}
heiss := 0
for _, t := range temps {
if t >= 25 {
heiss++
}
}
fmt.Println("Heiße Tage:", heiss)
}Es gibt Heiße Tage: 2 aus. Emma will verstehen, was sie aus Python schon kennt und was neu ist.
- Stelle in einer Tabelle dar, mit welchem Go-Code die Konzepte Liste, Variable, Schleife, Verzweigung und Ausgabe umgesetzt werden, und notiere jeweils die Python-Entsprechung.
- Analysiere das Programm auf drei Besonderheiten der Go-Syntax, die es in Python so nicht gibt.
- Erweitere das Programm so, dass es zusätzlich die Anzahl der kühlen Tage (unter 20 °C) ausgibt, und notiere die vollständige Ausgabe.
Hinweise
Hinweis zu Aufgabe a)
Hinweis zu Aufgabe b)
Hinweis zu Aufgabe c)
Erwartungshorizont
Erwartungshorizont zu Aufgabe a)
| Konzept | Go | Python |
|---|---|---|
| Liste | []int{18, 23, 25, 19, 27} | [18, 23, 25, 19, 27] |
| Variable | heiss := 0 | heiss = 0 |
| Schleife | for _, t := range temps { | for t in temps: |
| Verzweigung | if t >= 25 { | if t >= 25: |
| Ausgabe | fmt.Println("Heiße Tage:", heiss) | print("Heiße Tage:", heiss) |
Erwartungshorizont zu Aufgabe b)
Zum Beispiel (drei genügen):
:=legt eine neue Variable an und leitet ihren Typ ab (Python: nur=).- Die Liste hat einen festen Typ:
[]int— nur ganze Zahlen. rangeliefert Index und Wert; der Index wird mit_bewusst ignoriert.heiss++erhöht um 1 (Python:heiss += 1).- Blöcke in
{ }statt Einrückung, keine Klammern um die Bedingung, kein Doppelpunkt. - Programmrahmen
package main,import "fmt",func main().
Erwartungshorizont zu Aufgabe c)
heiss := 0
kuehl := 0
for _, t := range temps {
if t >= 25 {
heiss++
}
if t < 20 {
kuehl++
}
}
fmt.Println("Heiße Tage:", heiss)
fmt.Println("Kühle Tage:", kuehl)Ausgabe: Heiße Tage: 2 und Kühle Tage: 2 (18 und 19 °C). Wichtig: kuehl muss auch ausgegeben werden — eine unbenutzte Variable wäre in Go ein Compilerfehler.
Tim, Go und der KI-Assistent
AFB II–IIITim bringt sich in den Ferien selbst Go bei. Sein Programm soll seine Quizpunkte zusammen mit einem Bonus ausgeben, also Punkte: 15. Beim Start erscheint jedoch die Fehlermeldung in der Abbildung. Tim fragt einen KI-Assistenten. Der schlägt vor, nach Zeile 7 die Zeile _ = bonus einzufügen — danach startet das Programm ohne Fehler.
Tim ist begeistert: „Mit KI-Assistenten muss ich eigentlich gar keine Programmiersprache mehr lernen.“
- Deute die Fehlermeldung: Welche Informationen enthält sie, und was ist die Ursache?
- Überprüfe, ob der Vorschlag des KI-Assistenten Tims eigentliches Problem löst.
- Entwickle für Tim einen Lernplan mit mindestens vier Schritten für die nächsten zwei Wochen. Nenne dabei passende Lernquellen.
- Bewerte Tims Aussage über KI-Assistenten.
Hinweise
Hinweis zu Aufgabe a)
Hinweis zu Aufgabe b)
Hinweis zu Aufgabe c)
Hinweis zu Aufgabe d)
Erwartungshorizont
Erwartungshorizont zu Aufgabe a)
./main.go ist die Datei, 7 die Zeile, 5 die Spalte (dort beginnt bonus). „declared and not used: bonus“ heißt: Die Variable bonus wurde angelegt, aber nirgends benutzt. Das ist eine Besonderheit von Go — der Compiler lehnt unbenutzte Variablen ab, während Python so ein Programm einfach ausführen würde.
Erwartungshorizont zu Aufgabe b)
Nein. Mit _ = bonus gilt die Variable als „benutzt“, der Compilerfehler verschwindet. Das Programm gibt aber Punkte: 12 aus statt der gewünschten Punkte: 15. Der Vorschlag versteckt nur das Symptom. Die Meldung war ein echter Hinweis auf einen Denkfehler: Tim hat vergessen, den Bonus zu addieren. Richtig wäre fmt.Println("Punkte:", punkte+bonus).
Erwartungshorizont zu Aufgabe c)
Beispiel für einen sinnvollen Plan:
- Go-Tour (go.dev/tour) durcharbeiten, „Hallo Welt“ im Playground (go.dev/play) ausführen.
- Variablen (
:=, Typen), Ausgabe mitfmt.Println, Verzweigung und Schleife üben; eine Vergleichstabelle Python ↔ Go anlegen. - Funktionen und Listen (Slices) üben, dabei Fehlermeldungen gezielt lesen.
- Bekannte Aufgaben aus dem Python-Unterricht (z. B. Notenschnitt, Primzahltest) in Go neu lösen und mit bekannten Ergebnissen testen.
- Besonderheiten wie Goroutinen in der offiziellen Doku (go.dev/doc) nachlesen.
Bewertet wird eine sinnvolle Reihenfolge (vom Einfachen zum Komplexen) und passende Quellen.
Erwartungshorizont zu Aufgabe d)
Die Aussage ist nicht haltbar. KI-Assistenten können beim Lernen helfen — sie erklären Meldungen, schlagen Syntax vor und sparen Zeit. Tims Beispiel zeigt aber, dass ihre Vorschläge fehlerhaft oder nur scheinbar richtig sein können: Der Fehler verschwand, das Ergebnis blieb falsch. Das erkennt nur, wer den Code versteht und mit bekannten Werten testet. Urteil: KI-Assistenten sind ein nützliches Werkzeug, ersetzen aber nicht das Lernen der Sprache; ihr Code muss immer verstanden und geprüft werden.
