
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
Hallo, > Hier hast Du den Fehler gemacht, dass Du Ãn der 1. Zeile gleich die Zuweisung geschrieben hast. > Das kannst Du zwar machen, dann gilt aber die If-Abfrage nur für eine Zeile. ja da hast Du Recht. Aus diesem Grund sagt der Compiler auch er würde ein END IF ohne IF haben, da das vorherige IF für ihn schon abgeschlossen ist (der Compiler setzt sozusagen ein "imaginäres END IF" ans Zeilenende. Wenn er kein IF zum END IF finden ist offenbar eins zu viel oder es liegt ein Fehler vor, wie hier. > Früher, im alten Basic hat man noch alles in eine Zeile geschrieben, aber durch Doppelpunkte getrennt. Jein, man konnte zwar durch Doppelpunkte mehrere Anweisungen in eine Zeile schreiben, aber meines Wissens nach nicht mehrere Befehle in eine IF Abfrage: if 1 = 1 then print 100: print 200: print 300 ergibt nämlich folgenden Pseudo Code: 4 : 20 PUSH 1 7 : 20 PUSH 1 10 : 64 TEST EQUAL 11 : 4 JNE 22 14 : 20 PUSH 100 17 : 30 PRINTNUMB 18 : 31 PRINT 17 : 0 PRINTEND 22 : 20 PUSH 200 25 : 30 PRINTNUMB 26 : 31 PRINT 25 : 0 PRINTEND 30 : 20 PUSH 300 33 : 30 PRINTNUMB 34 : 31 PRINT 33 : 0 PRINTEND 38 : 255 END Das heißt wenn 1 nicht 1 wäre (nur zur Anschauung her) wird automatisch zum Offset 22 gesprungen, also 200 ausgegeben. Es war offenbar früher nicht so ohne weiteres möglich (zum Beispiel ohne GOTO) mehrere Befehle in die If Abfrage einzubinden, obwohl die BASIC Token dies ausdrücklich ermöglichen. Das Kompilat stammt vom CCBASIC Compiler. > Geht eventuell auch noch im Basic++, ist aber ziemlich unübersichtlich. Zunächst wollte ich den ":" auch in BASIC++ erlauben, habe mich dann dennoch umentschieden. Der Doppelpunkt hat im Prinzip keinen Vorteil, er fördert nicht die Lesbarkeit und ermöglicht es auch nicht kompakteren Code zu erzeugen. Zusätzlich kam dann noch die Schwierigkeit, dass ich den Doppelpunkt schon für eine andere Sachen reservieren wollte und jetzt auch habe, nämlich für lokale Labels/Sprungmarken, wie man es auch aus anderen BASIC Dialekten her kennt. Gruß, Stefan Meine Homepage: http://www.fdos.de/ccbpp |
| Antwort schreiben |