• Összeadás
  • Kivonás
  • Szorzás
  • Osztás
  • Egyszerű matematikai műveletek




    Download 1.08 Mb.
    bet22/51
    Sana07.04.2017
    Hajmi1.08 Mb.
    #3295
    1   ...   18   19   20   21   22   23   24   25   ...   51

    3.3.2. Egyszerű matematikai műveletek


    A primitív típusú változóink szinte kivétel számokat tárolnak, ezért mindegyiken képesek vagyunk matematikai műveleteket végezni. Lássuk, miképp tudjuk a matematikai alapműveleteket Java nyelven elvégeztetni.

    Előjelváltás


    A legegyszerűbb operátor az előjelváltás:

    view plaincopy to clipboardprint?

    1. int szám = 2;  

    2. szám = -szám;  

    3. System.out.println(szám);  

    4. szám = -szám;  

    5. System.out.println(szám);  

    Az előjelváltás a tipikus példája a prefix típusú operátornak, hiszen az operátort követi az operandus.

    Összeadás


    A négy alapvető matematikai művelet közül a leginkább használt művelet az összeadás, Java nyelvben is pontosan úgy működik, mintha papírra vetnénk:

    view plaincopy to clipboardprint?

    1. int szám;  

    2. szám = 3 + 4;  

    3. szám = szám + 5;  

    4. szám = szám + 1;  

    5. System.out.println(szám);  

    szám = 3 + 4 utasítás úgy olvasandó, hogy a szám változó értéke legyen egyenlő a három meg a négy értékével, vagyis a szám értéke hét lesz. A szám = szám + 5 utasítás már feltételez előző értéket a szám változóban (ami jelen esetben 7), s a jelentése annyi, hogy aszám változó értéke legyen egyenlő a szám változó előző értéke meg öt értékével, vagyis a szám változóban a 12 lesz eredményképpen. A következő utasítás hasonlóképpen értelmezhető, azt jelenti, hogy a szám változó értékét megnöveljük egyel. A kiírt eredmény 13 lesz.

    Kivonás


    Azonos módon értelmezhető, mint az összeadás:

    view plaincopy to clipboardprint?

    1. int szám;  

    2. szám = 3 - 4;  

    3. szám = szám - 5;  

    4. szám = szám - 1;  

    5. System.out.println(szám);  

    Az eredmény pedig -7 lesz.

    Szorzás


    A szorzás is úgy működik, mint az előző két művelet, csak a műveleti jel változik:

    view plaincopy to clipboardprint?

    1. int szám;  

    2. szám = 3 * 4;  

    3. szám = szám * 5;  

    4. szám = szám * 1;  

    5. System.out.println(szám);  

    Az eredmény 60 lesz, ahogy az sejthető.

    Osztás


    Az osztás kilóg az előző három művelet közül, egy kicsit speciális a helyzete. Az egyik buktató - amiről már volt szó, hogy ha egész számok az operandusok, akkor egész osztás fog történni:

    view plaincopy to clipboardprint?

    1. int szám;  

    2. szám = 30 / 4;  

    3. szám = szám / 5;  

    4. szám = szám / 1;  

    5. System.out.println(szám);  

    Normál esetben az eredmény másfél lenne, de az egész osztások miatt az 30/4 eredménye 7 lesz, ezt követően a 7/5 eredménye pedig 1, aztán az 1/1 természetesen 1. Ha a valós eredmény érdekel minket, akkor valós számokkal kell számolnunk:

    view plaincopy to clipboardprint?

    1. double szám;  

    2. szám = 30 / 4;  

    3. szám = szám / 5;  

    4. szám = szám / 1;  

    5. System.out.println(szám);  

    Az eredményül kapott 1.4 egy kissé gyanús lehet matematikában jártas egyéneknek. A probléma gyökere ott van, hogy a 30/4 még mindig egész osztás marad, attól függetlenül, hogy a szám változó típusa valós. Ennek oka, hogy a Java nyelvben - és más nyelvekben is - az egyenlőség jel jobb oldalán kezdődik a kifejezés végrehajtása, mégpedig balról jobbra. Mivel a 30 egy egész szám és a 4 is egy egész szám, ezért a két számon értelmezett osztás művelet egész osztás lesz: a szám változóba eredményül 7 kerül. A következő sorban az utasítás szerint a szám változó értékét el kell osztani öttel. Itt a szám változó típusa okán már valós osztás lesz, és a 7/5 eredménye az 1.4. A hibát úgy tudjuk kikerülni, hogy jelezzük a 30 és a 4 valós voltát (illetve a többi szám valós voltát is):

    view plaincopy to clipboardprint?

    1. double szám;  

    2. szám = 30.0 / 4.0;  

    3. szám = szám / 5.0;  

    4. szám = szám / 1.0;  

    5. System.out.println(szám);  

    Eredményül most már másfelet fogunk kapni. A nullával való osztásban is vannak különbségek. Ha valós számot osztunk nullával, akkor eredményül végtelent (Infinity) kapunk:

    view plaincopy to clipboardprint?

    1. double szám;  

    2. szám = 30.0 / 4.0;  

    3. szám = szám / 5.0;  

    4. szám = szám / 0;  

    5. System.out.println(szám);  

    Ellenben egész szám esetén a program futása megszakad:

    view plaincopy to clipboardprint?

    1. int szám;  

    2. szám = 30 / 4;  

    3. szám = szám / 5;  

    4. szám = szám / 0;  

    5. System.out.println(szám);  

    Egy kivétel (Exception) keletkezik, hogy nullával próbáltunk meg osztani:

    view plaincopy to clipboardprint?

    1. Exception in thread "main" java.lang.ArithmeticException: / by zero  

    2.         at kocsma.Main.main(Main.java:11)  

    A kivételekről majd később, annyit jegyezzünk meg, hogy ha egész számokkal osztunk, akkor annak súlyos következményei lehetnek.

    Download 1.08 Mb.
    1   ...   18   19   20   21   22   23   24   25   ...   51




    Download 1.08 Mb.