Udostępnij za pośrednictwem


Instrukcje i pętle języka C# if — samouczek dotyczący logiki warunkowej

W tym samouczku przedstawiono sposób pisania kodu w języku C#, który analizuje zmienne i zmienia ścieżkę wykonywania na podstawie tych zmiennych. Napiszesz kod w języku C# i zobaczysz wyniki kompilowania i uruchamiania. Samouczek zawiera serię lekcji, które eksplorują konstrukcje rozgałęziania i pętli w języku C#. Te lekcje nauczą Cię podstaw języka C#.

Napiwek

Gdy blok fragmentu kodu zawiera przycisk "Uruchom", ten przycisk otwiera okno interakcyjne lub zastępuje istniejący kod w oknie interaktywnym. Gdy fragment kodu nie zawiera przycisku "Uruchom", możesz skopiować kod i dodać go do bieżącego okna interaktywnego.

Uruchom następujący kod w oknie interaktywnym. Wybierz pozycję Uruchom:

int a = 5;
int b = 6;
if (a + b > 10)
    Console.WriteLine("The answer is greater than 10.");

Zmodyfikuj deklarację b, aby suma jest mniejsza niż 10:

int b = 3;

Ponownie wybierz przycisk Uruchom. Ponieważ odpowiedź jest mniejsza niż 10, nic nie jest drukowane. Warunek , który testujesz, ma wartość false. Nie masz żadnego kodu do wykonania, ponieważ napisałeś tylko jedną z możliwych gałęzi dla instrukcji if: true branch.

Napiwek

Podczas eksplorowania języka C# (lub dowolnego języka programowania) popełniasz błędy podczas pisania kodu. Kompilator odnajduje te błędy i zgłasza je Tobie. Gdy dane wyjściowe zawierają komunikaty o błędach, przyjrzyj się bliżej przykładowemu kodowi i kodowi w oknie interaktywnym, aby zobaczyć, co należy naprawić. To ćwiczenie pomaga poznać strukturę kodu w języku C#.

W tym pierwszym przykładzie przedstawiono możliwości typów if i boolean. Zmienna logiczna to wartość, która może przyjmować jedną z dwóch wartości: true lub false. Język C# definiuje specjalny typ, bool dla zmiennych logicznych. Instrukcja if sprawdza wartość bool. Gdy wartość wynosi true, wykonuje się instrukcja następująca po if. W przeciwnym razie zostanie pominięty.

Ten proces sprawdzania warunków i wykonywania instrukcji na podstawie tych warunków jest potężny. Przyjrzyjmy się więcej.

Spraw, aby instrukcje 'if' i 'else' współpracowały ze sobą.

Aby wykonać inny kod zarówno w gałęziach true, jak i false, należy utworzyć gałąź else wykonywaną, gdy warunek ma wartość false. Spróbuj wykonać następujący kod:

int a = 5;
int b = 3;
if (a + b > 10)
    Console.WriteLine("The answer is greater than 10");
else
    Console.WriteLine("The answer is not greater than 10");

Instrukcja, która następuje po słowie kluczowym else, jest wykonywana tylko wtedy, gdy sprawdzany warunek to false. Połączenie if i else z warunkami logicznymi zapewnia pełnię potrzebnej mocy.

Ważny

Wcięcie pod instrukcjami if i else jest przeznaczone dla czytelników. Język C# nie traktuje wcięcia ani białych znaków jako znaczących. Instrukcja jest wykonywana na podstawie warunku po słowie kluczowym if lub else. Wszystkie przykłady w tym samouczku stosują powszechną praktykę wcięcia linii zgodnie z przepływem sterowania.

Ponieważ wcięcie nie ma większego znaczenia, trzeba użyć { i }, aby wskazać, kiedy więcej niż jedna instrukcja powinna być częścią warunkowo wykonywanego bloku. Programiści języka C# zwykle używają tych nawiasów klamrowych we wszystkich klauzulach if i else. Poniższy przykład jest taki sam jak utworzony przez Ciebie. Wypróbuj.

int a = 5;
int b = 3;
if (a + b > 10)
{
    Console.WriteLine("The answer is greater than 10");
}
else
{
    Console.WriteLine("The answer is not greater than 10");
}

Napiwek

W pozostałej części tego samouczka wszystkie przykłady kodu obejmują nawiasy klamrowe, zgodnie z przyjętą praktyką.

Możesz przetestować bardziej skomplikowane warunki:

int a = 5;
int b = 3;
int c = 4;
if ((a + b + c > 10) && (a == b))
{
    Console.WriteLine("The answer is greater than 10");
    Console.WriteLine("And the first number is equal to the second");
}
else
{
    Console.WriteLine("The answer is not greater than 10");
    Console.WriteLine("Or the first number is not equal to the second");
}

Symbol == testuje równość . Użycie == odróżnia test równości od przypisania, który był widoczny w a = 5.

&& reprezentuje "i". Oznacza to, że oba warunki muszą być prawdziwe, aby wykonać instrukcję w prawdziwej gałęzi. Te przykłady również pokazują, że w każdej gałęzi warunkowej można mieć wiele instrukcji, pod warunkiem, że są one ujęte w { i }.

Można również użyć || do reprezentowania ciągu "lub":

if ((a + b + c > 10) || (a == b))

Zmodyfikuj wartości a, bi c oraz przełączaj się między && i ||, aby eksplorować. Uzyskujesz większe zrozumienie działania operatorów && i ||.

Używanie pętli do powtarzania operacji

Kolejnym ważnym pojęciem do tworzenia większych programów są pętle. Pętle służą do powtarzania instrukcji, które mają być wykonywane więcej niż raz. Wypróbuj ten kod w oknie interaktywnym:

int counter = 0;
while (counter < 10)
{
    Console.WriteLine($"Hello World! The counter is {counter}");
    counter++;
}

Instrukcja while sprawdza warunek i wykonuje instrukcję następującą po while. Powtarza sprawdzanie warunku i wykonywanie tych instrukcji do momentu, gdy warunek ma wartość false.

W tym przykładzie jest jeszcze jeden nowy operator. ++ po zmiennej counter jest operatorem przyrostu. Dodaje 1 do wartości licznika i przechowuje ją w zmiennej licznika.

Ważny

Upewnij się, że warunek pętli while przechodzi na wartość false podczas wykonywania kodu. W przeciwnym razie utworzysz nieskończoną pętlę, w której program nigdy się nie kończy. Nie demonstrujmy tego, ponieważ silnik, który uruchamia twój kod, może się zawiesić, a Ty nie zobaczysz żadnych wyników z programu.

Pętla while testuje warunek przed wykonaniem kodu zgodnie z while. Pętla do ... while najpierw wykonuje kod, a następnie sprawdza warunek. Wygląda na to:

int counter = 0;
do
{
    Console.WriteLine($"Hello World! The counter is {counter}");
    counter++;
} while (counter < 10);

Ta pętla do i wcześniejsza pętla while działają tak samo.

Przejdźmy do ostatniej instrukcji pętli.

Praca z pętlą 'for'

Inna typowa instrukcja pętli widoczna w kodzie języka C# to pętla for. Wypróbuj ten kod w oknie interaktywnym:

for (int counter = 0; counter < 10; counter++)
{
    Console.WriteLine($"Hello World! The counter is {counter}");
}

Poprzednia pętla for wykonuje tę samą pracę, co pętla while i pętla do, które już zostały użyte. Instrukcja for ma trzy części, które kontrolują sposób jego działania:

  • Pierwszą częścią jest dla inicjatora: int counter = 0; deklaruje, że counter jest zmienną pętli i ustawia jej początkową wartość na 0.
  • Środkowa część to dla warunku: counter < 10 deklaruje, że ta pętla for będzie nadal wykonywana, o ile wartość licznika jest mniejsza niż 10.
  • Ostatnią częścią jest dla iteratora: counter++ określa sposób modyfikowania zmiennej pętli po wykonaniu bloku po instrukcji for. W tym miejscu określa, że counter zwiększa się o 1 przy każdym wykonaniu bloku.

Samodzielnie poeksperymentuj z tymi warunkami. Spróbuj wykonać każdą z następujących zmian:

  • Zmień inicjalizator, aby rozpoczynał się od innej wartości.
  • Zmień warunek, aby zatrzymać się na innej wartości.

Gdy skończysz, przejdźmy do samodzielnego pisania kodu, aby użyć poznanych informacji.

W tym samouczku nie opisano innej instrukcji pętli: instrukcji foreach. Instrukcja foreach powtarza instrukcję dla każdego elementu w sekwencji elementów. Jest ona najczęściej używana z kolekcjami . Będzie omówione w następnym tutorialu.

Utworzone zagnieżdżone pętle

Pętla while, dolub for może być zagnieżdżona wewnątrz innej pętli, aby utworzyć macierz przy użyciu kombinacji każdego elementu w pętli zewnętrznej z każdym elementem w pętli wewnętrznej. Aby utworzyć zestaw par alfanumerycznych reprezentujących wiersze i kolumny, wykonajmy tę czynność.

Jedna pętla for może wygenerować wiersze:

for (int row = 1; row < 11; row++)
{
    Console.WriteLine($"The row is {row}");
}

Kolejna pętla może wygenerować kolumny:

for (char column = 'a'; column < 'k'; column++)
{
    Console.WriteLine($"The column is {column}");
}

Można zagnieżdżać jedną pętlę wewnątrz drugiej do tworzenia par:

for (int row = 1; row < 11; row++)
{
    for (char column = 'a'; column < 'k'; column++)
    {
        Console.WriteLine($"The cell is ({row}, {column})");
    }
}

Można zauważyć, że pętla zewnętrzna jest zwiększana raz dla każdego pełnego uruchomienia pętli wewnętrznej. Odwróć zagnieżdżanie wierszy i kolumn, i zobacz zmiany sam.

Łączenie gałęzi i pętli

Po wyświetleniu instrukcji if i konstrukcji pętli w języku C#, sprawdź, czy możesz napisać kod języka C#, aby znaleźć sumę wszystkich liczb całkowitych od 1 do 20, które są podzielne przez 3. Oto kilka wskazówek:

  • Operator % daje pozostałą część operacji dzielenia.
  • Instrukcja if określa warunek, na podstawie którego można ustalić, czy liczba powinna być uwzględniona w sumie.
  • Pętla for może pomóc powtórzyć serię kroków dla wszystkich liczb od 1 do 20.

Wypróbuj to samodzielnie. Następnie sprawdź, jak to zrobiłeś. Jako wskazówka, odpowiedzią powinno być 63.

Czy wymyśliłeś coś takiego?

:::code language="csharp" interactive="try-dotnet-method" source="./snippets/BranchesAndLoops/Program.cs" id="Challenge":::

Ukończono interaktywny samouczek "gałęzi i pętli". Możesz wybrać link kolekcji list , aby rozpocząć następny interaktywny samouczek, lub odwiedzić witrynę .NET , aby pobrać zestaw SDK platformy .NET, utworzyć projekt na maszynie i kontynuować kodowanie. Sekcja "Następne kroki" umożliwia powrót do tych samouczków.

Więcej informacji na temat tych pojęć można uzyskać w następujących artykułach: