Deutsch
Forum & Hilfe

Sprachelement: var

 
- Seite 1 -


var Bezeichner [ = Wert ] [, Bezeichner [ = Wert ], ...

Deklariert Variablenbezeichner und weist ihnen ggf. Werte zu.

Es können beliebig viele Variablen erstellt werden, erlaubt für die Bezeichnernamen sind Buchstaben und Ziffern und das erste Zeichen muss ein Buchstabe sein. Auch erlaubt sind die Zeichen _ und .

Hinweis: Var als Funktion kann verwendet werden um den Variablentyp zurückzuerhalten.

Siehe auch: § 5 - Datentypen

Beispiele für die Verwendung von Variablen:

Einfache Variable:
var a,b,c
a=10
b=20.5
c="Hallo Welt"
print a,b,c// gibt 10 20.5 Hallo Welt aus

Einfache Variable, kompaktere Schreibweise:
var a=10,b=20.5,c="Hallo Welt"
print a,b,c// gibt 10 20.5 Hallo Welt aus

Array:
var a=[10,20,30]
print a[1]// gibt 20

Assoziative Arrays:
var a=["Magnet"=5,"Faktor"=5.5,"Farbe"="Grün"]
print a["Faktor"]// gibt 5,5

Arrays als Objekte:

Arrays als Objekte:
var a,a.liste
a.magnet=5
a.faktor=5.5
a.farbe="Grün"
a.liste=50
print a// gibt magnet=5, faktor=5.5 farbe=Grün aus, aber nicht liste=50 da a.liste durch var eigenständig deklariert wurde.

Typ einer Variablen beziehen:
var a="Test"
print var(a)// gibt string aus

Keywords: var,declare,gettype

 
01.12.2014  
 



 
- Seite 1 -



HofK
"Es sei denn, nach sqrt wird solange numerisch "gedacht" wie es geht."

Ich hatte es gehofft, aber nicht unbedingt erwartet, denn derartig lästige Sonderzeichen sparendes, wirklich vereinfachendes habe ich bei den gängigen Sprachen bisher nicht gesehen. Gibt es das überhaupt schon irgendwo?

Sicher muss man es so einsetzen, dass die Übersichtlichkeit nicht zu kurz kommt. Das wird sich praktisch schnell zeigen.

Der Präkompilierer mit der Syntaxeigenschaft/Syntaxmittel Kodeergänzung durch Space Operator verdient eventuell einen eigenen Paragraphen, bei § 7 Operatoren geht der Space Operator etwas unter und ist ja dann auch kein klassischer Operator.

Das Leerzeichen, der Space Operator ist ein intelligenter Space Seperator, ein intelligenter Trenner, ein Space-Autoseparator kurz ein Autoseparator, ein polymorpher Seperator, damit noch etwas polymorphes bei InfinityProfan.

" ... das vor den logischen Operatoren aufgelöst wird ... er kann nur von Rechts nach Links aufgelöst werden." ist ganz wichtig zum Verständnis und sollte in den Paragraphen rein. Kann man den zugrundeliegenden Algorithmus kurz/vereinfacht/übersichtlich darstellen?

Freue mich schon auf's konstruieren und erklären von Beispielen zur Syntaxeigenschaft.
 
16.05.2015  
 



 
- Seite 2 -


Klaus Hoffmeister (16.05.15)
Ich hatte es gehofft, aber nicht unbedingt erwartet, denn derartig lästige Sonderzeichen sparendes, wirklich vereinfachendes habe ich bei den gängigen Sprachen bisher nicht gesehen. Gibt es das überhaupt schon irgendwo?


Ist mir nicht bekannt! Vlt. habe ich da ja was erfunden.

Klaus Hoffmeister (16.05.15)
Das Leerzeichen, der Space Operator ist ein intelligenter Space Seperator, ein intelligenter Trenner, ein Space-Autoseparator kurz ein Autoseparator, ein polymorpher Seperator, damit noch etwas polymorphes bei InfinityProfan.

" ... das vor den logischen Operatoren aufgelöst wird ... er kann nur von Rechts nach Links aufgelöst werden." ist ganz wichtig zum Verständnis und sollte in den Paragraphen rein.


Ok, ich schreibe das noch mit rein. Einen extra § möchte ich dafür nicht eröffnen da ich mich damit momentan schwer tue.

Klaus Hoffmeister (16.05.15)
Kann man den zugrundeliegenden Algorithmus kurz/vereinfacht/übersichtlich darstellen?


Das ist auch so eine Sache die ich nicht beherrsche. Vlt. als textalisches
Struktogramm:

Solange irgendwo Freizeichen in Befehlszeile* ( parse von Freizeichenposition nach Links das Schlüsselwort, wenn gefunden dann ists eine FN? { parse komplettes Argument* nach rechts und setze es in Klammern | setze ein Komma } )

*per rekursiver Algorithmus da eine "Befehlszeile" sowie ein komplettes Argument auch ein Teilargument sein kann)
 
16.05.2015  
 



iF (01.12.14)
...
Var kann auch verwendet werden um den Variablentyp zurückzuerhalten. In diesem Fall ist Var als Funktion zu verwenden: a=1.1;print var(a) //gibt float aus.
...


Das funktioniert jetzt!
 
12.11.2015  
 



HofK (24.02.2016)
Wenn dann irgendwann noch ein Sonderzeichen für var( ) wie °a übrigbleiben sollte - siehe Diskussion unter  [...]  - wäre es superzumquadrat!

Seinerzeit war auch die Frage, ob man statt var(a)=="long"
nur var(a)==long
zu schreiben ermöglichen könnte.


Da Du die Murmel scheinbar sehr gerne magst,

habe ich die einfach mal eingebaut!

Was jedoch nicht möglich sein wird:
var(a)==long
//statt
var(a)=="long"

Syntaktisch schließt der Space-Operator Funktions-Gleichnamige Konstanten erstmal aus:
print long a//print(long(a)) oder print(long,a)

Selbst per Komma zwingen wäre hier nutzlos, da dann long() statt long, sonst ginge auch screen.width statt screen.width() nicht etc. So würde also auch $alias long "long" zu beschädigtem Queltlext führen.
 
25.02.2016  
 




HofK
iF (25.02.2016)
Da Du die Murmel scheinbar sehr gerne magst,
...


Dann noch diese Murmeln:

 [...]  [...]  Und nicht nur diese Murmeln hier, krame gerade in alten Unterlagen, dabei fiel mir meine Arbeit von 1975 in die Hände - knapp 100 Seiten mit Schreibmaschine und handgemalten Symbolen - Computer damals noch Fehlanzeige.



Immer schön die Walze der Schreibmaschine mit einer Hand hoch- und runterdrehen und mit der anderen Hand mit einem Finger tippen. Hat wohl einige Wochen gedauert. Und in der letzten Zeile der Seite dann ein Schreibfehler. Mit Durchschlagpapier. Die "guten" alten Zeiten, dagegen ist das heutige Murmelspiel Kinderkram. 

Daher meine "Symbolkreativität".

Das var(a)==long sich mit der sonstigen Syntax nicht verträgt ist einsichtig. Aber da muss man die Flinte noch nicht ins Korn werfen.

Die Murmel, das Gradzeichen ° drückt den Grad von einer Sache aus. Bei der Temperatur gefriert das Wasser irgendwo und anderswo verbrennt man sich tüchtig.

Bei den Variablen ist es nun der "Grad" der Abbildung im Speicher. Bei long recht einfach, bei array etwas komplizierter.

Die "Grade" sind null, long, ... array.
Also etwa als Konstanten für Speicher"grade" darstellbar?

if °a==°long oder etwa if °a==long°

Natürlich hat auch die Darstellung in Stringform wie "long" ihre Vorzüge.

Passe erstmal das Beispiel polymorphe Prozedur  [...]  mit °a statt var(a) usw. an.
 
25.02.2016  
 




HofK
"Passe erstmal das Beispiel polymorphe Prozedur  [...]  mit °a statt var(a) usw. an."

Ist vollzogen, sieht übersichtlich aus und funktioniert prima!
 
25.02.2016  
 



Achtung: Es folgen wichtige Änderungen.

Beispielsweise gibt es nachfolgend die Anweisung "var" nicht mehr, da sie nicht notwendig ist und man Variablen einfach verwenden kann ohne sie extra deklarieren zu müssen.

Deshalb auch dieses Thema heraus aus Befehlssatz hinein nach Forum verschoben. Ob dann noch eine _Funktion "var" notwendig ist - besonders wegen dem ° Sonderzeichen, ist auch fraglich. Vermutlich eher nicht.

Zudem eine wichtige Änderung:

Variablen sind immer Lokal, Prozeduren haben nur Zugriff auf per global aufgeführte Variablen.
 
28.02.2016  
 




HofK
iF (28.02.2016)
Ob dann noch eine Funktion "var" notwendig ist - besonders wegen dem ° Sonderzeichen, ist auch fraglich.


Hatte kaum zu hoffen gewagt, dass es mit den per Angabe definierten Variablen etwas wird. Super! Eine var Funktion zum ermitteln des Typs ist dann sicher kontraproduktiv, schon weil man wegen des Space Operators dann auch

a = 1.5
t = var a

schreiben könnte, was doch etwas "eigen" wäre, dagegen ist
a = 1.5
t = °a

perfekt.
 
28.02.2016  
 



Hab trotzdem wieder ein Bug eingebaut,

schnell beheben - geht fast garnichts sonst.
 
28.02.2016  
 




HofK
Bug' s sind das Salz in in der Programmsuppe,
sonst wird es noch langweilig
 
28.02.2016  
 



So, bin hoffentlich nun übers Gröbste hinweg.

Toll sowas:
a=5, b=6

oder
a=5 b=6 c=[...

oder hier bin stolz wie atze:

print test().inherit.0

lol.mydatas.vendor=test().vendor
lol.anotherclass.attrib=test().size

print lol

wald=[
"bäume"=[
"hans" "ralf" "fred"
]
"gui"=gui.grid gui.hwnd [5,5]
]

gui.theme wald.gui gui.theme.debug

print wald.bäume

//

proc test
a=[
5
6
7
]
return [
"color"=rgb 0 0 0
"size"=50
"vendor"="Yamasupa"
"inherit"=a
]
endproc



Kann man also Strukturen schaffen und mit ihnen um sich werfen.

 
28.02.2016  
 




HofK
iF (28.02.2016)
Kann man also Strukturen schaffen und mit ihnen um sich werfen.


... und Anfänger hart am Kopf damit treffen. Das Beispiel ist ein prima massives Wurfgeschoss dafür.

Aber man sieht gleich viele Möglichkeiten recht kompakt und mir bleibt Arbeit es Schritt für Schritt rüberzubringen. Quasi mit Wattebällchen werfen ist bei dem Stoff angesagt.

Freue mich drauf. ------
 
29.02.2016  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

15.382 Betrachtungen

Unbenanntvor 0 min.
RudiB.20.03.2020
maroro25.07.2016
Sascha Patzsch23.03.2016
Pedro Miguel16.03.2016
Mehr...

Themeninformationen

Dieses Thema hat 2 Teilnehmer:

iF (13x)
HofK (10x)


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