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

Übungen

Aufgabe 1: Variablen und Zuweisungen

(a) Die Werte der Variablen a und b sollen mit Hilfe geeigneter Zuweisungen ausgetauscht werden. Hier ein erster Versuch:

>>> a = 5
>>> b = 3
>>> a = b
>>> b = a
>>> a
...
>>> b
...

Begründe, warum das so nicht funktioniert. Wie könnte man es besser machen?

(b) Gegeben sind die folgenden Zuweisungen: a = b-a; a = a-b; b = a+b.

Ergänze die Zuweisungen im folgenden Ablaufprotokoll so, dass die angegebenen Variablenzustände erreicht werden.

{}
a = 5
{a -> 5}
b = 8
{a -> 5; b -> 8}
...
{a -> -3; b -> 8}
...
{a -> -3; b -> 5}
...
{a -> 8; b -> 5}

Die Zuweisungsfolge vertauscht ebenfalls die Werte der Variablen a und b. Teste, ob das auch für andere Ausgangswerte zutrifft.

(c) Was bewirkt die folgende Mehrfachzuweisung? Probiere es auch einmal aus.

(a, b) = (b, a)

Aufgabe 2: Variablenbezeichner

(a) P. hat den folgenden Python-Dialog geführt. Warum weiß man nicht so recht, was P. hier berechnet hat?

>>> a = 65
>>> b = 1.7
>>> c = a/(b*b)
>>> c
22.49134948096886

(b) Informiere dich über den sogenannten Body-Mass-Index (kurz BMI). Kannst du jetzt erklären, wofür die im Python-Dialog benutzten Variablen stehen?

(c) Führe einen Python-Dialog zur Berechnung deines BMI-Werts. Benutze aber Variablenbezeichner, die besser erklären, welche Daten mit den Variablen verwaltet werden.

(d) Welche Vorteile hat es, wenn bei der Wahl der Variablenbezeichner immer sprechende Namen benutzt?

Aufgabe 3: Eine Trace-Tabelle erstellen

Ergänze die fehlenden Werte in der Trace-Tabelle. Was wird hier berechnet?

Zuweisung zahl ergebnis zuwachs
zahl = 0 0    
ergebnis = 0 0 0  
zuwachs = 1 0 0 1
zahl = zahl + 1 1 0 1
ergebnis = ergebnis + zuwachs 1 1 1
zuwachs = zuwachs + 2      
zahl = zahl + 1      
ergebnis = ergebnis + zuwachs      
zuwachs = zuwachs + 2      
zahl = zahl + 1      
ergebnis = ergebnis + zuwachs      
zuwachs = zuwachs + 2      
zahl = zahl + 1      
ergebnis = ergebnis + zuwachs      
zuwachs = zuwachs + 2      

Aufgabe 4: Hilfsvariablen beim Anhalteweg

In der Fahrschule lernt man folgende Faustformeln zur Berechnung von Anhaltewegen:

Reaktionsweg (in m) = (Geschwindigkeit (in km/h) durch 10) mal 3
Bremsweg (in m)     = (Geschw. (in km/h) durch 10) mal (Geschw. (in km/h) durch 10)
Anhalteweg (in m)   = Reaktionsweg plus Bremsweg

Der Anhalteweg soll mit einer geeigneten Funktion berechnet werden.

<Black-Box-Diagramm><Funktionsname>anhalteweg</Funktionsname><Übergaben><Übergabe><Wert>50.0</Wert><Variable>geschwindigkeit</Variable><Typ>float</Typ></Übergabe></Übergaben><Rückgabe><Typ>float</Typ><Wert>40.0</Wert></Rückgabe></Black-Box-Diagramm>

Entwickle eine Funktionsdefinition. Hier ist es günstig, Hilfsvariablen für den Reaktionsweg und den Bremsweg einzuführen. Teste die Funktion.

Aufgabe 5: Hilfsvariablen beim Walmdach

Der Ziegelbedarf für ein Walmdach lässt sich mit einer Funktion abschätzen, die bei Übergabe der Größen des Dachs den gesamten Flächeninhalt des Dachs zurückliefert.

Walmdachs mit Länge, Breite, Höhe, Dachfirst[1]

Die Größe eines Walmdachs lässt sich dabei mit Länge, Breite, Höhe und der Länge des Dachfirsts beschreiben.

Black-Box Fläche eines Walmdachs

Hier eine erste Definition dieser Funktion:

from math import sqrt

def flaecheRechteck(a, b):
    return a*b

def flaecheDreieck(g, h):
    return (g*h)/2

def laengeHypotenuse(a, b):
    return sqrt(a*a+b*b)

def flaecheWalmdach(laenge, breite, hoehe, laengeFirst):
    return 2*flaecheDreieck(breite, laengeHypotenuse((laenge-laengeFirst)/2, hoehe)) + \
           4*flaecheDreieck((laenge-laengeFirst)/2, laengeHypotenuse(breite/2, hoehe)) + \
           2*flaecheRechteck(laengeFirst, laengeHypotenuse(breite/2, hoehe))

(a) Analysiere den Rechenausdruck in der Funktionsdefinition von flaecheWalmdach. Erkläre alle Details des Rechenausdrucks. Teste die Funktion auch.

(b) Der Rechenausdruck in der Definition der Funktion flaecheWalmdach ist recht komplex. Mit Hilfsvariablen lässt sich die Verständlichkeit der Funktionsdefinition verbessern. Ergänze die fehlenden Teile in der Funktionsdefinition von flaecheWalmdach. Teste erneut.

from math import sqrt

def flaecheRechteck(a, b):
    return a*b

def flaecheDreieck(g, h):
    return (g*h)/2

def laengeHypotenuse(a, b):
    return sqrt(a*a+b*b)

def flaecheWalmdach(laenge, breite, hoehe, laengeFirst):
    lSparrenSeitenflaeche = ...
    lSparrenHauptflaeche = ...
    aSeitenflaeche = ...
    aHauptflaeche = ...
    aGesamt = ...
    return aGesamt

Quellen

X

Fehler melden

X

Suche