Nachricht für neue Nutzer.
Nachricht für engagierte Nutzer.

Lernpfad Know-How-Computer/KHC Programmieraufgaben Teil 1

Aus ZUM-Unterrichten

Programmieraufgaben Teil 1

In den bisherigen Kapiteln hast du alles erfahren, was du zum Programmieren des Know-How-Computers wissen musst. Jetzt wird es Zeit, dass du selbst aktiv wirst! Hier kommen die ersten Programmieraufgaben für dich. Bei allen Übungsaufgaben gelten folgende Grundvoraussetzungen:

  • Am Anfang ist der Hauptspeicher standardmäßig leer, das heißt, jede Zelle enthält von vornherein erst mal den Wert 0, solange nicht etwas anderes hineingeschrieben wird.
  • Nach dem Programmende darf der Datenwert, der dann in einer Speicherzelle steht, von dem ursprünglichen Wert abweichen, der vor der Programmausführung in der Zelle stand.


1. Aufgabe „x + y = ?”

Berechne die Summe zweier Zahlen x und y.

Vor dem Programmstart steht
in Speicherzelle 7 ein beliebiger Wert x, z.B. der Wert 5 und
in Speicherzelle 8 ein beliebiger Wert y, z.B. der Wert 4.
Nach dem Programmende steht
in Speicherzelle 7 die Summe x + y, im Beispiel also der Wert 9.
Erweiterung
Sorge zusätzlich dafür, dass am Ende in Speicherstelle 8 wieder der ursprüngliche Wert y steht.
Das Beispielprogramm „Von x auf 0“ kann als Grundlage für dieses Programm verwendet werden.

Pseudocode für das Programm „x + y = ?”:

solange nicht x = 0 wiederhole
  erhöhe y um 1
  verringere x um 1
solange_ende
; Lösung zur 1. Aufgabe: „x + y = ?”
1: isz 8;  Ist der Inhalt von Speicherzelle M(8) gleich 0? 
2: jmp 4;  Nein: weiter mit Befehl in Speicherzelle M(4)
3: stp  ;  Ja: Fertig
4: inc 7;  Erhöhe Inhalt von Speicherzelle M(7) um 1
5: dec 8;  Verringere Inhalt von Speicherzelle M(8) um 1
6: jmp 1;  Zurück zu Befehl in Speicherzelle M(1)
7: 5    ;  Startwert in Speicherzelle M(7) ist der Wert x=5
8: 4    ;  Startwert in Speicherzelle M(8) ist der Wert y=4 

2. Aufgabe „x - y = ? für x >= y”

Berechne die Differenz zweier Zahlen x und y, wobei vorausgesetzt wird, dass y nicht größer als x ist, das Ergebnis also nicht negativ werden kann.

Vor dem Programmstart steht
in Speicherzelle 7 ein beliebiger Wert x, z.B. der Wert 5 und
in Speicherzelle 8 ein beliebiger Wert y, der aber nicht größer als x sein darf, hier z.B. der Wert 3.
Nach dem Programmende steht
in Speicherzelle 7 die Differenz x - y, im Beispiel also der Wert 2.
Das Programm aus der 1. Aufgabe „x + y =?“ kann als Grundlage für dieses Programm verwendet werden.

3. Aufgabe „Ist x ungerade?”

Entscheide, ob der Wert x in Speicherzelle 12 gerade oder ungerade ist.

Vor dem Programmstart steht
in Speicherzelle 12 ein beliebiger Wert x, z.B. der Wert 3 und
in Speicherzelle 13 der Wert 0.
Nach dem Programmende steht
in Speicherzelle 13 der Wert 1, wenn der ursprüngliche Wert x eine ungerade Zahl war.
Wenn x gerade war, steht in Speicherzelle 13 weiterhin der Initialisierungswert 0.
Im Beispiel steht also am Ende in Speicherstelle 13 eine 1.
Lösungsidee: Während x schrittweise bis auf 0 heruntergezählt wird, wird der Wert in y ebenso schrittweise zwischen 0 und 1 hin- und hergeschaltet.

Pseudocode für das Programm „Ist x ungerade?”:

solange nicht x = 0 wiederhole
  wenn y = 0 
    dann erhöhe y um 1
    sonst verringere y um 1
  wenn_ende
  verringere x um 1
solange_ende
; Lösung zur 3. Aufgabe: „Ist x ungerade?”
1: isz 12 ; x=0?
2: jmp 4  ; nein: weiter bei 4
3: stp    ; ja:   fertig
4: dec 12 
5: isz 13 ; y=0?
6: jmp 10 ; nein: weiter bei 10
7: jmp 8  ; ja: weiter bei 8
8: inc 13        
9: jmp 1
10: dec 13
11: jmp 1
12: 5		 
13: 0 

4. Aufgabe „Ist x = y ?”

Entscheide, ob die Werte x und y, die in zwei verschiedenen Speicherzellen stehen, gleich sind oder nicht.

Vor dem Programmstart steht
in Speicherzelle 21 ein beliebiger Wert x, z.B. der Wert 5 und
in Speicherzelle 22 ein beliebiger Wert y, z.B. der Wert 3.
Nach dem Programmende steht
in Speicherzelle 23 der Wert 1, wenn die ursprünglichen Werte x und y gleich waren, andernfalls steht
in Speicherzelle 23 weiterhin der Initialisierungswert 0.