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}}


Hier kannst du dir eine mögliche Lösung anzeigen lassen:
{{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}}<br>
{{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.