Solars C++ Kurs
Programmieren leicht erlernt
Funktionen

while-Schleifen

Bisher liefen die Programme immer in eine Richtung ab. Sie konnten sich zwar verzweigen, aber Wiederholungen waren bisher nicht möglich.

Mit einer while-Schleife kann man main einen Programmteil beliebig oft wiederholen.

Hinter dem while wird in Klammer angegeben, welche Bedingungen erfüllt werden müssen, damit die Schleife ausgeführt wird. Solange die Bedingung war ist, wiederholt sich die Schleife.

Der Programmteil, welcher so lange wiederholt werden soll (also die Schleife), steht unter dem while in geschweifter Klammer.

main.cpp
#include <iostream.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>

//////////////////////////////////////////
// Diese Funktion zaehlt immer 1 weiter //
// Ab und zu mogelt sie aber auch und   //
// zaehlt 2 auf einmal weiter           //
//////////////////////////////////////////
//                                      //
//  VOR DEM ERSTEN AUFRUF DIESER        //
//  FUNKTION MUSS DIE FUNKTION SRAND()  //
//  BENUTZT WERDEN!                     //
//                                      //
//////////////////////////////////////////

int nScppkMogeln( int nZahl )
{
  int nErgebnis;
  int nZufall;
  double dRand;

  dRand = rand();
  dRand /= RAND_MAX;
  dRand = dRand * 10;
  nZufall = (int) dRand;

  if ( nZufall == 0 )
  {
    nErgebnis = nZahl + 2;
  }
  else
  {
    nErgebnis = nZahl + 1;
  }
  
  return nErgebnis;
}

//////////////////////////////////////////////
// Die Hauptfunktion mit der while-Schleife //
//////////////////////////////////////////////

int main()
{
  int nZahl;
  int nZaehler = 0;

  srand( (unsigned) time( NULL ) );
  rand();

  cout << "Wie oft soll soll der Satz wiederholt werden? ";
  cin >> nZahl;

  while ( nZaehler < nZahl )
  {
    nZaehler = nScppkMogeln( nZaehler );
    cout << "Ich schreibe den Satz jetzt zum ";
    cout << nZaehler << "mal.\n";
  }

  return 0;
}


Bei einer while-Schleife muß man immer darauf achten, das diese auf jedenfall irgendwann beendet wird. Sonst läuft das Programm immer weiter durch diese eine Schleife und läßt sich nicht mehr beenden. Dieses Phänomen nennt man dann eine 'Endlosschleife'.

Falls sie einmal aus versehen eine Endlosschleife erzeugt haben sollten, können sie das Programm unter DOS und Windows mit [CTRL]+C unterbrechen. Besser ist es jedoch, sich bei einer Schleife vorher genau zu überlegen, ob diese auf jedenfall irgendwann beendet wird.

Spielen sie ein bischen mit den Schleifen herum. Die Schleife ist beim Programmieren ein sehr mächtiges Element, welches sie oft benutzen werden. Folgendes winzige Programm wird ihnen die Vorteile einer Schleife besonders deutlich machen:

main.cpp
#include <iostream.h>

int main()
{
  char cBuchstabe;
  cBuchstabe = ' ';
  while ( cBuchstabe != 'x' && cBuchstabe != 'X' )
  {
    cout << "Um das Programm zu beenden bitte ein 'X' eingeben.\n";
    cin >> cBuchstabe;
    cout << "Sie haben ein '" << cBuchstabe << "' eingegeben.\n";
  }
  cout << "Programm beendet!\n";
  return 0;
}


Die Buchstaben vom Typ char werden in einfachen Anführungszeichen geschrieben, da das doppelte Anführungszeichen für Strings reserviert ist. Strings werden immer mit einem Null-Zeichen beendet. Somit ist 'x' nur ein Zeichen, der String "x" besteht jedoch aus zwei Zeichen, dem x und dem Null-Zeichen (\0).

Die Schleife in diesem kleinem Programm macht es vom Benutzer abhängig ob sie sich beendet oder weiterläuft. Die meisten Programme besitzen so eine Schleife damit sie sich nicht von alleine beenden, sondern erst nachdem der Benutzer es so wollte. Man sollte jedoch nicht vergessen, dem Benutzer mitzuteilen auf welche Art und Weise er das Programm beenden kann. (Ein DOS Kommandozeilen-Programm hat nunmal kein Menü über welches man es beenden kann.)