|
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Berkeley
Anmeldungsdatum: 13.05.2024 Beiträge: 84
|
Verfasst am: 04.12.2024, 19:35 Titel: |
|
|
Auch, aber sogar vorallem aus "vorgekauten" Lösungen kann man viel lernen. Selbst wenn man nur Quelltexte abtippt. - Copy & Paste bringt dann aber leider nichts mehr, außer, man baut absichtlich Fehler ein.
Genauso wenn man versucht, bestehende Programme zu kopieren. Von daher ist ideal wenn man z.B. Computerspiele mag. Dass man unweigerlich scheitert ist normal, aber der Weg dahin ist lehrreich. Nach und nach lernt man die nötigen Programmiertechniken, bis man dazu wirklich fähig ist.
KANN man denn überhaupt kleiner anfangen als mit einem Sudoku-Löser-Programm ? Solange revilo nicht aufgibt... Bzw. aus dem Thread können auch viele andere schon viel lernen. |
|
Nach oben |
|
|
SpionAtom
Anmeldungsdatum: 10.01.2005 Beiträge: 387
|
Verfasst am: 05.12.2024, 00:57 Titel: |
|
|
Das stimmt, jeder lernt anders. Und manchen helfen "vorgekaute" Lösungen.
Vielleicht hab ich da zu hart geurteilt.
Und es ist auch aller Ehren Wert, wenn du nicht aufgibst, Revilo. Auch dann nicht, wenn der Stinkstiefel Spion andere Ansichten vertritt.
Ich bleibe jedoch bei der Meinung, dass dieser rekursionsbasierte Algorithmus etwas überdimensioniert ist. Zumindest wenn es der Einstieg in die wunderbare Welt der Rekursion ist.
Kleiner anfangen geht immer. Z.B. ein Sudoku-spiel schreiben, welches man selbst spielen kann, oder welches erkennt, ob man gewonnen hat, oder welches Singles automatisch erkennt... _________________ Inzwischen gehöre ich auch zu den BlitzBasicern. Also verzeiht mir, wenn mir mal ein LOCATE 100, 100 oder dergleichen rausrutscht. |
|
Nach oben |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1271 Wohnort: Ruhrpott
|
Verfasst am: 05.12.2024, 13:48 Titel: |
|
|
Ich denke, die Mischung macht's.
Tutorials, Befehlsreferenzen, Beispiele, das Aufdröseln (möglichst gut kommentierter) fremder Quellcodes und Forenthreads (aktiv und passiv) können sich wunderbar ergänzen.
Es ist auch nicht grundsätzlich verkehrt, sich ein Projekt vorzunehmen, das zunächst einmal zwei Nummern zu groß ist. Man muss dann halt sehen: Was fehlt mir noch, wo bekomme ich es her, und wie kann ich das Ganze in handhabbare Teilaufgaben zerlegen? Da kommt es oft darauf an, die richtigen Fragen zu stellen. Daß man dabei immer mal wieder in einer Sackgasse landet, ist auch nicht weiter schlimm, auch daraus lernt man.
Und daß man sich entgegen allen Ratschlägen erst einmal an Bekanntes klammert (QB vs. FB) ist auch verständlich. Als Hilfswilliger sollte man stets im Hinterkopf behalten, daß man den Hilfesuchenden von da abholen muss, wo er gerade ist und nicht von da, wo man ihn gerne hätte.
Also bitte: Geduld!
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
|
Revilo
Anmeldungsdatum: 26.12.2022 Beiträge: 172
|
Verfasst am: 10.12.2024, 01:35 Titel: |
|
|
Hallo Berkeley, SpionAtom und grindstone,
ich danke euch allen, für euer Verständnis und eure Bereitschaft mir beim Lernen helfen zu wollen.
Voneinander zu lernen ist ja letztlich Sinn und Zweck dieses Forums.
Ich habe hier und heute bereits seit 2 h gesessen, um eine Antwort zu tippen. Dabei habe ich
bewusst darauf geachtet, auch eingeloggt zu sein.
Als ich mit dem Tippen fertig war und die Antwort an euch senden wollte,
ging ich auf "Vorschau", um mir zuvor noch mal ansehen zu können, wie sie letztlich bei euch
erscheinen würde.
Danach war alles, also 2 h Tipparbeit, völlig weg und nicht mehr aufrufbar.
Alles für die "Katz", so als ob es nie geschehen wäre. Ich wurde sogar
automatisch ausgeloggt, als ob ich mich zuvor nie eingeloggt hätte. Da hätte ich aus dem
Stand 3 m hoch aus meiner Hose springen können.
Das ist mir bereits mehrfach passiert, besonders bei etwas längeren Antworten. Daher meine Frage: Gibt es hier eine Festlegung, wie viele Zeichen eine Antwort überhaupt enthalten darf?
Falls nicht, scheint hier ein System-Fehler vorzuliegen, der im Interesse aller, vielleicht mal behoben werden sollte.
Derartige digitale Faxen reichen aber nicht aus, um mich zu entmutigen.
Deshalb versuche ich erneut, euch zu antworten, und wenn es nochmals 2 h Tipp-Arbeit erfordern würde. Also auf ein neues.
Vielleicht sollte ich hier mal eine Erklärung abgeben.
Ich programmiere seit über 40 Jahren in Q-Basic.
Ich begann damit, als es weder Internet als Lernhilfe noch Sudokus gab.
Mein bisheriges "Fachwissen" habe ich mir aus Büchern angeeignet, die ich mir aus einer Bibliothek ausgeliehen hatte.
Dies war zwar mühselig, brachte aber auch etwas Lernerfolg.
Inzwischen habe ich etwa 40 funktionierende Programme geschrieben, also
quasi jedes Jahr eins. Fachlich ganz "unbeleckt" bin ich also nicht. Trotzdem kann man selbst nach 40 Jahren Praxis immer noch etwas dazulernen.
Genau das ist meine Absicht bei meinem jetzigen "Sudoku-Projekt".
Hier will ich mich endlich mal der Rekursion und dem Backtracking stellen,
um es als neues "Werkzeug" kennenzulernen, und mit dessen Handhabung vertraut zu werden.
Ich erwarte nicht, dass man mir einen gebratenen Fisch auf den Teller legt.
Aber ich möchte lernen, wie man Fische angelt, sie entschuppt und brät.
Gerade bei der für mich absolut neuen Denk- und Vorgehensweise, die Rekursion und
Backtracking nun mal erfordern.
Der Begriff "vorgekaut" kann in zweierlei Richtungen ausgelegt werden.
1) parasitär: als fertig gebratener Fisch auf dem Teller
2) lehrend : als Unterricht in der Handhabung eines neuen Werkzeugs.
Keiner von uns konnte früher eine binomische Formel berechnen. Wir alle
haben es erst dadurch gelernt, dass unser Mathe-Lehrer uns gezeigt, also quasi "vorgekaut" hat, wie es zu machen ist, welche Fehlerquellen bestehen, was schlussendlich rauskommen muss und warum nichts anderes rauskommen kann.
Genau das ist der Unterschied zwischen stupidem, parasitärem Abschreiben und tatsächlichem Begreifen.
Wenn man eine binomische Formel wirklich begriffen hat, wäre sie auch abrufbar, wenn man nachts um 24 Uhr aus dem tiefsten Schlaf geweckt werden würde. Ein "Abschreiber" würde dabei zwangsläufig scheitern. Ich will aber kein stupider "Abschreiber" sein.
Ich möchte auch nachts um 24 Uhr sicher antworten können, wenn man mich zu Rekursion/ Backtracking befragen würde.
Damit dürfte jetzt wohl auch klar sein, welche Variante von "vorkauen" ich bevorzuge.
Dass ich in 40 Jahren nur etwa 40 Programme erfolgreich schreiben konnte, spricht nicht unbedingt
für meine Sachkenntnis, wohl aber für meine Beharrlichkeit. Aufgabe ist keine Option.
Wenn ich ein Problem habe, beiße ich mich wie ein Terrier daran fest, bis die Beute „erlegt“ ist.
Ich werde euch also bestimmt noch einige Zeit erhalten bleiben.
Das, was ihr mir beibringt, ist ja gleichzeitig auch lehrreich für viele andere User. Wenn sie es
bereits kennen, können sie es ja immer noch als Wiederholung/Auffrischung betrachten.
Wenn ihr diesen Standpunkt grundsätzlich mit mir teilt, bitte ich, mir mal eine Rückmeldung zu
senden.
Gruß Revilo |
|
Nach oben |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1271 Wohnort: Ruhrpott
|
Verfasst am: 10.12.2024, 10:44 Titel: |
|
|
Revilo hat Folgendes geschrieben: | Danach war alles, also 2 h Tipparbeit, völlig weg und nicht mehr aufrufbar.
Alles für die "Katz", so als ob es nie geschehen wäre. | Mein Tip: Bevor du auf "Vorschau" oder "Absenden" klickst, drück vorher die Strg-Taste, halte sie fest und drück nacheinander "A" und "C". Dann hast du deinen ganzen Text in der Zwischenablage stehen und kannst ihn im Fall der Fälle einfach mit Strg+V wieder zurückholen.
Auch bei mir hat sich das Forum schon mal "verschluckt", aber es ist sehr, sehr selten. Das Problem dürfte wohl eher bei deiner Internetverbindung liegen.
Revilo hat Folgendes geschrieben: | Aber ich möchte lernen, wie man Fische angelt, sie entschuppt und brät. | Vor dem Braten würde ich den Fisch noch ausnehmen.
Revilo hat Folgendes geschrieben: | Wenn ihr diesen Standpunkt grundsätzlich mit mir teilt, bitte ich, mir mal eine Rückmeldung zu senden. | Wie der Chinese sagt: "Kung Fu" ("immer üben")
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
|
Berkeley
Anmeldungsdatum: 13.05.2024 Beiträge: 84
|
Verfasst am: 10.12.2024, 20:42 Titel: |
|
|
Das Problem ist, dass wohl die Session irgendwie beendet wird, und die Forensoftware einfach ein "Posting aus dem Nichts" nicht akzeptiert. Vielleicht auch Pech, und wird ausgerechnet in DEM Moment ausgeloggt, wo man postet. So oder so sollte Ctrl+A und Ctrl+C eben helfen, um den Text zu retten. Abgesehen davon müsste man einfach mit "Zurück" seinen Text zurückbekommen, sofern man nicht ausgeloggt wurde. In letzterem Fall erst einloggen, und dann mit der Chronik zum Post-Formular zurückkehren.
Gibt wie schon gesagt auch ätzende Formulare, die einfach geleert werden wenn man auf "Zurück" geht, oder auf andere Weise einfach das Posting vernichten, wenn ein Fehler passiert, z.B. beim Posten ein Schimpfwortfilter anschlägt.
Und ich empfehle immer noch den Wechsel zu FreeBASIC. Dann kannst du deine Quelltexte posten und jeder sie testen, von den vielen zusätzlichen Möglichkeiten ganz zu schweigen. Die Leute, die sich überhaupt mit QBasic auskennen, können sich auch nur noch dunkel an die korrekte Syntax erinnern, die Referenz ist diesbezüglich zu ungenau. Du musst also so oder so die Unterschiede zwischen FreeBASIC und QBasic lernen.
Revilo hat Folgendes geschrieben: | Ich programmiere seit über 40 Jahren in Q-Basic. |
Erstaunlich, dass du in 40 Jahren scheinbar nicht den Umgang mit Arrays gelernt hast... Erklärt aber warum du dir deinen eigenen Arrayalgorithmus basteln konntest.
In den 1980ern gab's viele Programmierzeitschriften mit Sourcecodes zum Abtippen. Dummerweise hattest du wohl das falsche System. Von QBasic ist mir nichts Derartiges bekannt. Für Amiga oder Atari ST hingegen... |
|
Nach oben |
|
|
SpionAtom
Anmeldungsdatum: 10.01.2005 Beiträge: 387
|
Verfasst am: 11.12.2024, 14:04 Titel: |
|
|
Revilo hat Folgendes geschrieben: |
Aufgabe ist keine Option.
|
Da bin ich beruhigt! Dich zu entmutigen war nie meine Absicht.
Deine blumige Sprache und bildhalfen Vergleiche würde ich vermissen.
Ich sehe das Gesamtproblem zwar immer noch als zu groß für dich, aber das ist nur meine Einschätzung.
Ich würde allen nochmals QB64 ans Herz legen: 100% kompatibel zu QBasic, nur mit besserem Editor!
Lange Texte schreibe ich grundsätzlich in einem Text-Editor vor, damit so ein Mist mit dem Ausloggen mich nicht kalt erwischt. Ich möchte nämlich nicht 3 Meter aus meiner Hose springen. _________________ Inzwischen gehöre ich auch zu den BlitzBasicern. Also verzeiht mir, wenn mir mal ein LOCATE 100, 100 oder dergleichen rausrutscht. |
|
Nach oben |
|
|
Revilo
Anmeldungsdatum: 26.12.2022 Beiträge: 172
|
Verfasst am: 11.12.2024, 21:00 Titel: |
|
|
Hallo grindstone,
Zitat: | Wie der Chinese sagt: "Kung Fu" ("immer üben") |
Diese Empfehlung ist durchaus sinnvoll, wenn es darum geht Fertigkeiten zu verbessen, und so schrittweise zu perfektionieren. Aber meinst du nicht auch,
dass man sie dazu überhaupt erst mal kennen müsste?
Hast du schon mal versucht, einen Walzer ohne Kenntnis der Grundschritte zu tanzen? Viel Spaß beim immer fortwährenden, zwecklosen Üben.
Es wäre bei allem Fleiß niemals ein echtes "Üben" sondern nur ein probeweises Umhergehopse, mit entsprechenden Lachern aus den Publikum.
Gruß Revilo |
|
Nach oben |
|
|
Revilo
Anmeldungsdatum: 26.12.2022 Beiträge: 172
|
Verfasst am: 11.12.2024, 22:03 Titel: |
|
|
Hallo SpionAtom,
keine Sorge. Du hast mich nicht entmutigt.
Eine diesbezügliche Entschuldigung ist also gar nicht nötig, gehört aber doch irgendwie zur "Nettikette". Schön dass du sie, auch ohne Notwendigkeit, beachtest. Gleiches mache ich hier ja auch.
Zu meiner "blumigen" Sprache und meinen bildlichen Vergleichen:
Ich lese gern, dass du sie vermissen würdest.
Aber ist es nicht grundsätzlich so, dass ein bildlicher Vergleich mehr sagt, als 1000 Worte es je könnten?
Der Mensch hat nun mal zuerst gelernt, zu sehen und sich etwas bildlich vorzustellen. Das Lesen kam erst tausende Jahre später. Zu viele Menschen können es bis heute nicht, aber sie können sich etwas bildlich vorstellen.
Inzwischen habe ich begriffen, dass "Array" nichts anderes ist, als ein Feld mit entsprechender Dimensionierung.
"Array" ist also nichts weiter als der englische "Name" für dasselbe "Kind".
Wenn man aber kein englisch kann, tut man sich mit diesen englischen Begriffen unwahrscheinlich schwer, was unsere Kommunikation nicht unbedingt erleichtert.
Daher würde ich es als sehr wünschenswert ansehen, wenn sich unsere Kommunikation möglichst auf deutsche Begriffe beschränken könnte.
Da ich nur Q-Basic kenne macht eine Antwort im FreeBasic-Syntax nicht wirklich Sinn für mich. Es wäre genauso, als wenn du mich auf deutsch etwas fragen würdest und ich dir auf russisch antworten würde.
Aber dies nur beiläufig und nebenbei.
Gruss Revilo |
|
Nach oben |
|
|
SpionAtom
Anmeldungsdatum: 10.01.2005 Beiträge: 387
|
Verfasst am: 12.12.2024, 08:40 Titel: |
|
|
Revilo hat Folgendes geschrieben: |
Hast du schon mal versucht, einen Walzer ohne Kenntnis der Grundschritte zu tanzen? |
Das ist genau die Analogie, die meine Überzeugung beim Programmieren lernen beschreibt.
Um größere Algorithmen zu verstehen, sollte man erstmal kleinere Algorithmen verstehen. Um kleinere Algorithmen zu verstehen, sollte man erstmal gewisse Grundlangen verstehen.
Und zwar wirklich verstanden haben.
Wenn ich dann sehe, dass es schon Verständnisprobleme mit Variablen gibt, die für wahr oder falsch stehen, dann aber Rekursive Algorithmen entwickeln wollen.... ...dann könnte ich aus meiner Hose springen _________________ Inzwischen gehöre ich auch zu den BlitzBasicern. Also verzeiht mir, wenn mir mal ein LOCATE 100, 100 oder dergleichen rausrutscht. |
|
Nach oben |
|
|
Berkeley
Anmeldungsdatum: 13.05.2024 Beiträge: 84
|
Verfasst am: 12.12.2024, 23:20 Titel: |
|
|
Revilo hat Folgendes geschrieben: |
Inzwischen habe ich begriffen, dass "Array" nichts anderes ist, als ein Feld mit entsprechender Dimensionierung.
"Array" ist also nichts weiter als der englische "Name" für dasselbe "Kind".
Wenn man aber kein Englisch kann, tut man sich mit diesen englischen Begriffen unwahrscheinlich schwer, was unsere Kommunikation nicht unbedingt erleichtert. |
Ist dir schon mal aufgefallen, dass BASIC Englisch IST ? 🧐
Nachdem der "gute alte Adi" dafür gesorgt hat dass Naturwissenschaft und Technik künftig nur noch in den USA stattfindet, basiert die komplette Computertechnik auf amerikanischen Englisch, von Fachbegriffen bis zu Programmiersprachen. Sämtliche "deutschen" Fachbegriffe sind Eindeutschungen der original-englischen, in IT-Kreisen wirst du kaum Leute finden, die diese Sprachkonstrukte verwenden, sofern es nicht prinzipiell lateinische Begriffe sind, die man mit "K" statt "C" schreibt... Die meisten müssen sogar im Wörterbuch nachschlagen, was sich irgendwer mal ausgedacht hat, SO ungebräuchlich sind die "deutschen Fachbegriffe".
=> Fragen kostet nichts.
Revilo hat Folgendes geschrieben: |
Da ich nur Q-Basic kenne macht eine Antwort im FreeBasic-Syntax nicht wirklich Sinn für mich. |
Doch, wenn du den FreeBASIC-Compiler benutzt schon. Die Unterschiede zwischen FreeBASIC und QBasic bzw. allen BASICs überhaupt sind eher so wie zwischen Niederdeutsch und Oberdeutsch bzw. Bairisch. Man versteht's, aber es ist trotzdem unterschiedlich.
Wenn wir dir irgendwas in FreeBASIC posten, dann meckert der QBasic-Compiler. Es ist wie wenn einer Sächsisch parodiert, ohne viel mit echten Sachsen geredet zu haben. Oder Schwyzerdütsch - einfach überall ein "Kch!" einbauen... Das Ergebnis ist einfach nicht Sächsisch oder Schwyzerdütsch. Ein Anfänger weiß sich dann auch nicht zu helfen, weil der Compiler nur "Syntax Error" meldet.
Dabei mag der Fehler nur daran liegen dass man "DIM AS STRING a" macht, und QBasic "DIM a AS STRING" verlangt oder so was. Völlig unnötige Reibungsverluste. Wie ein Engländer der mit einen Deutschen durch eine argentinische Haushälterin als Dolmetscher streitet, weil der eine nur Deutsch, und der andere nur Englisch und Spanisch beherrscht.
Wo ist der Lernwille und die geistige Aktivität hin ? |
|
Nach oben |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1271 Wohnort: Ruhrpott
|
Verfasst am: 13.12.2024, 08:59 Titel: |
|
|
Revilo hat Folgendes geschrieben: |
Da ich nur Q-Basic kenne macht eine Antwort im FreeBasic-Syntax nicht wirklich Sinn für mich. | Das Argument zieht nicht. Das einzige, was du tun musst (zugegeben, das ist eine Fleißarbeit), um deine QB-Quelltexte nach FB zu portieren, ist das Entfernen der Typen-Suffixe (%,$,! etc.). Danach sind die Programme auch in FB lauffähig.
Aus deinen Klagen über fehlende Englischkenntnisse und der mehrfachen Erwähnung von russisch schließe ich, daß du in Trabinesien aufgewachsen bist. Wenn dir daher also einige Begriffe nicht geläufig sind: Frag einfach nach! Niemand hier im Forum wird dir das krummnehmen. Es ist keine Schande, nichts zu wissen. Es ist nur eine Schande, nichts dazuzulernen.
Gruß
grindstone
Ach ja: Versucht, ohne Kenntnisse Walzer zu tanzen. Doch, habe ich! Daraufhin habe ich von der Dame einen 5minütigen Crashkurs bekommen, und es wurde noch ein sehr netter Abend. Ist alles nur eine Frage der Motivation. _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
|
SpionAtom
Anmeldungsdatum: 10.01.2005 Beiträge: 387
|
Verfasst am: 13.12.2024, 09:43 Titel: |
|
|
Lasst dem armen Mann sein QBasic!
Und mir auch!
Und diesem Forum auch!
Wir alle wissen, das ist eine tote Programmiersprache.
(In meinen Augen ist übrigens Freebasic auch ziemlich tot.)
Wenn es da nicht die Menschen gäbe, die sich erinnern und die Sprachen aktiv gebrauchen, dann sterben irgendwann die Liebhaberkultur und diese alten Special Interest Foren und diese Community.
Außerdem: QB64!
(Natürlich habt ihr recht, man kann mit etwas Engagement von QBasic auf Freebasic umsatteln. Und überhaupt wäre es viel logischer, auf noch moderneren Pferden zu reiten, aber wir sind hier immerhin im QBasic-Sub-Forum.) _________________ Inzwischen gehöre ich auch zu den BlitzBasicern. Also verzeiht mir, wenn mir mal ein LOCATE 100, 100 oder dergleichen rausrutscht. |
|
Nach oben |
|
|
Revilo
Anmeldungsdatum: 26.12.2022 Beiträge: 172
|
Verfasst am: 13.12.2024, 17:22 Titel: |
|
|
Hallo grindstone,
deine Vermutung ist korrekt. Ja ich bin in der DDR geboren und aufgewachsen.
Dein Begriff "Trabinesien" liest sich, sorry, genauso abwertend, herablassend wie "Ostzone". Das sollte hier nicht Bestandteil unserer Kommunikation sein.
Ich habe durchaus Grund, auf meine Herkunft stolz zu sein.
Der erste Deutsche im All, der weltweit erste FSKW-freie Kühlschrank,
die allgemein bekannte Multispektral-Kamera, das Ampelmännchen und die künstliche Bandscheibe, um nur einige Beispiele zu nennen, stammen alle aus "Trabinesien". Schon vergessen? Nichts für ungut.
Vergessen kann man schließlich nur das, was man vorher schon mal wusste.
Die DDR hatte ganz bestimmt nicht ein wünschenswertes politisches System, aber sie war wissenschaftlich längst nicht so hinterweltlerisch, wie ihr immer noch unterstellt wird.
Gruß Revilo |
|
Nach oben |
|
|
Revilo
Anmeldungsdatum: 26.12.2022 Beiträge: 172
|
Verfasst am: 13.12.2024, 19:32 Titel: |
|
|
Hallo grindstone,
Zitat: | Ach ja: Versucht, ohne Kenntnisse Walzer zu tanzen. Doch, habe ich! grinsen Daraufhin habe ich von der Dame einen 5minütigen Crashkurs bekommen, und es wurde noch ein sehr netter Abend. zwinkern |
Danke für deine Ehrlichkeit. Dir hat die Dame in ihrem Crashkurs also auch erst mal zeigen müssen, wie es grundsätzlich und halbwegs elegant aussehen sollte. Richtig? Damit es noch etwas eleganter aussieht, war also auch für dich etwas Übung angesagt, aber du wusstest zumindest schon mal, in welche Richtung deine Übungen zu gehen haben. Richtig?
Ich wünsche mir bei der Rekursion, bzw. beim Backtracking doch auch nichts anderes, als einen derartigen Crashkurs, um überhaupt erst mal eine Richtung zu haben, in der sich weiteres Üben überhaupt lohnen würde.
Walzer tanzen und Rekursion sind völlig verschiedene Dinge. Dennoch haben sie eines gemeinsam. Man kann sie nur erlernen und durch Übung verbessern, wenn sie einem mal vorgemacht wurden.
Gruß Revilo |
|
Nach oben |
|
|
Berkeley
Anmeldungsdatum: 13.05.2024 Beiträge: 84
|
Verfasst am: 14.12.2024, 20:41 Titel: |
|
|
Revilo hat Folgendes geschrieben: |
Dein Begriff "Trabinesien" liest sich, sorry, genauso abwertend, herablassend |
War sicher eher flapsig gemeint.
Revilo hat Folgendes geschrieben: | wie "Ostzone". |
War aber quasi die offizielle Bezeichnung für die DDR - "sowjetische Besatzungszone". Abwertend ist das nur, wenn man es nach 30 Jahren Wiedervereinigung noch immer für gewisse Bundesländer verwendet, als wär' noch 1989... |
|
Nach oben |
|
|
Berkeley
Anmeldungsdatum: 13.05.2024 Beiträge: 84
|
Verfasst am: 14.12.2024, 20:54 Titel: |
|
|
Rekursion find' ich jetzt eigentlich sogar eher einfacher als Boolesche Algebra...
Es ist einfach so: du kannst aus einem Unterprogramm("Funktion") heraus das Unterprogramm sich selbst aufrufen lassen. Das geht natürlich auch ganz dumm als Endlosschleife:
Code: |
FUNCTION myfunc(i%) AS INTEGER
i%=myfunc(i%)
END FUNCTION |
Natürlich muss wie bei einer Schleife ein Abbruch erfolgen und wie schon mal gesagt kann man auch eine Schleife programmieren statt Rekursion zu nutzen. Ganz speziell mit den lokalen Variablen ist Rekursion aber viel einfacher. Bei jedem neuen Aufruf eines Unterprogramms sind die lokalen Variablen unabhängig von allen anderen Instanzen des Unterprogramms.
Einfaches Beispiel:
Code: |
FUNCTION myfunc(i%) AS INTEGER
IF i%>0 THEN
PRINT "Test."
i%=i%-1
i%=myfunc(i%)
ENDIF
myfunc=i%
END FUNCTION
myfunc(10)
|
Dafür ist Rekursion natürlich nicht gedacht, sondern praktisch FOR-NEXT, aber SO einfach funktioniert Rekursion... Solange man sich nicht den Kopf zerbricht, was dabei wirklich los ist, völlig простой ;-). |
|
Nach oben |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1271 Wohnort: Ruhrpott
|
Verfasst am: 14.12.2024, 21:14 Titel: |
|
|
Revilo hat Folgendes geschrieben: | Dein Begriff "Trabinesien" liest sich, sorry, genauso abwertend, herablassend wie "Ostzone". | Schade, daß das so rüberkommt. Ich finde diese Bezeichnung von allen Umschreibungen für die ex-DDR die netteste (ich mag den Trabi), und sie ist, genauso wie meine Wohnortbezeichnung "Ruhrpott", mit einem leichten Augenzwinkern zu verstehen. Das ist rheinisch-westfälischer Humor. Da kann ich nichts für, das ist genetisch bedingt.
SpionAtom hat Folgendes geschrieben: | In meinen Augen ist übrigens Freebasic auch ziemlich tot. | Die FB-Entwickler haben es leider versäumt, eine Android-Version von FB zu kreieren, mit der man Smartphone- und Tablet-Apps schreiben könnte, ohne Cloudzwang und ohne Hintertüren. Oder ein FB-Plugin für die Arduino-IDE, was ich persönlich sehr begrüßen würde. Denn im Grunde ist FB doch ein C-Frontend, nur mit wesentlich menschenfreundlicherer Syntax.
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
|
Revilo
Anmeldungsdatum: 26.12.2022 Beiträge: 172
|
Verfasst am: 15.12.2024, 19:23 Titel: |
|
|
Hallo Berkeley,
vielen Dank. Das sieht ja wirklich recht < simpel, einfach> aus, aber der Teufel steckt nun mal im Detail. Deshalb habe ich noch einige Nachfragen.
Zitat: | FUNCTION myfunc(i%) AS INTEGER
IF i%>0 THEN
PRINT "Test."
i%=i%-1
i%=myfunc(i%)
ENDIF
myfunc=i%
END FUNCTION
myfunc(10) |
Was bedeutet die letzte Zeile?
Ist das der "Startwert" also die Vorgabe für i%, wenn ja , warum steht sie dann an Schluss und nicht am Anfang?
Oder ist es das Endergebnis, das letztlich herauskommt?
Dann müßte doch eigentlich PRINT myfunc(10) stehen, oder?
Was bewirkt diese Funktion eigentlich, was ist das finale Ergebnis?
Ich vermute mal, dass dann 10 * "Test." steht, also Test., Test., Test., .....
richtig?
PS: Mal ehrlich, hast du mal russisch gelernt oder hast du dich einfach der Google-Übersetzungshilfe bedient?
Gruss Revilo |
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4685 Wohnort: ~/
|
Verfasst am: 15.12.2024, 20:14 Titel: |
|
|
Die letzte Zeile ruft die Funktion auf, mit dem Parameterwert i% = 10. Dieser Funktion ruft dann in Zeile 5 ebenfalls wieder die Funktion auf, diesmal mit dem Parameterwert 9. Diese ruft dann wieder die Funktion auf, usw.
Ohne die letzte Zeile hast du zwar eine schöne Funktion, sie wird aber dann nirgens aufgerufen und ist daher nach außen nicht sichtbar.
Zitat: | Was bewirkt diese Funktion eigentlich, was ist das finale Ergebnis? |
Ausprobieren. Ich könnte mir aber vorstellen, dass in der letzten Zeile tatsächlich ein "PRINT myfunc(10)" (oder irgendeine andere Art der Auswertung) stehen muss - dass Funktionen wie Prozeduren aufrufbar sind, war meines Wissens eine Neuerung in FreeBASIC. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|