2 - Math osztály és elágazázok
Math osztály
Műveletek
- Hatványra emelés:
Math.Pow(<mit szeretnénk>, <hányadikra szeretnénk emelni>)
- Négyzetgyök:
Math.Sqrt(<minek szeretnénk a gyökét>)
- Abszolútérték:
Math.Abs(<minek szeretnénk az abszolút értékét>)
- Kerekítés:
Math.Round(<mit szeretnénk kerekíteni>)
- A probléma: Alapértelmezetten ún. Banker's rounding-ot alkalmaz, ami a legközelebbi páros számra kerekít. Pl. 50.5-t 50-re, míg 51.5-t 52-re kerekíti.
- A hosszú megoldás a banker's rounding átállításával:
Math.Round(<mit szeretnénk kerekíteni>, <hány tizedesre szeretnénk kerekíteni>, MidpointRounding.AwayFromZero)
- A rövid megoldás csak a tizedesjegy megadásával:
Math.Round(<mit szeretnénk kerekíteni>, <hány tizedesre szeretnénk kerekíteni>)
- Felfele kerekítés:
Math.Ceiling(<mit szeretnénk kerekíteni>)
- Lefele kerekítés:
Math.Floor(<mit szeretnénk kerekíteni>)
double x = 4;
double y = 2;
double z = -3;
double hatvany = Math.Pow(x, y); // 16
double negyzetGyok = Math.Sqrt(x); // 2
double abszolutErtek = Math.Abs(z); // 3
x = 50.5;
y = 51.5;
double kerekites = Math.Round(x); // 50
double kerekites = Math.Round(y); // 52
double kerekites3 = Math.Round(x, 0, MidpointRounding.AwayFromZero); // 51
double kerekites2 = Math.Round(x, 0); // 51
double kerekFel = Math.Ceiling(x); // 51
double kerekLe = Math.Floor(x); // 50
Állandó
const <típus> <VÁLTOZÓNÉV> = <érték>
- A konstansok nevét csupa nagy betűkkel írjuk, ha több szóból áll,
_
segítségével jelezzük a szavak határát. - Kötelező kezdőértéket adni neki
- Az érték az inicializálás után nem megváltoztatható
- A Pi érték:
Math.PI
const double PI = Math.PI;
const double GRAVITACIOS_KONSTANS = 6.673e-11;
Elágazások
- Egy speciális struktúra
- Engedi a programunknak hogy különböző feltételek teljesülésével különbözőképp reagáljon
- Mindennapjainkban is megtalálható
Szimpla elágazás
- "Ránézek a telefonomra. Ha kezd lemerülni, felrakom tölteni
- Ha kezd lemerülni -> feltétel -> igaz / hamis értékelés
- Igaz az értékelés: Felrakom töltőre -> végrehajtandó feladat
- Hamis az érétékelés: Tovább megyünk és nem hajtjuk végre a feladatot
if (<feltétel>) { <Végrehajtandó kód> }
bool szeretiABrokkolit = true;
if (szeretiABrokkolit) {
Console.WriteLine("Szereti a brokkolit");
}
Eredmény: Szereti a brokkolit
bool szeretiABrokkolit = false;
if (szeretiABrokkolit) {
Console.WriteLine("Szereti a brokkolit");
}
- Mindkét kimenethez tudunk végrehajtandó feadatot hozzárendelni
if (<feltétel>) { <Végrehajtandó kód> } else { <Egyéb esetben végrehajtandó kód> }
bool szeretiABrokkolit = false;
if (szeretiABrokkolit) {
Console.WriteLine("Szereti a brokkolit");
} else {
Console.WriteLine("NEM szereti a brokkolit");
}
Eredmény: <nem ír ki semmit>
Többes elágazás
- " Felnézek az égre. Ha borús az ég, viszek magammal esernyőt. Különben ha hétágra süt a nap, akkor felveszem a napszemüvegem. Különben pedig nem viszek magammal semmit.
- Ha borús az ég -> feltétel -> igaz / hamis értékelés
- Igaz: Viszek magammal esernyőt
- Hamis: Ha hétágra süt a nap -> igaz / hamis értékelés
- Igaz: Felveszem a napszemüvegem
- Hamis: Nem viszek magammal semmit
if (<feltétel>) { <Végrehajtandó kód> } else if (<másik feltétel>) { <Végrehajtandó kód> } else { <Egyéb esetben végrehajtandó kód> }
bool szeretiABrokkolit = true;
bool szeretiABabot = false;
if (szeretiABrokkolit) {
Console.WriteLine("Szereti a brokkolit.");
} else if (szeretiABabot) {
Console.WriteLine("Nem szereti a brokkolit, de szereti a babot.");
} else {
Console.WriteLine("Egyiket se szereti");
}
Eredmény: Nem szereti a brokkolit, de szereti a babot.
Hogy oldható meg, az, hogy szereti a babot, de nem szereti a brokkolit?
És-vagy operátorok
- És:
&&
- Vagy:
||
- Nem (negálás):
!
a | b | a && b | a || b | !a | !b | a && !b | !a && b | a || !b | !a || b |
---|---|---|---|---|---|---|---|---|---|
i | i | i | i | h | h | h | h | i | i |
i | h | h | i | h | i | i | h | i | h |
h | i | i | i | i | h | h | i | h | i |
h | h | h | h | i | i | i | i | i | i |
bool szeretiABrokkolit = true;
bool szeretiABabot = true;
if (szeretiABrokkolit && szeretiABabot) {
Console.WriteLine("Szereti a brokkolit ÉS a babot is");
} else {
Console.WriteLine("Vagy a brokkolit vagy a babot vagy egyiket se szereti");
}
Eredmény: Szereti a brokkolit ÉS a babot is
bool szeretiABrokkolit = true;
bool szeretiABabot = false;
if (szeretiABrokkolit || szeretiABabot) {
Console.WriteLine("Szereti a brokkolit VAGY a babot VAGY mindkettőt");
} else {
Console.WriteLine("Egyiket sem szereti");
}
Eredmény: Szereti a brokkolit VAGY a babot VAGY mindkettőt
bool szeretiABrokkolit = true;
bool szeretiABabot = false;
if (szeretiABrokkolit && szeretiABabot) {
Console.WriteLine("Szereti mindkettőt");
} else if (szeretiABrokkolit && !szeretiABabot) {
Console.WriteLine("Csak a brokkolit szereti");
} else if (!szeretiABrokkolit && szeretiABabot) {
Console.WriteLine("Csak a babot szereti");
} else {
Console.WriteLine("Egyiket sem szereti");
}
Eredmény: Csak a brokkolit szereti
Elágazás összehasonlítással
A feltétel átadásánál akár értékek összehasonlítását is megadhatunk, ugyanis ez a fordításkor igazként vagy hamisként értékelődik ki.
- Kisebb:
<
- Nagyobb:
>
- Egyenlő:
==
- Kisebb egyenlő:
<=
- Nagyobb egyenlő:
>=
- Nem egyenlő:
!=
Melyik szám nagyobb KÉT szám közül?
double szam1 = Convert.toDouble(Console.ReadLine());
double szam2 = Convert.toDouble(Console.ReadLine());
double eredmeny;
if(szam1 > szam2) {
eredmeny = szam1;
} else {
eredmeny = szam2;
}
Console.WriteLine(eredmeny);
Melyik nagyobb HÁROM szám közül?
double szam1 = Convert.toDouble(Console.ReadLine());
double szam2 = Convert.toDouble(Console.ReadLine());
double szam3 = Convert.toDouble(Console.ReadLine());
double eredmeny;
if(szam1 >= szam2 && szam1 >= szam3) {
eredmeny = szam1;
} else if (szam2 >= szam1 && szam2 >= szam3) {
eredmeny = szam2;
} else {
eredmeny = szam3;
}
Console.WriteLine(eredmeny);
Feladat - Egyszerű számológép
double szam1 = Convert.toDouble(Console.ReadLine());
string operator = Console.ReadLine();
double szam2 = Convert.toDouble(Console.ReadLine());
if (operator == "+") {
Console.WriteLine(szam1 + szam2);
} else if (operator == "-") {
Console.WriteLine(szam1 - szam2);
} else if (operator == "*") {
Console.WriteLine(szam1 * szam2);
} else if (operator == "/") {
Console.WriteLine(szam1 / szam2);
} else {
Console.WriteLine("Rossz operator");
}