Calliope mini - Spaß durch Programmieren

Entwicklungsumgebungen
Wir sind wieder auf der Hobbymesse

Halle 5, Stand D03

Luhn-Algorithmus

Ziel: Eine Zahl wird mit Hilfe des Luhn-Algorithmus auf ihre Richtigkeit überprüft.

Die Lokomotiven der Harzbahn sind mit einer sechsstelligen Nummer versehen. Die ganz rechts stehende 1 ist eine Prüfziffer, die sich aus den ersten sechs Ziffern berechnet. Die Richtigkeit der Zahlenreihe mit Prüfziffer ergibt sich aus dem Luhn-Algorithmus:

  1. Beginne von rechts die Zahlen zu addieren.
  2. Jede zweite Zahl wird verdoppelt.
  3. Falls eine verdoppelte Zahl größer als 9 ist, ziehe von der verdoppelten Zahl 9 ab.
  4. Die Zahlenreihe ist korrekt, wenn die Summe ohne Rest durch 10 teilbar ist.

Die Zahlenreihe von rechts gelesen lautet: 1 + 3 + 4 + 2 + 7 + 9 + 9

Daraus ergibt sich die Summe: 1 + 6 + 4 + 4 + 7 + 9 + 9 = 40

Die vorletzte 9 wird verdoppelt und ergibt 18. Da das größer als 9 ist, muss die 9 wieder abgezogen werden, so dass als Summand eine 9 eingeht.

Calliope mini-logische Schaltung

1. Schritt (Array erstellen und Summe der Elemente bilden)

  1. Es wird ein Array pruefzahl mit 7 Elementen erstellt
  2. Fülle jedes Element mit einer 1
  3. Bilde in einer Zählschleife die Summe aller Elemente und gibt die Summe aus

Note: 4

Die Zeile für die Summenbildung sollte so aussehen:

2. Schritt (Jedes 2. Element wird verdoppelt)

  1. In einer Verzweigung wird bei jedem zweiten Element das Doppelte des Inhalts für die Summe verwendet.
    Achtung: Da die Zählung der Array-Elemente bei 0 beginnt, hat das 2. Element die Nummer 1 und das 4. Element die Nummer 3
  2. Gib die Summe wieder aus. Sie muss 10 betragen!

Note 3

Der doppelte Inhalt könnte so addiert werden.

3. Schritt (Grenze überschritten?)

  1. Falls das Doppelte größer als 9 ist, muss vom Doppelten 9 abgezogen werden. Füge diese Anweisung an der richtigen Stelle im Programm ein. Dazu kann eine Variable doppelt verwendet werden, in der Zwischenergebniss gespeichert werden.
  2. Die Summe mit den Array-Inhalten 1 darf sich nicht ändern
  3. Teste das Programm mit neuen Array-Inhalten. Wenn man alle 1 mit 5 ersetzt, erhält man eine neue Summe. Überprüfe, ob das Programm damit korrekt arbeitet.

Note 2

4. Schritt (Zahl korrekt?)

  1. Setze die Zahl von der Harzbahn in das Array ein.
  2. Ergänze das Programm, so dass bei korrekter Zahl die LED ind grün und bei einem Fehler in rot aufleuchtet.

Note 1

5. Zusatz

  1. Das Foto zeigt eine Lok der Harzbahn. Beim Verschmieren der Gesichter (Datenschutz) ist leider auch die Prüfzahl der Loknummer verschwunden. Wie heißt die letzte Ziffer?
  2. Ganz großer Zusatz: Ändere das Programm so, dass es zu einer beliebigen 6-stelligen Zahl die Prüfzahl ausgibt.

Note 1+ und 1++

zurück