Materialien zum Unterricht

Digitalisierung von Dezimalzahlen


Rückblick auf Calliope Mini:

Erinnerst du dich an das Programm Dezimalzahl zu Binäzahl? Wenn du die Grundlagen, sowie die Inhalte der Seiten print(), input(), Selektion und Zyklen (while) beherrschst, kannst du deinen Code aus dem Open-Roberta-lab nun in Python umsetzen.
Erstelle ein neues File in deiner Programmierumgebung oder öffne Edube-Sandbox.
Speichere das Projekt unter dem Namen dezimal_binaer.py ab.


Teilaufgabe a)

Programmablaufplan

Der Programmablaufplan stellt den erweiterten Programmablaufplan zu 2. Schritt: Eine Dezimalzahl wird in eine 5 Bit breite Binärzahl umgewandelt dar. Setze den PAP in Python um!

Tipp 1
Nutze die Funktion range().
Siehe Funktionen-Übersicht
Tipp 2
Nutze die arthmetischen Operatoren.
Tipp 3
Wertzuweisung an Stelle i in einer Liste: liste[ i ] = Wert


Lösung mit while-Schleife
#Lösung zu Teilaufgabe a#
Lösung mit for-Schleife
#Lösung zu Teilaufgabe a#


Teilaufgabe b)

Das Programm ist noch fehlerhaft!
Vergleiche deinen Code mit deinem Calliope Mini Programm.
Was muss geändert werden, damit die Binärzahl in der richtigen Reihenfolge angezeigt wird?


Tipp 1
Wir müssen die Liste von Hinten nach Vorne befüllen!
Tipp 2
Der Zähler muss zu Beginn hochgesetzt werden,
da die übergebene Variable bit_anzahl ansonsten um 1 zu groß ist.
Bei Fragen dazu siehe Sequentielle Datentypen-Anmerkungen


Lösung mit while-Schleife
#Lösung zu Teilaufgabe b#
Lösung mit for-Schleife
#Lösung zu Teilaufgabe b#



Zusatz:

Ergänze dein Programm so, dass fehlerhafte Eingaben der Dezimalzahl abgefangen werden.

Hinweis: Die Anweisung exit zwingt ein Programm zum sofortigen Abbruch.


Teilaufgabe c)

Das Erstellen der Liste binaer soll in die Funktion dez_bin(bit_anzahl,dezimal) ausgelagert werden. Der Funktion werden 2 Parameter übergeben.



Tipp 1
Funktionen werden zu Beginn des Programms definiert.
Danach können sie aufgerufen werden.
Tipp 2
Die Funktion muss am Ende die Liste binaer dem Hauptprogramm übergeben.
Die Liste binaer soll mit print() ausgegeben werden.
Tipp 3
Die Abfrage der Argumente für die Funktion muss nach der Definition der Funktion erfolgen.
Tipp 4
bit_anzahl und dezimal müssen beim Aufruf der Funktion übergeben werden.




Lösung mit while-Schleife (Zusatz)
# Lösung zu Teilaufgabe c mit Zusatzaufgabe #
Lösung mit for-Schleife (Zusatz)
# Lösung zu Teilaufgabe c mit Zusatzaufgabe #



Teilaufgabe d)

Die benötigte Anzahl an Bits soll vom Programm selbstständig berechnet werden. Überlege dir eine mögliche Lösung, ggf. einen Programmablaufplan für eine Funktion, die die Bit-Anzahl bestimmt.
Ergänze anschließend deinen Programmcode aus Aufgabe b) mit der neuen Funktion bits(dezimal). Achte darauf, dass das Ergebnis der Berechnung der Bit-Anzahl dem Hauptprogramm übergeben werden muss. (return-Statement)



Tipp 1
Schlage in deinen Unterlagen nach, wie man eine Dezimalzahl in eine Binärzahl umrechnet.
Tipp 2
22 dezimal = 16 + 0 + 4 + 2 + 0
10110 binär = 1*2^4 + 0*2^3 + 1*2^2 + 1*2^1 + 0*2^0
Tipp 3
Die Dezimalzahl muss kleiner sein als 2^x.
x ist die Anzahl der benötigten Bits.
Hinweis: 2^0 ist Bit Nr. 1
Tipp 4
Programmablaufplan