do-while schleife
Results 1 to 13 of 13
  1. #1

    Title
    Master
    Join Date
    Apr 2002
    Posts
    146
    Thanks
    0
    Thanked 0 Times in 0 Posts

    do-while schleife

    do bzw weil schleifen , werden doch immer solange ausgeführt bis
    eine bedingung nicht mehr zutrifft,
    dieses prog http://mips.piranho.com/ hat aber nach do keine bedingung zum überprüfen
    wozu dann überhaupt do?

  2. #2

    Title
    Baccalaureus
    Join Date
    Feb 2002
    Location
    Wien
    Posts
    534
    Thanks
    3
    Thanked 124 Times in 78 Posts
    da steht doch eh ein paar mal while(...)

    also
    Code:
    do
    {
    ...
    }while(...);

  3. #3

    Title
    Master
    Join Date
    Apr 2002
    Posts
    146
    Thanks
    0
    Thanked 0 Times in 0 Posts
    ja und? was hat das damit zu tun?

  4. #4

    Title
    Elite
    Join Date
    Dec 2001
    Posts
    340
    Thanks
    0
    Thanked 0 Times in 0 Posts
    nur weil das programm absolut häßlich formatiert ist heißt das nicht dass die while's nicht da sind

    habs zwar nicht probiert, aber sonst tät sich das ganze ja auch nicht kompilieren lassen.

    Code:
    //inneres do
    while (multimode & i < laenge);
    Code:
    //äußere do-while schleife
    while (i < laenge);
    I invented ctrl-alt-del but Bill [Gates] made it famous
    Dave Bradly, IBM PC designer

  5. #5
    Wings-of-Glory's Avatar
    Title
    CO-Administrator
    Join Date
    Jan 2002
    Posts
    4,001
    Thanks
    347
    Thanked 504 Times in 266 Posts
    sicher hats sie die!
    es sind zwei do-while schleifen in einander verschachtelt. Wenn du nochmal schaust siehst du die end-bedingung der do-while schleifen!
    PHP Code:
    import eprog.*;

    public class 
    Runlen extends EprogIO

    { public static void main (String[] argsthrows EprogException
      
      
    boolean      eingabefehler falsesinglemode truemultimode false;
        
    String       eingabepuffer "",hochk="'";
        
    int          i=0,j=0,laenge=0,count=2;
        
    char         zeichen=' ',nextzeichen=' ';
        
    StringBuffer ausgabepuffer = new StringBuffer();

        {
        
    eingabepuffer readWord();                       // Einlesen des Wortes
        
    laenge eingabepuffer.length();

        if (
    laenge <= 30);                                    // Laenge der eingabe Pruefen (Eingabe<=30)
        
    else eingabefehler true;
        }

        do { 
    /* erstes do */
        
    try {
            
    zeichen eingabepuffer.charAt(i++);
            
    nextzeichen eingabepuffer.charAt(i);
        }
            catch (
    IndexOutOfBoundsException e)
            {;}

        if (
    == laenge)
            { 
    nextzeichen ' '; }
        
        if (
    zeichen == nextzeichen// Feststellen welcher Modus verwendet werden muss
            
    multimode true;
              
    singlemode false; }
        else { 
    singlemode true;
               
    multimode false; }

        if (
    singlemode & !eingabefehler)     // Beginn und "End" des Singlemode
            
    ausgabepuffer.append(zeichen); }

        if (
    multimode & !eingabefehler)      // Beginn des Multimode
            
    ausgabepuffer.append(hochk);
         do {    
    /*zweites do*/
            
    if (multimode)

                { 
    ausgabepuffer.append(zeichen);
                do { 
    /*drittes do*/
                
    try {
                    
    nextzeichen eingabepuffer.charAt(++i);
                }
                catch (
    IndexOutOfBoundsException e)
                    {;}
                if (
    == laenge)
                    { 
    nextzeichen ' '; }
                
                if (
    zeichen == nextzeichen) { // Zaehlen der gleichen aufeinanderfolgenden Zeichen
                    
    count++; }
                else {
                    if (
    count 9)
                    { 
    eingabefehler true; }
                    else { 
    ausgabepuffer.append(count);
                    
    count 2; } }
                }
                while (
    zeichen == nextzeichen);/*ende 3. do

                { zeichen = nextzeichen; // Pruefen ob wieder eine gleiche Zeichenreihe folgt
                try {
                nextzeichen = eingabepuffer.charAt(++i);
                }
                catch (IndexOutOfBoundsException e)
                {;}
                if (i == laenge)
                { nextzeichen = ' '; }
                if (zeichen == nextzeichen);
                else multimode = false;
                }
                }
            }
            while (multimode & i < laenge); /*ende 2. do*/
            
    if (laenge)
            { 
    ausgabepuffer.append(hochk); }
            if (
    <= laenge)
            if (
    nextzeichen == ' ')
            { 
    ausgabepuffer.append(hochk); }
            if (!
    multimode)
            { 
    ausgabepuffer.append(zeichen); }
            }
        
        }
        while (
    laenge); // Ende der 1. Do-While Schleife

        
    if (eingabefehler)
        { 
    println("FALSCHE EINGABE"); }
        else 
    println(ausgabepuffer);

      }

    Last edited by Wings-of-Glory; 12-05-2002 at 22:17.
    Otto: Apes don't read philosophy. - Wanda: Yes they do, Otto, they just don't understand
    Beleidigungen sind Argumente jener, die über keine Argumente verfügen.
    «Signanz braucht keine Worte.» | «Signanz gibts nur im Traum.»


    Das neue MTB-Projekt (PO, Wiki, Mitschriften, Ausarbeitungen, Folien, ...) ist online
    http://mtb-projekt.at

  6. #6

    Title
    Master
    Join Date
    Apr 2002
    Posts
    146
    Thanks
    0
    Thanked 0 Times in 0 Posts
    also ich kapier das noch immer nicht, ich dacht jede do und jedes while braucht eine bedingung ?

  7. #7

    Title
    Elite
    Join Date
    Dec 2001
    Posts
    340
    Thanks
    0
    Thanked 0 Times in 0 Posts
    naja die bedingung kommt nach dem while, in klammern und muss ein bool'scher ausdruck sein. übrigens, dieses edit an meinem vorigen posting hats nicht mehr rechtzeitig geschafft, da adsl wieder mal spinnt:

    hoffe das hilft

    nur so am rand: do-while wirklich nur dann verwenden wenn der block mindestens einmal ausgeführt werden muss. ich war letztes semester auch beim kropatsch und ich weiß das er das teilweise ander
    I invented ctrl-alt-del but Bill [Gates] made it famous
    Dave Bradly, IBM PC designer

  8. #8

    Title
    Master
    Join Date
    Apr 2002
    Posts
    146
    Thanks
    0
    Thanked 0 Times in 0 Posts
    das eine bedingung in klammern steht etc weiss ich eh
    aber unverständlich is f. mich ein do ohne bedingung
    und dann ein while m bedingung, wo is der zusammenhang?
    ich mein ein do ohne bedingung was macht das überhaupt?

  9. #9

    Title
    Elite
    Join Date
    Dec 2001
    Posts
    340
    Thanks
    0
    Thanked 0 Times in 0 Posts
    ok, frage kapiert

    die syntax geht so:

    Code:
    do {
        /* mach irgendwas, mindestens einmal */
    } while ( &lt;BEDINGUNG&gt; );
    die bedingung steht halt zum schluss, das hat - wie erwähnt - den sinn dass die schleife einmal auf jeden fall ausgeführt wird. du kannst dir das auch so vorstellen: while-schleifen überprüfen die bedingung bevor der code ausgeführt wird, do-while schleifen danach. um das deutlich zu machen sthet dann bei while die bedingung auch vorne, bei do-while hinten
    Last edited by martin; 12-05-2002 at 23:07.
    I invented ctrl-alt-del but Bill [Gates] made it famous
    Dave Bradly, IBM PC designer

  10. #10
    nix_is's Avatar
    Title
    Master
    Join Date
    Feb 2002
    Location
    Vienna
    Posts
    157
    Thanks
    0
    Thanked 0 Times in 0 Posts
    "do" gibts ohne "while" nicht
    Give a man a fish and he'll eat it for the day.
    Teach him how to fish and he will eat for the rest of his life...

  11. #11

    Title
    Master
    Join Date
    Apr 2002
    Posts
    146
    Thanks
    0
    Thanked 0 Times in 0 Posts
    aber while ohne do schon, oder??

  12. #12

    Title
    Elite
    Join Date
    Dec 2001
    Posts
    340
    Thanks
    0
    Thanked 0 Times in 0 Posts
    ja!
    Last edited by martin; 12-05-2002 at 23:23.
    I invented ctrl-alt-del but Bill [Gates] made it famous
    Dave Bradly, IBM PC designer

  13. #13

    Title
    Master
    Join Date
    Apr 2002
    Posts
    146
    Thanks
    0
    Thanked 0 Times in 0 Posts
    ok danke sehr kenn mich jetzt aus

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •