Zavus Leutz,
als ich letztens mal wieder sscanf definition in mein script eingebaut habe, ist mir "do" ins auge gesprungen. ich habe gereits die SuFu benutzt und nichts gefunden.
Jetzt zu meiner frage:
Was macht dieses "do" eigendlich?
MfG
Psycho
Zavus Leutz,
als ich letztens mal wieder sscanf definition in mein script eingebaut habe, ist mir "do" ins auge gesprungen. ich habe gereits die SuFu benutzt und nichts gefunden.
Jetzt zu meiner frage:
Was macht dieses "do" eigendlich?
MfG
Psycho
do
wird immer in Verwendung mit while verwendet.
Ein Beispiel wie man "do" anwenden wäre bsp. so etwas:
public OnGameModeInit() {
new x = -34;
do
{
x++;
}
while(x < 100);
return 1;
}
Ins deutsche übersetzt würde das ganze bedeuten:
Mach/Tu ... während ...
Zu beachten ist übrigens dass nach dem "while" ein ";", ein Similikon, gesetzt gehört.
Wenn du willst kannst du dir auch das hier http://wiki.sa-mp.com/wiki/Control_Structures#do-while anschauen.
cool wusste ich auch noch net hatte jetzt was anders gedacht aber egal thx
do
{
}
while(x < 100)
Tu es weil x kleiner als 100 ist
danke. hab mir sowas in der richtung schon gedacht. i-was mit tun ^^. wenn wir gerade beim thema schleifen (while) sind (vllt auch for) kann man schleifen auch abbrechen? also wenn jetzt ein bestimmter wert/funktion erreicht ist oder so. geht das?
do
{
}
while(x < 100)
Tu es weil x kleiner als 100 ist
entschuldigung das ich dich nun ausbessere, aber korrekt heißt es
Tu es solange bis x kleiner 100 ist
sry BlackFoX_UD_ wollte dich nicht angreifen oder so.
EDIT:
for( i = 0; i <= 100; i++)
{
Gebe aus: i
}
i ist die variable
er startet mit der zahl 0
endet bei 100
und geht immer um eine zahl weiter rauf
auf deutsch, er soll das solange machen bis er die gewünschte zahl erreicht hat
schaut dann ca so aus
1
2
3
4
...
...
100
ach jetzt hab ich es gecheckt. do ist die schleife udn sobald x über 100 steigt wird das dann gestopt oder? und wolve ich glaube blackfox lässt sich auch mal korrigieren
Nich schlimm hab wohl was übersehen, aber Hauptsache es stimmt jetzt
ja genau, in dem Fall hört das bei 99 auf, da ja <100 99 bedeutet und <=100 100 bedeutet
aber es hört dann einfach auf, da hast du recht.
geht das auch bei for? for benutz ich häufiger
Es geht bei allen schleifen
new x;
while(x <=100)
{
//aktionen
x++;
}
for(new x = 0;x<100;x++)
{
// Aktionen
}
do
{
x++;
}
while(x <= 100);
Was du als letztes nimmst ist deine entscheidung
ne ich meine halt: wenn ich jetzt nach ner spielerid suche, die einen bestimmten namen hat würe ich das eigendlich mit for(new i=0;i<MAX_PLAYERS;i++)... machen. jetzt möchte ich, wenn der name z.b. bei i = 50 gefunden wurde, das for gelöscht wird.
break; machste dann, wird die schleife unterbrochen
danke sehr an alle
Wichtig dabei:
Der "do" Block wird vor der Überprüfung ausgeführt.
new i = 30;
do
{
printf("before: %d after: %d", i, --i);
}
while(i != 30); (Achtung: Produziert eine Unendlicheschleife).
also müsste man:
do
{
x++;
while(x < 100);
}machen oder?
Dma meinte damit nur das der Block als erstes ausgeführt wird, bevor die bedingung gecheckt wird, danach
wenn die while bedingung stimmt springt er wieder zurück und führt dies wieder aus, also beim 1x wird der block trotzdem ausgeführt
ne, das format passt schon so, du darfst nicht das while in die klammern tun, dann heißt das ja so: tu das was in der klammer steht, nur das while steht nun auch da und das hat dann keine funktion
Fußgesteuerte
do
{
x++;
}
while (x<100);
Kopfgesteuerte
new x=1;
do while(x==1)
{
sendclientmessage...
}
heißt dann: tu das solange wie x 1 ist (also wenn x dann null ist dann macht er das eben nicht ^^)
war jetzt mal nur ein beispeil, da man hinundwieder auch kopfgesteurte braucht aber eher selten
Da wird eher der Compiler streiken (oder eher gesagt, abstürzen).
Die kombination do while ist so fatal wie auf der Autobahn spielen.
Wenn müßte das heißen:
while(...)
{
...
}
Außerdem braucht man "Kopfgesteuerte" (Check and do (cad)) viel öfter.
z.B. beim zeilen auslesen:
while(fread(FileHandle, StringHandle, sizeof StringHandle))
{
}
Würde so garnicht mit do while laufen.