270 likes | 394 Views
A számítógép programozása. Hernyák Zoltán Web: http://dragon.ektf.hu/aroan , E-Mail: aroan@aries.ektf.hu Magasszintű Programozási Nyelvek I. Eszterházy Károly Főiskola Számítástudományi tsz http://aries.ektf.hu. 1. Programvezérlési szerkezetek. Programvezérlési szerkezetek.
E N D
A számítógép programozása Hernyák Zoltán Web: http://dragon.ektf.hu/aroan, E-Mail: aroan@aries.ektf.hu Magasszintű Programozási Nyelvek I. Eszterházy Károly Főiskola Számítástudományi tsz http://aries.ektf.hu 1
Programvezérlési szerkezetek Programvezérlési szerkezetek • Az utasítások végrehajtási sorrendjét szabályozzák. • Szekvencia: ugyanabban a sorrendben kell végrehajtani az utasításokat, amilyen sorrendben az a forráskódban szerepel • Szelekció (elágazás): utasítások csoportját vagy végre kell hajtani, vagy nem • Iteráció (ciklus): utasítások csoportját ismételten, többször is végre kell hajtani 2
A "szelekció" vezérlési szerkezet if ( logikai-feltétel ) utasítás; • 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 3
A "szelekció" vezérlési szerkezet • 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. 4
A "szelekció" vezérlési szerkezet Összehasonlító operátorok: == egyenlő ? != nem egyenlő ? < kisebb, mint ? > nagyobb mint ? <= kisebb, vagy egyenlő? >= nagyobb, vagy egyenlő? 5
A "szelekció" vezérlési szerkezet 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) … 6
A "szelekció" vezérlési szerkezet 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 ) … 7
A "szelekció" vezérlési szerkezet • 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 8
A "szelekció" vezérlési szerkezet int a = -1; int b = 10; if ( a<0 && b!=100 ) … if ( a>0 && b!=100 ) … IGAZ IGAZ IGAZ HAMIS IGAZ HAMIS 9
A "szelekció" vezérlési szerkezet • 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 10
A "szelekció" vezérlési szerkezet • 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 11
A "szelekció" vezérlési szerkezet int a = -1; int b = 10; if ( a<0 || b!=100 ) … if ( a>0 || b==100 ) … IGAZ IGAZ IGAZ HAMIS HAMIS HAMIS 12
A "szelekció" vezérlési szerkezet • 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 13
A "szelekció" vezérlési szerkezet • 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 14
A "szelekció" vezérlési szerkezet Egyszerű elágazás: if if ( logikai-feltétel ) utasítás; IGAZ logikai feltétel utasítás HAMIS 15
A "szelekció" vezérlési szerkezet int a = int.Parse( Console.ReadLine() ); if ( a<0 ) a=0; 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); } 16
A "szelekció" vezérlési szerkezet if ( logikai-feltétel ) utasítás1; elseutasítás2; 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… 17
A "szelekció" vezérlési szerkezet if ( logikai-feltétel ) utasítás1; elseutasítás2; IGAZ logikai feltétel HAMIS utasítás utasítás 18
A "szelekció" vezérlési szerkezet 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! 19
A "szelekció" vezérlési szerkezet 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! 20
A "szelekció" vezérlési szerkezet switch ( szelektor-kifejezés ) { caseeset1: ut1; …; break; caseeset2: ut2; …; break; … } string vagy ‘int’ típusú megfelelő típusú konstans utasítás-blokk kötelező elem! break return goto eset 21
A "szelekció" vezérlési szerkezet int a=2, b=3; switch ( a+b ) { case4: Console.WriteLine(”4-es eset.”); break; case5: Console.WriteLine(”4-es eset.”); x=b*a; break; case6: Console.WriteLine(”6-os eset.”); break; } a=b-3; a+b = 5 NEM! IGEN! 22
A "szelekció" vezérlési szerkezet int a=5, b=4; switch ( a+b ) { case4: Console.WriteLine(”4-es eset.”); break; case5: Console.WriteLine(”4-es eset.”); x=b*a; break; case6: Console.WriteLine(”6-os eset.”); break; } a=b-3; a+b = 9 NEM! NEM! NEM! 23
A "szelekció" vezérlési szerkezet int a=5, b=4; switch ( a+b ) { case4: Console.WriteLine(”4-es eset.”); break; case5: Console.WriteLine(”4-es eset.”); x=b*a; break; default: Console.WriteLine(”Egyéb esetekben”); break; } a=b-3; a+b = 9 NEM! NEM! Akkor ez legyen! 24
A "szelekció" vezérlési szerkezet • 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 25
A "szelekció" vezérlési szerkezet • 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! 26
A "szelekció" vezérlési szerkezet int a=1, b=3; switch ( a+b ) { case4: goto case 5; case5: Console.WriteLine(”4 vagy 5.”); break; default: Console.WriteLine(”Egyéb”); break; } 27