Logo des digitalen Schulbuchs inf-schule.de. Schriftzug in Zustandsübergangsdiagramm eines endlichen Automaten.

KIDS

Beispiel - Preisberechnungen

Preisberechnung - eine komplizierte Sache

Weißt du, wie der Zahlungsbetrag eines Artikels zustande kommt?

Dialog über Preise: Er: Tolles Gerät! Der Listenpreis beträgt 159€. Mit Mehrwertsteuer und abzüglich 5% Rabatt sowie 2% Skonto kostet das gut Stück nur 176.15€. Sie: Was, so viel![1]
  • Der Listenpreis ist der Grundpreis, von dem die Rechnung ausgeht. Als Beispiel betrachten wir einen Listenpreis von 159.00€.
  • Der Listenpreis kann um einen bestimmten Betrag ermäßigt werden. Diese Ermäßigung heißt Rabatt. Im Beispiel wird ein Rabatt von 5% gewährt. Vom Listenpreis gehen also 7.95€ ab. Der neue Preis (man nennt ihn auch Nettorechnungsbetrag) beträgt jetzt 151.05€.
  • Jetzt kommt die Mehrwertsteuer hinzu. Bis auf einige Ausnahmen wie Bücher beträgt der Mehrwertsteuersatz derzeit in Deutschland 19%. Aus dem Nettorechnungsbetrag erhält man so den Bruttorechnungsbetrag. Im Beispiel ergibt sich eine Mehrwertsteuer von gerundet 28.70€ und somit ein Bruttorechnungsbetrag von 179.75€.
  • Von diesem Bruttorechnungsbetrag kann bei Barzahlung ein weiterer Nachlass gewährt werden. Diese Ermäßigung heißt Skonto. Es ergibt sich dann der zu entrichtende Zahlungsbetrag. Im Beispiel erhält man aus dem Bruttorechnungsbetrag 179.75€ bei einem Skontoprozentsatz von 2% einen Nachlass von gerundet 3.60€. Es ergibt sich ein Zahlungsbetrag von 176.15€.

Aufgabe 1

Berechne den Zahlungsbetrag eines Artikels, dessen Listenpreis mit 280€ angegeben ist und der mit 19% Mehrwertsteuer zu versehen ist. Mit dem Händler wurde ein Rabattsatz von 15% und ein Skontosatz von 1.5% vereinbart.

Automatisierung von Preisberechnungen

Für die schnelle Durchführung von Preisberechnungen soll eine Funktion mit folgendem Verhalten entwickelt werden.

<Black-Box-Diagramm><Funktionsname>zahlungsbetrag</Funktionsname><Übergaben><Übergabe><Wert>159.0</Wert><Variable>listenpreis</Variable></Übergabe><Übergabe><Wert>5.0</Wert><Variable>pRabatt</Variable></Übergabe><Übergabe><Wert>19.0</Wert><Variable>pMwSt</Variable></Übergabe><Übergabe><Wert>2.0</Wert><Variable>pSkonto</Variable></Übergabe></Übergaben><Rückgabe><Text>return</Text><Wert>176.15</Wert></Rückgabe></Black-Box-Diagramm>

Für die Funktionsdefinition könnte man einen Berechnungsausdruck entwickeln, der aus den übergebenen Größen direkt den Rückgabewert bestimmt.

def zahlungsbetrag(listenpreis, pRabatt, pMwSt, pSkonto):
    return listenpreis*(1-pRabatt/100)*(1+pMwSt/100)*(1-pSkonto/100)

Bei komplizierteren Berechnungen kann ein solcher Berechnungsausdruck recht lang werden. Der Nachteil eines langen und komplizierten Berechnungsausdrucks ist, dass er schwer zu durchschauen ist.

Zwischenspeichern von Werten

Eine Möglichkeit, die Verständlichkeit von komplizierten Berechnungen zu erhöhen, besteht darin, die Berechnung in Schritte zu zerlegen. Man benutzt dann oft Hilfsvariablen, um bereits berechnete Werte zwischenzuspeichern.

def zahlungsbetrag(listenpreis, pRabatt, pMwSt, pSkonto):
    rabatt = (listenpreis / 100) * pRabatt
    nettopreis = listenpreis - rabatt
    mehrwertsteuer = (nettopreis / 100) * pMwSt
    bruttopreis = nettopreis + mehrwertsteuer
    skonto = (bruttopreis / 100) * pSkonto
    endpreis = bruttopreis - skonto
    return endpreis

Aufgabe 2

(a) Analysiere die Funktionsdefinition. Kannst du jede Programmzeile erklären?

(b) Teste die Funktion im Online Python Tutor. Beobachte, wie hier die Variablen erzeugt und mit Werten versehen werden. Teste die Funktion auch in einer normalen Python-Umgebung.

Überschreiben von Werten

Hier eine weitere Möglichkeit, die Funktion zahlungsbetrag zu definieren.

def zahlungsbetrag(listenpreis, pRabatt, pMwSt, pSkonto):
    rabatt = (listenpreis / 100) * pRabatt
    preis = listenpreis - rabatt
    mehrwertsteuer = (preis / 100) * pMwSt
    preis = preis + mehrwertsteuer
    skonto = (preis / 100) * pSkonto
    preis = preis - skonto
    return preis

Aufgabe 3

(a) Analysiere auch diese Funktionsdefinition. Worin unterscheidet sie sich von der Definition oben? Kannst du auch hier jede Programmzeile erklären?

(b) Teste diese Funktion im Online Python Tutor. Beobachte, wie hier die Variablen erzeugt und mit Werten versehen werden. Beobachte insbesondere, wie sich der Wert der Variablen preis ändert.

Aufgabe 4

Kann man bei der Berechnung des Zahlungsbetrags die Reihenfolge der Berechnungsschritte abändern (z.B. erst Rabatt und Skonto abziehen und dann erst die Mehrwertsteuer hinzuaddieren)? Untersuche diese Frage, indem du die Funktionsdefinition aus Aufgabe 3 geeignet abänderst.

Quellen

X

Fehler melden

X

Suche