C# if utasítások és hurkok – feltételes logikai oktatóanyag

Ez az oktatóanyag bemutatja, hogyan írhat olyan C#-kódot, amely megvizsgálja a változókat, és ezen változók alapján módosítja a végrehajtási útvonalat. Megírhatja a C#-kódot, és láthatja a fordítás és a futtatás eredményeit. Az oktatóanyag olyan tanulságokat tartalmaz, amelyek a C# elágaztatási és hurkozási szerkezeteit ismertetik. A leckékből fokozatosan elsajátíthatja a C# programnyelv alapismereteit.

Tipp

Ha kódrészletet szeretne beilleszteni a fókusz módba , használja a billentyűparancsot (Ctrl + v vagy cmd + v).

Előfeltételek

Az oktatóanyag azt várja, hogy a gép be van állítva a helyi fejlesztéshez. Lásd: A helyi környezet beállítása telepítési utasításokhoz és az alkalmazásfejlesztés áttekintése a .NET-ben.

Ha inkább helyi környezet beállítása nélkül szeretné futtatni a kódot, tekintse meg az oktatóanyag interaktív böngészőben elérhető verzióját.

Döntések meghozatala a if utasítás használatával

Hozzon létre egy branches-tutorial nevű könyvtárat. Adja meg az aktuális könyvtárat, és futtassa a következő parancsot:

dotnet new console -n BranchesAndLoops -o .

Fontos

A .NET 6 C#-sablonjai legfelső szintű utasításokat használnak. Előfordulhat, hogy az alkalmazás nem egyezik meg a cikkben szereplő kóddal, ha már frissített a .NET 6-ra. További információ: Új C#-sablonok legfelső szintű utasítások létrehozása

A .NET 6 SDK emellett implicitglobal using direktívákat is hozzáad az alábbi SDK-t használó projektekhez:

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

Ezek az implicit global using irányelvek tartalmazzák a projekttípus leggyakoribb névtereit.

További információ: Implicit using irányelvek

Ez a parancs létrehoz egy új .NET-konzolalkalmazást az aktuális könyvtárban. Nyissa meg a Program.cs fájlt a kedvenc szerkesztőjében, és cserélje le a tartalmat a következő kódra:

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

Próbálja ki ezt a kódot úgy, hogy beírja dotnet run a konzolablakba. A konzolon megjelenik a "A válasz nagyobb, mint 10" üzenet. Módosítsa a b változó deklarációját úgy, hogy az összeg 10-nél kisebb legyen:

int b = 3;

Gépelje be dotnet run újra. Mivel az eredmény 10-nél kisebb, semmit sem ír ki a program. A tesztelt feltétel eredménye hamis, és mivel az if utasításban csak az „igaz” elágazáshoz adtunk meg végrehajtandó kódot, a program semmit sem hajt végre.

Tipp

A C# (vagy bármely más programnyelv) elsajátítása során óhatatlanul fog néha hibázni a kód írásakor. A fordító megkeresi és jelenti a hibákat. Tekintse meg alaposan a hiba kimenetét és a hibát létrehozó kódot. A fordítóhiba általában segíthet megtalálni a problémát.

Ez az első minta a és a logikai típusok erejét if mutatja be. A logikai érték olyan változó, amely két érték egyikével rendelkezhet: true vagy false. A C# egy speciális típust definiál logikai bool változókhoz. Az if utasítás egy bool kifejezés értékét ellenőrzi. Ha az érték true (azaz igaz), akkor a program végrehajtja az if után szereplő utasítást. Ellenkező esetben a program kihagyja. A feltételek ellenőrzésének és az ezen feltételeken alapuló utasítások végrehajtásának folyamata rendkívül hatékony.

Az „if” és az „else” utasítás közös használata

Ha szeretne végrehajtandó elágazást létrehozni mind az igaz, mind pedig a hamis esetekhez, akkor ehhez írhat egy else („egyébként”) elágazást. Próbáljon ki egy ágat else . Adja hozzá az utolsó két sort az alábbi kódhoz (az első négynek már rendelkeznie kell):

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

Az else kulcsszót követő utasítást a program csak akkor hajtja végre, ha az ellenőrzött feltétel értéke false. A és else a logikai feltételek kombinálásával if minden olyan erőt biztosít, amely az a true és a false feltétel kezeléséhez szükséges.

Fontos

Az if és az else sort követő behúzás csak az olvashatóság javítására szolgál. A C#-nyelv nem tekinti jelentősnek a behúzást vagy a szóközt. A program a feltétel eredménye alapján hajtja végre vagy az if vagy az else kulcsszót követő utasítást. Az oktatóanyagban szereplő összes minta egy általános gyakorlatot követ a sorok behúzására az utasítások vezérlőfolyamata alapján.

Mivel a behúzás nem jelentős, azt kell használnia { , és } jeleznie kell, ha egynél több utasítást szeretne a feltételesen végrehajtó blokk része lenni. A C# nyelvvel dolgozó programozók jellemzően az összes if és else záradéknál használják ezeket a kapcsos zárójeleket. Az alábbi példa megegyezik a létrehozott példával. Módosítsa a fenti kódot úgy, hogy megfeleljen a következő kódnak:

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

Tipp

Az oktatóanyag további részében a kódminták tartalmazzák a kapcsos zárójeleket, az elfogadott eljárásokat követve.

Bonyolultabb feltételeket is tesztelhet. Adja hozzá a következő kódot az eddig írt kód után:

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

A == szimbólumok egyenlőséget tesztelnek. A használatával == megkülönbözteti az egyenlőségi tesztet a hozzárendeléstől, amelyet a következőben a = 5látott: .

Az && operátorral végezhet „és” típusú kiértékelést. Ezen operátor használatakor mind a bal, mind pedig a jobb oldalnak „igaz” értéket kell adnia ahhoz, hogy az „igaz” elágazás legyen végrehajtva. Az alábbi példa azt is szemlélteti, hogy az egyes feltételes elágazásokban több utasítást is használhat, ha { és } kapcsos zárójelek közé zárja azokat. Az "vagy" jelölésére is használható || . Adja hozzá az alábbi kódot az eddig írtak után:

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

Módosítsa a , , és c értékeketa, és váltson a és || között && a felfedezéshez. b Jobban megismerheti a és || az && operátorok működését.

Befejezte az első lépést. A következő szakasz megkezdése előtt helyezze át az aktuális kódot egy külön metódusba. Ez megkönnyíti az új példa használatának megkezdését. Helyezze a meglévő kódot egy nevű ExploreIf()metódusba. Hívja meg a program tetejéről. A módosítások befejezésekor a kódnak a következőhöz hasonlóan kell kinéznie:

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

A hívás megjegyzése a következőhöz: ExploreIf(). Az ebben a szakaszban végzett munka során a kimenet kevésbé lesz zsúfolt:

//ExploreIf();

A // C #-ban megjegyzést kezd. A megjegyzések olyan szövegek, amelyeket meg szeretne őrizni a forráskódban, de nem kódként kell végrehajtani őket. A fordító nem hoz létre végrehajtható kódot a megjegyzésekből.

Műveletek ismétlése ciklusokkal

Ebben a szakaszban ciklusokat használ az utasítások megismétléséhez. Adja hozzá ezt a kódot a következő hívás ExploreIfután:

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

Az while utasítás ellenőrzi a feltételt, és végrehajtja az utasítást vagy utasításblokkot a következőt whilekövetve: . Ismételten ellenőrzi a feltételt, és végrehajtja ezeket az utasításokat, amíg a feltétel nem hamis.

Egy másik új operátor is található ebben a példában. A counter (számláló) változó utáni ++ operátor egy növelési operátor. Hozzáad 1-et a változó értékéhez counter , és ezt az értéket tárolja a counter változóban.

Fontos

A kód végrehajtásakor győződjön meg arról, hogy a while hurokfeltétel hamisra változik. Máskülönben végtelen ciklust hoz létre, és a program végrehajtása sosem fog véget érni. Ez ebben a mintában nem mutatható be, mert a programnak a CTRL-C vagy más eszközökkel való kilépésre kell kényszerítenie.

A while ciklus a feltételt még azelőtt ellenőrzi, hogy végrehajtaná a while utáni kódblokkot. A do ... while ciklus ezzel ellentétben először végrehajtja a kódblokkot, és csak azután ellenőrzi a feltételt. A do while hurok az alábbi kódban jelenik meg:

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

Ez a do hurok és a korábbi while hurok ugyanazt a kimenetet hozza létre.

A „for” ciklus használata

A for ciklust gyakran használják C# nyelven. Próbálja ki az alábbi kódot:

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

Az előző kód ugyanazt a munkát végzi, mint a while hurok és a do már használt hurok. A for utasítás három részből áll, melyekkel vezérelheti a ciklus működését.

Az első rész az inicializáló: int index = 0; deklarálja, hogy index ez a hurokváltozó, és a kezdeti értékét értékre 0állítja.

A középső rész a feltétel:index < 10 deklarálja, hogy ez a for hurok továbbra is fut, feltéve, hogy a számláló értéke kisebb, mint 10.

Az utolsó rész az iterátorhoz tartozik: index++ meghatározza, hogyan kell módosítani a hurokváltozót a blokk utasítás utáni for végrehajtása után. Ebben a példában ez a rész 1-el növeli a index változó értékét a blokk minden egyes végrehajtását követően.

Kísérletezzen saját maga. Próbálja ki az alábbi változatokat:

  • Módosítsa az inicializálót, hogy más kezdeti értékkel induljon a ciklus.
  • Módosítsa a feltételt, hogy más értéknél álljon le a ciklus végrehajtása.

Ha végzett, a követőkben írhat némi kódot önállóan az eddig tanultak felhasználásával.

Van még egy ciklusutasítás, amely nem szerepel ebben az oktatóanyagban: a foreach utasítás. A foreach utasítás megismétli az utasítást az elemek sorozatának minden elemére vonatkozóan. Leggyakrabban gyűjteményekkel használják, ezért a következő oktatóanyag ismerteti.

Beágyazott hurkok létrehozása

A while, dovagy for hurok beágyazható egy másik hurokba, hogy mátrixot hozzon létre a külső hurok egyes elemeinek és a belső hurok egyes elemeinek kombinációjával. Hozzunk létre egy alfanumerikus párokat, amelyek a sorokat és oszlopokat jelölik.

Egy for hurok hozhatja létre a sorokat:

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

Egy másik hurok hozhatja létre az oszlopokat:

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

Az egyik hurkot egymásba ágyazva alkothat párokat:

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

Láthatja, hogy a külső hurok a belső hurok minden egyes futtatásakor egyszer növekszik. Fordítsa vissza a sor- és oszlopbe ágyazást, és tekintse meg a módosításokat. Ha elkészült, helyezze a szakasz kódját egy nevű ExploreLoops()metódusba.

Elágazások és ciklusok kombinálása

Most, hogy megismerte az if utasítást és a C# nyelvben használható ciklusokat, próbálja ki, hogy tud-e olyan C#-kódot írni, amely visszaadja az összes 3-mal osztható egész szám értékét 1–20-ig. Néhány tipp:

  • A % operátor visszaadja az osztási műveletből kapott maradékot.
  • Az if utasítással ellenőrizheti, hogy egy adott számnak az összeg részének kell-e lennie.
  • A for ciklussal megismételheti a lépéseket minden egyes számnál az 1-től 20-ig terjedő tartományban.

Próbálja meg önállóan megírni a kódot. Ha végzett, a következő részben ellenőrizheti a megoldását. A válaszhoz 63-at kell kapnia. Egy lehetséges választ a githubon található kitöltött kód megtekintésével tekinthet meg.

Elvégezte az "ágak és hurkok" oktatóanyagot.

A Tömbök és gyűjtemények oktatóanyagot a saját fejlesztési környezetében folytathatja.

Ezekről a fogalmakról az alábbi cikkekben tudhat meg többet: