Kleine BASIC-Aufgabe aus einer Zeitschrift vom Juni 1985

Es gibt 48 Antworten in diesem Thema, welches 2.441 mal aufgerufen wurde. Der letzte Beitrag (1. Mai 2025 um 21:05) ist von next_i.

  • Ich verrate jetzt erstmal nicht den Namen, damit man nicht einfach lossucht, aber in einer alten Computer-Zeitschrift vom Juni 1985 ist eine kleine BASIC-Aufgabe, die ich hier einfach mal einstellen will. Für uns hier ist wohl am ehesten eine Lösung für den C64 von Interesse, auch wenn es hier keine Vorgaben zum System gab.

    Bitte melde dich an, um diesen Anhang zu sehen.

    Im Nachfolgeheft waren dann die eingesendten Lösungen vorgestellt. Für diese Aufgabe waren es 4 Einsendungen für den C64, 2 für den CPC 464 und jeweils eine für Dragon, Sharp MZ-700 und Sinclair QL. Die Lösungen stelle ich später mal hier im Thread ein. ;)

    Falls jemand Lust an einer kleinen BASIC-Aufgabe hat: Viel Spaß! :)

  • Am besten finde ich den Kommentar: "Auf dem C64 haben wir's mal wieder mit drei Zeilen geschafft - und wie sieht's bei Euch aus?"

    Dieser Satz bringt mich zum Schmunzeln. Es wirkt, als hätte man es sich damals absichtlich extra schwer gemacht - als wäre es ein sportlicher Ehrgeiz gewesen, Programme nicht möglichst gut, sondern möglichst kurz zu schreiben. Klar, der C64 hatte technische Grenzen, aber mit 38KB BASIC-Speicher hätte man durchaus lesbare und strukturierte Programme verfassen können. Stattdessen wurden drei 80-Zeichen-Zeilen bis zum Rand gefüllt. Hauptsache, es passte irgendwie rein.

    Rückblickend fühlt sich das an, als hätte man versucht, ein Möbelstück aus Streichhölzern zu bauen, nur weil man Bretter für zu bequem hielt.

    Hat man in diesen Computerzeitschriften eigentlich irgendetwas über saubere, wartbare Programmierung gelernt - oder nur, wie man Code möglichst schwer lesbar macht? :gruebel

  • Es wirkt, als hätte man es sich damals absichtlich extra schwer gemacht - als wäre es ein sportlicher Ehrgeiz gewesen, Programme nicht möglichst gut, sondern möglichst kurz zu schreiben

    War es. Es gab (und gibt) regelmäßig Einzeiler-Wettbewerbe. Mit erstaunlichen Ergebnissen.

    Ich habs mal versucht in nur zwei Zeilen zu quetschen, aber selbst mit übelstem Abkürzen der Befehle hats ganz knapp nicht geklappt ;)

  • War es. Es gab (und gibt) regelmäßig Einzeiler-Wettbewerbe. Mit erstaunlichen Ergebnissen.

    "Erstaunlich" waren die Ergebnisse sicher - nur eben eher im Sinne von "Wie viel Wahnsinn passt in eine Zeile?", nicht im Sinne von guter Programmierpraxis. :D

  • Die Beschreibung muss man ja quasi nur abschreiben, damit deren "kurzes aber starkes Mini-Programm" bei rauskommt.
    Hier meine Interpretation in drei Zeilen:

    Spoiler anzeigen

    Bitte melde dich an, um diesen Anhang zu sehen.

    Ob nun kurz oder lang ist doch egal, wenn solche Aufgaben damals die Computernutzer zum Programmieren animiert haben.

    Leserlich isses auch, aber wem das zu eng ist, der kann statt Doppelpunkten ja einzelne Zeilen erstellen - COMAL Style - yeah! :)

  • Ich bin ja ein großer Fan von solchen Aufgabenspielerein.
    Was ich erstaunlich finde ist die geringe Anzahl der Einsendungen bei einer so überschaubaren Aufgabenstellung.
    Das zusammenquetschen von Code ist vielleicht dem Umgang mit üblicherweise beschränkten Ressourcen geschuldet. (Wenig hilft viel)

    Wobei das wohl eher ein Trugschluss ist.

    Selbst bei gut sortiertem Code frage ich mich spätestens nach vier Wochen was ich da fabriziert habe und meine eigenen Gedankengänge sind dann auch nicht immer nachvollziehbar.

  • Was ich erstaunlich finde ist die geringe Anzahl der Einsendungen bei einer so überschaubaren Aufgabenstellung.

    Ich habe mein 12 Seiten langes COMAL-Programm gerade erst ausgedruckt und in einen A4 Umschlag gesteckt. Später werde ich es zur Post bringen. :)

    Das zusammenquetschen von Code ist vielleicht dem Umgang mit üblicherweise beschränkten Ressourcen geschuldet.

    Der Umgang mit knappen Ressourcen hat sicher vieles geprägt - aber ich glaube, manchmal war das Motto einfach: "Wenn's schwer zu lesen ist, ist's bestimmt clever."

  • Früher war alles auf kürzer, schneller, geiler gepolt. Das sollte man aus heutiger Sicht nicht mehr bewerten.

    Ich habe das mal in Modern umgesetzt auf dem C64

    Spoiler anzeigen

    PABasic V0.9.29

    Bitte melde dich an, um diesen Anhang zu sehen.

    Oder als Einzeiler REPEAT:PRINT "{clrscr} MALNEHMEN PAUKEN{ret}":A% = RND( )*100+1:B% = RND( )*100+1:PRINT A%;" * ";B%;" = ";:C% = VALINT( INPUT 5, "0123456789"):D% = A%*B% = C%:PRINT "**** ";IIF( D%, "RICHTIG", "FALSCH");" ****":IF NOT D%:VBLANK( 150):ENDIF:UNTIL D%

    Im Anhang als exportiere Standalone Version.

    Dateien

    Bitte melde dich an, um diesen Link zu sehen.Bitte melde dich an, um diesen Link zu sehen.Bitte melde dich an, um diesen Link zu sehen.Bitte melde dich an, um diesen Link zu sehen.

    Einmal editiert, zuletzt von TD1334 (29. April 2025 um 12:53) aus folgendem Grund: EDIT: Leerzeichen eingefügt

  • Also gut, um die Anzahl der Einsendungen zu erhöhen, hier ein 3-Zeiler ohne Sonderzeichen, der wie gewünscht die 1. Spalte frei läßt und auch berücksichtigt, daß der user eventuell nicht mit einer Zahl antwortet... :-)...

    100?chr$(147);" malnehmen pauken":z1=int(rnd(ti)*100)+1:z2=int(rnd(ti)*100)+1

    110?z1;"*";z2;"= ";:inpute$:ifval(e$)=z1*z2then?"* * * * richtig * * * *":end

    120 print chr$(18);"* * * falsch * * *!":forx=1to2400:next:run

  • Hier meine Interpretation in drei Zeilen:

    "Kinder! Bitte die Aufgabenstellung ganz genau lesen! Hier wird nicht Bitte melde dich an, um diesen Link zu sehen.! Sonst muss ich das der Direktorin melden!" :prof:

    Bitte melde dich an, um diesen Anhang zu sehen.

  • Wie früher in der Schule! Hier wird auch wieder nur abgeschrieben! :)

    Ich glaube Snoopy muss das doch der Direktorin melden! :sm:

    Wie hieß die nochmal? Samantha Fox oder Foxy Lady?

    Spoiler anzeigen

    Wenn man die Abfrage in der 2. Zeile umdreht, kann man sich das "end" sparen.

  • "Kinder! Bitte die Aufgabenstellung ganz genau lesen! Hier wird nicht geschlurrt! Sonst muss ich das der Direktorin melden!" :prof:

    Das gilt aber für alle!

    Ich hatte zumindest die freie Zeile mit CRSR DOWN ursprünglich drin, das hab ich beim zweiten Anlauf vergessen, da ich das schnell in einem C64 Online Emu geschrieben habe.

    Die freie SPALTE, also ein pupsiges SPACE vor "MALNEHMEN PAUKEN" usw. hab ich aber tatsächlich nicht berücksichtigt - aber zähl mal die * und so. :D

    Popeye ich habe chronologisch programmiert. :prof:

  • aber zähl mal die * und so. :D

    Stimmt ... einmal 4 und dann drei .. wie gemein :wink:

    Bitte melde dich an, um diesen Link zu sehen.Bitte melde dich an, um diesen Link zu sehen.Bitte melde dich an, um diesen Link zu sehen.Bitte melde dich an, um diesen Link zu sehen.

  • Wenn man die Aufgabenstellung genau genug liest, geht es in zwei Zeilen:

    Code
    0a=rN(1)*98:a$(0)="r* * * falsch":a$(1)=
    "* * * * richtig *":?"S malnehmen pauken
    1a%=a+2:?"q"a%"*"a%;:inputa:?a$(-(a=285)
    )" * * *":fOi=0to2600:nE:on(-(a<>285))gO

    Etwas lesbarer:

    Code
    0 a=rnd(1)*98:a$(0)="{rvon}* * * falsch":a$(1)="* * * * richtig *":print"{clr} malnehmen pauken
    1 a%=a+2:print"{down}"a%"*"a%;:inputa:printa$(-(a=285))" * * *":fori=0to2600:next:on(-(a<>285))goto
  • "... Sonst muss ich das der Direktorin melden!" :prof:

    IF KORIN THEN KACKER = 1

    Bitte melde dich an, um diesen Anhang zu sehen.

    REM Um Großbuchstaben zu gewährleisten und Frau Direktorin nicht unnötig bemühen zu müssen, sollte beim ersten PRINT präventiv noch ein CHR$(142) erfolgen. :prof:

  • als wäre es ein sportlicher Ehrgeiz gewesen, Programme nicht möglichst gut, sondern möglichst kurz zu schreiben.

    Na ja, die eigentliche Programmieraufgabe ist ja hier von sehr schlichtem Gemüt, sodass eigentlich nur die Verkürzung übrigbleibt, um überhaupt eine Art von Sportsgeist zu wecken.

    Bei zahlreichen 10-Zeilern aus der 64'er habe ich mir allerdings auch schon gewünscht, das Dingen wäre einfach doppelt so lang und dafür verständlicher.

    Bitte melde dich an, um diesen Link zu sehen. - Ratespiel • Bitte melde dich an, um diesen Link zu sehen. - BASIC-Erweiterung • Bitte melde dich an, um diesen Link zu sehen. - Sprite-Editor • Bitte melde dich an, um diesen Link zu sehen. - Zeichensatz-Editor Bitte melde dich an, um diesen Link zu sehen. - 2048 Blöcke

  • >"fürs malnehmen"

    Und nächstes Mal: ******* Deutsch pauken *******

    "Malnehmen", ist das nicht eher Grundschulsprech? Heißt det nich richtig "Multiplizieren"? :gruebel

    Snoopy Welche Zeitschrift war es denn jetzt?

  • Hier nun die abgedruckten Lösungen aus dem Nachfolgeheft. Einfach mal als "Spoiler", damit jeder selbst entscheiden kann, ob er sie schon sehen will. ;)

    Der Billigdruck ist allerdings so mies, dass man - obwohl ich mich um Qualität bemüht habe - manche Zeilen eher erraten als lesen muss.

    Aber genau so war das damalstm ("Wir waren alle barfuss und hatten keine Druckerfarbe!"). :alt:

    Spoiler anzeigen

    Bitte melde dich an, um diesen Anhang zu sehen.

    Bitte melde dich an, um diesen Anhang zu sehen.

    Bitte melde dich an, um diesen Anhang zu sehen.

    Das Heft, eher 25-seitige Zeitung, nennt sich "HCR" (Heim+Personal Computer Report)

    Rästel in der Bitte melde dich an, um diesen Link zu sehen. (Seite 16)

    Lösungen in der Bitte melde dich an, um diesen Link zu sehen. (Seite 9)

  • Am besten gefällt mir die Lösung für den Sinclair QL. Das erinnert noch am ehesten an ein richtiges Programm.

    Obwohl: Mit GOTO aus einem IF-Block herausspringen ist schon ganz schön 80er-Jahre-krass. Yeah! :D

    Bitte melde dich an, um diesen Anhang zu sehen.

  • Hier nun die abgedruckten Lösungen aus dem Nachfolgeheft.

    Die drei C64-Lösungen sind allesamt falsch. Die Anzahl der Sterne stimmt nicht oder sie haben Zeilen mit Spalten verwechselt und dergleichen mehr... =O