Die Denkspielmaschine

Aus C64-Wiki
Zur Navigation springenZur Suche springen


Die Denkspielmaschine
Vom kreativen Umgang mit Computern
Cover/Buchdeckel
Sprache deutsch
Autor(en) Peter Milger, Fritz Reidenbach
Verlag Athenäum
Jahr 1986
ISBN ISBN 3-7610-8393-9
Neupreis DM 28,-
Datenträger
Seitenzahl 192
letzte Auflage 1. Auflage 1986
Genre Programmieren
Information




Beschreibung[Bearbeiten | Quelltext bearbeiten]

Die Denkspielmaschine ist ein locker geschriebenes Buch für den kreativen Umgang mit Computern. Der Leser wird ermutigt, Denkaufgaben selbst zu lösen. Gleichsam nebenbei erklären die Autoren Schritt für Schritt die Programmiersprache BASIC. Ein Buch für alle, die noch keinen Einstieg gefunden haben. Und für Computer-Freaks, die nach neuen Aufgaben suchen. Mit einem Anhang, in dem alle Zeichen, Begriffe, Befehle und Fehlermeldungen noch mal erläutert werden.

Inhaltsverzeichnis[Bearbeiten | Quelltext bearbeiten]

Ansichten   ...................................... 7
Was ist ein Computer? ............................ 9
Sie können besser denken.......................... 11
Anschauung und Logik   ........................... 13
Zahlen haben es in sich   ........................ 19
RAM, ROM und RECHBOT ............................. 25
Mein Name ist A   ................................ 27
Zeile für Zeile .................................. 31
Wenn ... dann    ................................. 38
Dialog mit der Maschine  ......................... 43
Numerierbare Adressen............................. 47
Schleifen, auch verschachtelt   .................. 52
Mathematik anschaulich ........................... 60
Achill und die Schildkröte ....................... 65
Natur und Kapital   .............................. 72
Erfolgserlebnisse................................. 76
1000 Tage rechnen   .............................. 77
Programmierter Zufall   .......................... 82
Lottozahlen   .................................... 84
Die Kunst des Sortierens.......................... 88
Wörter sortieren  ................................ 93
Können Computer denken? .......................... 98
Vokabeln abfragen   .............................. 102
Wahr oder falsch   ............................... 111
KI — Künstliche Intelligenz....................... 117
Koordinaten und Bildschirm   ..................... 121
Das lernende Wesen ............................... 128
Ein Ökospiel   ................................... 133
Reime aus dem Computer  .......................... 143
Primzahlgenerator   .............................. 148
Kurven............................................ 156
Zahlensysteme, Bits und Bytes   .................. 164
Das MIU-Rätsel und die endlose Schleife .......... 173
To BASIC or not to BASIC  ........................ 178

Anhang
1. Zeichenerklärung............................... 181
2. Abkürzungen, Begriffe und Befehle   ........... 183
3. Fehlermeldungen   ............................. 191

Leseprobe[Bearbeiten | Quelltext bearbeiten]

Seite 148, (Primzahlgenerator)

Zurück zu den Zahlen. Und zwar zu jenen, die von jeher als rätselhaft gelten. Die Primzahlen. Ihren geheimnisvollen Ruf verdanken sie der Tatsache, daß sie schwer errechenbar sind. Eine Formel zu ihrer Errechnung ist zwar schon immer gesucht, aber nie gefunden worden. Versuchen Sie es lieber nicht, wenn Ihnen Ihr Schlaf lieb ist. Die Schwierigkeit der Primzahl liegt in ihrem Wesen. Eine Primzahl ist eine ganze Zahl größer als 1, die keine anderen Faktoren (Teiler) enthält als sich selbst und eins. Die anderen ganzen Zahlen außer der 1 bezeichnet man als zerlegbar oder zusammengesetzt. Jede solche Zahl größer als eins kann nur auf eine einzige Art als Produkt von Primzahlen beschrieben werden.

Die ersten Primzahlen sind: 2, 3, 5, 7, 11, 13

Die ersten zusammengesetzten Zahlen: 2*2=4, 2*3=6, 2*2*2=8, 3*3=9, 2*5=10, 2*2*3=12

Man sieht also: Die Primzahlen sind keineswegs rätselhaft, sondern genau definiert. Schon Euklid hat elegant bewiesen, daß es unendliche viele Primzahlen gibt. Viele andere Vermutungen über Primzahlen sind in der Zwischenzeit bewiesen, andere noch nicht. Im Prinzip gibt es nur ein Verfahren, herauszufinden, ob eine Zahl eine Primzahl ist oder nicht. Man muß teilen. Ohne Rechenmaschine war das bei großen Zahlen zeitraubend. Mit dem Computer geht es schneller. Versuchen Sie es bitte.

5 INPUT "UNGERADE ZAHL";X
10 Y=1 
15 Y=Y+2
20 IF Y*Y > X THEN 35
25 IF X/Y = INT(X/Y) THEN 40
30 GOTO 15
35 PRINT "JA":  GOTO 5
40 PRINT "NEIN":GOTO 5
  • 5 Klar, daß man nur ungerade Zahlen eingibt, denn gerade Zahlen sind ja in keinem Fall Primzahlen, da sie mindestens durch 2 teilbar sind.
  • 10 ... 15 Damit ist auch klar, daß man nur durch ungerade Zahlen teilen muß. In der anschließenden Schleife untersuchen wir, ob die Zahl ohne Rest durch die ungeraden Zahlen teilbar ist.
  • 20 Wenn dabei Y*Y größer als die zu untersuchende Zahl X wird, also bis dahin kein Teiler ohne Rest gefunden wurde, handelt es sich um eine Primzahl. Würde ein Faktor größer als die Wurzel von X, müßte der zweite kleiner als dieser Faktor sein. Durch diese kleineren (ungeraden) Zahlen haben wir aber bereits geteilt.
  • 25 Wenn X/Y eine ganze Zahl ist, also X durch Y ohne Rest teilbar ist, dann ist X keine Primzahl (für Y ungleich 1 und X). Um die Teilbarkeit ohne Rest zu überprüfen, eignet sich besonders die INT-Anweisung, Sie schneidet von einer Zahl die Dezimalstellen ab. INT(X/Y) ergibt das Ergebnis von X/Y ohne Rest. Wenn X/Y das gleiche Ergebnis liefert wie INT(X/Y), ist X durch Y ohne Rest teilbar.

Um Primzahlen zu erzeugen, müssen alle ungeraden Zahlen überprüft werden, etwa so:

10 X=1:PRINT 2;
20 X=X+2
21 Y=Y+2: IF Y*Y > X THEN 24
22 D=X/Y: IF D=INT(D) THEN 20
23 GOTO 21
24 PRINT X;:Y=1: GOTO 20
  • 10 ... 20 Wir erzeugen die ungeraden Zahlen und überprüfen sie wie oben. Besonders schnell ist das Verfahren nicht. Auf dem Commodore 64 braucht man mehr als 6 Minuten, um die Primzahlen bis 5000 zu erzeugen. Es geht schneller.
  • In Zeile 22 teilen wir auch durch die Zahlen 9, 15, 21 usw. Dies ist unnötig, weil wir ja schon durch 3 geteilt haben. Eigentlich brauchen nur durch die Primzahlen selbst zu teilen, weil alle teilbaren Zahlen Produkte von Primzahlen sind. Ein Beispiel:
5 INPUT "PRIMZAHLEN BIS";P
10 DIM F(7500)
15 PRINT 2;:F(1)=3
20 FOR X=3 TO P STEP 2
21 Y=Y+1: IF F(Y)*F(Y) > X THEN 24
22 D=X/F(Y): IF D=INT(D) THEN 25
23 GOTO 21
24 A=A+l: F(A)=X: PRINT X;
25 Y=0: NEXT X

In Zeile 24 werden die Primzahlen gespeichert, allerdings ist dies nur bis ca. 7500 möglich (bzw. Dimensionierungsgrenze). Das entspricht der theoretischen Möglichkeit von P=7500² = 5625000. Schneller als mit dem vorhergehenden Programm werden die Primzahlen erst bei größeren Zahlen ausgegeben.

Meinung[Bearbeiten | Quelltext bearbeiten]

Worf: "Das Buch macht anhand von vielen interessanten Beispielen Lust auf Programmieren. Vorkenntnisse bedarf es keiner, alle Beispiele sind in BASIC programmiert."

Weblinks[Bearbeiten | Quelltext bearbeiten]