Beispiel - Geometrische Berechnungen
Oberfläche von Lego-Bausteinen
Lego-Bausteine gibt es in verschiedenen Größen und Ausführungen.
Bei der Herstellung dieser Bausteine wird vermutlich der Materialverbrauch genau abgeschätzt. Wir werden die Berechnung des Materialverbrauchs hier in vereinfachter Form durchspielen.
Die folgende Abbildung zeigt die Ausmaße von zwei verschiedenen Legosteinen.
Wir gehen im Folgenden davon aus, dass Legosteine im Innern - bis auf die Verlängerung der Noppen - hohl sind. Das stimmt nicht ganz, da es Stege zur Verstärkung gibt. Zudem gehen wir davon aus, dass alle Wände eine Dicke von 1.2 mm haben.
Ein Legostein kann dann vereinfacht durch einen innen hohlen Quader (ohne untere Seite) und innen hohle Zylinder (ohne obere und untere Seite) dargestellt werden.
Den Materialverbrauch kann man abschätzen, indem man die Oberflächen der Bestandteile bestimmt und sie mit der Wanddicke multipliziert.
Aufgabe 1
Schätze den Materialverbrauch beim oben gezeigten roten und gelben Legostein ab.
Programm zur Bestimmung des Materialverbrauchs
Mit dem folgenden Programm kannst du den Materialverbrauch von Legosteinen automatisiert bestimmen:
from math import pi
# Berechnungen für den roten Legostein
laenge = 15.8
breite = 7.8
hoehe = 3.2
anzahlNoppen = 2
oberflaecheQuader = laenge*breite + 2*laenge*hoehe + 2*breite*hoehe
oberflaecheZylinder = 2*pi*2.5*(hoehe+1.7)
oberflaecheGesamt = oberflaecheQuader + oberflaecheZylinder*anzahlNoppen
materialverbrauchLegostein = oberflaecheGesamt * 1.2
print('Materialverbrauch beim roten Legostein:')
print(materialverbrauchLegostein)
# Berechnungen für den gelben Legostein
# ...
Aufgabe 2
(a) Analysiere zunächst das Programm. Kannst du alle Anweisungen erklären?
(b) Ergänze das Programm so, dass auch der Materialverbrauch zum gelben Legostein berechnet wird.
Datenverarbeitung mit Funktionen
Das Programm oben benutzt eine Sequenz von Anweisungen zur Berechnung des gesuchten Materialverbrauchs.
Wir schlagen jetzt einen anderen Weg zur Materialberechnung ein und benutzen hierzu eine Funktion. Der folgende Quelltext zeigt, wie man das machen kann:
from math import pi
# Funktionsdefinition
def materialverbrauchLegostein(laenge, breite, hoehe, anzahlNoppen):
oberflaecheQuader = laenge*breite + 2*laenge*hoehe + 2*breite*hoehe
oberflaecheZylinder = 2*pi*2.5*(hoehe+1.7)
oberflaecheGesamt = oberflaecheQuader + oberflaecheZylinder*anzahlNoppen
ergebnis = oberflaecheGesamt * 1.2
return ergebnis
# Funktionsaufrufe
materialRoterBaustein = materialverbrauchLegostein(15.8, 7.8, 3.2, 2)
print('Materialverbrauch beim roten Legostein:', materialRoterBaustein)
materialGelberBaustein = materialverbrauchLegostein(7.8, 7.8, 9.6, 1)
print('Materialverbrauch beim gelben Legostein:', materialGelberBaustein)
Aufgabe 3
(a) Teste das neue Programm. Du solltest dann die gesuchten Werte als Ausgaben im Ausführfenster erhalten.
(b) Bestimme zunächst die Maße eines Legobausteins mit 8x2 Noppen. Verwende hierzu die Informationen in der Abbilddung oben. Ergänze anschließend das Programm (mit Funktion) so, dass auch für diesen Baustein der Materialbedarf bestimmt wird.
(c) Erkennst du schon die Vorteile, die sich ergeben, wenn man Datenverarbeitung mit Funktionen beschreibt?
Aufgabe 4
(a) Bei der Berechnung des Materialverbrauchs von Legosteinen wird die Oberfläche eines Quaders (ohne untere Seite) und eines Zylinders (ohne Seitenteile) bestimmt. Beide Teilberechnungen lassen sich auch mit Funktionen beschreiben. Ergänze entsprechend das folgende Testprogramm.
from math import pi
# Funktionsdefinitionen
def oberflaecheQuaderOhneUnterseite(laenge, breite, hoehe):
ergebnis = ...
return ergebnis
def ...
# Funktionsaufrufe
print(oberflaecheQuaderOhneUnterseite(15.8, 7.8, 3.2))
print(oberflaecheZylinderOhneSeiten(2.5, 4.9))
(b) Die beiden Hilfsfunktionen kann man jetzt bei der Definition der Funktion zur Materialberechnung wie folgt benutzen.
from math import pi
# Funktionsdefinitionen
def oberflaecheQuaderOhneUnterseite(laenge, breite, hoehe):
...
def oberflaecheZylinderOhneSeiten(radius, hoehe):
...
def materialverbrauchLegostein(laenge, breite, hoehe, anzahlNoppen):
oberflaecheGesamt = \
oberflaecheQuaderOhneUnterseite(laenge, breite, hoehe) + \
oberflaecheZylinderOhneSeiten(2.5, hoehe+1.7)*anzahlNoppen
ergebnis = oberflaecheGesamt * 1.2
return ergebnis
# Funktionsaufrufe
materialRoterBaustein = materialverbrauchLegostein(15.8, 7.8, 3.2, 2)
print('Materialverbrauch beim roten Legostein:', materialRoterBaustein)
materialGelberBaustein = materialverbrauchLegostein(7.8, 7.8, 9.6, 1)
print('Materialverbrauch beim gelben Legostein:', materialGelberBaustein)
Ergänze die fehlenden Teile (siehe (a)) und teste das Programm.
Kannst du auch die neue Definition der Funktion materialverbrauchLegostein
erklären?
(c) Für Mutige: Bei der Berechnung der Oberfläche eines Quaders muss man Flächeninhalte von Rechtecken bestimmen. Bei der Berechnung des Zylindermantels (Oberfäche ohne Seitenteile) muss man den Umfang eines Kreises bestimmen. Entwickle eigene Funktionsdefinitionen für diese Berechnungen und benutze sie bei den Oberflächenberechnungen.
Quellen
- [1]: Legosteine - Urheber: Alan Chia - Lizenz: Creative Commons BY-SA 2.0
- [2]: Legosteine-Abmessungen - Urheber: Cmglee - Lizenz: Creative Commons BY-SA 3.0
- [3]: Legostein (vereinfachte Struktur) - Urheber: KB - Lizenz: Inf-Schule.de