
Prozeduren:
Eine Prozedur ist eine Möglichkeit, oft benutze Routinen zu bündeln und als Prozedur abzuspeichern. So kannst du bequem den Befehl aufrufen und immer wird diese Routine ausgeführt. Spart Tipparbeit und hat noch einige programmtechnische Vorteile.
Macros:
Macros sind (nur) dazu da, Tipparbeit zu sparen. Sie sind nicht als Prozedur zu verstehen, denn Prozeduren haben z. B. einen eigenen Namensraum (Variablen, die Protected sind). So kann es in einer Prozedur eine Variable 'a' geben, obwohl es diese Variable bereits Global im Hauptprogramm gibt. Bei Macros dagegen wird der Inhalt eines Macros ja an jeder Stelle im Code eingesetzt, an der er aufgerufen wird:
Code: Alles auswählen
Macro zufall(min, max)
(Random(max+min)-min)
EndMacro
Debug zufall(1, 10)
For n=1 To 5
hallo=hallo+zufall(7, 21)
Debug hallo
Next
Debug zufall(1, 100)*(zufall(0, 1)+zufall(0, 1))+1000-500+250-750
Code: Alles auswählen
Macro zufall(min, max)
(Random(max+min)-min)
EndMacro
Debug (Random(10+1)-1)
For n=1 To 5
hallo=hallo+(Random(21+7)-7)
Debug hallo
Next
Debug (Random(100+1)-1)*(Random(1+0)-0)+(Random(1+0)-0))+1000-500+250-750
Dadurch, dass Makros im Code eingesetzt werden, wird der Code schneller ausgeführt, denn der Computer muss hinterher bei der Ausführung eines Programms nicht erst an die Stelle im Programm springen, wo die Prozedur steht.
Macros werden wie Prozeduren deklariert, sie können sogar keinen Parameter haben und das sieht dann so aus:
Code: Alles auswählen
Macro parameterlos
Debug "ja, was soll ich denn hier?"
EndMacro
parameterlos
parameterlos
Mit Macros kannst du PureBasic theoretisch sogar auf Deutsch übersetzen:
Code: Alles auswählen
Macro Wenn
If
EndMacro
Macro Ansonsten
Else
EndMacro
Macro EndeWenn
EndIf
EndMacro
Macro und
And
EndMacro
a=6
Wenn a=5 und 1=1
Debug "a ist gleich 5"
Ansonsten
Debug "a ist <> 5"
EndeWenn
