Modulseite

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.

ca. 40 Min.0/4 Checks gelöst

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).

TeilLeitfrageBeispiel Seepark-Kasse
EingabeWelche Daten kommen von aussen ins Programm?Alter jeder Person, Uhrzeit des Eintritts
VerarbeitungWas muss mit diesen Daten passieren?Tarif pro Person bestimmen, Abendrabatt abziehen, alles zusammenzählen
AusgabeWas 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.

Check 1 · ZuordnenEinstieg

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:

  1. Zweimal lesen. Beim ersten Mal verstehst du die Idee, beim zweiten Mal achtest du auf Details.
  2. Zahlen und Regeln markieren. Jede Zahl, jede Grenze («ab», «bis», «unter») und jede Bedingung («nur wenn») kommt später im Code vor.
  3. Sortieren. Was ist Eingabe, was ist Konstante, was ist Ausgabe?
  4. Beispiele von Hand rechnen. Mindestens drei: einen normalen Fall, einen Grenzfall und einen Sonderfall.
  5. 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.

TeilInhalt
EingabeAnzahl Hunde (ganze Zahl), AHV-Rente ja oder nein
KonstantenCHF 120 erster Hund, CHF 180 jeder weitere, Faktor 0.5 für Rentner
Verarbeitung120 + (Anzahl minus 1) × 180, bei Rente halbieren
AusgabeSteuerbetrag in CHF
RandbedingungAnzahl Hunde ist 0 oder grösser

Jetzt rechnest du Beispiele von Hand:

FallRechnungErgebnis
1 Hund, keine Rente120CHF 120
3 Hunde, keine Rente120 + 2 × 180CHF 480
0 Hundekeine SteuerCHF 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.

Check 2 · Mehrere AntwortenEinstieg

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ückeTypisches SignalBeispiel
Grenze unklar«bis», «ab», «unter», «über»Kinder 6 bis 15: Was zahlt eine 16-Jährige?
Kombination unklarzwei Regeln treffen zusammenRentner mit mehreren Hunden
Sonderfall fehlt0, leer, sehr grossFamilie ohne Erwachsene, 0 Hunde
Format unklarUhrzeit, Datum, GeldUhrzeit als «17:20» oder nur die Stunde?
Rundung unklarProzente bei GeldbeträgenAuf 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.

Check 3 · Eine AntwortFortgeschritten

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:

Text
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.

GruppeUhrzeitRechnungTotal
1 Erwachsener14 Uhr9CHF 9.00
2 Erwachsene, Kind 11, Kind 414 Uhr9 + 9 + 5 + 0CHF 23.00
2 Erwachsene, Kind 11, Kind 417 Uhr23 × 0.7CHF 16.10
1 Person mit 16 Jahren10 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.

Python
# 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:

Text
Anzahl Erwachsene (ab 16): 2
Anzahl Kinder (6 bis 15): 1
Aktuelle Stunde (0 bis 23): 17
Total: CHF 16.10

Das 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.

Check 4 · Code-LaborEinstieg

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».

Code-Labor · Python
Strg + Enter

Typische Fehler

  1. Sofort lostippen. Wer ohne EVA-Tabelle startet, merkt nach einer Stunde, dass eine Eingabe fehlt, und baut alles um.
  2. 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.
  3. 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.
  4. Stillschweigend annehmen. «Ich dachte, ab 16 ist man erwachsen» ist erst in Ordnung, wenn es bestätigt und aufgeschrieben ist.
  5. 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.