• Programmierung unplugged
  • verybusybeaver
  • 01.06.2023
  • Informatik
Um die Lizenzinformationen zu sehen, klicken Sie bitte den gewünschten Inhalt an.

Von der Idee zum Pro­gramm

Die meis­ten Pro­gram­me wer­den nicht ein­fach drauf­los ge­schrie­ben, son­dern sind das Er­geb­nis eines lan­gen, so­wohl kre­a­ti­ven als auch sorg­fäl­tig do­ku­men­tier­ten Ent­wick­lungs­pro­zes­ses. Am Bei­spiel der Bi­när­zah­len wer­den wir heute die­ses Prin­zip nach­stel­len.

Binär-​ und De­zi­mal­zah­len

Bi­när­zah­len ver­wen­den nur die Sym­bo­le 0 und 1, um Ganz­zah­len zu re­prä­sen­tie­ren. Dabei wird als Index an­ge­ge­ben, ob es sich um eine Bi­när­zahl (12) oder De­zi­mal­zahl (110) han­delt.



Für die Um­re­chung in eine De­zi­mal­zahl wird die letz­te Stel­le mit 1, die vor­letz­te mit 2, die vor­vor­letz­te Stel­le mit 4 mal­ge­nom­men und dann ad­diert (kurz: n-te Stel­le von hin­ten mit 2n-1 mal­neh­men)



Al­ter­na­tiv kannst Du auch eine Ta­bel­le ver­wen­den (siehe rechts).

Zu­ord­nung bin/dez



010 = 0002

110 = 0012

210 = 0102

310 = 0112

410 = 1002

510 = 1012

610 = 1102

710 = 1112

Bei­spie­le:

112 = 1 * 2 + 1 * 1 = 310

1102 = 0 * 1 + 1 * 2 + 1 * 4 = 610

Vor­über­le­gun­gen / Ent­wurf

1
Erste Über­le­gung: Wie kön­nen Werte zur Um­rech­nung ein- und nach der Um­re­chung aus­ge­ge­ben wer­den.
  • Die Ein­ga­be wer­den wir ver­ein­facht über die Be­le­gung einer Va­ri­a­blen vor Pro­gramm­start vor­neh­men (wenn Du schnell mit der Haupt­auf­ga­be fer­tig bist, wäre das Er­stel­len einer Tas­ter­ba­sier­ten Ein­ga­be eine loh­nen­de Auf­ga­be um zu zei­gen, was Du kannst).
  • Die Aus­ga­be soll über LEDs ge­löst wer­den, die der Reihe nach ab­ge­le­sen wer­den (siehe unten).
  • Ent­wirf einen mög­li­chen Arduino-​Aufbau, der das ziel­ge­rich­te­te Ein- und Aus­schal­ten von 4 LEDs er­mög­licht.
Co­die­rung der Aus­ga­be 1011

Ver­glei­che Dei­nen Ent­wurf mit die­sem Vor­schlag. Prüfe, ob Dein Ent­wurf die fol­gen­den Kri­te­ri­en er­füllt:

* 4 LEDs ver­baut

* 4 Wi­der­stän­de an den LEDs ver­baut

* Jede LED ist an einem se­pa­ra­ten PIN an­ge­schlos­sen, damit sie se­pa­rat an­steu­er­bar ist

* Alle Strom­krei­se tref­fen sich auf dem Bread­board und wer­den ge­mein­sam zum GND-​PIN ge­schlos­sen

* Alle Strom­krei­se sind ge­schlos­sen



Hin­weis: Die Schal­tung muss nicht ge­nau­so aus­se­hen wie auf dem Bild, so­lan­ge sie die ge­nann­ten Kri­te­ri­en er­füllt.

Al­go­rith­mus

Bevor Du ver­suchst, ein Pro­gramm zu schrei­ben, soll­test Du einen Plan für den Ab­lauf ma­chen und die­sen tes­ten. Es gibt ver­schie­de­ne Wege, um De­zi­mal­zah­len in Bi­när­zah­len um­zu­wan­deln; zwei davon stel­le ich Dir kurz vor:

Um­wand­lung durch
Einzelfall-​Identifikation

Prüfe, ob die um­zu­wan­deln­de Zahl 0 ist, 1 ist, 2 ist, ... und hin­ter­le­ge für jede denk­ba­re De­zi­mal­zahl bis 7 die pas­sen­den HIGH/LOW-​Werte für die LED-​Pins.



Ach­tung: Das ist zwar ein­fach, aber nicht gut zu er­wei­tern.

Um­wand­lung durch
Di­vi­si­on mit Rest

Teile die Ein­ga­be durch 2; der Di­vi­si­ons­rest ist die letz­te Stel­le der Bi­när­zahl. Das ganz­zah­li­ge Er­geb­nis der Di­vi­si­on ist die neue Zahl. Diese wird durch 2 ge­teilt, der Di­vi­si­ons­rest gibt die vor­letz­te Stel­le der Bi­när­zahl an (usw., bis der ganz­zah­li­ge Rest 0 ist).



Bei­spiel:

5 : 2 = 2 Rest 1

2 : 2 = 1 Rest 0

1 : 2 = 0 Rest 1

-> Er­geb­nis: 1012

2
Er­stel­le zu­nächst als Text einen Al­go­rith­mus zur Um­wand­lung einer De­zi­mal­zahl zwi­schen 0 und 7 in eine Bi­när­zahl. Das Er­geb­nis soll über die ge­plan­te Arduino-​Schaltung aus­ge­ge­ben wer­den.
  • Be­gin­ne mit SPEI­CHE­RE Zahl ALS Ein­ga­be.
  • Ver­wen­de aus­schließ­lich die fol­gen­den Text­bau­stei­ne: WENN (Be­din­gung) DANN An­wei­sung (ggf: AN­SONS­TEN An­wei­sung), MERKE Wert ALS Ein­ga­be, ist gleich / ist un­gleich, Zah­len, Re­chen­ope­ra­ti­o­nen \+ - * DIV MOD, PIN Num­mer, STROM EIN/AUS AN Pin..., WIE­DER­HO­LE BIS / n-mal
  • Hin­weis: MOD lie­fert den Di­vi­si­ons­rest (5 MOD 2 = 1)
  • Hin­weis: DIV er­setzt das Ge­teilt­zei­chen, gibt aber nur den Ganz­zah­li­gen An­teil des Er­geb­nis­ses an (5 DIV 2 = 2)
  • Ach­tung: Nicht alle diese Bau­stei­ne wer­den not­wen­di­ger­wei­se be­nö­tigt!

Tes­ten / Si­mu­lie­ren des Al­go­rith­mus

Jetzt soll ge­tes­tet wer­den. Dabei über­neh­men Mit­schü­ler*innen die Rol­len der be­tei­lig­ten Kom­po­nen­ten (der LEDs, der Re­chen­ein­heit, der Kon­troll­ein­heit, der Va­ri­a­blen).



Rol­len­be­schrei­bun­gen

Kon­troll­ein­heit

Du liest Schritt für Schritt die An­wei­sun­gen vor - NICHT IN­TER­PRE­TIE­REN, sonst wer­den Feh­ler nicht ge­fun­den.

Wenn Du eine Rech­nung durch­füh­ren oder eine Be­din­gung über­prü­fen las­sen möch­test, be­auf­tragst Du die Re­chen­ein­heit, das Mer­ken/Wie­der­ge­ben von Zah­len­wer­ten über­nimmt die Va­ri­a­ble.

Re­chen­ein­heit

Du wirst von der Kon­troll­ein­heit be­auf­tragt, ent­we­der Rech­nun­gen durch­zu­füh­ren (dann mel­dest Du das Er­geb­nis zu­rück) oder Be­din­gun­gen zu prü­fen (dann melde WAHR oder FALSCH zu­rück).

Be­ach­te: Es ist wich­tig, dass Du genau das Ge­frag­te und NUR das Ge­frag­te lie­ferst.

LED (vier­mal)

Du bil­dest mit den an­de­ren LEDs eine Aus­ga­be­rei­he. Es ist wich­tig, dass Du Deine PIN-​Nummer kennst. Wenn an Dei­nem PIN der Strom ein­ge­schal­tet wird, stehst Du auf und bleibst ste­hen, bis der Strom an Dei­nem PIN wie­der aus­ge­schal­tet wird. Du star­test im Zu­stand kein Strom.

Va­ri­a­ble Ein­ga­be

Du merkst Dir Zah­len­wer­te, die Dir die Kon­troll­ein­heit über­gibt. Wenn Kon­troll­ein­heit oder Re­chen­ein­heit einen Va­ri­a­blen­wert ab­fra­gen, gibst Du ihn an.

Be­ach­te: Auch wenn die Va­ri­a­ble Ein­ga­be heißt, kann sich der Wert im Ver­lauf der Aus­füh­rung des Al­go­rith­mus än­dern.

Test­lauf

3
Spielt den Pro­gramm­ab­lauf für ver­schie­de­ne Start­wer­te der Va­ri­a­blen Ein­ga­be durch und prüft, ob das Er­geb­nis kor­rekt ist. Ggf. muss die An­lei­tung an­ge­passt wer­den. Wech­selt euch fair ab, wenn es um die ge­tes­te­ten Pro­gram­me geht, damit jeder sein Er­geb­nis prü­fen und ggf. ver­bes­sern kann.
4
Star­tet ggf. wei­te­re Test­läu­fe, bis die meis­ten Al­go­rith­men funk­ti­o­nie­ren.
5
Falls Du früh fer­tig bist: Über­le­ge, wie Dein Pro­gramm für 4 statt 3 Ausgabe-​LEDs ge­än­dert wer­den müss­te und wie sich das auf mög­li­che Ein­ga­ben aus­wirkt.

End­lich: Um­set­zung

6
Setze Dei­nen Al­go­rith­mus als Arduino-​Programm um. Wenn Du sehr schnell bist, kannst Du als Er­wei­te­rung eine tas­ter­ba­sier­te Ein­ga­be pla­nen und um­set­zen.
x