Nachricht für neue Nutzer.
Nachricht für engagierte Nutzer.
Lernpfad Know-How-Computer/KHC Programmieraufgaben Teil 2: Unterschied zwischen den Versionen
Aus ZUM-Unterrichten
KKeine Bearbeitungszusammenfassung Markierung: Quelltext-Bearbeitung 2017 |
KKeine Bearbeitungszusammenfassung Markierung: Quelltext-Bearbeitung 2017 |
||
| Zeile 236: | Zeile 236: | ||
{{Lösung versteckt | {{Lösung versteckt | ||
|1= Lösungsidee | |1= {{Box | ||
|1=Lösungsidee | |||
|2=Die Zahl n wird in einer Schleife mehrfach zum Summenwert s addiert, dabei aber bei jedem Schleifendurchgang um 1 verringert. Da bei jedem Additionsdurchgang der Wert in n auf 0 heruntergezählt wird, wird n jedesmal zusätzlich in der Hilfsspeicherstelle h gerettet. Vor dem Zurückspielen dieses geretteten Wertes von h nach n wird er um 1 verringert. So wird also schrittweise erst n nach s geschoben, dann n-1, dann n-2 usw. bis 1. | |||
|3=Unterrichtsidee}} | |||
|2=Tipp anzeigen | |2=Tipp anzeigen | ||
|3=Tipp verstecken}} | |3=Tipp verstecken}} | ||
| Zeile 256: | Zeile 259: | ||
start2: isz h ; h=0? Schleifenanfang Rückverschiebung von verringertem h nach n | start2: isz h ; h=0? Schleifenanfang Rückverschiebung von verringertem h nach n | ||
jmp hnachn ; nein: Dann Rückverschiebung verringertes h nach n durchführen | jmp hnachn ; nein: Dann Rückverschiebung verringertes h nach n durchführen | ||
jmp start1 ; ja: Rückverschiebung von verringertem h nach n fertig, daher mit verringertem n von vorne | jmp start1 ; ja: Rückverschiebung von verringertem h nach n fertig, | ||
; daher mit verringertem n von vorne | |||
hnachn: inc n | hnachn: inc n | ||
dec h | dec h | ||
| Zeile 278: | Zeile 282: | ||
{{Lösung versteckt | {{Lösung versteckt | ||
|1= Lösungsidee | |1={{Box | ||
|1=Lösungsidee | |||
|2=Der Wert y in M(24) wird so oft zu p in M(25) hinzuaddiert wie es der Wert x in M(23) angibt. Da nach dem einmaligen Hinzuaddieren von M(24) zu M(25) der Wert in M(24) gleich 0 ist, wird der Wert von M(24) bei diesem Hinzuaddieren zu M(25) gleichzeitig auch noch in die Hilfsspeicherzelle h mit M(22) "gerettet" und von dort aus anschließend wieder nach M(24) zurück kopiert. Nach jeder Erhöhung von M(25) um M(24) wird M(23) um 1 verringert. Dies wird solange wiederholt, bis M(23) gleich 0 ist. | |||
|3=Unterrichtsidee}} | |||
|2=Tipp anzeigen | |2=Tipp anzeigen | ||
|3=Tipp verstecken}} | |3=Tipp verstecken}} | ||
{{Box | {{Box | ||
| Zeile 295: | Zeile 301: | ||
{{Lösung versteckt | {{Lösung versteckt | ||
|1= Der ggT zweier natürlicher Zahlen x und y kann mit dem so genannten „Euklidischen Algorithmus“ berechnet werden:<br> | |1={{Box | ||
|1=Lösungsidee | |||
|2=Der ggT zweier natürlicher Zahlen x und y kann mit dem so genannten „Euklidischen Algorithmus“ berechnet werden:<br> | |||
„Euklid berechnete den größten gemeinsamen Teiler, indem er nach einem gemeinsamen „Maß“ für die Längen zweier Linien suchte. Dazu zog er wiederholt die kleinere der beiden Längen von der größeren ab. Dabei nutzt er aus, dass sich der größte gemeinsame Teiler zweier Zahlen (oder Längen) nicht ändert, wenn man die kleinere von der größeren abzieht.“ (siehe Wikipedia: https://de.wikipedia.org/wiki/Euklidischer_Algorithmus) | „Euklid berechnete den größten gemeinsamen Teiler, indem er nach einem gemeinsamen „Maß“ für die Längen zweier Linien suchte. Dazu zog er wiederholt die kleinere der beiden Längen von der größeren ab. Dabei nutzt er aus, dass sich der größte gemeinsame Teiler zweier Zahlen (oder Längen) nicht ändert, wenn man die kleinere von der größeren abzieht.“ (siehe Wikipedia: https://de.wikipedia.org/wiki/Euklidischer_Algorithmus) | ||
|3=Unterrichtsidee}} | |||
|2=Tipp anzeigen | |2=Tipp anzeigen | ||
|3=Tipp verstecken}} | |3=Tipp verstecken}} | ||
Version vom 11. Juli 2025, 12:40 Uhr
Anspruchsvollere Programmieraufgaben für Könner
Hier kommen ein paar weitere Programmieraufgaben, die schon etwas anspruchsvoller sind. Entsprechend länger und unübersichtlicher sind die Maschinenprogramme. Daher macht es Sinn, erst ein Assemblerprogramm zu schreiben. Auch dieses kann man mit Stift und Streichhölzern erst mal „von Hand” auf dem Papier testen. Anschließend kann man es in die KHC-Maschinensprache übersetzen, um es z.B. im KHC-Emulator laufen zu lassen.
