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__ | ||
{{Fortsetzung| | {{Fortsetzung| | ||
vorher=zurück|vorherlink=Benutzer:Ukalina/Lernpfad_Know-How-Computer/KHC- | vorher=zurück| | ||
vorherlink=Benutzer:Ukalina/Lernpfad_Know-How-Computer/KHC-Maschinensprache_-_erste_Schritte_Teil_2 | | |||
weiter=weiter| | weiter=weiter| | ||
weiterlink=Benutzer:Ukalina/Lernpfad_Know-How-Computer/Know-How-Assembler| | weiterlink=Benutzer:Ukalina/Lernpfad_Know-How-Computer/Know-How-Assembler| | ||
| Zeile 8: | Zeile 9: | ||
{{Box|Programmieraufgaben Teil 1|In den bisherigen Kapiteln hast du alles erfahren, was du zum Programmieren des Know-How-Computers wissen musst. Jetzt kannst du loslegen und deine eigenen Programme schreiben! Hier kommen ein paar Programmieraufgaben für dich. Die ersten sind „zum Warmwerden” noch ziemlich einfach, im zweiten Teil kommen aber auch einige deutlich anspruchsvollere Aufgaben. | {{Box|Programmieraufgaben Teil 1|In den bisherigen Kapiteln hast du alles erfahren, was du zum Programmieren des Know-How-Computers wissen musst. Jetzt kannst du loslegen und deine eigenen Programme schreiben! Hier kommen ein paar Programmieraufgaben für dich. Die ersten sind „zum Warmwerden” noch ziemlich einfach, im zweiten Teil kommen aber auch einige deutlich anspruchsvollere Aufgaben. | ||
Beim Lösen der Aufgaben gibt es verschiedene Möglichkeiten, wie du vorgehst: | |||
# Du schreibst und testest dein Programm in deinem eigenen KHC-Papiermodell. | |||
# Du tippst deinen Programmcode direkt in das Hauptspeicher-Textfeld des KHC-Emulators unten. Vorher solltest du mit dem Schalter „Speicher leeren“ alle Zellen im Hauptspeicher auf den Wert 0 setzen. Anschließend ersetzt du in den entsprechenden Zeilen jeweils hinter der Adresse mit dem Doppelpunkt diesen 0-Wert durch einen Befehl oder durch einen anderen Datenwert. Die Eingabe beendest du mit dem Schalter „Neustart“ (Funktionstaste F8). Anschließend kannst du das Programm mit dem Schalter „Ausführen“ (Funktionstaste F9) Schritt für Schritt testen. | |||
# Statt deinen Programmcode gleich direkt in das Hauptspeicher-Textfeld einzutippen, kannst du ihn auch erst in einem Texteditor deiner Wahl schreiben und anschließend als Ganzes durch „Kopieren und Einfügen“ („Drag and Drop“) aus dem Editorfenster in den KHC-Hauptspeicher kopieren. Dabei sollte vor dem „Einfügen“ (STRG+c) der gesamte Inhalt des Textfeldes markiert werden (STRG+a), damit er vollständig überschrieben wird. Der Einfügevorgang wird mit dem Schalter „Neustart“ (Funktionstaste F8) abgeschlossen. | |||
Einige Lösungen kannst du auch über die entsprechenden Schalter unter dem Hauptspeicher-Textfeld als Speicherkonfiguration laden | # Wenn du den Inhalt des KHC-Emulator-Hauptspeichers in einer Textdatei speichern möchtest, dann geht das natürlich auch mit „Kopieren“ und „Einfügen“: Im Hauptspeicher-Textfeld alles markieren (STRG+a), in die Zwischenablage kopieren (STRG+c), ins Editorfenster wechseln und dort den Inhalt der Zwischenablage einfügen (STRG+v). Anschließend das Ganze im Editor in eine Textdatei speichern (STRG+s). | ||
# Einige Lösungen kannst du auch über die entsprechenden Schalter unter dem Hauptspeicher-Textfeld als Speicherkonfiguration laden. | |||
|Lernpfad}} | |||
<div style="width: 100%; overflow: hidden;"> | <div style="width: 100%; overflow: hidden;"> | ||
| Zeile 45: | Zeile 44: | ||
11: jmp 1 | 11: jmp 1 | ||
12: 5 | 12: 5 | ||
13: 0 | 13: 0 | ||
|Speicherkonfiguration4=# Ist x = y? | |||
1: isz 21 | |||
2: jmp 4 | |||
3: jmp 7 | |||
4: isz 22 | |||
5: jmp 10 | |||
6: jmp 14 | |||
7: isz 22 | |||
8: jmp 14 | |||
9: jmp 13 | |||
10: dec 21 | |||
11: dec 22 | |||
12: jmp 1 | |||
13: inc 23 | |||
14: stp | |||
21: 5 | |||
22: 3 | |||
23: 0 | |||
|nohelp=true | |nohelp=true | ||
}} | }} | ||
| Zeile 54: | Zeile 71: | ||
<div style="margin-left: 42%;"> | <div style="margin-left: 42%;"> | ||
Bei allen Übungsaufgaben gehen wir von folgenden Grundvoraussetzungen aus: | |||
{{Box|1=1. Aufgabe „x + y = ?”| 2=Berechne die Summe zweier Zahlen x und y. | * Alle Zellen des Hauptspeichers enthalten solange standardmäßig den Wert 0, bis etwas anderes per Tastatureingabe oder durch das Laden einer Speicherkonfiguration 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. | |||
{{Box | |||
|1=1. Aufgabe „x + y = ?” | |||
|2=Berechne die Summe zweier Zahlen x und y. | |||
; Vor dem Programmstart steht | ; Vor dem Programmstart steht | ||
: in Speicherzelle 7 ein beliebiger Wert x, z.B. der Wert 5 und <br> in Speicherzelle 8 ein beliebiger Wert y, z.B. der Wert 4. | : in Speicherzelle 7 ein beliebiger Wert x, z.B. der Wert 5 und <br> in Speicherzelle 8 ein beliebiger Wert y, z.B. der Wert 4. | ||
; Nach dem Programmende steht | ; Nach dem Programmende steht | ||
: in Speicherzelle 7 die Summe x + y, im Beispiel also der Wert 9. | : in Speicherzelle 7 die Summe x + y, im Beispiel also der Wert 9. | ||
|3=Üben}} | |||
{{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|Das Beispielprogramm „Von x auf 0“ kann als Grundlage für dieses Programm verwendet werden.|Tipp 1 anzeigen|Tipp 1 verstecken}} | ||
| Zeile 75: | Zeile 97: | ||
{{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. | |||
; Vor dem Programmstart steht | ; Vor dem Programmstart steht | ||
: in Speicherzelle 7 ein beliebiger Wert x, z.B. der Wert 5 und <br> in Speicherzelle 8 ein beliebiger Wert y, der aber nicht größer als x sein darf, hier z.B. der Wert 3. | : in Speicherzelle 7 ein beliebiger Wert x, z.B. der Wert 5 und <br> 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 | ; Nach dem Programmende steht | ||
: 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 anzeigen|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. | |||
; Vor dem Programmstart steht | ; Vor dem Programmstart steht | ||
: in Speicherzelle 12 ein beliebiger Wert x, z.B. der Wert 3 und <br> in Speicherzelle 13 der Wert 0. | : in Speicherzelle 12 ein beliebiger Wert x, z.B. der Wert 3 und <br> in Speicherzelle 13 der Wert 0. | ||
; Nach dem Programmende steht | ; Nach dem Programmende steht | ||
: 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. | {{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. | ||
| Zeile 106: | Zeile 134: | ||
{{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. | |||
; Vor dem Programmstart steht | ; Vor dem Programmstart steht | ||
: in Speicherzelle 21 ein beliebiger Wert x, z.B. der Wert 5 und <br> in Speicherzelle 22 ein beliebiger Wert y, z.B. der Wert 3. | : in Speicherzelle 21 ein beliebiger Wert x, z.B. der Wert 5 und <br> in Speicherzelle 22 ein beliebiger Wert y, z.B. der Wert 3. | ||
; 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}} | |||
{{Lösung versteckt|1=x und y werden beide in einer Schleife heruntergezählt, solange dies möglich ist, solange also beide größer als 0 sind. Dabei müssen vor jedem Schleifendurchgang vier Fälle unterschieden werden: | {{Lösung versteckt|1=x und y werden beide in einer Schleife heruntergezählt, solange dies möglich ist, solange also beide größer als 0 sind. Dabei müssen vor jedem Schleifendurchgang vier Fälle unterschieden werden: | ||
| Zeile 153: | Zeile 184: | ||
{{Fortsetzung| | {{Fortsetzung| | ||
vorher=zurück|vorherlink=Benutzer:Ukalina/Lernpfad_Know-How-Computer/KHC- | vorher=zurück| | ||
vorherlink=Benutzer:Ukalina/Lernpfad_Know-How-Computer/KHC-Maschinensprache_-_erste_Schritte_Teil_2 | | |||
weiter=weiter| | weiter=weiter| | ||
weiterlink=Benutzer:Ukalina/Lernpfad_Know-How-Computer/Know-How-Assembler| | weiterlink=Benutzer:Ukalina/Lernpfad_Know-How-Computer/Know-How-Assembler| | ||
übersicht=Startseite|übersichtlink=Benutzer:Ukalina/Lernpfad_Know-How-Computer}} | übersicht=Startseite|übersichtlink=Benutzer:Ukalina/Lernpfad_Know-How-Computer}} | ||
Version vom 13. Juni 2025, 12:13 Uhr
Programmieraufgaben Teil 1
In den bisherigen Kapiteln hast du alles erfahren, was du zum Programmieren des Know-How-Computers wissen musst. Jetzt kannst du loslegen und deine eigenen Programme schreiben! Hier kommen ein paar Programmieraufgaben für dich. Die ersten sind „zum Warmwerden” noch ziemlich einfach, im zweiten Teil kommen aber auch einige deutlich anspruchsvollere Aufgaben.
Beim Lösen der Aufgaben gibt es verschiedene Möglichkeiten, wie du vorgehst:
- Du schreibst und testest dein Programm in deinem eigenen KHC-Papiermodell.
- Du tippst deinen Programmcode direkt in das Hauptspeicher-Textfeld des KHC-Emulators unten. Vorher solltest du mit dem Schalter „Speicher leeren“ alle Zellen im Hauptspeicher auf den Wert 0 setzen. Anschließend ersetzt du in den entsprechenden Zeilen jeweils hinter der Adresse mit dem Doppelpunkt diesen 0-Wert durch einen Befehl oder durch einen anderen Datenwert. Die Eingabe beendest du mit dem Schalter „Neustart“ (Funktionstaste F8). Anschließend kannst du das Programm mit dem Schalter „Ausführen“ (Funktionstaste F9) Schritt für Schritt testen.
- Statt deinen Programmcode gleich direkt in das Hauptspeicher-Textfeld einzutippen, kannst du ihn auch erst in einem Texteditor deiner Wahl schreiben und anschließend als Ganzes durch „Kopieren und Einfügen“ („Drag and Drop“) aus dem Editorfenster in den KHC-Hauptspeicher kopieren. Dabei sollte vor dem „Einfügen“ (STRG+c) der gesamte Inhalt des Textfeldes markiert werden (STRG+a), damit er vollständig überschrieben wird. Der Einfügevorgang wird mit dem Schalter „Neustart“ (Funktionstaste F8) abgeschlossen.
- Wenn du den Inhalt des KHC-Emulator-Hauptspeichers in einer Textdatei speichern möchtest, dann geht das natürlich auch mit „Kopieren“ und „Einfügen“: Im Hauptspeicher-Textfeld alles markieren (STRG+a), in die Zwischenablage kopieren (STRG+c), ins Editorfenster wechseln und dort den Inhalt der Zwischenablage einfügen (STRG+v). Anschließend das Ganze im Editor in eine Textdatei speichern (STRG+s).
- Einige Lösungen kannst du auch über die entsprechenden Schalter unter dem Hauptspeicher-Textfeld als Speicherkonfiguration laden.
