Benutzer-Werkzeuge

Webseiten-Werkzeuge


k10:k10.3:k10.3.4:start

10.3.4 WHILE-WEND-Kontroll-Struktur

Auch die in den folgenden Abschnitten vorgestellte WHILE-WEND-Kontroll-Struktur ist eine weitere Form der Loop-Kontroll-Strukturen.

10.3.4.1 Syntax

Syntax für die WHILE-WEND-Kontroll-Struktur:

WHILE Expression
  <Anweisung(en)> 
WEND

10.3.4.2 Hinweise zur Syntax

  • Die Schleife wird wiederholt, solange der Ausdruck wahr ist.
  • Da die Prüfung der Abbruchbedingung am Anfang erfolgt, wird die WHILE-WEND-Kontroll-Struktur nie ausgeführt, wenn der (Start-)Ausdruck bereits falsch ist.
  • 'DO WHILE'-LOOP-Kontroll-Struktur ist eine äquivalente Struktur zur allgemeinen DO-LOOP-Kontroll-Struktur→ Kapitel 10.3.1 Do..Loop.

10.3.4.3 Beispiel 1

Eine Datei wird zum Lesen geöffnet. Dann wird der Inhalt der Datei zeilenweise ausgelesen und jede Zeile in einem Array gespeichert – solange das Ende der Datei noch nicht erreicht ist und noch Zeilen ausgelesen werden können:

  hFile = Open sRubrikPfad For Input 
  While NOT Eof(hFile) 
    Line Input #hFile, sZeile 
    aSuchDateiMatrix.Add(sZeile) 
  Wend 
  Close #hFile 
  aSuchDateiMatrix.Sort(0) 

10.3.4.4 Beispiel 2

Die Aufgabe: 'Solange noch ein Block von zwei aufeinander folgenden Leerzeichen in einer Zeichenkette existiert, sollen alle Blöcke von zwei Leerzeichen durch ein einziges Leerzeichen ersetzt werden' hat eine einfache Lösung:

While InStr(sTestString, "  ") 
  sTestString = Replace$(sTestString, "  ", " ") 
Wend

10.3.4.5 Beispiel 3

Das Beispiel 3 demonstriert den Einsatz von vier unterschiedlichen Loop-Kontroll-Strukturen für die Bearbeitung der gleichen Aufgabe:

  • FOR..TO..NEXT-Kontroll-Struktur
  • REPEAT..UNTIL-Kontroll-Struktur
  • WHILE..WEND-Kontroll-Struktur
  • DO..WHILE..LOOP-Kontroll-Struktur (Alternative)

Partialsummen

Abbildung 10.3.4.5.1: Berechnung von Partialsummen nach 3 Varianten

Der Quelltext wird nur in den relevanten Auszügen angegeben:

Public Sub btnPartialsummeBerechnen_Click()
  If KontrolleEingabedaten() = "Dateneingabe fehlerfrei!" Then
     If optVariante1.Value = True Then
        Variante_1(iAnfangszahl, iEndzahl) ' Kontrollstruktur FOR..TO..NEXT
     Else If optVariante2.Value = True
        Variante_2(iAnfangszahl, iEndzahl) ' Kontrollstruktur REPEAT..UNTIL
     Else
        Variante_3(iAnfangszahl, iEndzahl) ' Kontrollstruktur WHILE..WEND
     Endif 
  Endif ' KontrolleEingabedaten()  
End ' btnPartialsummeBerechnen
 
Private Sub Variante_1(iAnfang As Integer, iEnde As Integer) ' FOR..TO..NEXT
  Dim iPartialsumme As Integer = 0
  Dim iSummand As Integer = iAnfang
  Dim iCount As Integer = 0
 
  For iCount = 1 To (iEnde - iAnfang + 1) Step 1
      iPartialsumme = iPartialsumme + iSummand
    ' Überlauf wegen Bereichsüberschreitung für Integer?
      If (IsIntegerRange(iPartialsumme) = False) And If (bSpezialfall22 = False) Then
         txtPartialsumme.Text = "FEHLER! SUMME " & String.Chr(8713) & " INTEGER"
         Return
      Endif ' Partialsumme-Überlauf ?
      Inc iSummand
  Next ' iCount
 
  txtPartialsumme.Text = Str(iPartialsumme)
 
End ' Variante_1 - Kontrollstruktur FOR..TO..[STEP]..NEXT
 
Private Sub Variante_2(iAnfang As Integer, iEnde As Integer) ' REPEAT..UNTIL
  Dim iPartialsumme As Integer = 0
  Dim iSummand As Integer = iAnfang
 
  Repeat
    iPartialsumme = iPartialsumme + iSummand
    If (IsIntegerRange(iPartialsumme) = False) And If (bSpezialfall22 = False) Then
       txtPartialsumme.Text = "FEHLER! SUMME " & String.Chr(8713) & " INTEGER"
       Return
    Endif ' Partialsumme-Überlauf ?
    Inc iSummand
  Until (iSummand > iEnde)
 
  txtPartialsumme.Text = Str(iPartialsumme)  
 
End ' Variante_2 - Kontrollstruktur REPEAT..UNTIL
 
Private Sub Variante_3(iAnfang As Integer, iEnde As Integer) ' WHILE..WEND
  Dim iPartialsumme As Integer = 0
  Dim iSummand As Integer = iAnfang
 
  While (iSummand < iEndzahl + 1)
    iPartialsumme = iPartialsumme + iSummand  
    If (IsIntegerRange(iPartialsumme) = False) And If (bSpezialfall22 = False) Then
       txtPartialsumme.Text = "FEHLER! SUMME " & String.Chr(8713) & " INTEGER"
       Return
    Endif ' Partialsumme-Überlauf ? 
    Inc iSummand
  Wend ' While End
 
  txtPartialsumme.Text = Str(iPartialsumme)
 
' Alternative Variante 3:
' Do While (iSummand < iEnde + 1)
'    iPartialsumme = iPartialsumme + iSummand
'    If (IsIntegerRange(iPartialsumme) = False) And If (bSpezialfall22 = False) Then
'       txtPartialsumme.Text = "FEHLER! SUMME " & String.Chr(8713) & " INTEGER"
'       Return
'    Endif ' Partialsumme-Überlauf ?
'    Inc iSummand
' Loop  
' txtPartialsumme.Text = Str(iPartialsumme)
 
End ' Variante_3 - Kontrollstruktur WHILE..WEND

Download

Die Website verwendet zwei temporäre Session-Cookies. Diese technisch notwendigen Cookies werden gelöscht, wenn der Web-Browser geschlossen wird! Informationen zu Cookies erhalten Sie in der Datenschutzerklärung.
k10/k10.3/k10.3.4/start.txt · Zuletzt geändert: 20.06.2016 (Externe Bearbeitung)

Seiten-Werkzeuge