Lerne und übe ABAP – Weizenkörner

Lerne und übe ABAP. In der ABAP-Übung „Grains“ implementierst Du ein ABAP-Programm, wie viele Weizenkörner sich auf einem Schachbrett befinden. Dabei beachtet man, dass die Anzahl der Körner auf jedem Feld verdoppelt wird. Es gibt 40 geniale ABAP Übungen auf exercism. Du kannst diese Übung entweder in Deinem SAP-System ausprobieren oder Dich kostenlos auf der Plattform anmelden und die Übung absolvieren. Du kannst Dir sogar Lösungen von anderen Nutzen ansehen und dadurch Deine Lösung vergleichen.

Aufgabenstellung

Berechne die Anzahl der Weizenkörner auf einem Schachbrett, wenn sich die Zahl auf jedem Feld verdoppelt.

Es war einmal ein kluger Diener, der einem Prinzen das Leben rettete. Der König versprach, alles zu bezahlen, was der Diener sich ausdenken könnte. Da der Diener wusste, dass der König Schach liebte, sagte er dem König, dass er gerne Weizenkörner hätte. Ein Korn auf dem ersten Feld eines Schachbretts, wobei sich die Anzahl der Körner auf jedem weiteren Feld verdoppelt.

Es gibt 64 Felder auf einem Schachbrett (wobei Feld 1 ein Korn hat, Feld 2 zwei Körner usw.).

Schreibe einen Code, der anzeigt:

  • wie viele Körner sich auf einem bestimmten Feld befinden, und
  • die Gesamtzahl der Körner auf dem Schachbrett

Hast Du die Tests bestanden und den Code sauber geschrieben? Wenn Du möchtest, kannst Du folgende zusätzliche Dinge ausprobieren:

  • Optimiere für Geschwindigkeit.
  • Optimiere für die Lesbarkeit.

Bitte teile uns dann Deine Gedanken in einem Kommentar zu diesem Beitrag mit. Wurde der Code durch dieses Experiment besser? Schlechter? Hast Du etwas daraus gelernt?

Beispiel Programmierung

CLASS zcl_grains DEFINITION
  PUBLIC
  FINAL
  CREATE PUBLIC .

  PUBLIC SECTION.
    TYPES type_result TYPE p LENGTH 16 DECIMALS 0.
    METHODS square
      IMPORTING
        input         TYPE i
      RETURNING
        VALUE(result) TYPE type_result
      RAISING
        cx_parameter_invalid.
    METHODS total
      RETURNING
        VALUE(result) TYPE type_result
      RAISING
        cx_parameter_invalid.
  PROTECTED SECTION.
  PRIVATE SECTION.

ENDCLASS.


CLASS zcl_grains IMPLEMENTATION.

  METHOD square.
    " add solution here
    IF input < 1 OR input > 64.
      RAISE exception type cx_parameter_invalid.
    ELSE.
      result = 2 ** ( input - 1 ).
    ENDIF.
  ENDMETHOD.
  
  METHOD total.
    " add solution here
    result = 2 ** 64 - 1.
  ENDMETHOD.

ENDCLASS.

Erklärung

Die Methode square berechnet die Anzahl der Weizenkörner auf einem bestimmten Feld eines Schachbretts (1 – 64). Als Eingabe wird eine ganze Zahl (input) verwendet, die die Nummer des Feldes angibt. Wenn der Eingabewert außerhalb des gültigen Bereichs liegt (kleiner als 1 oder größer als 64), wird eine Ausnahme (cx_parameter_invalid) ausgelöst. Andernfalls wird das Ergebnis durch Hochzählen von 2 (input – 1) berechnet.

Die Methode total berechnet die Gesamtzahl der Weizenkörner auf dem Schachbrett. Es gibt keine Eingabeparameter und das Ergebnis ist die berechnete Anzahl der Weizenkörner auf allen 64 Feldern durch Berechnung von 2 hoch 64 und anschließender Subtraktion von 1.

Über den Autor

Andreas Geiger

Mein Name ist Andreas Geiger und ich bin ein erfahrener Senior SAP Berater. Mit mehr als 10 Jahren Berufserfahrung habe ich mehrere SAP-Projekte erfolgreich abgeschlossen und umfangreiche Kenntnisse in verschiedenen Bereichen wie SAP FI, SAP MM und ABAP erworben. Nun möchte ich mein Wissen mit Dir teilen, um Dir einen Mehrwert zu bieten und Dich bei Deiner täglichen Arbeit mit dem SAP-System zu unterstützen.

Mehr zu ERP UP

ERP UP unterstützen

Wenn Du mit ERP UP zufrieden bist, kannst Du mich gerne unterstützen. Dabei gibt es unzählige Möglichkeiten, wie Du mich einfach und schnell unterstützen kannst. Wie Du genau ERP UP unterstützen kannst, erfährst Du hier. Vielen Dank.

Schreibe einen Kommentar