Pawn Einstieg 2.0
- Sonderzeichen -
Wozu sind Sonderzeichen in einer Sprache da ?
Sie sind im Prinzip kleine Befehle & Regeln den Code Ablauf.
Fangen wir mit Grundkenntnis Mathematik an...
Jeder kennt sie , jeder kennt die Mathe Regeln.
Regel 1 : Punkt vor Strich also immer erst * und / vor + und -
Regel 2 : Klammern gehen vor Regel 1 !
Man sieht das immer andere Ergebnisse folgen :
Aufgabe 1 : Klammer Regel > 2+2 > 4 mal 8 = 32
Aufgabe 2 : Punkt vor Strich > 2*8 > 16 + 2 = 18
So wie man sieht ist das soweit klar , hoffe ich doch.
So kommen wir zum eigentlichen Thema, der Sprache selber, wieso werden klammern dort genutzt & wie Funktioniert das ganze.
Also eine Sprache wertet zwischen Terminal & nicht Terminal , Terminale Symbole sind Bezeichner sprich Namen für
Begriffe wie Variablen und Funktionen , derren Namen sind Terminale Symbole, Zahlen & Sonderzeichen hingegen ,
sind in bestimmten fällen nicht Terminal, Zahlen sind nur nicht Terminal wenn sie einzeln da stehen,
Sonderzeichen hingegen sind immer nicht Terminal , jedenfalls in einer Skript/Programmiersprache.
So wir sind gerade bei Sonderzeichen , daher fangen wir wie gesagt bei den Klammerregeln an,
in dieser Sprache gelten : ( ) und { }, 2 Klammerpaare , jedes paar hat seine Funktion.
So Klammer A ( und Klammer B ) haben die gleichen Funktionen wie in der Mathematik, die Klammer wird
immer als erstes ausgewertet sprich in der ersten Auswertung wird immer die innerste Klammer ausgewertet.
So wir definieren Beispielsweise das Terminal Symbol : xirgendwas
dieses enthält einen Wert , bei uns den Wert 7
So nun die Mathematik Aufgabe :
Da die Sprache die Regel innerste Klammer immer zuerst beachten muss wie es sein soll, Rechnen wir
So in der Sprache ist das Terminal Symbol ,,xirgendwas´´ eine Variable , zu Variablen kommen wir gleich,
sie enthält einen Wert 7, dieser wird nun genommen , da ,,xirgendwas´´ nur ein Name ist der ersatzweise
für unseren Wert 7 dient , dieser wird + 8 gerechnet eine Zahl also nicht Terminal und nochmal mal 7 auch
nicht Terminal, das Ergebnis lautet hier 105.
So wir waren gerade beim Begriff Variable ?
Wozu werden Variablen genutzt ?
Sie sind das wichtigste in einer Sprache, sie können verändert werden sprich ihr Inhalt ist nicht zwingend
gleich, so können wir diese Variablen wenn sie den Typ Zahl enthält , sie auch wie eine Zahl behandeln,
wir können Addieren, dividieren , Multiplizieren usw...
Im Grunde dienen Variablen als Zwischenablage wo wir Werte lagern können die wir unter Umständen wieder verwenden dürfen & können,
Variablen können auch als fest gesetzt werden, sie können eine Kette von Zeichen oder Zahlen sein , sie können
das was nötig ist um unser Skript mit Informationen zu füllen.
So hier kommen wir zur Sprache Pawn, diese hat gewisse Regeln die es zulassen Variablen auf bestimmer Basis zu erstellen
und zu verwalten, es gibt eine Menge Typen :
- Float , ein Typ der Koordinaten fassen kanns sprich Komma Zahlen
- Array , Ein Typ wie er schon sagt eine Reihe von Zahlen oder Zeichen enthalten darf
- Integer , Eine ganze Zahl
- Boolean, Falsch & Wahr, gibt nur diese 2 Angaben wieder ( eng. true false )
dazu gibt es folgende Eigenschaften :
- const , was im Englischen Konstant heißt also unveränderbar & sie hat immer den selben Wert der zugeteilt wurde.
- new , damit definieren wir eine Variable erst sprich muss immer da sein, heißt ja auch Neu
- [] , folgt am Ende einer Variable , dies nennt man Dimension wenn eine Reihenfolge mehrere Räume haben soll, in dieser Sprach darf die Variable Maximale 3 Räume haben.
Als Beispiel , so nun folgt eine definierung, dort müsste ihr euere Logik einschalten :
new const xirgendwas = 5;
so wie ihr seht erstelle ich eine Variable , new = neu für neue Variablen , const ist hier eine Eigenschaft wie z.b. Float oder eine Array,
danach folgt der Name des Bezeichners er muss Terminal sein! , danach unser Wert 5 der dank const immer der gleiche bleibt.
new xirgendwas = 5;
Hier besteht die Eigenschaft const nicht, daher darf die Variable geändert werden , nicht ?
So geben wir ihr eine Eigenschaft wie Float , da Float eine 3te Eigenschaft ist also die Struktur
der Variable angibt darf auch vorher const folgen da es ein Hauptwort ist sprich was
die Variable selber beschreibt und nicht ihre Struktur.
new const Float:xirgendwas = 3.14;
Wie ihr seht habe ich der Variable die Eigenschaft fest & unveränderbar gegeben, dann die Struktur Komma Zahl,
also darf sie alles was für eine Komma Zahl gültig ist enthalten.
new Float:xirgendwas = 3.14;
Jetzt ist sie nicht fest & kann verändert werden,
da wir aber gerade beim verändern sind, wie verändern wir sie ?
Ganz einfach , wir greifen normal auf sie zu wenn es Möglich ist,
xirgendwas = 5.4;
schon hat unsere nicht feste Variable einen neuen Wert, feste Variablen hingegen können
nicht geändert werden, da würde euch der Compiler sagen, nein das geht nicht und beendet den Vorgang.
Ihr seht das definieren ist gar nicht so schwer, komme wir aber nun endlich zu den geschweiften Klammern
im Englischen Brackets { } , diese sind in Pawn wichtig, sie geben Bereich an ,
sie geben an wie lange Dinge gültig sind & was in dem Bereich passiert, einige Bereiche besitzen ebenso
Eigenschaften die den Bereich bei bestimmten Situationen auslassen oder ihn doch beachten , mehr dazu jetzt.
Fangen wir an , Bereiche entstehen bei neuen Funktionen oder Anweisungen aber was ist das ?
Funktionen sind eigene Befehle ähnlich wie feste Variablen die nur etwas zurückgeben wenn
man es ihnen sagt, so Anweisungen ? Dies sind z.b. Fragen an den Code ,
oder Schleifen sprich Vorgänge die Solange laufen bzw. den Bereich ausführen solange
das stimmt was ihnen vorgegeben wird, alles liegt im eigenen ermessen & man hat
im Grunde die volle Kontrolle über den Code :
So Funktionen sind wie gesagt wie Variablen verhalten sich aber etwas anders,
denn man kann bestimmen ob sie was zurückgeben oder einfach nur Kommandos auführen,
sie können aber beides nicht das dies auch Falsch verstanden wird,
So eine Funktion :
xirgendwas()
{
// Ein Bereich
}
Wie man sieht müssen Funktionen nicht extra gekennzeichnet werden wie bei Variablen ABER
sie können auch 2te und 3te Eigenschaften enthalten ( variablen können 1te 2te und 3te enthalten ),
aber nicht das euch das verwirrt , es soll euch das ganze erleichtern so das ihr versteht wovon ich spreche.
diese lauten folgendermaßen :
2te
- keine Eigenschaft , ganz normale Funktion ohne besondere kennzeichnung
- public , eine Öffentlich Funktion die sich im gesamten / Globalen Bereich verwenden lässt
3te
- wie gesagt integer, float , array, boolean
So diese Bereiche { } ihr wisst sie grenzen ein oder ?
Das hat aber auch einen Grund , sie bestimmen falls variablen
in ihnen definiert wurden wie lange sie gültig sind, definieren wir Variablen
in einem Bereich { sind sie bis zum Ende des Bereich gültig }
ganze Einfache Regel, nicht ?
xirgendwas()
{
new unserevariable = 89;
} // Ab hier nicht mehr gültig
So ganz einfach, wie man sieht ist die Regel so einfach
das man sich da nicht viel merken muss außer man ist zu Faul zum lesen
Funktionen mit Eigenschaft :
Float:xirgendwas()
{
return 3.14;
}
Warum haben Funktionen auch Eigenschaften ? Warum nicht ist die Frage ,
so kann man eingrenzen was Funktionen zurückgeben dürfen wenn sie es tun,
wie man sieht darf in jeder Funktion egal an welcher stelle ,,return´´
verwendet werden ABER Achtung, sobald das erfolgt wird
die Funktion beendet, gibt aber den Wert , bei uns 3.14 an eine Anweisung
oder Variable wieder, bei Anweisungen wie Abfragen ist es egal welcher Typ es ist
Hauptsache es kann in einen Wahr oder Falsch Wert konvertiert werden,
bei Variablen ist es wichtig das diese die gleiche Eigenschaft haben,
sie müssen dann vom selben Typ sein !
new Float:unservar = xirgendwas();
so nun hat unsere Variable den Rückgabewert erhalten & darf sich einen Keks freuen :>
wie ihr seht ganz gutes Prinzip.
Aber auch in Funktionsköpfen dürfen sich Variablen befinden die einen Standardwert haben dürfen z.b.
new hallo = 5; // Variable Hallo hat wert 5
xirgendwas(variable0 = 7,variable1 = 8)
{
}
Wozu diese Standardwerte ? Das kann ich euch sagen , so muss man wenn man
die Funktion verwendet diese 2 Angaben nicht mehr machen, aber wie macht man sie ?
new variablex = xirgendwas(5,9);
jetzt haben ,,variable0´´ und ,,variable1´´ in xirgendwas den Wert 5 und 9,
so diese Kopfvariablen darf man in der Funktion nutzen & dementsprechend verwenden,
so kommen wir aber zu den Standardwerten, denn hat man schon Standardwerte & möchte
z.b. ,,variable1´´ nicht immer angeben ist es auch ganz nützlich einen Standardwert zu haben,
den man nur angibt falls nötig. Aber was wenn variable0 einen hat aber variable1 angegeben werden muss ?
Kein Problem , einfach überspringen , das geht mit dem zeichen _ für nichts,