Galileo Computing < openbook >
Galileo Computing - Bücher zur Programmierung und Softwareentwicklung
Galileo Computing - Bücher zur Programmierung und Softwareentwicklung

...powered by haas.homelinux.net...

Einstieg in VB.NET von René Martin
- Für Programmiereinsteiger -
Einstieg in VB.NET
gp Kapitel 2 Aufbauwissen VB.NET
  gp 2.1 Ein zweiter Dialog
  gp 2.2 Ein Süßigkeitenautomat
  gp 2.3 Eine Listbox
  gp 2.4 With ... End With
  gp 2.5 Die Liste
  gp 2.6 Eine ComboBox
  gp 2.7 Die Select-Case-Verzweigung
  gp 2.8 Ein theoretischer Exkurs: Ereignisse
    gp 2.8.1 Dynamisch ein- und ausblenden
    gp 2.8.2 Dynamische Größenänderung
  gp 2.9 Zwei völlig überflüssige Beispiele
  gp 2.10 Schleifen
  gp 2.11 For ... Next
  gp 2.12 Do ... Loop
  gp 2.13 Eine Schleife über den Süßigkeiten
  gp 2.14 Ein theoretischer Exkurs: Sammlungen oder Collections
  gp 2.15 Die For ... Each-Schleife
  gp 2.16 Schleifen spielerisch
    gp 2.16.1 Primzahlen
    gp 2.16.2 Fibonacci-Zahlen
    gp 2.16.3 ggT und kgV
    gp 2.16.4 Ein Scherz zum Schluss
  gp 2.17 Rekursives Programmieren
  gp 2.18 Arrays (Datenfelder)
    gp 2.18.1 Eindimensionale Arrays
    gp 2.18.2 Mehrdimensionale Arrays
  gp 2.19 Konstanten
  gp 2.20 Funktionen
  gp 2.21 Zusammenfassung


Galileo Computing

2.12 Do ... Loop  toptop

Die Do ... Loop-Schleife kann kopfgesteuert oder fußgesteuert sein. Die Bedingung kann am Anfang oder am Ende abgefragt werden. Die Syntax der kopfgesteuerten Schleife lautet:

Do [While] [Until] Bedingung
   Anweisungen
   [Exit Do]
   Anweisungen
Loop

Die Syntax der kopfgesteuerten Schleife lautet:

Do
   Anweisungen
   [Exit Do]
   Anweisungen
Loop [While] [Until]

Mit While oder Until wird eine Bedingung überprüft. Ist die While-Bedingung korrekt, beziehungsweise die Until-Bedingung nicht korrekt, wird weitergearbeitet, im umgekehrten Fall wird die Schleife verlassen.

Der Unterschied zwischen der Zählerschleife und der Bedingungsschleife liegt darin, dass beim ersten Typ die Anzahl der Durchläufe schon feststeht. Ist die Anzahl unklar oder ändert sich innerhalb der Schleife, dann ist einer der folgenden Typen zu verwenden. Nun ein kleines Beispiel, um das Beschriebene zu verdeutlichen:

Eine Schnecke sitzt vor einer 9 Meter hohen Mauer. Jeden Tag klettert sie einen Meter nach oben, in jeder Nacht rutscht sie 10  % ihrer Gesamthöhe nach unten. Wann ist sie oben?

Also: Sie beginnt bei 0 Meter, klettert am ersten Tag auf 1,0 Meter, rutscht um 0,1 m nach unten, sodass sie den zweiten Tag bei 0,9 m beginnt. Von dort klettert sie auf 1,9 m, um in der folgenden Nacht auf 1,9 m – 0,19 m = 1,71 m zu landen. Dann klettert sie auf 2,71 m und rutscht auf 2,439 m herunter. Und so weiter. Die Rekursion lässt sich gut in eine Schleife einbauen:

Sub Schneckenproblem()
   Dim intTage As Integer
   Dim dblMorgenhöhe As Double
   Dim dblAbendhöhe As Double
   dblMorgenhöhe = 0
   dblAbendhöhe = 0
   intTage = 0
   Do While dblAbendhöhe < 9
      intTage = intTage + 1
      dblAbendhöhe = dblMorgenhöhe + 1
      dblMorgenhöhe = dblAbendhöhe * 0.9
   Loop
   MessageBox.Show("Die Schnecke benötigt " & _
   intTage.ToString & " Tage."
End Sub

Das Ergebnis soll hier nicht angezeigt werden! Zwei Erläuterungen: Die Zahlen müssen nach der US-amerikanischen Konvention mit »0.9« und nicht mit »0,9« eingegeben werden. Wenn 10  % abgezogen werden, so kann man statt

dblMorgenhöhe = dblAbendhöhe - _
dblAbendhöhe * 0.1 

auch schreiben

dblMorgenhöhe = dblAbendhöhe * 0.9

denn schließlich interessiert Sie nicht, wie weit die Schnecke herunterrutscht, sondern wo sie landet. Das heißt: Statt 10  % abzuziehen, kann man auch die übrigen 90  % berechnen. Während des Schleifendurchlaufs zählt ein Zähler (hier: »Tage«) mit, der dann in der Meldungsbox ausgegeben wird. Wann ist die Schnecke oben? Nicht am Ende der Nacht – das heißt, sie rutscht nicht von 10,00 Meter auf 9,00 Meter (denn die Mauer ist schließlich nur 9,00 Meter hoch), sondern sie klettert am Tag von 8,00 Metern auf 9,00 hoch. Und diese Höhe muss abgefangen werden – hier über die Variable »Abendhöhe«. Denn: 10,00 Meter erreicht unsere Schnecke nie!

Deshalb: Achtung vor Endlosschleifen. Dann bleibt nur noch der »Ausstieg« aus dem Programm, indem Sie in VB.NET auf den Beenden-Button klicken.

  

VB.NET

Einstieg in ASP.NET

Einstieg in C#

Visual C#

VB.NET und Datenbanken

Einstieg in XML