Gépészeti informatika (BMEGEMIBXGI) 3. Laboratóriumi foglalkozás Fink Nándor
Ismétlés Emlékeztető: Pl: 1<2 ? 3 : 4; ? : operátor használata: double ho = Convert.ToDouble(textBox1.Text); label1.Text = "A víz halmazállapota: " + ho + " -fokon " + (ho > 100 ? "légnemű" : ho < 0 ? "szilárd" : "folyékony"); Emlékeztető: Pl: 1<2 ? 3 : 4; Hamis: Ha a feltétel hamis volt, ez lesz a kifejezés értéke Igaz: Ha a feltétel igaz volt, ez lesz a kifejezés értéke Feltétel: Vizsgáld meg, hogy 1 kisebb-e, mint 2
Szelekciós utasítások: A program futásának következő lépését feltételek függvényében írhatjuk elő. (Ha teljesül a feltétel, akkor csináld „ezt”, ha viszont nem, akkor csináld „azt”.) Elágazás-, kettéágazódás-, többirányú elágazás megvalósítására alkalmas utasítás. IGAZ IGAZ … … Program „eleje” Program „folytatása” HAMIS 16-20. oldal c# könyv Szelekciós utasítás
if if (kifejezés) utasítás1; else utasítás2; if (kifejezés) utasítás; Ide kerül a logikai vizsgálat.
… Programozás: if (kifejezés1) utasítás1; else if (kifejezés2) Igaz ág Kifejezés 1 true if kifejezés 1 Hamis ág Kifejezés 1 false Utasítás1 Programozás: if (kifejezés1) utasítás1; else if (kifejezés2) utasítás2; … else utasítás x+1; Igaz ág Kifejezés 2 true else if kifejezés 2 Hamis ág Kifejezés 2 false Utasítás1 … Hamis ág Kifejezés x false (else) else if kifejezés x Igaz ág Kifejezés x true Utasítás x+1 Utasítás x
if Többsoros utasítás esetén {}: if (kifejezés) { utasítás1; … utasítás x; } HIBA: Mi történik, ha az if (kifejezés) után pontosvesszőt rakok? :S If (kifejezés); Ebben az esetben a program végrehajtja a kifejezést bezáró zárójel és a pontosvessző között szereplő utasítást (azaz a nagy semmit), majd továbbhalad a következő sorra, és végrehajtja a kiértékelés eredményétől függetlenül a következő utasítást!
Feltételes és elágazó utasítások: // SZELEKCIÓS UTASÍTÁSOK // IF int a = Convert.ToInt32(textBox1.Text); int b = Convert.ToInt32(textBox2.Text); if (a < b) label1.Text = "a kisebb b-nél"; // ELSE IF double ho = Convert.ToDouble(textBox1.Text); if (ho > 100) label1.Text = ho + " hőfokon a víz légnemű!"; else if (ho < 0) label1.Text = ho + " hőfokon a víz szilárd!"; else label1.Text = ho + " hőfokon a víz folyékony!"; // OSZTÁLYOZÓ int pont = Convert.ToInt32(textBox1.Text); label1.Text = "Az osztályzat: "; label1.Text += (pont < 40 ? "1" : pont < 55 ? "2" : pont < 70 ? "3" : pont < 85 ? "4" : "5");
int pont = Convert. ToInt32(textBox1 int pont = Convert.ToInt32(textBox1.Text); int ijegy = 0; string sjegy = ""; if (pont < 40) { ijegy = 1; sjegy = "elégtelen"; } else if (pont < 55) ijegy = 2; sjegy = "elégséges"; else if (pont < 70) ijegy = 3; sjegy = "közepes"; else if (pont < 85) ijegy = 4; sjegy = "jó"; else ijegy = 5; sjegy = "jeles"; label1.Text = pont + " pont esetén az érdemjegy " + ijegy + ", azaz " + sjegy;
Switch Megadott kifejezés értékétől függően (ami lehet: bool, enum, int, vagy string) több lehetséges utasítás valamelyike kerül végrehajtásra. 1. eset 2. eset … … … Program „eleje” Program „folytatása” x. eset X+1. eset 18-19. oldal c# könyv Szelekciós utasítás
Switch Használata: switch (kifejezés) { case kifejezés1: utasítás1; break; case kifejezés2: utasítás2; … default: utasításx+1; } Ide kerül pl. az a változó, amelynek az értékét össze szeretnénk hasonlítani valamivel. Ide kerül az az „érték” amivel összehasonlítjuk az előzőt. Numerikus változó esetén lehet egy számérték, szöveges változó esetén pedig ”Szöveges”. Ide kerülnek azok az utasítások, amiket akkor akarunk végrehajtani, ha ez az ág fog lefutni. Megszakítja a switch futását. Amennyiben az egyik ág lefut, a többi ág teljesülése nem kerül ellenőrzésre. Nem kötelező megadni. Amennyiben egyik ág sem futott le és megadtunk default utasítást, akkor kerül lefutásra.
SZELEKCIÓS UTASÍTÁSOK SWITCH: switch (ijegy) { case 1: label1.Text = "Az érdemjegy elégtelen!"; break; case 2: label1.Text ="Az érdemjegy elégséges!"; case 3: label1.Text = "Az érdemjegy közepes!"; case 4: label1.Text = "Az érdemjegy jó!"; default: label1.Text = "Az érdemjegy jeles"; }
If-ek egymásba ágyazása private void radioButton1_CheckedChanged(object sender, EventArgs e) { if (radioButton1.Checked) if (checkBox1.Checked) label1.Text = "1, igen"; } else label1.Text = "1, nem"; private void radioButton2_CheckedChanged(object sender, EventArgs e) if (radioButton2.Checked) label1.Text = "2, igen"; label1.Text = "2, nem"; RadioButton: Csak egy lehet kiválasztva egy csoporton belül. Ha egy másikat aktiválunk, az automatikusan deaktiválja az előző aktív elemet. Alapértelmezett eseménye a CheckedChange („kiválasztottsági állapot” megváltozása) Logikai típusú, vizsgálható tulajdonsága a Checked. True, ha ki van választva, és false ha nem.
If-ek egymásba ágyazása A másodfokú egyenlet általános alakja: a * x^2 + b * x + c = 0 HA (a != 0) HA (diszkrimináns < 0) Két komplex gyök HA (diszkrimináns > 0) Két valós gyök HA (diszkrimináns > 0) Egy valós gyök HA (a = 0) HA (b != 0) Egy valós gyök HA (b = 0 és c != 0) Nincs megoldás HA (b = 0 és c = 0) Minden x megoldás Ez alapján a váz alapján egymásba ágyazott ifek és else ifek használatával írjunk másodfokú egyenletet megoldó programot!
Felhasznált irodalom http://www.mogi.bme.hu/letoltes/ALKALMAZOTT%20INFORMATIKAI%20TÁRGYAK/INFORMATIKAI%20RENDSZEREK%202015/C%23.pdf http://www.mogi.bme.hu/letoltes/ALKALMAZOTT%20INFORMATIKAI%20TÁRGYAK/INFORMATIKAI%20RENDSZEREK%202015/C_%20programozás%20lépésről%20lépésre%20-%20Reiter%20István%20(frissitett%20tartalommal%202012.10.15).pdf Dr. Tamás Péter óravázlatai Microsoft Visual Studio 2013 súgója
Köszönöm a megtisztelő figyelmet!