Sdílet prostřednictvím


Příkazy a smyčky jazyka C# if – kurz podmíněné logiky

V tomto kurzu se naučíte, jak napsat kód jazyka C#, který prozkoumá proměnné a na základě těchto proměnných změní cestu provádění. Napíšete kód jazyka C# a zobrazíte výsledky jeho kompilace a spuštění. Tento kurz obsahuje řadu lekcí, které se zabývají konstrukty větvení a smyček v jazyce C#. V těchto kurzech se seznámíte se základy jazyka C#.

Tip

Pokud chcete vložit fragment kódu do detailního režimu , měli byste použít klávesovou zkratku (Ctrl + v nebo cmd + v).

Požadavky

Kurz očekává, že máte počítač nastavený pro místní vývoj. Pokyny k instalaci a přehled vývoje aplikací v .NET najdete v tématu Nastavení místního prostředí .

Pokud dáváte přednost spuštění kódu, aniž byste museli nastavovat místní prostředí, projděte si interaktivní verzi tohoto kurzu v prohlížeči.

Rozhodování pomocí příkazu if

Vytvořte adresář s názvem branches-tutorial. Nastavte ho jako aktuální adresář a spusťte následující příkaz:

dotnet new console -n BranchesAndLoops -o .

Důležité

Šablony jazyka C# pro .NET 6 používají příkazy nejvyšší úrovně. Pokud jste už upgradovali na .NET 6, vaše aplikace nemusí odpovídat kódu v tomto článku. Další informace najdete v článku o nových šablonách jazyka C# generování příkazů nejvyšší úrovně.

Sada .NET SDK 6 také přidává sadu implicitníchglobal using direktiv pro projekty, které používají následující sady SDK:

  • Microsoft.NET.Sdk
  • Microsoft.NET.Sdk.Web
  • Microsoft.NET.Sdk.Worker

Tyto implicitní global using direktivy zahrnují nejběžnější obory názvů pro typ projektu.

Další informace najdete v článku o implicitních direktivách using.

Tento příkaz vytvoří novou konzolovou aplikaci .NET v aktuálním adresáři. Ve svém oblíbeném editoru otevřete soubor Program.cs a nahraďte obsah následujícím kódem:

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

Vyzkoušejte tento kód zadáním dotnet run v okně konzoly. Na konzoli by se měla zobrazit zpráva "Odpověď je větší než 10". Upravte deklaraci b, aby součet byl menší než 10:

int b = 3;

Zadejte dotnet run znovu. Protože odpověď je menší než 10, nic se nevytiskne. Testovaná podmínka není splněná. Nemáte žádný kód, který by bylo možné provést, protože jste zatím napsali jenom jednu z možných větví příkazu if: větev pro splnění podmínky.

Tip

Když se budete učit pracovat s C# (nebo každým jiným programovacím jazykem), budete při psaní kódu dělat chyby. Kompilátor najde a nahlásí chyby. Pečlivě si prohlédněte výstup chyby a kód, který chybu vygeneroval. S nalezením problému vám obvykle může pomoct chyba kompilátoru.

Tato první ukázka ukazuje sílu logických if typů a . Logická hodnota je proměnná, která může mít jednu ze dvou hodnot: true nebo false. Jazyk C# definuje speciální typ bool pro logické proměnné. Příkaz if kontroluje hodnotu typu bool. Pokud je tato hodnota true, provede se příkaz následující za if. Jinak se přeskočí. Tento proces kontroly podmínek a spouštění příkazů na základě těchto podmínek je účinný.

Spolupráce if a else

Chcete-li ve větvích True a False provést různý kód, vytvoříte větev else, která se provede, když podmínka není splněná. else Zkuste větev. Přidejte poslední dva řádky v kódu níže (měli byste už mít první čtyři):

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

Příkaz následující za klíčovým slovem else se provede jen tehdy, když má testovaná podmínka hodnotu false. Kombinace if a s logickými podmínkami poskytuje veškerý výkon, který potřebujete ke zpracování podmínek a truefalse .else

Důležité

Důvodem odsazení pod příkazy if a else je snadnější čtení pro uživatele. Jazyk C# považuje odsazení nebo prázdné znaky za významné. Příkaz následující za klíčovým slovem if nebo else se provede na základě podmínky. Všechny ukázky v tomto kurzu se řídí běžným postupem odsazení řádků na základě toku řízení příkazů.

Vzhledem k tomu, že odsazení není důležité, musíte použít { a } k označení, kdy chcete, aby více než jeden příkaz byl součástí bloku, který se spouští podmíněně. Programátoři v C# obvykle používají tyto složené závorky pro všechny klauzule if a else. Následující příklad je stejný jako ten, který jste vytvořili. Upravte výše uvedený kód tak, aby odpovídal následujícímu kódu:

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

Tip

Ve zbývající části tohoto kurzu všechny ukázky kódu obsahují složené závorky a dodržují akceptované postupy.

Můžete testovat složitější podmínky. Za kód, který jste zatím napsali, přidejte následující kód:

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 rovnost. Použití == odliší test rovnosti od přiřazení, které jste viděli v a = 5.

Zápis && představuje „a zároveň“. To znamená, že když se má provést větev True, musí být splněny obě podmínky. Tyto příklady také ukazují, že můžete mít v každé podmíněné větvi víc příkazů, pokud je uzavřete mezi { a }. Můžete také použít || k reprezentaci "nebo". Za to, co jste zatím napsali, přidejte následující kód:

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

Upravte hodnoty a, ba c a přepněte mezi && a || , abyste je mohli prozkoumat. Lépe porozumíte tomu, jak fungují operátory && a || .

Dokončili jste první krok. Než začnete s další částí, přesuneme aktuální kód do samostatné metody. To usnadňuje zahájení práce s novým příkladem. Vložte existující kód do metody s názvem ExploreIf(). Volejte ji z horní části programu. Po dokončení těchto změn by váš kód měl vypadat takto:

ExploreIf();

void ExploreIf()
{
    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");
    }

    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 greater than the second");
    }
    else
    {
        Console.WriteLine("The answer is not greater than 10");
        Console.WriteLine("Or the first number is not greater than the second");
    }

    if ((a + b + c > 10) || (a > b))
    {
        Console.WriteLine("The answer is greater than 10");
        Console.WriteLine("Or the first number is greater than the second");
    }
    else
    {
        Console.WriteLine("The answer is not greater than 10");
        Console.WriteLine("And the first number is not greater than the second");
    }
}

Zakomentujte volání na ExploreIf()adresu . Výstup bude při práci v této části méně nepřehledný:

//ExploreIf();

Spustí //komentář v jazyce C#. Komentáře jsou jakýkoli text, který chcete zachovat ve zdrojovém kódu, ale nespouštět jako kód. Kompilátor negeneruje z komentářů žádný spustitelný kód.

Použití smyček k opakování operací

V této části použijete smyčky k opakování příkazů. Za volání ExploreIfpřidejte tento kód :

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

Příkaz while zkontroluje podmínku a provede příkaz nebo blok příkazu následující za příkazem while. Opakovaně kontroluje podmínku a spouští tyto příkazy, dokud není podmínka nepravdivá.

V tomto příkladu je ještě jeden nový operátor. Zápis ++ za proměnnou counter je operátor inkrementace. Přidá hodnotu 1 k hodnotě counter a uloží ji do counter proměnné .

Důležité

Ujistěte se, že se while podmínka smyčky při spuštění kódu změní na false. Jinak vytvoříte nekonečnou smyčku, ve které program nikdy neskončí. To není v této ukázce demonstrováno, protože musíte vynutit ukončení programu pomocí kombinace kláves CTRL-C nebo jiným způsobem.

Smyčka while otestuje podmínku před spuštěním kódu, který následuje za while. Smyčka do ... while nejdřív spustí kód a potom zkontrolujte tuto podmínku. Smyčka do while se zobrazuje v následujícím kódu:

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

Tato do smyčka a předchozí while smyčka vygenerují stejný výstup.

Práce se smyčkou for

Smyčka for se běžně používá v jazyce C#. Vyzkoušejte tento kód:

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

Předchozí kód provede stejnou práci jako while smyčka a smyčka, do kterou jste už použili. Příkaz for má tři části, které řídí jeho fungování.

První část je for initializer: int index = 0; deklaruje, že index je proměnná smyčky, a nastaví její počáteční hodnotu na 0.

Prostřední část je for podmínka: index < 10 deklaruje, že tato for smyčka pokračuje v provádění, dokud je hodnota čítače menší než 10.

Poslední částí je iterátor for: index++ určuje, jak upravit proměnnou smyčky po spuštění bloku za příkazem for . V tomto případě určuje, že index se má po každém provedení bloku zvýšit o 1.

Experimentujte sami. Vyzkoušejte každou z následujících variant:

  • Změňte inicializační výraz, aby začínal jinou hodnotou.
  • Změňte podmínku tak, aby se zastavila při jiné hodnotě.

Až skončíte, přejdeme k tomu, abyste si vyzkoušeli, co jste se naučili, a napsali kus kódu sami.

Existuje ještě jeden příkaz smyčky, který není v tomto kurzu popsaný: příkaz .foreach Příkaz foreach opakuje svůj příkaz pro každou položku v posloupnosti položek. Nejčastěji se používá s kolekcemi, takže se jí věnujeme v dalším kurzu.

Vytvoření vnořených smyček

Smyčku while, donebo for lze vnořit do jiné smyčky a vytvořit tak matici pomocí kombinace každé položky ve vnější smyčce s každou položkou ve vnitřní smyčce. Pojďme tak vytvořit sadu alfanumerických párů, které budou představovat řádky a sloupce.

Jedna for smyčka může generovat řádky:

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

Sloupce může vygenerovat jiná smyčka:

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

Jednu smyčku můžete vnořit do druhé a vytvořit tak páry:

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

Vidíte, že vnější smyčka se zvýší jednou za každé úplné spuštění vnitřní smyčky. Otočte vnoření řádků a sloupců a prohlédněte si změny sami. Až budete hotovi, umístěte kód z této části do metody s názvem ExploreLoops().

Kombinace větví a smyček

Teď když jste viděli příkaz if a konstruktory cyklů v jazyce C#, zkuste, jestli dokážete v jazyce C# napsat kód, který zjistí součet všech celých čísel od 1 do 20, která jsou dělitelná 3. Tady je několik tipů:

  • Operátor % vrací zbytek po operaci dělení.
  • Příkaz if poskytuje podmínku pro zjištění, jestli konkrétní číslo má být součástí tohoto součtu.
  • Smyčka for pomůže zopakovat sérii kroků pro všechna čísla od 1 do 20.

Vyzkoušejte si to sami. A potom se podívejte, jak jste si vedli. Za odpověď byste měli dostat 63. Jednu z možných odpovědí uvidíte tak, že si zobrazíte dokončený kód na GitHubu.

Dokončili jste kurz "větve a smyčky".

V kurzu Pole a kolekce můžete pokračovat ve vlastním vývojovém prostředí.

Další informace o těchto konceptech najdete v těchto článcích: