Deutsch
Befehlssatz und Hilfe

§10 - Syntax

 
- Seite 1 -


§10 - Syntax

Die Syntax ist bewusst auf Praktikabilität getrimmt.

Zeilen-Enden und Semikolon trennen Befehle, ausgenommen eine Klammerung oder String-Konstante ragt über weitere Zeilen.
//Beispiele für zeilenweises- und zeilenübergreifendes Schreiben:
print "Dies ist
ein Text mit einer
Stringkonstante mit
Zeilenumbrüchen"
print "Dies ist\nein Text mit einer \nStringkonstante mit\nZeilenumbrüchen."
print 10+20;print 30+40
print 10+20
print 30+40
print (10
+20
+30)
print (10+20+30)

Befehle und Funktionen können als Befehl oder Funktion formuliert werden, z.B. print 123 oder print(123).

Variablensyntax:
a=10
a=10,b=10
a=10 b=10

Arrays (und Assoziative):
a[0]=10
a.0=10
//
a["test"]["test"]=10
a.test.test=10
//
b=[10,20,30]
//
c=["Hallo"=10,"Welt"=["pt2"=20,"pt3"=30]]
 
18.01.2015  
 



 
- Seite 1 -


Schauen wir doch mal.

Scheint aber natürlicher zu sein als das Übliche:

display rotate left
objekt verb adjektiv

dürfte der Mensch besser lesen können als display(rotate,left).

Dagegen gekruxel: display klammer auf rotate komma left klammer zu
Dagegen gekruxel: display ( rotate , left )

ebenso später mgl.:
rotate display left
oder
left rotate display

Da ich sowas wie eine weitere Dimension der Betrachtung der
Schlüsselworte andenke, quasi sowas wie "Rotate"... ja was? oder
"left"... ja was? Der Präkompilierer das "ja was?" beantworten könnte
durch Festlegungen von Wertigkeiten von Schlüsselworten oder Aussagen.

Solange das Ganze ohne Einschränkungen im Bezug auf die üblichen
Konventionen geschehen kann, dürfte es als Zugewinn empfohlen
und aber auch empfunden werden so einen kleinen Hauch in die
Richtung wie Programmiersprachen vielleicht einmal werden könnten,
wenn wir denn endlich Quantenrechner zu hause haben.

Nach dem Motto "Der versteht schon, solange es anders kaum Sinn ergibt."

Vielleicht sollte man der Sache mal eine Chance geben.
 
14.05.2015  
 




HofK
RGH (14.05.15)
Ob die Programme dadurch wirklich lesbarer werden ...


Die einfachere Syntax für Schreibfaule dank sehr nachdenklichem Präkompilierer kann durchaus zugleich bequemer und übersichtlicher sein, wenn man die leicht mehrfach zu schreibenden Leerzeichen mit einer nichtproportionalen Schrift (z.B. Courier New) kombiniert. In der Online IDE ist das dann noch mit den Farben perfekt, hier in der Codebox schon ungünstiger und in der vereinfachten mobilen Version kann man momentan sehen, wie es eventuell noch ungünstiger ist.

Man erkennt das auch bei herkömmlichem Kode.
Mein obiges Schachtelfeld var freieNatur = [ ... hatte ich für die Codebox mit Proportionalschrift extra "optimiert", mobil ist es in der bewusst vereinfachten Box logischerweise dann keineswegs übersichtlich und nach kopieren in die Online IDE sieht man, wie ich mit den Leerzeichen jongliert habe.

Gibt der nachdenkliche Präkompilierer das Ergebnis seines "Denkprozesses" eigentlich lesbar an den Menschen heraus? Etwa sogar bearbeitbar?
 
15.05.2015  
 



Das Ergebnis des Präkompilierers ist für Menschen kaum lesbar
aufbereitet, hm.
 
15.05.2015  
 




GDL
Hallöle,

ich habe das immer noch nicht kapiert.
Man setzt ja extra Klammern wegen der Punkt vor Strich Regel.

(1+3)*2 =8
1+(3*2)=7

Nach was für einem Grundschema wird nun gerechnet, wenn man 1+3*2 eingibt ?

Grüßle
Georg
 
XProfan X3
Windows7 Xprofan 8,9,10 [...]  [...] 
31.05.2015  
 




RGH
Normalerweise geht Punktrechnung vor Strichrechnung, also müsste hier 7 herauskommen. Das ist zumindest in allen mir bekannten Programmiersprachen so.

Gruß
Roland
 
XProfan X2
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
31.05.2015  
 




GDL
Hallöle,

Ok. Das heisst, wenn man (1+3)*2 eingibt, bleibt die Anweisung in der Klammer erhalten oder muss man 2 Programmschritte machen?
a=1+3
a=a*2

Ist zwar Offtopic, war aber für mich wichtig zu wissen bei den ganzen Vereinfachungen in der Syntax.

Grüßle
Georg
 
XProfan X3
Windows7 Xprofan 8,9,10 [...]  [...] 
31.05.2015  
 



Würde ich auch nicht anders programmieren,
jedenfalls funktionieren nProcs und InfinityProfan genau so.

Es gibt halt Prioritäten:

Klammern
Punktrechnung
Strichrechnung
Vergleiche

So ist die Abarbeitung klar: 10+(20-10)*30=40

20-10
10*30
10+300
310=40
false
 
31.05.2015  
 



 
- Seite 2 -



HofK
Teste gerade die Möglichkeiten des Space-Operators



...



... und so weiter.

App funktioniert.

Nun lasse ich in der markierten Zeile
koerper = "Würfel"; kantenlaenge = 5
das Semikolon weg. Nur ein Leerzeichen trennt.

Der Kompilierer ist zufrieden, die App wird per Reciever sofort anstandslos installiert und nach dem öffnen gibt es? - einen schwarzen Beta-Bildschirm.

Aber schon mächtig Klammern und Kommata gespart. Und es bleibt gut lesbar, zumal im Vergleich zu Android Java
 
06.11.2015  
 



Eigentlich ist der Spaceoperator nicht so gedacht für var und print,
print z.B. hat als 2. Parameter keinen String etc.:

print ( { string | long | float | array | boolean } [, long Textfarbe [, long Hintergrundfarbe ] ] )

Es geht eher darum, Parameter die mit Komma zu trennen sind, auch
einfach mit Space schreiben zu können - so wie du das mit Cls machst.

Der Space-Operator kann nur das Komma ersetzen, nicht + oder - oder...
 
06.11.2015  
 




HofK
Das war mir halt noch nicht 100% klar, zumal es der Kompilierer schluckt und ...
iF (31.05.15)
... so sehr sauber parst, dass sogar Zeilenumbruch und Semikolon für die Zeilentrennung nicht zwingend notwendig sind.
...
print(2)return 10 print 5


Da werde ich mal typische Beispiele und "Gegenbeispiele" zusammenstellen und eine Übersicht für den Anfänger daraus machen.
 
07.11.2015  
 




HofK
Space-Operatoeur

Ein wenig rumwurzeln!

Zu Risiken und Nebenwirkungen lesen SIE meistens nicht die P. BeilageReferenz oder fragen ihren ArztProgrammierer oder ApothekerBuchschreiber.

Die Wurzelbehandlung:

// InfinityProfan Program v0.7.12
var str_text = "mm"
var str_leer = ""
var str_zero = "0"
var str_zahl = "900"
var null_var = null
var a = 3
var b = 4
print "??? rumwurzeln ???"
print "Die einfache Variante /auch mit Space-Operator."
print "  c = " + str(sqrt(a*a+b*b))// gibt 5 = Wurzel 25 aus
print "  c = " + str sqrt a*a+b*b// gibt 5
print "  c = " + sqrt a*a+b*b// gibt 5
print "Jetzt geht es schief: "
print "          c = " + sqrt a*a+b*b + "mm"// gibt NaN Not a Number wegen "mm"
print "Da geht was! "
print "  c = " + sqrt a*a+b*b + ""// gibt 5 aus
print "  c = " + sqrt a*a+b*b + "0"// gibt 15.8.. = Wurzel 250 aus
print "  c = " + sqrt a*a+b*b + "900"// gibt 16.9.. = Wurzel 25900 aus
print "  c = " + sqrt a*a+b*b + null// gibt 5 aus
print "... ohne Wurzel ..."
print a*a+b*b + str_text// gibt 25mm aus
print a*a+b*b + str_leer// gibt 25 aus
print a*a+b*b + str_zero// gibt 250 aus
print a*a+b*b + str_zahl// gibt 25900 aus
print a*a+b*b + null_var// gibt 25 aus
print " ... mit Wurzel ..."
print "  c = " + sqrt a*a+b*b + str_text// gibt NaN aus
print "  c = " + sqrt a*a+b*b + str_leer// gibt 5 aus
print "  c = " + sqrt a*a+b*b + str_zero// gibt 15.8.. = Wurzel 250 aus
print "  c = " + sqrt a*a+b*b + str_zahl// gibt 16.9.. = Wurzel 25900 aus
print "  c = " + sqrt a*a+b*b + null_var// gibt 5 aus
print "---------------------------------
"
print "So sollte es sein: "
print  "     c = " + sqrt(a*a+b*b) + "mm"// gibt 5mm aus...hier Klammer nötig!
//
// ... solange sie noch in der xprofan.api fehlt BETA !

proc sqrt(p1)

    return math(math.sqrt,p1)

endproc


siehe auch  [...] 
 
18.11.2015  
 




HofK
Teste gerade so vor mich hin und muss auch mal einstecken .

Dabei habe ich entdeckt , dass Infinity-Profan zu while sowohl endwhile als auch wend als Abschluss wie in der Referenz angegeben tatsächlich schluckt.


Das ist der Ansatz für eine polymorphe (ich liebe dieses Fremdwort ) Syntax. Allerdings sollte es immer leicht erkennbar bleiben um verschiedene Programme vergleichbar zu halten. Bei wend ist das sicher gegeben.

Es erhöht natürlich die Zahl der reservierten Schlüsselwörter.
Aber wer definiert schon eine Variable wend, wenn er nicht nur eine einzige Programmiersprache kennt.

Da while so ein doppeltes Ende beschert bekommmen hat, wäre es nur logisch, noch einige sinnvolle Ergänzungen zu tätigen (ev. später bei IPextended oder so ).

Wie wär's z.B. mit proc procedure func function und deren Enden?
Dann könnte man sich/anderen schon formal klarmachen, ob man einen Wert zurückliefert und muss in umfangreichen Funktionsprozeduren nicht nach dem/den return(s) schauen.

Da gibt es sicher noch mehr Kandidaten. Bei §99 ist schon einer angedeutet pic(ture). Und select bzw. switch sind auch Kandidaten - siehe § 8 - Kontrollstrukturen.

Nachtrag: zu i++ i-- bevorzugen einige Progger das inc i dec i.

Und Dank Präkompilierer beeinflusst das ziemlich sicher nicht einmal den eigentlichen Kompiler.
 
19.11.2015  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

22.585 Betrachtungen

Unbenanntvor 0 min.
Swissmade06.09.2024
p.specht21.04.2019
Micha1233406.08.2017
funkheld20.04.2017
Mehr...

Themeninformationen

Dieses Thema hat 4 Teilnehmer:

iF (7x)
HofK (6x)
GDL (2x)
RGH (2x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie