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

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

rechteck mit den gegenüberliegenden Ecken (x1, y1) und (x2, y2)

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.

X

Fehler melden

X

Suche