
Az elágazásoknak min. 1 vagy több ága is lehet, ha több ága van mint kettő, akkor már összetett elágazásról van szó. Nézzünk egy egyszerű példát, bekérünk egy számot, és kiírjuk az abszolút értékét. A // itt is az egysoros komment jele
1 2 3 4 5 6 7 |
int bekertszam = int.Parse(Console.ReadLine()); if (bekertszam < 0) { //ahogy már tanultuk bekertszam = bekertszam * -1 rövidített verziója: bekertszam *= -1; } //ha a szám pozitív nem kell mást tennünk, mint kiírni ugyan azt a számot mint, amit megadtunk Console.WriteLine("A megadott szám abszolút értéke: " + bekertszam); Console.ReadKey(); |
Összetett feltétel
Csináljunk egy olyan programot, amely bekéri egy dolgozat maximális pontszámát, majd
az abból elért pontszámot és megadja a jegyet. Az egyszerűség kedvéért 90%-tól 5, 80%-tól 4, 70%-tól 3, 60%-tól 2 és 60% alatt elégtelen.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
Console.WriteLine("Add meg a dolgozat maximális pontszámát: "); int dogamaxp = int.Parse(Console.ReadLine()); Console.WriteLine("Add meg a dolgozatban elért pontszámot: "); int dogaelertp = int.Parse(Console.ReadLine()); double szazalek = (double)dogaelertp / dogamaxp * 100; if (szazalek > 90) { Console.WriteLine("A dolgozat jegye: 5"); } else { if (szazalek > 80) { Console.WriteLine("A dolgozat jegye: 4"); } else if (szazalek > 70) { Console.WriteLine("A dolgozat jegye: 3"); } else if (szazalek > 60) { Console.WriteLine("A dolgozat jegye: 2"); } else { Console.WriteLine("A dolgozat jegye: 1"); } } Console.ReadKey(); |
Jegyezzük meg, hogy egy if-elágazásnak csak EGY kimenetele lehet, nem lehet olyan hogy mindkét ág, tehát a hamis és a negatív ágban lévő utasítások is lefutnak!! Ha egy összetettebb feltételt szeretnénk leprogramozni szükségünk van akár több if-re is, ez egy kicsit bonyolultabbá teszi a kód megértését. Ha megfelelően használjuk a tabulátort és a kapcsos zárójeleket, akkor olvashatóbbá, érthetőbbé válik a kód.
Több feltétel vizsgálata: ÉS, VAGY (AND(&&) és az OR(||)
Mindegyikkel kettő vagy több feltételt tudunk vizsgálni.
Az and-nél(&&) csak akkor lépünk az igaz ágba, ha mind a kettő(vagy több, lényeg hogy az összes) feltétel igaz, ha csak egy is hamis értékkel tér vissza, akkor már a kimenet is hamis lesz. Az or-nál(||) elég csak egynek igaznak lennie, és a kimenet is igaz, viszont ha mindegyik hamis, akkor az eredmény is hamis lesz.
Elágazások: switch
A switch egy olyan elágazás, amelyben szinte végtelen elágazás lehetséges.
A case ággal új összehasonlítást hívunk és mögé írjuk az összehasonlítást, majd egy kettősponttal nyitjuk, nem ;-vel, utána kapcsos zárójel és még az utolsó zárójel előtt egy break; utasítás, ami később a ciklusból való kilépésre fog szolgálni. A default egy végső megoldás, akkor fog lefutni a default ágban lévő utasítás, ha semelyik case ág nem volt megfelelő. Mint az iffet is, a switchet is egymásba lehet tenni. Switchet akkor használjunk, ha az értékek kötöttek. Például egy dobókockánál, ahol 6 lehetőség van,
ezért könnyen lehet alkalmazni
1 2 3 4 5 6 7 8 9 |
int dobottszam = int.Parse(Console.ReadLine()); switch (dobottszam) { case 1: Console.Write("Egy"); break; case 2: Console.Write("Kettő"); break; case 3: Console.Write("Három"); break; |
Gyakorlati példák:
- Kelvinből Celsius fokra átváltás oda-vissza, case használatával:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
Console.Write ( "Adjmeg egy hőmérséklet értéket:" ) ; int n = int.Parse(Console.ReadLine()) ; Console.Write ("Válassz opciót: (1) C◦ −−>K◦ (2) K◦−−>C◦ :" ); byte c = byte.Parse(Console.ReadLine()); Console.WriteLine(); switch(c) { case 1: Console.WriteLine(" {0} C◦={1} K◦", n , n+273); break; case 2: Console.WriteLine("{0} K◦={1} C◦" , n , n-273); break; } Console.ReadLine(); |
- Testtömeg index kiszámítása
Kérjünk be a felhasználótól egy testtömeget és egy magasságot, majd ezek alapján határozzuk meg a testtömeg indexét, és közöljük az eredményt!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Console.Write("Testtömeg [kg]: "); int m = int.Parse(Console.ReadLine()); Console.Write("Testmagasság[cm]:"); double h = double.Parse(Console.ReadLine()); h=h/100; double tti=m/Math.Pow(h,2); Console.WriteLine("Testtömegindex: {0}",tti); Console.Write("Testsúlyosztály:"); if (tti < 16) Console.WriteLine("Súlyos soványság"); else if (tti < 17) Console.WriteLine("Mérsékelt soványság"); else if (tti < 18.5) Console.WriteLine("Enyhe soványság"); else if (tti < 25) Console.WriteLine("Normális testsúly"); else if (tti < 30) Console.WriteLine("Túlsúlyos"); else Console . WriteLine("Elhízás"); Console.ReadLine(); |
- Víz halmazállapota:
Kérjünk be egy hőmérsékletet, ami alapján a program megmondja, milyen halmazállapotú a víz.
1 2 3 4 5 6 7 8 9 10 |
Console.WriteLine("A viz halmazallapotanak vizsgalata:"); Console.Write("Homerseklet: "); double t=Convert.ToDouble(Console.ReadLine()); if(t>0) { if (t>=100) Console.WriteLine("Goz!"); else Console.WriteLine("Viz!"); } else Console.WriteLine("Jeg!"); Console.ReadLine(); |
1 |
<span style="color: #000080;"> </span> |
- Burkolólap mennyiség kalkulátor:
Kérjük be a helység méretét. Az egyszerűség kedvéért méterben számolunk. A területre ráhagyunk +10%-ot, hátha összetörik pár burkolólap.
A formázott kiírásban a {0} azt jelenti, hogy a paraméter listában elhelyezett első elemet kell kiírni elsőként. A {1} jelentése hasonló, csak itt a második elemre hivatkozunk. és így tovább.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Console.Write("A szélesség méterben: "); double sz=double.Parse(Console.ReadLine()); Console.WriteLine(); Console.Write("A hosszúság méterben: "); double h=double.Parse(Console.ReadLine()); double t=sz*h; Console.WriteLine(); Console.WriteLine("A␣konyhánk területe: {0} m2",t); double cs=0.2*0.2; double db=t/cs; double osszes=db+0.1∗db; Console.WriteLine(); Console.WriteLine("A szükséges csempe mennyisége: {0:0.0 0} db" ,osszes); Console.ReadLine(); |
- Véletlen számok:
Kérjünk be 2db számot, és a kettő közötti tartományba hozzunk létre 3db véletlen számot! A Random.Next eljárás egy véletlen számot állít elő. Megadhatjuk neki paraméterben mettől-meddig. Pl: int month = rnd.Next(1, 13); (1-12 közötti szám)
1 2 3 4 5 6 7 8 9 10 |
Console.Write("Kerem az első számot:"); int szam1=int.Parse(Console.ReadLine()); Console.Write("Kerem a második számot:"); int szam2=int.Parse(Console.ReadLine()); Random veletlen=new Random(); Console.WriteLine("A generalt szamok: {0}, {1}, {2}. ", veletlen.Next(szam1,szam2), veletlen.Next(szam1,szam2), veletlen.Next(szam1,szam2)); Console.ReadLine(); |
Hónapok neveinek
Kérjen be a program egy 1-12 közötti számot, majd írja ki melyik hónap az! (1-12 közötti szám ellenőrzése)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
using System; namespace honapok { class Program { static void Main(string[] args) { int szam; Console.WriteLine("Hanyadik hónap? (1-12)"); szam = Convert.ToInt16(Console.ReadLine()); if ((szam > 0) && (szam < 13)) { switch (szam) { case 1: Console.WriteLine("Január"); break; case 2: Console.WriteLine("Február"); break; case 3: Console.WriteLine("Március"); break; case 4: Console.WriteLine("Április"); break; case 5: Console.WriteLine("Május"); break; case 6: Console.WriteLine("Június"); break; case 7: Console.WriteLine("Július"); break; case 8: Console.WriteLine("Augusztus"); break; case 9: Console.WriteLine("Szeptember"); break; case 10: Console.WriteLine("Október"); break; case 11: Console.WriteLine("November"); break; case 12: Console.WriteLine("December"); break; } } else { Console.WriteLine("Hibás adat!"); } Console.ReadKey(); } } } |
Példa: Bekért szám ellenőrzése
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
using System; namespace alapok { class Program { static void Main(string[] args) { Console.Write("Kérem adja meg az első számot : "); string szama = Console.ReadLine(); Console.Write("Kérem adja meg a második számot: "); string szamb = Console.ReadLine(); int a,b; bool ellenorzesa = Int32.TryParse(szama, out a); if (ellenorzesa) { Console.WriteLine("Converted '{0}' to {1}.", szama, a); a = Int32.Parse(szama); } else { Console.WriteLine("A bekért adat '{0}' nem szám!", szama ?? "<null>"); } bool ellenorzesb = Int32.TryParse(szamb, out b); if (ellenorzesb) { Console.WriteLine("Converted '{0}' to {1}.", szamb, b); b = Int32.Parse(szamb); } else { Console.WriteLine("A bekért adat '{0}' nem szám!", szama ?? "<null>"); } if (ellenorzesa == true && ellenorzesb == true) { Console.WriteLine("A két szám összege:{0} ", a + b); Console.WriteLine("A két szám különbsége:{0} ", a - b); Console.WriteLine("A két szám szorzata:{0} ", a * b); if (b == 0) { Console.WriteLine("Hiba! Zéró osztó!"); } else { double c = a / b; Console.WriteLine("A két szám hányadosa :{0} ", c); } Console.ReadLine(); } else { Console.WriteLine("Hibás adat!"); } } } } |