i

Übungen

Aufgabe 1: zweiseitige und einseitige Fallunterscheidungen

Beschreibe die Struktur der folgenden Python-Fallunterscheidungen jeweils mit einem Struktogramm. Welche Ausgaben werden jeweils gemacht, wenn der Benutzer eine positive Zahl / negative Zahl / die Zahl 0 eingibt? Teste deine Ergebnisse.

(a)

# Eingabe
konto = float(input('Kontostand: '))
# Verarbeitung und Ausgabe
if konto < 0:
    print('Der Kontostand ist negativ!')
    print('Bitte die Schulden begleichen!')
else:
    print('Alles ok!')

(b)

# Eingabe
konto = float(input('Kontostand: '))
# Verarbeitung und Ausgabe
if konto < 0:
    print('Der Kontostand ist negativ!')
    print('Du hast Schulden!')
if konto > 0:
    print('Der Kontostand ist positiv!')
    print('Eine Auszahlung ist möglich!')

(c)

# Eingabe
konto = float(input('Kontostand: '))
# Verarbeitung und Ausgabe
if konto > 0:
    print('Der Kontostand ist positiv!')
else:
    if konto < 0:
        print('Der Kontostand ist negativ!')
    else:
        print('Der Kontostand ist gleich Null!')

Aufgabe 2: Modellierung und Analyse von Fallunterscheidungen

Weißt du, was der Body-Mass-Index ist? Der Body-Mass-Index (kurz: BMI) ist eine Zahl, die darüber Auskunft gibt, ob man Normalgewicht hat. Sie berechnet sich so: Gewicht in kg geteilt durch das Quadrat der Körpergröße in m!. Wenn man also 1.80 m groß ist und ein Gewicht von 75 kg hat, dann erhält man einen BMI von etwa 23. Wenn die so berechnete Zahl zwischen 19 und 26 liegt, dann hat man Normalgewicht. Wenn sie kleiner als 19 / größer als 26 ist, dann hat man Untergewicht / Übergewicht.

(a) Mit dem folgenden Programm soll der Body-Mass-Index für beliebige (sinnvolle) Eingabewerte berechnet werden. Zusätzlich soll der Benutzer eine Rückmeldung über den aktuellen Körperzustand erhalten. Ergänze die fehlenden Teile.

# Eingabe
gewicht = float(input("Gewicht in kg: "))
groesse = float(input("Groesse im m : "))

# Verarbeitung
bmi = gewicht / (groesse * groesse)

# Ausgabe
print("Body-Mass-Index: ", bmi)
if bmi < 19:
    print(...)
else:
    ...

(b) Die folgenden alternativen Programmausschnitte leisten nicht das Gewünschte. Warum? Verdeutliche dies mit Hilfe von Flussdiagrammen und geeigneten Beispielen.

Version 1:

# Eingabe
...
# Verarbeitung
...
# Ausgabe
...
if bmi < 19:
    print("Du hast Untergewicht!")
if bmi > 26:
    print("Du hast Uebergewicht!")
print("Du hast Normalgewicht!")

Version 2:

# Eingabe
...
# Verarbeitung
...
# Ausgabe
...
if bmi < 19:
    print("Du hast Untergewicht!")
if bmi <= 26:
    print("Du hast Normalgewicht!")
else:
    print("Du hast Uebergewicht!")

Aufgabe 3: Modellierung und Implementierung von Fallunterscheidungen

Mit Hilfe der Variablen a, b und c werden drei Zahlen verwaltet. Mit Hilfe eines Programms soll entschieden werden, ob die drei Zahlen verschieden sind. Entwickle erst ein geeignetes Struktogramm und anschließend ein hierzu passendes Programm.

Aufgabe 4: Modellierung und Implementierung von Fallunterscheidungen

Im letzten Kapitel hast du vielleicht die Übung zur Bestimmung von Steigung und y-Achsenabschnitt einer Geraden ausprobiert. Dabei ist bestimmt ein Programm wie dieses herausgekommen:

# Eingabe
x1 = float(input("Punkt 1 x: "))
y1 = float(input("Punkt 1 y: "))
x2 = float(input("Punkt 2 x: "))
y2 = float(input("Punkt 2 y: "))

# Verarbeitung
m = (y2-y1) / (x2-x1)
b = y1 - m*x1

# Ausgabe
print ("Steigung m = ", m)
print ("y-Achsenabschnitt b = ", b)

(a) Teste das Programm mit den Punkten P(1|5) und Q(1|2). Warum gibt es eine Fehlermeldung? Kannst Du mit einer Fallunterscheidung den Fehler verhindern?

(b) Für Experten: Gib die Geradengleichung in der Form y=m*x+b aus. Kannst du mit Fallunterscheidungen "Sonderfälle" behandeln?

Beispiele:

  • m=1: y= x+b
  • m=-1: y= -x+b
  • m=0: y= b
  • b=0: y= m*x
  • usw.

Aufgabe 5: Modellierung und Implementierung von Fallunterscheidungen

Ein für die Robotik wichtiges Problem besteht darin, zu überprüfen, ob sich zwei Kreise schneiden oder nicht. Gegeben sind also zwei Kreise mit Radien r1 und r2 sowie die Koordinaten ihrer Mittelpunkte x1, y1, x2, y2.

(a) Entwickle ein Verfahren zur Lösung des Kreisüberschneidungsproblems. Beschreibe es mit einem Struktogramm.

(b) Entwickle ein zum Verfahren passendes Python-Programm. Teste es mit verschiedenen Kreisdaten.

Suche

v
6.3.2.5.5
inf-schule.de/imperative-programmierung/python/konzepte/entscheidungen/uebungen
inf-schule.de/6.3.2.5.5
inf-schule.de/@/page/gE9jpIZ9NwtRWKPS

Rückmeldung geben