Ćwiczenie — wykonywanie działania wyzwania w celu rozróżnienia między instrukcjami wykonywania i iteracji

Zakończone

Wyzwania związane z kodem wzmocnią zdobytą wiedzę i pomogą Ci zdobyć pewną pewność, zanim przejdziesz dalej.

Badanie różnicy między iteracjami instrukcji do i while

Jak już wiesz, język C# obsługuje cztery typy instrukcji iteracji: for, , foreachdo-whilei while. Dokumentacja referencyjna języka firmy Microsoft opisuje następujące instrukcje:

  • Instrukcja for : wykonuje treść, podczas gdy określone wyrażenie logiczne (warunek) daje wartość true.
  • Instrukcja foreach : wylicza elementy kolekcji i wykonuje jej treść dla każdego elementu kolekcji.
  • Instrukcja do-while : warunkowo wykonuje treść co najmniej raz.
  • Instrukcja while : warunkowo wykonuje jego treść zero lub więcej razy.

Iteracji for i foreach wydają się być wyraźnie zróżnicowane od siebie i od do-while iteracji i while . Definicje instrukcji do-while i while wydają się być jednak dość podobne. Wiedząc, kiedy wybrać między a a do-whilewhile wydaje się bardziej arbitralne, a nawet może być nieco mylące. Niektóre projekty wyzwań mogą pomóc w wyjaśnieniu różnic.

W tym zadaniu zostaną przedstawione warunki dla trzech oddzielnych projektów kodowania. Każdy projekt będzie wymagał zaimplementowania bloku kodu iteracji przy użyciu do-while instrukcji lub while . Należy ocenić określone warunki, aby wybrać między instrukcjami do-while i while . Możesz przełączyć się po rozpoczęciu, jeśli pierwszy wybór nie działa, jak również miałeś nadzieję.

Uwaga

Warunki projektu kodowania mogą służyć do wybierania między instrukcjami do-while i while . Co wiesz lub nie wiesz, o wyrażeniu logicznym, które będzie oceniane, może czasami pomóc wybrać między do-while instrukcjami i while . W tym ćwiczeniu wyzwanie warunki projektu zawierają informacje, które będą używane do konstruowania wyrażenia logicznego.

Zarządzanie danymi wejściowymi użytkownika podczas tego wyzwania

W przypadku używania instrukcji w celu uzyskania danych wejściowych użytkownika powszechną praktyką Console.ReadLine() jest użycie ciągu typu dopuszczalnego wartości null (wyznaczonego string?) dla zmiennej wejściowej, a następnie oceny wartości wprowadzonej przez użytkownika. Poniższy przykładowy kod używa ciągu typu dopuszczanego do wartości null do przechwytywania danych wejściowych użytkownika. Iteracja jest kontynuowana, gdy podana przez użytkownika wartość ma wartość null:

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

Wyrażenie warunkowe obliczane przez instrukcję while może służyć do zapewnienia, że dane wejściowe użytkownika spełniają określone wymagania. Jeśli na przykład zostanie wyświetlony monit z prośbą o wprowadzenie ciągu zawierającego co najmniej trzy znaki, można użyć następującego kodu:

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);

Jeśli chcesz użyć Console.ReadLine() danych wejściowych dla wartości liczbowych, musisz przekonwertować wartość ciągu na typ liczbowy.

Metoda int.TryParse() może służyć do konwertowania wartości ciągu na liczbę całkowitą. Metoda używa dwóch parametrów, ciągu, który zostanie obliczony i nazwy zmiennej całkowitej, która zostanie przypisana wartość. Metoda zwraca wartość logiczną. Poniższy przykład kodu demonstruje użycie int.TryParse() metody :

// capture user input in a string variable named readResult

int numericValue = 0;
bool validNumber = false;

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

Jeśli wartość ciągu przypisana do readResult reprezentuje prawidłową liczbę całkowitą, wartość zostanie przypisana do zmiennej całkowitej o nazwie numericValuei true zostanie przypisana do zmiennej logicznej o nazwie validNumber. Jeśli wartość przypisana do readResult elementu nie reprezentuje prawidłowej liczby całkowitej, validNumber zostanie przypisana wartość false. Na przykład jeśli readResult wartość jest równa "7", wartość 7 zostanie przypisana do numericValue.

Projekt kodu 1 — pisanie kodu sprawdzającego poprawność danych wejściowych liczb całkowitych

Oto warunki, które należy zaimplementować w pierwszym projekcie kodowania:

  • Rozwiązanie musi zawierać do-while iterację lub while .

  • Przed blokiem iteracji: rozwiązanie musi użyć instrukcji , Console.WriteLine() aby monitować użytkownika o wartość całkowitą z zakresu od 5 do 10.

  • Wewnątrz bloku iteracji:

    • Rozwiązanie musi używać Console.ReadLine() instrukcji w celu uzyskania danych wejściowych od użytkownika.
    • Twoje rozwiązanie musi upewnić się, że dane wejściowe są prawidłową reprezentacją liczby całkowitej.
    • Jeśli wartość całkowita nie mieści się w zakresie od 5 do 10, kod musi użyć Console.WriteLine() instrukcji , aby monitować użytkownika o wartość całkowitą z zakresu od 5 do 10.
    • Przed zakończeniem iteracji rozwiązanie musi upewnić się, że wartość całkowita wynosi od 5 do 10.
  • Poniżej (po) bloku kodu iteracji: rozwiązanie musi użyć Console.WriteLine() instrukcji , aby poinformować użytkownika, że jego wartość wejściowa została zaakceptowana.

  1. Upewnij się, że masz pusty plik Program.cs otwarty w programie Visual Studio Code.

    W razie potrzeby otwórz program Visual Studio Code, a następnie wykonaj następujące kroki, aby przygotować plik Program.cs w edytorze:

    1. W menu Plik wybierz pozycję Otwórz folder.

    2. Użyj okna dialogowego Otwórz folder, aby przejść do folderu CsharpProjects , a następnie go otworzyć.

    3. W panelu Eksplorator programu Visual Studio Code wybierz pozycję Program.cs.

    4. W menu Wybór programu Visual Studio Code wybierz pozycję Wybierz wszystko, a następnie naciśnij Delete.

  2. Napisz kod, który implementuje każdy warunek dla projektu kodu 1.

  3. Uruchom aplikację i sprawdź, czy kod weryfikuje dane wejściowe użytkownika na podstawie określonych wymagań.

    Na przykład po uruchomieniu aplikacji powinna ona odrzucać wartości wejściowe, takie jak "dwa" i "2", ale powinna zaakceptować wartość wejściową "7".

    W przykładzie opisanym powyżej dane wyjściowe konsoli powinny wyglądać podobnie do następujących:

    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.
    

Projekt kodu 2 — pisanie kodu, który weryfikuje dane wejściowe ciągu

Oto warunki, które należy zaimplementować w drugim projekcie kodowania:

  • Rozwiązanie musi zawierać do-while iterację lub while .

  • Przed blokiem iteracji: rozwiązanie musi użyć instrukcji , Console.WriteLine() aby monitować użytkownika o jedną z trzech nazw ról: Administrator, Menedżer lub Użytkownik.

  • Wewnątrz bloku iteracji:

    • Rozwiązanie musi używać Console.ReadLine() instrukcji w celu uzyskania danych wejściowych od użytkownika.
    • Twoje rozwiązanie musi upewnić się, że wprowadzona wartość jest zgodna z jedną z trzech opcji roli.
    • Rozwiązanie powinno używać Trim() metody na wartości wejściowej, aby ignorować wiodące i końcowe znaki spacji.
    • Rozwiązanie powinno używać ToLower() metody na wartości wejściowej, aby zignorować wielkość liter.
    • Jeśli wprowadzona wartość nie jest zgodna z jedną z opcji roli, kod musi użyć Console.WriteLine() instrukcji , aby monitować użytkownika o prawidłowy wpis.
  • Poniżej (po) bloku kodu iteracji: Rozwiązanie musi użyć Console.WriteLine() instrukcji , aby poinformować użytkownika, że jego wartość wejściowa została zaakceptowana.

  1. Oznacz jako komentarz cały kod w panelu Edytora programu Visual Studio Code

    1. Zaznacz wszystkie wiersze kodu w edytorze kodu
    2. W menu Edycja wybierz pozycję Przełącz komentarz blokowy.
  2. Napisz kod, który implementuje każdy warunek dla projektu kodu 2.

  3. Uruchom aplikację i sprawdź, czy kod weryfikuje dane wejściowe użytkownika na podstawie określonych wymagań.

    Na przykład po uruchomieniu aplikacji powinna ona odrzucić wartość wejściową, taką jak "Administrator", ale powinna zaakceptować wartość wejściową "administrator".

    Dane wyjściowe konsoli dla tego przykładu powinny wyglądać podobnie do następujących:

    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.
    

Projekt kodu 3 — pisanie kodu, który przetwarza zawartość tablicy ciągów

Poniżej przedstawiono warunki, które należy zaimplementować w trzecim projekcie kodowania:

  • Rozwiązanie musi użyć następującej tablicy ciągów, aby reprezentować dane wejściowe logiki kodowania:

    string[] myStrings = new string[2] { "I like pizza. I like roast chicken. I like salad", "I like all three of the menu choices" };
    
  • Rozwiązanie musi zadeklarować zmienną całkowitą o nazwie periodLocation , która może służyć do przechowywania lokalizacji znaku kropki w ciągu.

  • Rozwiązanie musi zawierać zewnętrzną foreach lub for pętlę, która może służyć do przetwarzania każdego elementu ciągu w tablicy. Zmienna ciągu, która będzie przetwarzana wewnątrz pętli, powinna mieć nazwę myString.

  • W pętli zewnętrznej rozwiązanie musi użyć IndexOf() metody String klasy, aby uzyskać lokalizację pierwszego znaku kropki w zmiennej myString . Wywołanie metody powinno być podobne do: myString.IndexOf("."). Jeśli w ciągu nie ma znaku kropki, zostanie zwrócona wartość -1.

  • Rozwiązanie musi zawierać wewnętrzną do-while lub while pętlę, która może służyć do przetwarzania zmiennej myString .

  • W pętli wewnętrznej rozwiązanie musi wyodrębniać i wyświetlać (zapisywać w konsoli) każde zdanie zawarte w każdym z przetwarzanych ciągów.

  • W pętli wewnętrznej rozwiązanie nie może wyświetlać znaku kropki.

  • W pętli wewnętrznej rozwiązanie musi używać Remove()metod , Substring()i TrimStart() do przetwarzania informacji o ciągu.

  1. Oznacz jako komentarz cały kod w panelu Edytora programu Visual Studio Code

    1. Zaznacz wszystkie wiersze kodu w edytorze kodu
    2. W menu Edycja wybierz pozycję Przełącz komentarz blokowy.
  2. Napisz kod, który implementuje każdy warunek wymieniony dla projektu kodu 3.

  3. Uruchom aplikację i sprawdź, czy dane wyjściowe spełniają wymagania.

    Jeśli logika kodu działa prawidłowo, dane wyjściowe powinny wyglądać podobnie do następujących:

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

Niezależnie od tego, czy rozwiązanie jest zablokowane, czy też trzeba je ukończyć, przejdź dalej, aby wyświetlić projekty rozwiązań pod kątem tego wyzwania.