Grundlagen Teil 2 - Mehrfachausführung
Zu Beginn von Grundlagen Teil 2 werden wir uns mit der Mehrfachausführung von Codeabschnitten befassen.
Ein einfaches Beispiel wäre die Ausgabe der Zahlen von 1 bis 100.
Programmelemente, welche eine gewisse Anzahl an Wiederholungen eines Codeabschnittes ermöglichen, nennt man Schleifen.
Vorerst werden wir die zwei wichtigsten Typen kennenlernen.
Die for Schleife
Eine for Schleife arbeitet nach folgendem Prinzip.
Es gibt eine Schleifenvariabel, diese wird mit einer vorgegebenen Schrittweite hoch / runter gezählt,
bis eine vorgegebene Bereich verlassen wird.
In den meisten Fällen, ist eine Schleifenvariable vom Typ int und wird hochgezählt,
daher erfolgt die Erklärung an einem solchen Typ. Eine for Schleife die hinunter zählt funktioniert identisch
und sollte daher selbsterklärend sein.
Einfacher ausgedrückt gibt es eine int Variable, welche vorgebgeben wird, aber nicht 0 sein muss. Diese wird hochgezähl bis der vorgegebene Bereich verlassen wird.
Intern erfolgt eine Art if - Abfrage. Wenn der vorgegeben Bereich verlassen wird, wird die Schleife beendet.
Bevor wir zu Erklärung der Programmierung kommen, folgt ein Programmauszug anhand welchen es danach erklärt wird:
{
Code;
}
Wie bei einer if - Abfrage erfolgt zuerst der Befehl und danach die Bedingung in zwei runden Klammern.
Im Unterschied dazu, ist bei der for Schleife, for der Befehl und die Bedingung besteht aus drei Parametern,
welche mit einem Strichpunkt getrennt sind.
Anschließend erfolgt der (mehrfach) auszuführende Code, in zwei geschwungene Klammern.
drei Parameter
- Angabe der Schleifenvariable
Kann in der Schleife definiert werden, aber auch davor und muss einen Startwert besitzen. In diesem Fall ist die Schleifenvariabel i und der Startwert 0. Angeben eines Startwertes nennt man auch initialisieren. - Festlegen eines Bereichs
Hierbei wird vorgeben in welchen Bereich die Schleifenvariable sein darf. In diesem Fall würde bis 9 gezählt werden und dann abgebrochen. Da i<10 nichts anders bedeutet als Schleifenvariable kleiner 10, würde i<=9 zum gleichen Ergebnis führen. Die Grenze kann auch eine Variable sein, da diese nichts anderes als eine Zahl (wie 9) repräsentiert. - Schrittweite / Hochzählen
Die hier angegeben Schreibweise von i++ bedeutet nichts anderes als i=i+1 und ist nicht nur im Kopf (runden Klammern) einer for Schleife erlaubt, sondern auch als normaler Programmcode. Bei jedem Durchlauf des Codes, wird die Schleifenvariable i um 1 erhöht. Es wäre auch z.B.: i=i+2 gültig.
Zum besseren Verstehen sehen wir uns den Ablauf dieser for Schleife in einer Tabelle an.
Schleifenvariable (i) | Grenzwert (i<10) | erreicht? | Schrittweite (i++) |
---|---|---|---|
0 | 9 | false | 1 |
1 | 9 | false | 1 |
2 | 9 | false | 1 |
3 | 9 | false | 1 |
4 | 9 | false | 1 |
5 | 9 | false | 1 |
6 | 9 | false | 1 |
7 | 9 | false | 1 |
8 | 9 | false | 1 |
9 | 9 | true | 1 |
Übungsbeispiel
Nun haben wir behandelt wie eine for Schleife aufgebaut ist, um das Funktionsprinzip besser zu verinnerlichen, gilt es nun folgende Angabe zu Programmieren.
Angabe
- einlesen einer Zahl in eine int Variable
- ausgeben aller Zahlen bis zur eingegebenen Zahl (von 0 bis inklusive der eingegebenen)
Für die Lösung hier klicken. Bei Fragen und Problemen, bitte das Forum benutzen.
Lösung:using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Projekt1
{
class Program
{
static void Main(string[] args)
{
int zahl = Convert.ToInt32(Console.ReadLine());
for (int i = 0; i <=zahl; i++)
{
Console.WriteLine(i);
}
Console.ReadLine();
}
}
}
Die while Schleife
Dieser Typ ist wesentlich einfacher, birgt aber auch eine gewissen Gefahr in sich.
Anders als bei der for Schleife wird nicht eine Variable hoch gezählt, sondern eine Bedingung wie bei einer if - Abfrage überprüft und der Programmcode
so lang ausgeführt, bis die Bedingung nicht mehr erfüllt ist.
Die Gefahr besteht darin, dass wenn die Bedingung nie false ist, läuft die Schleife endlos, was zu einem gewaltsamen Beenden des Programms zwingt.
(Beenden lässt sich dies durch das blaue Quadrat in der dritten Menüzeile von Visual C#)
Als Programmcode sieht dies folgendermaßen aus:
{
Code;
}
Hierbei kann auch die Bedingung sein, dass ein String einen gewissen Text hat oder auch eine Variable einen gewissen Wert erreicht.
Anders ausgedrückt, die Bedingung muss true sein, wie bei einer if - Abfrage.
Mit einer solchen while Schleife, lässt sich auch die Funktionsweise einer for Schleife nachbilden, allerdings ist es erforderlich,
dass eine Variable von Hand hochgezählt wird z.B.: durch variable++.
Anschließend erfolgt der (mehrfach) auszuführende Programmcode, in zwei geschwungenen Klammern.
Bevor wir nun zu einem Übungsbeispiel kommen, lernen wir noch eine weitere Eigenschaft des + Zeichens kennen.
Wir hatten bereits gehört, dass sich mit diesem zwei Zahlen addieren lassen, hatten damals jedoch nicht erwähnt, dass sich
hiermit auch strings zusammenketten lassen.
Durch dieses + Zeichen lässt sich auch eine Zahl zu einem string hinzufügen,
diese wird jedoch zuvor automatisch in einen string gewandelt und danach angehängt.
Als Programmcode würde dies zum Beispiel folgendermaßen funktionieren:
oder
Übungsbeispiel
Im letzten Teil hatten wir gehört wie eine while Schleife arbeitet und wie strings zusammengefügt werden, nun gilt es dies in einem Übungsbeispiel mit folgender Angabe in ein Programm umzusetzen. Angabe
- einlesen einer Zahl in eine int Variable
- definieren (deklarieren) einer weiteren int Variable und festlegen des Startwertes 0 (initialisieren)
- programmieren einer while Schleife mit der Bedingung, dass die eingelesene Zahl größer gleich der selbst definierten Variable sein muss
- bei jedem Schleifen durchlauf, ausgeben folgendes strings "Die aktuelle Zahl = " und anhängen des aktuellen wertes der selbst definierten Variable (+)
- und hochzählen der selbst definierten Variable (++)
- nach der while Schleife folgenden string ausgeben "Alle Durchläufe durchgeführt!"
Für die Lösung hier klicken. Bei Fragen und Problemen, bitte das Forum benutzen.
Lösung:using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Projekt1
{
class Program
{
static void Main(string[] args)
{
int zahl = Convert.ToInt32(Console.ReadLine());
int hochzaehlVariable = 0;
while(zahl>=hochzaehlVariable)
{
Console.WriteLine("Die aktuelle Zahl = " +hochzaehlVariable);
hochzaehlVariable++;
}
Console.WriteLine("Alle Durchläufe durchgeführt!");
Console.ReadLine();
}
}
}