Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
KiadtaSándor Bakos Megváltozta több, mint 10 éve
1
1 Hernyák Zoltán Web: http://dragon.ektf.hu/aroan, E-Mail: aroan@aries.ektf.huhttp://dragon.ektf.hu/aroan Magasszintű Programozási Nyelvek I. Eszterházy Károly Főiskola Számítástudományi tsz http://aries.ektf.hu
2
2 Programvezérlési szerkezetek Az utasítások végrehajtási sorrendjét szabályozzák. 1.Szekvencia: ugyanabban a sorrendben kell végrehajtani az utasításokat, amilyen sorrendben az a forráskódban szerepel 2.Szelekció (elágazás): utasítások csoportját vagy végre kell hajtani, vagy nem 3.Iteráció (ciklus): utasítások csoportját ismételten, többször is végre kell hajtani
3
3 A logikai feltétel (kifejezés): Legfontosabb jellemzője, hogy kiszámítva vagy „igaz”, vagy „hamis” eredményt ad (és nincs harmadik lehetőség) Ezt kétállapotú (bináris) logikának hívják if ( logikai-feltétel ) utasítás;
4
4 A logikai kifejezés: Olyan kifejezés konstruálása, amely kiértékelve (kiszámítva) „igaz”, vagy „hamis” értéket ad … … összehasonlító operátorokkal … logikai operátorokkal lehetséges.
5
5 Összehasonlító operátorok: ==egyenlő ? !=nem egyenlő ? <kisebb, mint ? >nagyobb mint ? <=kisebb, vagy egyenlő? >=nagyobb, vagy egyenlő?
6
6 Pl: static void Main() { int a = int.Parse( Console.ReadLine() ); if ( a<0 ) … } … csak ha az ‘a’ változóban lévő érték kisebb, mint nulla (vagyis ha ‘a’ negatív) …
7
7 Logikai operátorok: &&ÉS(logikai konjunkció) ||VAGY(logikai diszjunkció) !NEM (logikai tagadás) Ezek segítségével komplex (több tagú) logikai kifejezés építhető fel: if ( a<0 && b!=100 ) …
8
8 Logikai ÉS && Kétoperandusú infix:___ ÉS ___ Akkor lesz a végeredmény IGAZ, ha mindkét rész külön-külön is IGAZ Egyéb esetben a végeredmény HAMIS IGAZ && IGAZ» IGAZ IGAZ && HAMIS» HAMIS HAMIS && IGAZ» HAMIS HAMIS && HAMIS» HAMIS
9
9 int a = -1; int b = 10; if ( a<0 && b!=100 ) … if ( a>0 && b!=100 ) … IGAZ HAMIS IGAZ HAMIS
10
10 Logikai ÉS && Végeredménye sokszor megjósolható Ha az első tag értéke HAMIS, a második tag értékét már ki sem kell számolni („shortcut” = rövidzár) if ( a>0 && b!=100 ) … HAMIS ??? HAMIS
11
11 Logikai VAGY || Kétoperandusú:___ VAGY ___ Akkor lesz a végeredmény IGAZ, ha bármely rész IGAZ Egyéb esetben a végeredmény HAMIS IGAZ || IGAZ» IGAZ IGAZ || HAMIS» IGAZ HAMIS || IGAZ» IGAZ HAMIS || HAMIS» HAMIS
12
12 int a = -1; int b = 10; if ( a<0 || b!=100 ) … if ( a>0 || b==100 ) … IGAZ HAMIS
13
13 Logikai VAGY || Végeredménye sokszor megjósolható Ha az első tag értéke IGAZ, a második tag értékét már ki sem kell számolni („shortcut” = rövidzár) if ( a<0 || b!=100 ) … IGAZ ??? IGAZ
14
14 Logikai TAGADÁS ! Egyoperandusú: NOT ___ Akkor lesz a végeredmény IGAZ, ha a tag egyébként HAMIS Ha a tag IGAZ, a végeredmény HAMIS ! IGAZ »HAMIS ! HAMIS»IGAZ
15
15 Egyszerű elágazás: if if ( logikai-feltétel ) utasítás; logikai feltétel utasítás IGAZ HAMIS
16
16 int a = int.Parse( Console.ReadLine() ); if ( a<0 ) a=0; int a = int.Parse( Console.ReadLine() ); if ( a<0 ) a=0; bool jo = false; if ( 0<a && a<10 ) b = true; bool jo = false; if ( 0<a && a<10 ) b = true; if ( 0<diszkr ) { int x1 = (-b + Math.Sqrt(diszkr))/(2*a); int x2 = (-b - Math.Sqrt(diszkr))/(2*a); Console.WriteLine(”X1={0}, X2={1}”,X1,X2); } if ( 0<diszkr ) { int x1 = (-b + Math.Sqrt(diszkr))/(2*a); int x2 = (-b - Math.Sqrt(diszkr))/(2*a); Console.WriteLine(”X1={0}, X2={1}”,X1,X2); }
17
17 Ha a feltétel igaz, akkor az utasitas1-t kell végrehajtani. Ha a feltétel hamis, akkor pedig az utasitas2-t. Mindkét esetben lehet blokk-jelek között több utasítást is elhelyezni… if ( logikai-feltétel ) utasítás1; else utasítás2; if ( logikai-feltétel ) utasítás1; else utasítás2;
18
18 logikai feltétel utasítás IGAZ utasítás if ( logikai-feltétel ) utasítás1; else utasítás2; if ( logikai-feltétel ) utasítás1; else utasítás2; HAMIS
19
19 double diszkr = b*b-4*a*c; if ( 0<diszkr ) { int x1 = (-b + Math.Sqrt(diszkr))/(2*a); int x2 = (-b - Math.Sqrt(diszkr))/(2*a); Console.WriteLine(”X1={0}, X2={1}”,X1,X2); } else Console.WriteLine(”0 vagy 1 megoldás”); Console.WriteLine(”Készen vagyunk…”); double diszkr = b*b-4*a*c; if ( 0<diszkr ) { int x1 = (-b + Math.Sqrt(diszkr))/(2*a); int x2 = (-b - Math.Sqrt(diszkr))/(2*a); Console.WriteLine(”X1={0}, X2={1}”,X1,X2); } else Console.WriteLine(”0 vagy 1 megoldás”); Console.WriteLine(”Készen vagyunk…”); IGAZ? HAMIS?IGAZ!
20
20 double diszkr = b*b-4*a*c; if ( 0<diszkr ) { int x1 = (-b + Math.Sqrt(diszkr))/(2*a); int x2 = (-b - Math.Sqrt(diszkr))/(2*a); Console.WriteLine(”X1={0}, X2={1}”,X1,X2); } else Console.WriteLine(”0 vagy 1 megoldás”); Console.WriteLine(”Készen vagyunk…”); double diszkr = b*b-4*a*c; if ( 0<diszkr ) { int x1 = (-b + Math.Sqrt(diszkr))/(2*a); int x2 = (-b - Math.Sqrt(diszkr))/(2*a); Console.WriteLine(”X1={0}, X2={1}”,X1,X2); } else Console.WriteLine(”0 vagy 1 megoldás”); Console.WriteLine(”Készen vagyunk…”); IGAZ? HAMIS?HAMIS!
21
21 switch ( szelektor-kifejezés ) { case eset1: ut1; …; break; case eset2: ut2; …; break; … } switch ( szelektor-kifejezés ) { case eset1: ut1; …; break; case eset2: ut2; …; break; … } string vagy ‘int’ típusú megfelelő típusú konstans utasítás-blokk kötelező elem! break return goto eset
22
22 int a=2, b=3; switch ( a+b ) { case 4: Console.WriteLine(”4-es eset.”); break; case 5: Console.WriteLine(”4-es eset.”); x=b*a; break; case 6: Console.WriteLine(”6-os eset.”); break; } a=b-3; int a=2, b=3; switch ( a+b ) { case 4: Console.WriteLine(”4-es eset.”); break; case 5: Console.WriteLine(”4-es eset.”); x=b*a; break; case 6: Console.WriteLine(”6-os eset.”); break; } a=b-3; a+b = 5 NEM! IGEN!
23
23 int a=5, b=4; switch ( a+b ) { case 4: Console.WriteLine(”4-es eset.”); break; case 5: Console.WriteLine(”4-es eset.”); x=b*a; break; case 6: Console.WriteLine(”6-os eset.”); break; } a=b-3; int a=5, b=4; switch ( a+b ) { case 4: Console.WriteLine(”4-es eset.”); break; case 5: Console.WriteLine(”4-es eset.”); x=b*a; break; case 6: Console.WriteLine(”6-os eset.”); break; } a=b-3; a+b = 9 NEM!
24
24 int a=5, b=4; switch ( a+b ) { case 4: Console.WriteLine(”4-es eset.”); break; case 5: Console.WriteLine(”4-es eset.”); x=b*a; break; default: Console.WriteLine(”Egyéb esetekben”); break; } a=b-3; int a=5, b=4; switch ( a+b ) { case 4: Console.WriteLine(”4-es eset.”); break; case 5: Console.WriteLine(”4-es eset.”); x=b*a; break; default: Console.WriteLine(”Egyéb esetekben”); break; } a=b-3; a+b = 9 NEM! Akkor ez legyen!
25
25 switch Többirányú elágazás Az eseteket konstansok vagy literálok jelölik Ha van DEFAULT ág, akkor az ágak közül pontosan egy hajtódik végre Ha nincs DEFAULT, akkor az ágak közül maximum egy hajtódik végre
26
26 switch Gyorsabb, mintha N darab IF-el végeznénk Nem lehet olyan, hogy egy időben több ág is kiválasztódna, mivel minden ágat egy konstans ‘őríz’, és két konstans nem lehet ugyanazon értékű, különben szintaktikai hiba!
27
27 int a=1, b=3; switch ( a+b ) { case 4: goto case 5; case 5: Console.WriteLine(”4 vagy 5.”); break; default: Console.WriteLine(”Egyéb”); break; } int a=1, b=3; switch ( a+b ) { case 4: goto case 5; case 5: Console.WriteLine(”4 vagy 5.”); break; default: Console.WriteLine(”Egyéb”); break; }
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.