Übungen
Aufgabe 1: Abläufe anhand von Flussdiagrammen erklären
Welche der folgenden Funktionen liefern für alle möglichen Zahlen vom Datentyp float
gleiche Ergebnisse?
Begründe mit Hilfe von Flussdiagrammen.
(a) Funktion h1
def h1(x):
if x < 0:
erg = 0
else:
erg = 1
return erg
(b) Funktion h2
def h2(x):
if x > 0:
erg = 1
if x < 0:
erg = 0
return erg
(c) Funktion h3
def h3(x):
erg = 1
if x < 0:
erg = 0
return erg
(d) Funktion h4
def h4(x):
if x == 0:
erg = 0
else:
if x > 0:
erg = 1
else:
erg = 0
return erg
Aufgabe 2: Modellierung und Analyse von Fallunterscheidungen
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.
Mit dem folgenden Programm soll der Body-Mass-Index für beliebige Übergabewerte berechnet werden. Als Ergebnis soll eine Rückmeldung über den aktuellen Körperzustand zurückgegeben werden.
def bmi(groesse, gewicht):
bmiwert = gewicht / (groesse * groesse)
if bmiwert < 19:
ergebnis = 'Untergewicht'
else:
...
return ergebnis
(a) Ergänze die fehlenden Teile. Teste die Funktion.
(b) Die Funktion verarbeitet auch unsinnige Werte wie z.B. ein Gewicht von 500 kg bei einer Größe von -2.5 m.
Ergänze Fallunterscheidungen, mit denen man unsinnige Übergabewerte abfängt. Für solche Werte soll als Ergebnis die
Zeichenkette ?
zurückgegeben werden.
Aufgabe 3: Modellierung und Implementierung von Fallunterscheidungen
Betrachte zwei Punkte (x1|y1)
und (x2|y2)
im Koordinatensystem.
Die beiden Punkte sollen die gegenüberliegenden Ecken eines Rechtecks bilden.
Entwickle eine Funktion, die aus den Koordinaten der beiden Punkte den Flächeninhalt des aufgespannten Rechtecks berechnet.
Beachte, dass (x1|y1)
je nach den gewählten Zahlen auch eine andere Ecke (z.B. die rechte obere)
des Rechtecks sein kann. Berücksichtige alle möglichen Fälle.
Aufgabe 4: Kreise schneiden
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.