Diskussion:IF

Aus C64-Wiki
Zur Navigation springenZur Suche springen

Hallo Werner,

Macht es vielleicht Sinn beide Varianten darzustellen. Einmal die Vereinfachung und einmal die daraus resultierende Lange Version, um es Einsteigern verständlicher zu machen? --Jodigi 06:14, 25. Okt. 2010 (CEST)

Macht wenig Sinn! Das Prinzip der ON-GOTO-Nachbildung besteht nur darin, den "WAHR"-Wert von -1 auf 1 zu ändern und den "FALSCH"-Wert auf 0 zu belassen. Und da bietet sich ein einfacher Vorzeichenwechsel -(A>0) geradezu an. Ein ((A>0)=0)+1 liefert zwar auch das gleiche Ergebnis, macht die Sache jedoch nur unnötig kompliziert. --Werner 20:23, 25. Okt. 2010 (CEST)
Stimmt, ich muss da Werner Recht geben. Die alte Variante oder beide Varianten sind für den Einsteiger nicht unbedingt so ideal. Als Übungsbeispiel ginge die alte Variante als Lösung zwar durch, aber hier ist die Zielsetzung ein ON-GOTO Äquivalent für IF-GOTO zu zeigen. Die kurze Variante nur nur einfacher, sondern auch ebenso elegant. Weiß auch nicht, warum ich's damals gleich so geschrieben habe. Vermutlich wollte ich das Zustandekommen des Ausdrucks etwas nachvollziehbarer machen. Es macht die Sache deswegen aber nicht leichter verständlich ... ;) --JohannKlasek 23:38, 26. Okt. 2010 (CEST)

Die Vergleichsoperatoren sollten schon hier stehen...
Wäre nicht sinniger anstelle von Ausdruck gleich direkt den Vergleich (also wie es war) zu erwähnen?? - Ich vergleiche bei IF...THEN... ja immer... --Jodigi 03:49, 2. Nov. 2009 (CET)

Moiree 04:39, 2. Nov. 2009 (CET): bspw. kein Vergleich, doch ein Ausdruck:
 IF ST THEN ?"Fehler:";ST
Ist das nicht ein Vergleich auf ST<>0 ? --Jodigi 04:54, 2. Nov. 2009 (CET)
Ja, so geschrieben ist es ein Vergleich :P
Aber anstelle von <Ausdruck> bzw. <Vergleich> bietet sich auch das Wort <Bedingung> an, nicht umsonst nennt man das Ganze auch "bedingte Anweisung". --Hugo 09:20, 2. Nov. 2009 (CET)
Nicht ganz: In der Literatur zu Programmiersprachen wird bei if-then-else oder ähnlichen Konstruktionen von einem Ausdruck (Expression), z.B. oft ein Boolscher Ausdruck, die Rede, der, wenn er eine bestimmte Bedingung erfüllt, den einen oder den anderen Ablaufzweig nimmt, z.B. Boolscher Ausdruck gleich true für den then-Zweig. Die Bedingung lautet im Fall von BASIC 2.0, dass der Ausdruck einen Wert ungleich 0 liefern muss, wenn der THEN/GOTO-Zweig aktiv werden soll. <Bedingung> würde also nur die implizite Behandlung beschreiben nach der IF-Befehl vorgeht, nicht das was der Programmier eigentlich vorgibt bzw. dort codieren soll. --JohannKlasek 10:10, 2. Nov. 2009 (CET)
Nein, ist kein Vergleich, sondern die implizite Überprüfung (welcher natürlich ein Vergleich ist) durch das IF ob resultierende Ausdruck 0 oder ungleich 0 ist. So ist z.B. IF PEEK(144) AND 64 THEN ? "END OF FILE" hat überhaupt keinen Vergleichsoperator und insofern ist es sehr einschränkend beim Teil zwischen IF und THEN von Vergleich zu reden. --JohannKlasek 09:46, 2. Nov. 2009 (CET)
Ad Vergleichsoperatoren: Dieses Doppelgemoppel der Vergleichsoperatoren hier und bei Operatoren, welcher hier zudem nur ein Teil der bei Ausdrücken möglichen Operatoren darstellt, ist nicht sonderlich hilfreich. Dann kommen die nächsten Begehrlichkeiten bezüglich logischer Verknüpfungen (war auch schon hier) usw. und dann hat man eine Kopie der Operatorenseite hier stehen ... :(
Soviel Kompetenz wollen wir dem Leser schon zusprechen, den Link zu folgen und wieder zurückzufinden bzw. sich für den Link einem neuen Tab im Browser aufzumachen, schließlich lebt das Hypertext-Medium von diesem Aufbau. ;)
Außerdem sind die Vergleichsoperatoren ausführlich in den Beispielen behandelt und spätestens in dieser anschaulichen Darstellung ist jedem Dummy klar, was man mit IF-THEN so alles anstellen kann ... --JohannKlasek 09:46, 2. Nov. 2009 (CET)
Ein wenig doppel gemoppelt ist sicher nicht verkehrt. Zu geradlinig ist nicht immer ideal. Auf jeden Fall weiß ich auch, daß ein WWW-Leser gerne Hyperlinks klickt und somit immer weiterklickt und so auf andere Seiten kommt. Die wenigsten navigieren mit dem Zurück-Button oder öffnen das x-te Browserfenster...
Ich würde auch gerne mal wissen, wie ein Laie oder einfacher C64-Anwender (nicht Profi) heutzutage das C64-Wiki nutzt, wenn er ein Programm schreibt. --Jodigi 15:45, 2. Nov. 2009 (CET)
Nochmal, die Operatoren treten ohnehin in den Beispielen sehr gut in Erscheinung - eigentlich viel praktischer als dies die trockene Vergleichsoperatortabelle leisten kann. Ich selbst tu mich bei z.B. Man-Pages zu Kommandos oder generell Referenzmanuals leichter, wenn ich mich anhand von Bespielen orientieren kann und überspringe die allzu deklarative Darstellung, die mit allen möglichen Details aufwartet. ;)
Jemand, der zielstrebig nach einer Information sucht, lässt sich auch nicht von Links abschrecken und dem Weg, der dann wieder auf die Ausgangsseite zurückführt - falls er überhaupt zurück will! Jemand der im Wiki herumspaziert, wird da eher von Links "davongetragen", aber so ist das Wiki und Hyperttext als solches eben. Aber das Wiki kann vom Konzept an sich nichts dafür, sondern es liegt an der Bedienschnittstelle (Browser) das für einen Benutzer angenehm zu gestalten. Das Wiki kann das nur bedingt lindern (eventuell mit einer Breadcrumb-Darstellung, der letzten 5 besuchten Seiten oder so), aber auf keinen Fall sollen hier die Artikel so aufbereitet sein, das allzuviel Redundanz aufkommt. Speziell bei Referenzinformationen ist es M.E. überfüssig und auch schlecht "wartbar", wenn ein und derselbe Informationshappen zig mal, womöglich in unterschiedlichster Ausprägung, irgendwo im Wiki verstreut ist.
Anders bei einem Lernkurs oder so, wo man eine aufbauende Struktur hat, die verhindern soll von einem "roten Faden" abzuweichen. Aber sowas ist dieser Artikel definitiv nicht.
Ich finde auch nicht, dass man hier allzu sehr immer das Schreckgespenst des vermeintlichen "Profis" heraufbeschwören muss, um dann die 2-Klassenbenutzerschaft einzuführen und damit den Nicht-Profis jegliche Kompetenz abspricht mit kompakten, exakten oder eben nicht-redundanten Information umgehen zu können.
Für mich wäre die schönste Lösung, wenn man einen gewissen Teil eines referenzierten Artikels einbinden kann (Include o.ä.). Manche Wiki-Engines können das. Könnte man das hier auch machen? Dann bliebe die Wartbarkeit erhalten und kann dennoch den Teil in anderen Seiten "direkt" darstellen. Das könnte auch ein herausgelöster Teil (Unterseite) sein, welche dann sowohl von Operatoren als auch von IF verwendet wird (falls das "Ausschneiden" nicht so ohne weiteres möglich ist, aber ein Include schon).
--JohannKlasek 12:57, 3. Nov. 2009 (CET)
Bin für starke Verlinkung und wenig Redundanz, wie es eigentlich bei normalen Wiki-Artikeln (eben denen mit Referenzcharakter, wie es die normalen Erklärungsartikel zu BASIC-Befehlen sicherlich sind) üblich ist. Eine vorauseilende "Optimierung" für Leute, die keine Tabs oder den Back-Button benutzen (wollen), halte ich für unnötig und störend. Ich glaube auch nicht, dass die Mehrheit der Leser hier zu dieser Gruppe gehört. (Edit: Studie zum Thema - danach stirbt sogar der Back-Button aus, weil die Leute heutzutage eben eher Tabs benutzen... Ausnahmen bestätigen die Regel ;-) )
Andererseits: Wenn jemand "Artikel zum Ausdrucken" schreiben will, immer los. Aber dann bitte separat und nicht einzelne Referenzartikel halbherzig umbauen, dann wird das nichts Halbes und nichts Ganzes. -- 1570 17:04, 3. Nov. 2009 (CET)
Das ließe sich leicht über {{PrioritätvonOperatoren}} o.ä. lösen. Moiree 03:45, 5. Nov. 2009 (CET)

1. Kann ein Vergleich mit einem Leerstring entfallen? 2. Ist "Then" optional ?[Quelltext bearbeiten]

Ich habe mich damals (1983) nicht lange mit Basic aufgehalten, sondern bald mit Assembler angefangen. Jedoch am PC nutze ich hin und wieder Blitzbasic für kleine Programme.

Dort kann man aber den Vergleich mit einem Leerstring weglassen, weil nur eine String-Variable als Bedingung automatisch auf einen Leerstring prüft.

Also kurz gesagt: Funktioniert "If A$ Then ..."?

2. Ebenfalls bei Blitzbasic kann "Then" immer weggelassen werden.

Also funktioniert "If A Print A"? --Sirrus (Diskussion) 02:30, 16. Jun. 2023 (CEST)