Nachricht für neue Nutzer.
Nachricht für engagierte Nutzer.
Lernpfad Know-How-Computer/KHC Programmieraufgaben Teil 1: Unterschied zwischen den Versionen
Aus ZUM-Unterrichten
KKeine Bearbeitungszusammenfassung Markierung: Quelltext-Bearbeitung 2017 |
KKeine Bearbeitungszusammenfassung Markierung: Quelltext-Bearbeitung 2017 |
||
| Zeile 1: | Zeile 1: | ||
__NOTOC__ | __NOTOC__ | ||
{{Box|Programmieraufgaben Teil 1|In den bisherigen Kapiteln hast du alles erfahren, was du zum Programmieren des Know-How-Computers wissen musst. Hier kommen die ersten Programmieraufgaben für dich. | {{Box|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:<br> | ||
* 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. | |||
* Am Anfang ist der Hauptspeicher | |||
* 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.|Lernpfad}} | * 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.|Lernpfad}} | ||
Version vom 21. Mai 2025, 13:24 Uhr
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 ende_solange
; 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
ende_wenn
verringere x um 1
ende_solange
; 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.
