Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.

Hasonló előadás


Az előadások a következő témára: "1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy."— Előadás másolata:

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; }


Letölteni ppt "1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy."

Hasonló előadás


Google Hirdetések