Lektion 1 von 9
Erst denken, dann tippen: Aufgaben zerlegen
Du zerlegst eine Anforderung nach dem EVA-Prinzip, trennst Eingaben von Konstanten, findest Lücken und stellst Rückfragen, die man mit einem Wort beantworten kann. Dazu schreibst du dein erstes kleines Python-Programm.
Worum es geht
Freitag, 17.20 Uhr, an der Kasse des Hallenbads der Freizeitanlagen Seepark AG in Kreuzlingen. Eine Familie steht an: zwei Erwachsene, ein Mädchen mit elf Jahren und ein Bub mit vier. Die Kassiererin rechnet im Kopf: 9 plus 9 plus 5, der Kleine ist gratis. Sie tippt CHF 23.00 ein. Erst als die Familie schon im Bad ist, fällt ihr ein, dass ab 17 Uhr ja 30 Prozent Abendrabatt gilt. Richtig wären CHF 16.10 gewesen. Am Abend stimmt die Abrechnung wieder einmal nicht.
Luca ist im 1. Lehrjahr als Informatiker Applikationsentwicklung im Seepark. Sein Berufsbildner gibt ihm den Auftrag, ein kleines Konsolenprogramm zu schreiben, das die Preise ausrechnet. Viele Einsteigende würden jetzt sofort Visual Studio Code öffnen und lostippen. Luca macht etwas anderes: Er nimmt Papier und Stift und setzt sich eine halbe Stunde mit der Kassenleiterin zusammen.
Genau darum geht es in dieser ersten Lektion. Programmieren beginnt nicht mit Code, sondern mit der Frage: Was genau soll das Programm tun? Du lernst, eine Aufgabe in Eingabe, Verarbeitung und Ausgabe zu zerlegen, Lücken in einer Anforderung zu entdecken und gute Rückfragen zu stellen. Am Schluss schreibst du dein erstes kleines Python-Programm und lässt es direkt im Browser gegen automatische Tests laufen.
Das EVA-Prinzip: Jedes Programm hat drei Teile
Denk an eine Kaffeemaschine im Pausenraum. Du gibst etwas hinein: Bohnen, Wasser und einen Knopfdruck auf «Espresso». Die Maschine verarbeitet das: Sie mahlt, erhitzt und presst. Und sie gibt etwas aus: einen Espresso in der Tasse und vielleicht die Meldung «Wasser nachfüllen».
Fast jedes Programm funktioniert nach demselben Muster. Man nennt es das EVA-Prinzip: Eingabe, Verarbeitung, Ausgabe. Auf Englisch heisst es IPO (Input, Process, Output).
| Teil | Leitfrage | Beispiel Seepark-Kasse |
|---|---|---|
| Eingabe | Welche Daten kommen von aussen ins Programm? | Alter jeder Person, Uhrzeit des Eintritts |
| Verarbeitung | Was muss mit diesen Daten passieren? | Tarif pro Person bestimmen, Abendrabatt abziehen, alles zusammenzählen |
| Ausgabe | Was soll am Schluss sichtbar oder gespeichert sein? | Zu bezahlender Betrag, z.B. «Total: CHF 16.10» |
Ein Punkt verwirrt am Anfang oft: Fixe Werte wie CHF 9 oder 30 Prozent sind keine Eingaben. Die Kassiererin tippt den Erwachsenenpreis nicht bei jeder Familie neu ein. Solche Werte sind Regeln des Betriebs. Im Programm werden sie zu Konstanten, die einmal festgelegt sind und sich nur ändern, wenn der Betrieb die Preise anpasst.
Die Gemeinde Wohlen will die Hundesteuer berechnen lassen: CHF 120 für den ersten Hund, CHF 180 für jeden weiteren, AHV-Rentnerinnen und -Rentner zahlen die Hälfte. Ordne jedem Begriff den passenden Teil der Anforderung zu.
Anforderungen lesen wie ein Profi
Eine Anforderung ist eine Beschreibung dessen, was ein Programm leisten soll. Sie kommt selten als sauberes Dokument. Meistens ist es eine Gesprächsnotiz, eine E-Mail oder ein Satz im Teams-Chat. Bevor du daraus einen Plan machst, gehst du in fünf Schritten vor:
- Zweimal lesen. Beim ersten Mal verstehst du die Idee, beim zweiten Mal achtest du auf Details.
- Zahlen und Regeln markieren. Jede Zahl, jede Grenze («ab», «bis», «unter») und jede Bedingung («nur wenn») kommt später im Code vor.
- Sortieren. Was ist Eingabe, was ist Konstante, was ist Ausgabe?
- Beispiele von Hand rechnen. Mindestens drei: einen normalen Fall, einen Grenzfall und einen Sonderfall.
- Lücken notieren. Alles, was du beim Rechnen nicht sicher entscheiden konntest, wird zur Rückfrage.
Probieren wir das an einem zweiten Beispiel aus. Die Gemeindeverwaltung Wohlen möchte ein Programm für die Hundesteuer: CHF 120 für den ersten Hund, CHF 180 für jeden weiteren, und AHV-Rentnerinnen und -Rentner zahlen die Hälfte.
| Teil | Inhalt |
|---|---|
| Eingabe | Anzahl Hunde (ganze Zahl), AHV-Rente ja oder nein |
| Konstanten | CHF 120 erster Hund, CHF 180 jeder weitere, Faktor 0.5 für Rentner |
| Verarbeitung | 120 + (Anzahl minus 1) × 180, bei Rente halbieren |
| Ausgabe | Steuerbetrag in CHF |
| Randbedingung | Anzahl Hunde ist 0 oder grösser |
Jetzt rechnest du Beispiele von Hand:
| Fall | Rechnung | Ergebnis |
|---|---|---|
| 1 Hund, keine Rente | 120 | CHF 120 |
| 3 Hunde, keine Rente | 120 + 2 × 180 | CHF 480 |
| 0 Hunde | keine Steuer | CHF 0 |
| 2 Hunde, mit Rente | (120 + 180) / 2 oder 120 / 2 + 180? | CHF 150 oder CHF 240? |
Beim letzten Fall stockst du. Der Satz «zahlen die Hälfte» lässt zwei Deutungen zu. Genau das ist der Wert dieser Übung: Du findest die Unklarheit vor dem Programmieren und nicht erst, wenn sich eine Rentnerin über die Rechnung beschwert.
Eine Randbedingung legt fest, welche Werte überhaupt erlaubt sind. Eine negative Anzahl Hunde ergibt keinen Sinn, ein Alter von 250 Jahren auch nicht. Solche Bedingungen notierst du schon jetzt, denn in Lektion 8 sorgst du dafür, dass dein Programm sie prüft.
Luca plant den Eintrittsrechner für den Seepark: Erwachsene CHF 9, Kinder von 6 bis 15 CHF 5, jüngere gratis, ab 17 Uhr 30 Prozent Abendrabatt. Das Programm soll den Betrag für eine ganze Gruppe berechnen. Welche der folgenden Angaben sind Eingaben des Programms?
Wähle alle zutreffenden Antworten.
Lücken finden und gute Rückfragen stellen
Keine Anforderung ist vollständig. Menschen, die ein Programm bestellen, denken an den Normalfall. Du als Entwicklerin oder Entwickler denkst an alle Fälle. Diese Arten von Lücken findest du besonders häufig:
| Art der Lücke | Typisches Signal | Beispiel |
|---|---|---|
| Grenze unklar | «bis», «ab», «unter», «über» | Kinder 6 bis 15: Was zahlt eine 16-Jährige? |
| Kombination unklar | zwei Regeln treffen zusammen | Rentner mit mehreren Hunden |
| Sonderfall fehlt | 0, leer, sehr gross | Familie ohne Erwachsene, 0 Hunde |
| Format unklar | Uhrzeit, Datum, Geld | Uhrzeit als «17:20» oder nur die Stunde? |
| Rundung unklar | Prozente bei Geldbeträgen | Auf Rappen oder auf 5 Rappen runden? |
Eine schlechte Rückfrage lautet: «Wie soll ich das mit dem Alter machen?» Die Kassenleiterin weiss nicht, was du meinst, und antwortet vage. Eine gute Rückfrage ist konkret, enthält ein Beispiel und macht einen Vorschlag:
«Eine Person mit genau 16 Jahren: Zahlt sie den Kinderpreis von CHF 5 oder den Erwachsenenpreis von CHF 9? Mein Vorschlag: Ab 16 gilt der Erwachsenentarif.»
Darauf kann man mit einem Wort antworten. Die Antwort hältst du schriftlich fest, zum Beispiel als Notiz unter der EVA-Tabelle oder als Kommentar im Code. So weiss in drei Monaten auch deine Kollegin, warum der Code so ist, wie er ist.
Die Kassenleiterin sagt: «Kinder von 6 bis 15 Jahren zahlen 5 Franken, Erwachsene 9 Franken.» Welche Rückfrage ist am besten formuliert?
Schritt für Schritt: Von der Gesprächsnotiz zum ersten Programm
Luca hat nach dem Gespräch mit der Kassenleiterin diese Notiz:
Erwachsene zahlen 9 Franken, Kinder von 6 bis 15 Jahren 5 Franken,
kleinere Kinder nichts. Ab 17 Uhr gibt es 30 Prozent Abendrabatt.
Am Schluss will ich sehen, was die ganze Gruppe zahlen muss.Schritt 1: Zahlen und Regeln markieren. 9 Franken, 6 bis 15 Jahre, 5 Franken, kleinere Kinder gratis, ab 17 Uhr, 30 Prozent, ganze Gruppe.
Schritt 2: EVA-Tabelle. Eingabe: Alter jeder Person (oder die Anzahl Personen pro Tarif) und die Uhrzeit. Konstanten: CHF 9, CHF 5, CHF 0, 30 Prozent, Grenze 17 Uhr. Verarbeitung: Preise summieren, ab 17 Uhr Rabatt abziehen. Ausgabe: Total der Gruppe in CHF.
Schritt 3: Beispiele von Hand rechnen.
| Gruppe | Uhrzeit | Rechnung | Total |
|---|---|---|---|
| 1 Erwachsener | 14 Uhr | 9 | CHF 9.00 |
| 2 Erwachsene, Kind 11, Kind 4 | 14 Uhr | 9 + 9 + 5 + 0 | CHF 23.00 |
| 2 Erwachsene, Kind 11, Kind 4 | 17 Uhr | 23 × 0.7 | CHF 16.10 |
| 1 Person mit 16 Jahren | 10 Uhr | ? | ? |
Schritt 4: Rückfragen stellen. Luca klärt drei Punkte: Ab 16 Jahren gilt der Erwachsenentarif. Der Abendrabatt gilt ab 17:00 Uhr, also auch um genau 17:00. Beträge werden auf 5 Rappen gerundet, weil an der Kasse keine 1- und 2-Rappen-Münzen mehr im Umlauf sind.
Schritt 5: Eine erste, einfache Version programmieren. Luca beginnt bewusst klein: Die Kassiererin gibt die Anzahl Personen pro Tarif ein. Kinder unter 6 kosten nichts, sie beeinflussen den Betrag also nicht und brauchen in dieser Version gar keine Eingabe. Auch das ist eine Erkenntnis aus der EVA-Analyse.
# Eintrittsrechner Seepark, Version 0.1
# Eingabe: Anzahl Erwachsene und Kinder, aktuelle Stunde
# Verarbeitung: Tarife summieren, ab 17 Uhr 30 Prozent Rabatt, auf 5 Rappen runden
# Ausgabe: Total in CHF
PREIS_ERWACHSENE = 9.00 # ab 16 Jahren (Rückfrage vom 3.10. geklärt)
PREIS_KIND = 5.00 # 6 bis 15 Jahre; unter 6 gratis
ABENDRABATT = 0.30 # ab 17:00 Uhr
# Eingabe
erwachsene = int(input("Anzahl Erwachsene (ab 16): "))
kinder = int(input("Anzahl Kinder (6 bis 15): "))
stunde = int(input("Aktuelle Stunde (0 bis 23): "))
# Verarbeitung
total = erwachsene * PREIS_ERWACHSENE + kinder * PREIS_KIND
if stunde >= 17:
total = total * (1 - ABENDRABATT)
total = round(total * 20) / 20 # auf 5 Rappen runden
# Ausgabe
print(f"Total: CHF {total:.2f}")Schritt 6: Mit den Handbeispielen vergleichen. Luca startet das Programm und gibt die Familie von vorhin ein:
Anzahl Erwachsene (ab 16): 2
Anzahl Kinder (6 bis 15): 1
Aktuelle Stunde (0 bis 23): 17
Total: CHF 16.10Das Ergebnis stimmt mit der Handrechnung überein. Im Code siehst du die drei EVA-Teile wieder: input() liest eine Eingabe, int() macht daraus eine ganze Zahl, und print() gibt das Ergebnis aus (in C# heissen sie Console.ReadLine() und Console.WriteLine(), in Java Scanner und System.out.println()). Die Zeile mit if liest sich fast wie Deutsch: «Wenn die Stunde 17 oder mehr ist, dann ...». Keine Sorge, wenn noch nicht jedes Zeichen klar ist: Lektion 3 und 4 erklären alles in Ruhe.
Code-Labor: Dein erstes Programm für die Seepark-Kasse
Schreibe zwei Funktionen nach dem EVA-Prinzip (noch ohne Abendrabatt):
eintritt_gruppe(erwachsene, kinder)gibt den Betrag für eine Gruppe zurück: CHF 9 pro erwachsene Person, CHF 5 pro Kind von 6 bis 15. Kinder unter 6 sind gratis und deshalb kein Parameter.rueckgeld(bezahlt, betrag)gibt zurück, wie viel die Kasse herausgeben muss.
Beispiel: eintritt_gruppe(2, 1) ergibt 23, und rueckgeld(50, 23) ergibt 27.
Die Preise stehen schon als Konstanten im Startcode. Ersetze die Zeilen mit return 0 durch die richtige Berechnung und klicke auf «Ausführen & prüfen».
Typische Fehler
- Sofort lostippen. Wer ohne EVA-Tabelle startet, merkt nach einer Stunde, dass eine Eingabe fehlt, und baut alles um.
- Konstanten als Eingaben behandeln. Wenn das Programm bei jedem Eintritt nach dem Erwachsenenpreis fragt, ist das unpraktisch und fehleranfällig. Preise und Prozentsätze gehören als Konstanten an den Anfang des Programms.
- Nur den Normalfall durchrechnen. «Eine Familie am Nachmittag» funktioniert fast immer. Die Fehler stecken bei 16-Jährigen, um genau 17:00 Uhr oder bei 0 Hunden. Rechne immer auch Grenz- und Sonderfälle.
- Stillschweigend annehmen. «Ich dachte, ab 16 ist man erwachsen» ist erst in Ordnung, wenn es bestätigt und aufgeschrieben ist.
- Die Ausgabe nicht genau festlegen. «Der Preis» reicht nicht. Soll «16.1», «16.10» oder «CHF 16.10» erscheinen? Die Kassenleiterin vergleicht mit dem Kassenbeleg, also muss das Format stimmen.
Zusammenfassung
- Jedes Programm lässt sich nach dem EVA-Prinzip zerlegen: Eingabe, Verarbeitung, Ausgabe.
- Konstanten wie Preise und Prozentsätze sind Regeln des Betriebs und keine Eingaben.
- Eine Anforderung liest du in fünf Schritten: zweimal lesen, Zahlen markieren, sortieren, Beispiele von Hand rechnen, Lücken notieren.
- Randbedingungen legen fest, welche Werte erlaubt sind, zum Beispiel ein Alter von 0 bis 120.
- Gute Rückfragen sind konkret, enthalten ein Beispiel und einen Vorschlag. Die Antwort hältst du schriftlich fest.
- Handgerechnete Beispiele sind später deine ersten Testfälle: Das Programm muss genau diese Ergebnisse liefern.
Mit deiner eigenen KI vertiefen
Kopiere einen Prompt in Claude, ChatGPT oder Claude Code. Er macht die KI zur Lernbegleitung statt zum Lösungsautomaten.
Anforderungen zerlegen üben Chat-KI
Wenn du üben willst, aus einer Alltagsanforderung eine EVA-Tabelle und gute Rückfragen zu machen. Die KI liefert die Aufgaben und gibt Feedback, ohne vorzusagen.