Herzlich Willkommen zu diesem Tutorial!
In diesem Tutorial versuch ich Anfängern zu erklären was ein For-Loop ist und wie er verwendet wird und Funktioniert.
Dazu ist nicht viel wissen benötigt und man kann gleich Resultate aus diesem Tutorial erziehlen.
Falls euch das Tutorial gefällt könnt ihr gern ein Feedback hier drunter schreiben und fragen stellen.
Was ist eine For-Loop (Schleife)?
Eine Schleife ist eine Kontrollstruktur d.h sie wird z.B verwendet um Code in einer Anwendung wiederholt auszuführen.
Darunter fällt in SA-MP z.B das Hochzählen und auswerten von Daten, falls der Code in der Schleife vorhanden ist.
Mehr dazu gibt es im Wikipedia, aber das grobste sollte erklärt sein. (Hier!)
Was macht sie?
Eine For-Loop zählt einen Integer bis zu einen vorgegeben Wert positiv hoch oder negativ runter und Stoppt die Schleife falls dieser Wert erreicht wird.
Wird dieser Wert nicht definiert läuft der For-Loop so lang bis er unterbrochen wird. (Endlosschleife)
Wozu verwendet man sie?
Man verwendet ihn um z.B Datenabgleiche zu machen oder um Zeichenketten zu Zählen und oder sie zu Bearbeiten.
Man kann ihn ebenso verwenden um Daten zu Zählen oder um Werte verschiedenen Datenstrukturen zuzuweisen.
Auch wird eine Schleife oft benutzt um Datenstrukturen auszulesen und sie zu Verändern. (Was ist eine Datenstruktur?)
Wie verwendet man sie und wie erstellt man sie?
Es gibt verschiedene möglichkeiten einen For-Loop zu verwenden und in zu erstellen.
Die wohl einfachste und bekannteste Form einen For-Loop zu Initialisieren ist diese:
for(new i = 0; i < MAX_PLAYERS; i++)
Ebenso gibt andere Formen einen Loop zu erstellen z.b diese:
new i = 0;
for(; i < Max; i++)
MAX_PLAYERS ist in diesem fall eine Konstante die die maximalen Slots des Servers wiedergibt.
Aber kommen wir zu verwenden.
Wir haben ein Array in dem wir die Wörter, "Hallo, ich, bin, ein, Loop" gespeichert haben. (Char-Array)
Nun möchten wir dieses Array auslesen und uns die Wörter zurückgeben lassen.
new Words[] = {"Hallo", "ich", "bin", "ein", "Loop!"};
for(new i = 0; i < sizeof(Words); i++)
{
printf("Wort %i: %s", i, Words[i]);
}
Ebenso können wir abfragen machen ob ein Wort schon existiert.
new Words[] = {"Hallo", "ich", "bin", "ein", "Loop!"};
for(new i = 0; i < sizeof(Words); i++)
{
if(strfind("Hallo", Words[i]) != -1)
{
printf("Das Wort %s existiert im Array!", Words[i]);
}
}
Geschwindigkeiten?
Natürlich geht es in SA-MP viel um Geschwindigkeit des Scripts, um eventuell Resourcen zu sparen oder einfach eine besser Peformance zu haben.
Darunter gibt es wichtige Aspekte die man wenn möglich beachten sollte.
Die schnellste Form eine Schleife zu verwenden ist es, als Bedinung GetMaxPlayers zu verwenden.
Dazu definieren wir in den Globals einen neuen Wert also einen Integer in diesem fall und geben GetMaxPlayers darin aus.
new Max_Players;
OnGameModeInit(...)
Max_Players = GetMaxPlayers();
Somit können wir bei 50 Slots Servern z.B erheblich an Leistung sparen.
Da MAX_PLAYERS seit SAMP 0.3 als 500 definiert ist und der Loop sonst jedesmal bis 500 Zählt.
Verwendung von unserer neu definierten Variable:
for(new i = 0; i < Max_Players; i++)
Man könnte aber auch MAX_PLAYERS neudefinieren:
#undef MAX_PLAYERS
#define MAX_PLAYERS (Slots)
Anweisungen in der Schleife?
Es gibt verschiedene Anweisungen die man in einer Schleife verwenden kann.
Darunter zählen "break, continue".
Break - Unterbricht die Schleife sofort nach dem Aufruf und beendet sie.
Continue - Falls continue aufgerufen wird fängt die Schleife mit dem nächsten Loop an. (z.B wenn schleife im 4. loop ist springt sie auf den 5.)
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(example >= 5)
{
break;
}
}
Ich hoffe ich konnte euch dem Loop näher bringen und euch hat dieses kleine Tutorial gefallen!
Edit 1:
Max zu MAX_PLAYERS geändert.
Edit 2:
Max_Players ( GetMaxPlayers ) hinzugefügt
Edit 3: Edit Edit