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 = 5
lá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 ExploreIf
utá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 while
kö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
, do
vagy 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: