Übung: Aufgabe zum Unterschied zwischen do- und while-Iterationsanweisungen

Abgeschlossen

Die Programmieraufgaben helfen Ihnen dabei, das Gelernte zu vertiefen und praktisch umzusetzen, bevor Sie fortfahren.

Untersuchen des Unterschieds zwischen do- und while-Anweisungsiterationen

Wie Sie gesehen haben, unterstützt C# vier Typen von Iterationsanweisungen: for, foreach, do-while und while. In der Sprachreferenzdokumentation von Microsoft werden diese Anweisungen wie folgt beschrieben:

  • Die for-Anweisung wird ausgeführt, wenn ein angegebener boolescher Ausdruck (die „Bedingung“) zu TRUE ausgewertet wird.
  • Die foreach-Anweisung listet die Elemente einer Sammlung auf und wird für jedes Element der Sammlung ausgeführt.
  • Die do-while-Anweisung wird unter bestimmten Bedingungen einmal oder mehrmals ausgeführt.
  • Die while-Anweisung wird unter bestimmten Bedingungen nicht oder mehrmals ausgeführt.

Die for- und foreach-Iteration scheint sich deutlich voneinander und von der do-while- und while-Iteration zu unterscheiden. Die Definitionen für die do-while- und while-Anweisung scheinen jedoch recht ähnlich zu sein. Zu wissen, wann do-while und wann while empfohlen wird, scheint willkürlich und kann sogar etwas verwirrend sein. Einige Projekte innerhalb der Aufgaben können helfen, die Unterschiede deutlich zu machen.

In dieser Aufgabe erhalten Sie Bedingungen für drei separate Codierungsprojekte. Für jedes Projekt müssen Sie einen Iterationscodeblock mithilfe einer do-while- oder while-Anweisung implementieren. Sie müssen die angegebenen Bedingungen auswerten, um zwischen der do-while- und while-Anweisung zu wählen. Sie können nach dem Start wechseln, wenn Ihre erste Wahl nicht so funktioniert wie erhofft.

Hinweis

Die Bedingungen für Ihr Programmierprojekt können verwendet werden, um Sie bei der Auswahl zwischen der do-while- und while-Anweisung zu unterstützen. Was Sie über den auszuwertenden booleschen Ausdruck wissen, kann Ihnen helfen, zwischen der do-while- und while-Anweisung auszuwählen. In dieser Übung enthalten die Projektbedingungen Informationen, die zum Erstellen des booleschen Ausdrucks verwendet werden.

Verwalten der Benutzereingabe bei diesem Captcha

Wenn Sie eine Console.ReadLine()-Anweisung zum Abrufen der Benutzereingabe verwenden, ist es üblich, für die Eingabevariable eine Zeichenfolge mit dem Nullable-Typ (festgelegt durch string?) zu verwenden und dann den vom Benutzer eingegebenen Wert auszuwerten. Das folgende Codebeispiel verwendet eine Zeichenfolge des Nullable-Typs, um Benutzereingaben zu erfassen. Die Iteration wird fortgesetzt, wenn der vom Benutzer bereitgestellte Wert NULL ist:

string? readResult;
Console.WriteLine("Enter a string:");
do
{
    readResult = Console.ReadLine();
} while (readResult == null);

Der boolesche Ausdruck, der von der while-Anweisung ausgewertet wird, kann verwendet werden, um sicherzustellen, dass die Benutzereingaben eine angegebene Anforderung erfüllen. Wenn Benutzer*innen beispielsweise aufgefordert werden, eine Zeichenfolge mit mindestens drei Zeichen einzugeben, kann der folgende Code verwendet werden:

string? readResult;
bool validEntry = false;
Console.WriteLine("Enter a string containing at least three characters:");
do
{
    readResult = Console.ReadLine();
    if (readResult != null)
    {
        if (readResult.Length >= 3)
        {
            validEntry = true;
        }
        else
        {
            Console.WriteLine("Your input is invalid, please try again.");
        }
    }
} while (validEntry == false);

Wenn Sie eine Console.ReadLine()-Eingabe für numerische Werte verwenden möchten, müssen Sie den Zeichenfolgenwert in einen numerischen Typ konvertieren.

Mit der int.TryParse()-Methode kann ein Zeichenfolgenwert in eine ganze Zahl konvertiert werden. Die Methode verwendet zwei Parameter: eine Zeichenfolge, die ausgewertet wird, und den Namen einer ganzzahligen Variablen, der ein Wert zugewiesen wird. Die Methode gibt einen booleschen Wert zurück. Das folgende Codebeispiel veranschaulicht die Verwendung der int.TryParse()-Methode:

// capture user input in a string variable named readResult

int numericValue = 0;
bool validNumber = false;

validNumber = int.TryParse(readResult, out numericValue);

Wenn der readResult zugewiesene Zeichenfolgenwert eine gültige ganze Zahl ist, wird der Wert der ganzzahligen Variablen namens numericValue zugewiesen und true wird der booleschen Variablen mit dem Namen validNumber zugewiesen. Wenn der readResult zugewiesene Wert keine gültige ganze Zahl ist, wird validNumber der Wert false zugewiesen. Wenn readResult beispielsweise gleich 7 ist, wird 7 der Wert numericValue zugewiesen.

Codeprojekt 1: Schreiben von Code, der ganzzahlige Eingaben überprüft

Dies sind die Bedingungen, die Ihr erstes Programmierprojekt erfüllen muss:

  • Ihre Lösung muss entweder eine do-while- oder while-Iteration enthalten.

  • Vor dem Iterationsblock: Ihre Lösung muss eine Console.WriteLine()-Anweisung verwenden, um Benutzer*innen zur Eingabe eines ganzzahligen Werts zwischen 5 und 10 aufzufordern.

  • Innerhalb des Iterationsblocks:

    • Ihre Lösung muss eine Console.ReadLine()-Anweisung verwenden, um Eingaben von Benutzer*innen zu erhalten.
    • Ihre Lösung muss prüfen, ob die Eingabe eine gültige Darstellung einer ganzen Zahl ist.
    • Wenn der ganzzahlige Wert nicht zwischen 5 und 10 liegt, muss Ihr Code den Benutzer mithilfe einer Console.WriteLine()-Anweisung auffordern, einen ganzzahligen Wert zwischen 5 und 10 einzugeben.
    • In der Lösung muss sichergestellt werden, dass der ganzzahlige Wert zwischen 5 und 10 liegt, bevor die Iteration beendet wird.
  • Unter (nach) dem Iterationscodeblock: Ihre Lösung muss Benutzer*innen mithilfe einer Console.WriteLine()-Anweisung darüber informieren, dass ihr Eingabewert akzeptiert wurde.

  1. Stellen Sie sicher, dass eine leere „Program.cs“-Datei in Visual Studio Code geöffnet ist.

    Öffnen Sie bei Bedarf Visual Studio Code, und führen Sie dann die folgenden Schritte aus, um eine „Program.cs“-Datei im Editor vorzubereiten:

    1. Klicken Sie im Menü Datei auf Ordner öffnen.

    2. Verwenden Sie das Dialogfeld „Ordner öffnen“, um zum Ordner CsharpProjects zu navigieren und diesen dann zu öffnen.

    3. Wählen Sie im EXPLORER-Bereich von Visual Studio Code die Datei Program.cs aus.

    4. Wählen Sie im Visual Studio Code-Menü Auswahl die Option Alle auswählen aus, und drücken Sie dann die ENTF-Taste.

  2. Schreiben Sie den Code, der die einzelnen Bedingungen für Codeprojekt 1 implementiert.

  3. Führen Sie Ihre Anwendung aus, und überprüfen Sie, ob Ihr Code die Benutzereingabe wie vorgesehen überprüft.

    Wenn Sie beispielsweise Ihre Anwendung ausführen, sollte sie Eingabewerte wie „zwei“ und „2“ ablehnen, aber den Eingabewert „7“ akzeptieren.

    Für das oben beschriebene Beispiel sollte die Konsolenausgabe wie folgt aussehen:

    Enter an integer value between 5 and 10
    two
    Sorry, you entered an invalid number, please try again
    2
    You entered 2. Please enter a number between 5 and 10.
    7
    Your input value (7) has been accepted.
    

Codeprojekt 2: Schreiben von Code, der Zeichenfolgeeingaben überprüft

Dies sind die Bedingungen, die Ihr zweites Programmierungsprojekt erfüllen muss:

  • Ihre Lösung muss entweder eine do-while- oder while-Iteration enthalten.

  • Vor dem Iterationsblock: Ihre Lösung muss Benutzer*innen mithilfe einer Console.WriteLine()-Anweisung zur Eingabe eines von drei Rollennamen auffordern: Administrator, Manager oder Benutzer.

  • Innerhalb des Iterationsblocks:

    • Ihre Lösung muss eine Console.ReadLine()-Anweisung verwenden, um Eingaben von Benutzer*innen zu erhalten.
    • Ihre Lösung muss sicherstellen, dass der eingegebene Wert einer der drei Rollenoptionen entspricht.
    • Ihre Lösung sollte die Trim()-Methode für den Eingabewert verwenden, um führende und nachstehende Leerzeichen zu ignorieren.
    • Ihre Lösung sollte die ToLower()-Methode für den Eingabewert verwenden, um die Groß- und Kleinschreibung zu ignorieren.
    • Wenn der eingegebene Wert mit keiner der Rollenoptionen übereinstimmt, muss im Code eine Console.WriteLine()-Anweisung verwendet werden, mit der Benutzer zur Eingabe eines gültigen Werts aufgefordert werden.
  • Unter (nach) dem Iterationscodeblock: Ihre Lösung muss Benutzer*innen mithilfe einer Console.WriteLine()-Anweisung darüber informieren, dass ihr Eingabewert akzeptiert wurde.

  1. Auskommentieren des gesamten Codes im Visual Studio Code-Editor-Bereich

    1. Auswählen aller Codezeilen im Code-Editor
    2. Wählen Sie im Menü Bearbeiten die Option Blockkommentar umschalten aus.
  2. Schreiben Sie den Code, der die einzelnen Bedingungen für Codeprojekt 2 implementiert.

  3. Führen Sie Ihre Anwendung aus, und überprüfen Sie, ob Ihr Code die Benutzereingabe wie vorgesehen überprüft.

    Wenn Sie Ihre Anwendung ausführen, sollte sie beispielsweise Eingabewerte wie „Admin“ ablehnen, aber den Eingabewert „Administrator“ akzeptieren.

    Die Konsolenausgabe für dieses Beispiel sollte wie folgt aussehen:

    Enter your role name (Administrator, Manager, or User)
    Admin
    The role name that you entered, "Admin" is not valid. Enter your role name (Administrator, Manager, or User)
       Administrator
    Your input value (Administrator) has been accepted.
    

Codeprojekt 3: Schreiben von Code, der den Inhalt eines Zeichenfolgenarrays verarbeitet

Dies sind die Bedingungen, die in Ihrem dritten Programmierprojekt erfüllt werden müssen:

  • Ihre Lösung muss das folgende Zeichenfolgenarray für die Eingabe verwenden:

    string[] myStrings = new string[2] { "I like pizza. I like roast chicken. I like salad", "I like all three of the menu choices" };
    
  • Ihre Lösung muss eine ganzzahlige Variable mit dem Namen periodLocation deklarieren, mit der die Position des Punkts in einer Zeichenfolge angegeben werden kann.

  • Ihre Lösung muss eine äußere foreach- oder for-Schleife enthalten, die zum Verarbeiten jedes Zeichenfolgenelements im Array verwendet werden kann. Die Zeichenfolgenvariable, die Sie in den Schleifen verarbeiten, sollte den Namen myString haben.

  • In der äußeren Schleife muss Ihre Lösung die IndexOf()-Methode der String-Klasse verwenden, um die Position des ersten Punkts in der myString-Variablen abzurufen. Der Methodenaufruf sollte wie folgt aussehen: myString.IndexOf("."). Wenn in der Zeichenfolge kein Punkt vorhanden ist, wird der Wert -1 zurückgegeben.

  • Ihre Lösung muss eine innere do-while- oder while-Schleife enthalten, die zum Verarbeiten der myString-Variablen verwendet werden kann.

  • In der inneren Schleife muss Ihre Lösung jeden Satz extrahieren und anzeigen (in die Konsole schreiben), der in jeder der verarbeiteten Zeichenfolgen enthalten ist.

  • In der inneren Schleife darf Ihre Lösung den Punkt nicht anzeigen.

  • In der inneren Schleife muss Ihre Lösung die Remove()-, Substring()- und TrimStart()-Methode verwenden, um die Zeichenfolgeninformationen zu verarbeiten.

  1. Auskommentieren des gesamten Codes im Visual Studio Code-Editor-Bereich

    1. Auswählen aller Codezeilen im Code-Editor
    2. Wählen Sie im Menü Bearbeiten die Option Blockkommentar umschalten aus.
  2. Schreiben Sie den Code, der die einzelnen Bedingungen für Codeprojekt 3 implementiert.

  3. Führen Sie Ihre Anwendung aus, und überprüfen Sie, ob Ihre Ausgabe die Anforderungen erfüllt.

    Wenn die Codelogik ordnungsgemäß funktioniert, sollte die Ausgabe ungefähr wie folgt aussehen:

    I like pizza
    I like roast chicken
    I like salad
    I like all three of the menu choices
    

Unabhängig davon, ob Sie nicht weitergekommen sind und vorab einen Blick auf die Lösung werfen mussten oder die Aufgabe gleich erfolgreich gemeistert haben: Sehen Sie sich die Lösungsprojekte zu dieser Aufgabe an.