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 15: | Zeile 15: | ||
: Sorge zusätzlich dafür, dass am Ende in Speicherstelle 8 wieder der ursprüngliche Wert y steht.|3=Üben}} | : Sorge zusätzlich dafür, dass am Ende in Speicherstelle 8 wieder der ursprüngliche Wert y steht.|3=Üben}} | ||
{{Lösung versteckt|Das Beispielprogramm „Von x auf 0“ kann als Grundlage für dieses Programm verwendet werden.|Tipp|Tipp verstecken}} | {{Lösung versteckt|Das Beispielprogramm „Von x auf 0“ kann als Grundlage für dieses Programm verwendet werden.|Tipp 1 anzeigen|Tipp 1 verstecken}} | ||
{{Lösung versteckt|1=Pseudocode für das Programm „x + y = ?”: | |||
<pre> | |||
solange nicht x = 0 wiederhole | |||
erhöhe y um 1 | |||
verringere x um 1 | |||
ende_solange | |||
</pre> | |||
|2=Tipp 2 anzeigen|3=Tipp 2 verstecken}} | |||
{{Lösung versteckt|<pre>; Lösung zur 1. Aufgabe: „x + y = ?” | {{Lösung versteckt|1=<pre>; Lösung zur 1. Aufgabe: „x + y = ?” | ||
1: isz 8; Ist der Inhalt von Speicherzelle M(8) gleich 0? | 1: isz 8; Ist der Inhalt von Speicherzelle M(8) gleich 0? | ||
2: jmp 4; Nein: weiter mit Befehl in Speicherzelle M(4) | 2: jmp 4; Nein: weiter mit Befehl in Speicherzelle M(4) | ||
| Zeile 27: | Zeile 34: | ||
6: jmp 1; Zurück zu Befehl in Speicherzelle M(1) | 6: jmp 1; Zurück zu Befehl in Speicherzelle M(1) | ||
7: 5 ; Startwert in Speicherzelle M(7) ist der Wert x=5 | 7: 5 ; Startwert in Speicherzelle M(7) ist der Wert x=5 | ||
8: 4 ; Startwert in Speicherzelle M(8) ist der Wert y=4 </pre>}} | 8: 4 ; Startwert in Speicherzelle M(8) ist der Wert y=4 </pre> | ||
|2=Lösung anzeigen|3=Lösung verstecken}} | |||
{{Box|1=2. Aufgabe „x - y = ? für x >= y”|2=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. | {{Box|1=2. Aufgabe „x - y = ? für x >= y”|2=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. | ||
| Zeile 35: | Zeile 43: | ||
: in Speicherzelle 7 die Differenz x - y, im Beispiel also der Wert 2.|3=Üben}} | : in Speicherzelle 7 die Differenz x - y, im Beispiel also der Wert 2.|3=Üben}} | ||
{{Lösung versteckt|1=Das Programm aus der 1. Aufgabe „x + y =?“ kann als Grundlage für dieses Programm verwendet werden.|2=Tipp|3=Tipp verstecken}} | {{Lösung versteckt|1=Das Programm aus der 1. Aufgabe „x + y =?“ kann als Grundlage für dieses Programm verwendet werden.|2=Tipp anzeigen|3=Tipp verstecken}} | ||
{{Box|1=3. Aufgabe „Ist x ungerade?”|2=Entscheide, ob der Wert x in Speicherzelle 12 gerade oder ungerade ist. | {{Box|1=3. Aufgabe „Ist x ungerade?”|2=Entscheide, ob der Wert x in Speicherzelle 12 gerade oder ungerade ist. | ||
| Zeile 43: | Zeile 51: | ||
: in Speicherzelle 13 der Wert 1, wenn der ursprüngliche Wert x eine ungerade Zahl war. <br> Wenn x gerade war, steht in Speicherzelle 13 weiterhin der Initialisierungswert 0. <br> Im Beispiel steht also am Ende in Speicherstelle 13 eine 1.|3=Üben}} | : in Speicherzelle 13 der Wert 1, wenn der ursprüngliche Wert x eine ungerade Zahl war. <br> Wenn x gerade war, steht in Speicherzelle 13 weiterhin der Initialisierungswert 0. <br> Im Beispiel steht also am Ende in Speicherstelle 13 eine 1.|3=Üben}} | ||
{{Lösung versteckt|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.|2=Tipp|3=Tipp verstecken}}< | {{Lösung versteckt|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.|2=Tipp 1 anzeigen|3=Tipp 1 verstecken}} | ||
{{Lösung versteckt|<pre>; Lösung zur 3. Aufgabe: „Ist x ungerade?” | |||
{{Lösung versteckt|1=Pseudocode für das Programm „Ist x ungerade?”: | |||
<pre> | |||
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 | |||
</pre> | |||
|2=Tipp 2 anzeigen|3=Tipp 2 verstecken}} | |||
{{Lösung versteckt|1=<pre>; Lösung zur 3. Aufgabe: „Ist x ungerade?” | |||
1: isz 12 ; x=0? | 1: isz 12 ; x=0? | ||
2: jmp 4 ; nein: weiter bei 4 | 2: jmp 4 ; nein: weiter bei 4 | ||
| Zeile 57: | Zeile 78: | ||
11: jmp 1 | 11: jmp 1 | ||
12: 5 | 12: 5 | ||
13: 0 </pre>}} | 13: 0 </pre> | ||
|2=Lösung anzeigen|3=Lösung verstecken}} | |||
{{Box|1=4. Aufgabe „Ist x = y ?”|2=Entscheide, ob die Werte x und y, die in zwei verschiedenen Speicherzellen stehen, gleich sind oder nicht. | {{Box|1=4. Aufgabe „Ist x = y ?”|2=Entscheide, ob die Werte x und y, die in zwei verschiedenen Speicherzellen stehen, gleich sind oder nicht. | ||
| Zeile 64: | Zeile 86: | ||
; Nach dem Programmende steht | ; Nach dem Programmende steht | ||
: in Speicherzelle 23 der Wert 1, wenn die ursprünglichen Werte x und y gleich waren, andernfalls steht <br> in Speicherzelle 23 weiterhin der Initialisierungswert 0.|3=Üben}} | : in Speicherzelle 23 der Wert 1, wenn die ursprünglichen Werte x und y gleich waren, andernfalls steht <br> in Speicherzelle 23 weiterhin der Initialisierungswert 0.|3=Üben}} | ||
{{Fortsetzung| | |||
vorher=zurück|vorherlink=Benutzer:Ukalina/Lernpfad_Know-How-Computer/KHC-Maschinensprache - erste Schritte Teil 2| | |||
weiter=weiter| | |||
weiterlink=Benutzer:Ukalina/Lernpfad_Know-How-Computer/Know-How-Assembler - macht das Programmieren leichter|übersicht=Startseite|übersichtlink=Benutzer:Ukalina/Lernpfad_Know-How-Computer}} | |||
Version vom 21. Mai 2025, 09:25 Uhr
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.
Für alle Übungsaufgaben gelten folgende Grundvoraussetzungen:
- Am Anfang ist der Hauptspeicher erst mal standardmäßig leer. Das heißt, dass jede Zelle den Wert 0 enthält, 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.
