Hello, Guest the thread was called723 times and contains 11 replays

last post from Snoopy at the

BASIC 65-Programme fürs Handbuch

  • TheChief hat in diesem Beitrag freundlicherweise angeboten, zur Verwendung als Beispiele fürs MEGA65-Handbuch auch weiterhin kleinere BASIC 65-Programme schreiben zu wollen. :thumbup:


    Ich stelle gerne einen Vorschlag auch für andere in die Runde. Wer Lust hat, kann sich ja mal daran versuchen. :)


    Fürs Handbuch sollte das Programm nicht komplizierter als "nötig" sein. Es ist als Beispiel für BASIC-Neulinge(!) gedacht, um zu zeigen, was man alles mit den Befehlen LEFT$, MID$ und RIGHT$ machen kann.


    Zum Programm:


    Es geht darum, dass man einen Satz vorgibt. Das kann auch fest in einer Variablen sein (z.B. A$="DAS IST DER SATZ").


    Dann soll das Programm von jedem Wort des Satzes, den ersten und letzten Buchstaben beibehalten und die Buchstaben dazwischen in zufälliger Reihenfolge austauschen. (z.B. "SNOOPY" -> "SOPONY")


    Und am Ende wird der Satz mit den so "verdrehten" Wörten am Bildschirm mit PRINT ausgegeben.


    Die Erkenntnis dahinter ist die, dass unser Gehirn die Buchstaben beim Lesen selbst richtig sortiert, solange der erste und letzte Buchstabe des Wortes fix bleiben.


    Also zum Beispiel:


    DIE RNEEIHFOGLE DER BSTUBACHBEN IST EAGL


    LUAT ENIER SIDTUE IST ES EAGL, IN WCHELER RHNFGEELOIE DIE BSTUCHBAEN IN ENIEM WROT SNID. DAS ENIIZG WHICTGIE IST, DAS DER ETRSE UND DER LZTETE BSTUCHBAE AM RTIGEICHN PALTZ SEHTEN. DAS LEGIT DAARN, DAS WIR NHCIT JEEDN BSTUCHBAEN AEILLN LSEEN, SREDNON DAS WROT ALS GZANES.



    Nach Möglichkeit bitte keine Tricks mit "Umwege mit POKE und PEEK über die SID-Register" oder sowas, sondern möglichst einfach in BASIC und nachvollziehbar die Befehle zum Umgang mit Strings und Teilstrings demonstrieren! ;)


    Falls also jemand beim Handbuch mithelfen möchte, muss das nicht unbedingt bei der Übersetzung an sich sein. Ein "schönes, kurzes und nicht zu extrem unstruktriertes" BASIC-Programm (das kann auch auf einem anderen Commodore-Rechner sein), das als Beispiel im Handbuch verwendet werden kann, wäre auch eine große Mithilfe! :thumbup:

  • Hi Snoopy,


    wie bestellt :D, hier das Programm zum Verdrehen der inneren Buchstaben der Worte in einem zuvor definierten Satz.

    Diese Funktion lässt sich in Basic 65 bestimmt auch eleganter programmieren aber sie tut ihren Dienst. :schande:

    Wo ich diesen Beispielsatz nur her habe... :whistling:

  • Super! Vielen Dank für das Programm! :thumbup:


    Ich bin davon ausgegangen, dass die Buchstaben irgendwie mit RND zufällig verdreht werden. Umso erstaunter war ich gerade, dass der Satz bei jedem Programmstart gleich dargestellt wird. Ein Blick ins Programm hat mir dann gezeigt, dass du gar kein RND verwendest. :search:


    Bevor ich mich jetzt ins Programm grabe, frage ich einfach mal direkt den Autor. :D


    Auf welche Weise sortierst du denn die Buchstaben um?


    Meinst du, du könntest das Programm so abändern, dass die RND-Funktion mit vorkommt? Die wurde den Neulingen nämlich schon beim Labyrinth-Beispiel erklärt und das wäre dann ganz schön, wenn sie diese auch hier verwenden könnten und gleich sehen, dass die Buchstaben bei jedem Programmlauf anders sortiert werden.


    Ist aber nur ein Vorschlag und "Wunsch" von mir. Falls du Lust und Zeit hast, wäre das eine nette Erweiterung deines Programms. Nur keinen Stress! ;)


    Das reicht auch bis in 5 Minuten. :bgdev


    Wo ich diesen Beispielsatz nur her habe... :whistling:

    Keine Ahnung! Den Satz sehe ich zum ersten Mal. :saint:

  • Hi Snoopy,


    Mist, Du hast es gemerkt... :bgdev


    Ich habe das "zufällige Vertauschen" gefaket, weil ich bisher noch keine gute Idee hatte wie ich alle in einem Wort vorkommende Buchstaben per RND Funktion vertauschen kann. :cry:

    Also habe ich jeweils den ersten und den letzten Buchstaben unverändert in den neuen Satz übernommen und die Buchstaben dazwischen der Reihe nach von hinten nach vorne umsortiert. :whistling:


    Wenn mir etwas Besseres einfällt baue ich es gerne nochmal um. :)

  • Wenn mir etwas Besseres einfällt baue ich es gerne nochmal um. :)

    Ich nehme dich beim Wort! Ich zeige die meine Idee und du setzt dich dran? :)


    Der Einfachheit halber betrachten wir nur ein Wort, das "durchgeschüttelt" werden soll. Den Satz in einzelne Wörter teilen hast du ja schon.


    Nehmen wir mal SNOOPY. Das S und Y bleiben fest. Die kannst du z.B. in A$ und B$ speichern.


    Bleibt das NOOP in der Mitte übrig, speichern wir einfach mal in C$. C$ ist dann 4 Buchstaben lang. Mit RND zwischen 1 und 4 einen Buchstaben davon auswählen. Den "zwischen" das S und Y (A$ und B$) speichern (evtl. D$) und den ausgewählten Buchstaben in C$ "ausschneiden".


    C$ ist dann noch 3 Buchstaben lang und davon wieder einen mit RND, jetzt zwischen 1 und 3, auswählen. Den wieder aus C$ "ausschneiden" und neben den vor vorher zwischen S und Y kleben (also an D$ anhängen).


    Ich habe das gerade mal schnell skizziert. Ist etwas ungeordnet, es sollte aber hoffentlich zeigen, wie es weitergeht, bis nur noch ein Buchstabe in C$ ist. Der wird dann nur noch genommen und als letzter Buchstabe vorm Y angefügt.



    Du kannst z.B. alle ausgewählten Buchstaben der Reihe nach in D$ speichern, der am Anfang leer ist. Und da klebst du jeden neuen ausgewählten Buchstaben rechts dran. Und am Ende ist dein "verdrehtes" Wort dann A$+D$+B$.


    Ich hoffe, ich konnte meine Idee zum zufälligen "Durchschütteln" einigermaßen verständlich rüberbringen. :)

  • Hallo Chef,


    wow, das ging ja flott! Vielen herzlichen Dank! :thumbup:


    Der Satz wird jetzt auch immer neu angeordnet. Klappt prima! :thumbsup:



    Leider hab ich noch was zu "meckern". :whistling:


    Ich wollte mal einen anderen Satz ausprobieren und habe immer eine Fehlermeldung bekommen. Entweder in Zeile 60 oder in Zeile 90. Ich konnte es dann einigermaßen einkreisen.


    Wenn der Satz 15 Wörter hat, klappt alles. Wenn er mehr als 15 Wörter hat, beschwert sich Zeile 60 und wenn er weniger als 15 Wörter hat, beschwert sich Zeile 90.



    Irgendwie scheint das Programm sehr auf 15 Wörter fixiert zu sein. ;)


    Wenn du hier vielleicht nochmal draufschauen könntest, wäre dir "der Dank der ganzen Community sicher" ... oder so ähnlich. :whistling:


    Sag mal, kannst Du denn kein Basic 65? :bgdev

    Geh mir weg, mit diesem neumodischen Kram! Ich mache schon seit über 40 Jahren alles mit dem ZX80. Mehr als 1 KB RAM braucht kein Mensch! :D

  • Naklar war TheChief schneller, aber ich bin so stolz das ich das überhaupt hin bekommen habe, dass ich es einfach mal hier rein stelle.

    Für eure Anregungen und Meinungen bin ich immer zu haben. ich lerne gern dazu.

    Gruß Ticker

  • Hi Snoopy,


    Mensch jetzt willst Du auch noch dass ich meinen Kopier... äh Manipulationsschutz wieder ausbaue. :D


    Also gut, weil Du es bist und für die Community, im Anhang eine neue Version welche mit bis zu 100 (:?::whistling:) Worten umgehen kann.


    :done:

    Geh mir weg, mit diesem neumodischen Kram! Ich mache schon seit über 40 Jahren alles mit dem ZX80. Mehr als 1 KB RAM braucht kein Mensch!

    Da hab ich ja noch Glück gehabt, dass ich mit einem Commodore 116 (Gummitastatur) mit 16 KB RAM und Basic 3.5 beginnen durfte. :rolleyes:

  • Naklar war TheChief schneller, aber ich bin so stolz das ich das überhaupt hin bekommen habe, dass ich es einfach mal hier rein stelle.

    Für eure Anregungen und Meinungen bin ich immer zu haben. ich lerne gern dazu.

    Gruß Ticker

    Hi Ticker,


    :respect:


    Ich finde die Vielfalt macht es aus, nicht die Geschwindigkeit. :)

  • Also gut, weil Du es bist und für die Community, im Anhang eine neue Version welche mit bis zu 100 ( :?::whistling: ) Worten umgehen kann.

    Super! Vielen Dank, dass du dich nicht von meinem "Meckern" entmutigen lässt. :P


    Das Programm tut jetzt das, was es soll. :thumbup:





    Klappt alles wunderbar! :thumbsup:


    Nur bei diesem Satz wird der dritte Buchstabe im vierten Wort leider nicht gedreht:



    :bgdev