Strict und Superstrict?

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

 

Peak7810

Betreff: Strict und Superstrict?

BeitragMo, Aug 23, 2010 15:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich überlege mir BM zuzulegen.
Und bin erstmal über Strict und Superstrict gestolpert.
Das bedeutet man deklariert Variablen zu Beginn, richtig?

Und könnte mir jemand ein Beispiel nennen?
Also wegen dem ganzen integer etc.
Das waren immer schon so ein bisschen böhmische Dörfer für mich weil ich mich damit noch nicht wirklich beschäftigen musste.

Vielen Dank schonmal

Thunder

BeitragMo, Aug 23, 2010 15:22
Antworten mit Zitat
Benutzer-Profile anzeigen
ganz einfach: in BB kannst du Variablen verwenden, ohne sie vorher zu deklarieren:
BlitzBasic: [AUSKLAPPEN]
For i=65 To 90
alphabet$=alphabet$+Chr(i)
Next

In BlitzMax mit SuperStrict-Modus musst du die Variablen erst als global oder lokal deklarieren:
BlitzMax: [AUSKLAPPEN]
Local i%,alphabet$
For i=65 To 90
alphabet$=alphabet$+Chr(i)
Next


Das bringt dir den Vorteil, dass eine falschgeschriebene Variable gemeldet und nicht einfach deklariert wird, wie hier:
BlitzBasic: [AUSKLAPPEN]
Local i%,alphabet$
For i=65 To 90
alphabett$=alphabet$+Chr(i)
Next


mfg Thunder

PS: Der Superstrict-Modus hat noch einige andere Besonderheiten (z.B kann kein Goto mehr verwendet werden), ich kenne jedoch nicht alle auswendig. Trotzdem empfehle ich die Verwendung.
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit
  • Zuletzt bearbeitet von Thunder am Mo, Aug 23, 2010 15:24, insgesamt einmal bearbeitet

BladeRunner

Moderator

BeitragMo, Aug 23, 2010 15:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Strict zwingt Dich zum deklarieren deiner Variablen (local / global), Superstrict auch zur strikten Typfestlegung (:int,:string etc.)
Ich empfehle immer superstrict zu nutzen, einfach um Fehler zu vermeiden.
Superstrict erwartet also dass Du all deine Variablen von vorneherein mit einem Gültigkeitsbereich und einer Typbestimmung versiehst, wodurch Fehlzuweisungen frühzeitig vermieden werden.
Zudem gibt es unter Super/strict kein Goto mehr (es wird auch nicht benötigt, da man Schleifen ja per Exit verlassen kann)
Auch haben Programme mit Strict/superstrict ein erweitertes Scoping, sprich veränderte Gültigkeitsbereiche für Variablen. Prinzipiell hat dann jede Schleife ihren eigenen Gültigkeitsraum.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

Peak7810

BeitragMo, Aug 23, 2010 15:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Typfestlegung (:int,:string etc.)


Das würde mich noch interessieren.
int und string is klar aber ich hab mal gelesen daß verschiedene sprachen so ihre eigenen größen für gleiche typbezeichnung haben.
Gibts vielleicht speziell für bmax eine Liste oder dergleichen.

Und eine letzte Frage noch, wenn ich jetzt beispielsweise eine entität einer variablen zuweisen möchte, muss ich das dann als int deklarieren, oder muss man sich dann einen speziellen typ selber überlegen?

BladeRunner

Moderator

BeitragMo, Aug 23, 2010 16:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Es gibt eingebaute Typen: Int, String, Float, Double...
Du kannst aber auch deine eigenen Typen deklarieren, mit Type.
Code: [AUSKLAPPEN]
Type TTest
    field bla:int
end type
local t:TTest = new TTest
t.bla = 1
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

Peak7810

BeitragMo, Aug 23, 2010 16:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Ah danke...
welche bereiche haben float double etc.

int ja bis 65... und string is klar...


damit wäre dann mein Wissensdurst fürs erste was das betrifft gestillt.

Xeres

Moderator

BeitragMo, Aug 23, 2010 16:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Byte, 8 bit, unsigned, 0 bis 255
Short, 16 bit, unsigned, 0 bis 65535
Int, 32 bit, signed, -2^31 bis +2^31 - 1
Long, 64 bit, signed, -2^63 bis +2^63 - 1
Float, 32 bit, floating point, (+/-)10^-38 bis (+/-)10^38
Double, 64 bit, floating point,  (+/-)10^-308 bis (+/-)10^308
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

Peak7810

BeitragMo, Aug 23, 2010 16:31
Antworten mit Zitat
Benutzer-Profile anzeigen
super...vielen vielen dank.
 

KirkZero

BeitragMo, Aug 23, 2010 23:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Noch nen kleiner Hinweis, der vielleicht nützlich sein könnte:

Da der Bereich von Byte und Short nicht ins negative gehen kann, kommst du bei einer Byte Variable die = 0 ist, auf 255 wenn du von ihr 1 abziehst

Beispiel:

BlitzMax: [AUSKLAPPEN]

A:Byte = 0 'A ist nun als Byte deklariert und hat den Wert 0

A:-1 'von A 1 abziehen

Print A 'A hat nun den Wert 255 und nicht -1


Verhält sich mit Short Variablen ebenso, nur das du dann bei 65535 landest.

Hatte deshalb schon öfters Fehler im Programm, wo ich erst garnicht darauf gekommen bin, das es daran liegt...
Also immer im Hinterkopf behalten
No Brain, No Pain

Lastmayday

BeitragDi, Aug 24, 2010 4:52
Antworten mit Zitat
Benutzer-Profile anzeigen
man kanns auch in eine zeile packen:

BlitzMax: [AUSKLAPPEN]
For Local x:Int = 0 To 10
'code
Next
'oder
For Local enemy:Tenemy = EachIn enemylist
enemy.x:+calc_move(0.1)
Next


ich benutze die BLIde zum programmieren, daher muss ich meist nur die anfangs Buchstaben eintippen und die Ide vervollständigt per Tab den rest.

mfg

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group