do?

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • 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.

  • 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

    Reallife-Server
    62.141.35.206:7777
    TeamSpeak
    85.131.199.220:9995

    Einmal editiert, zuletzt von Wolve ()

  • 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 ^^

  • 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.

    Reallife-Server
    62.141.35.206:7777
    TeamSpeak
    85.131.199.220:9995

  • geht das auch bei for? for benutz ich häufiger

  • 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.

  • danke sehr an alle

  • 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

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


  • 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 :D

    Reallife-Server
    62.141.35.206:7777
    TeamSpeak
    85.131.199.220:9995

  • 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. ;)