Gyakorlat – Matematikai műveletek végrehajtása

Befejeződött

Most, hogy megismerkedett az összeadás alapjaival, és ami még fontosabb, a numerikus és sztring típusú adattípusok közötti implicit típuskonvertálással, vizsgáljuk meg a numerikus adatok számos más gyakori matematikai műveletét.

Alapszintű matematikai műveletek végrehajtása

Kód írása összeadás, kivonás, szorzás és osztás egész számokkal való végrehajtásához

  1. Jelölje ki az összes kódot a .NET-szerkesztőben, majd a Törlés vagy a Backspace billentyű lenyomásával törölje azt.

  2. Írja be a következő kódot a .NET-szerkesztőbe:

    int sum = 7 + 5;
    int difference = 7 - 5;
    int product = 7 * 5;
    int quotient = 7 / 5;
    
    Console.WriteLine("Sum: " + sum);
    Console.WriteLine("Difference: " + difference);
    Console.WriteLine("Product: " + product);
    Console.WriteLine("Quotient: " + quotient);
    
  3. Futtassa a kódot. A következő kimenetnek kell megjelennie:

    Sum: 12
    Difference: 2
    Product: 35
    Quotient: 1
    

Mint látható:

  • + az összeadás operátora
  • - a kivonás operátora
  • * a szorzás operátora
  • / az osztás operátora

Előfordulhat azonban, hogy az osztási példa eredményül kapott hányadosa nem az, amit várt. A decimális utáni értékeket csonkolja a rendszer, quotient mivel a decimális értékként intvan definiálva, és int a decimális után nem tartalmazhat értékeket.

Kód hozzáadása az osztás végrehajtásához literális decimális adatokkal

A osztás megfelelő működésének megtekintéséhez olyan adattípust kell használnia, amely támogatja a törtjegyeket a tizedesvessző után, például decimal.

  1. Törölje a kódot az előző lépésekből, és írja be a következő kódot a .NET-szerkesztőbe:

    decimal decimalQuotient = 7.0m / 5;
    Console.WriteLine($"Decimal quotient: {decimalQuotient}");
    
    
  2. Futtassa a kódot. A következő kimenetnek kell megjelennie:

    Decimal quotient: 1.4
    

Ahhoz, hogy ez működjön, a hányadosnak (a hozzárendelési operátor bal oldalán) típusnak decimalkell lennie, és legalább az osztva lévő számoknak is típusnak decimal kell lenniük (mindkét szám típus is lehet decimal ).

Az alábbi két példa is ugyanolyan jól működik:

decimal decimalQuotient = 7 / 5.0m;
decimal decimalQuotient = 7.0m / 5.0m;

A következő kódsorok viszont nem működnek (vagy pontatlan eredményeket adnak):

int decimalQuotient = 7 / 5.0m;
int decimalQuotient = 7.0m / 5;
int decimalQuotient = 7.0m / 5.0m;
decimal decimalQuotient = 7 / 5;

Kód hozzáadása az egész szám osztás eredményeinek leadásához

Mi a teendő, ha nem konstansértékekkel dolgozik? Másként fogalmazva, hogyan osztható el egymással két int típusú változó, ha nem szeretné elveszíteni az eredmény tizedesjegyeit? Ilyen esetben explicit adattípus-konverziót kell végrehajtania int típusról decimal típusra. Az explicit típuskonverzió arra utasítja a fordítót, hogy átmenetileg úgy kezeljen egy értéket, mintha az más típusú volna.

Az int típus decimal típusra konvertálásához az érték elé be kell írni az explicit konverzió operátorát. Az érték elé zárójelek által körülvett adattípus nevét kell használnia annak leadásához. Ebben az esetben (decimal) a változók first és seconda .

  1. Törölje a kódot az előző lépésekből, és írja be a következő kódot a .NET-szerkesztőbe:

    int first = 7;
    int second = 5;
    decimal quotient = (decimal)first / (decimal)second;
    Console.WriteLine(quotient);
    
  2. Futtassa a kódot. A következő kimenetnek kell megjelennie:

    1.4
    

Feljegyzés

A zárójel operátorának három felhasználási módja van: a metódushívás, a műveletek sorrendje és az öntés.

Kód írása az egész szám felosztása utáni maradék meghatározásához

A modulus operátor % a osztás fennmaradó részét int jelzi. Így állapítható meg például, hogy egy szám osztható-e egy másikkal. Ez hasznos lehet olyan hosszú feldolgozási műveleteknél, ahol több száz vagy több ezer adatrekord feldolgozása közben minden századik adatrekord feldolgozása után visszajelzést szeretne adni a felhasználónak.

  1. Törölje a kódot az előző lépésekből, és írja be a következő kódot a .NET-szerkesztőbe:

    Console.WriteLine($"Modulus of 200 / 5 : {200 % 5}");
    Console.WriteLine($"Modulus of 7 / 5 : {7 % 5}");
    
    
  2. Futtassa a kódot. A következő kimenetnek kell megjelennie:

    Modulus of 200 / 5 : 0
    Modulus of 7 / 5 : 2
    

Ha a maradék 0, akkor az osztandó osztható az osztóval.

A műveletek sorrendje

Ahogy az előző gyakorlatban megtanulta, a () szimbólumokat műveleti operátorok sorrendjeként használhatja . A műveleti sorrendet azonban nem egyedül ezek határozzák meg.

A matematikában a PEMDAS egy betűszó, amely segít a tanulóknak emlékezni a műveletek sorrendjére. A sorrend a következő (először az angol nyelvű szavak, amelyekből a betűszó származik):

  1. Parentheses – Zárójelek (először a zárójelen belüli műveleteket kell elvégezni)
  2. Exponents – Hatványozás
  3. Multiplication and Division – Szorzás és osztás (balról jobbra)
  4. Addition and Subtraction – Összeadás és kivonás (balról jobbra)

A C# a hatványozás kivételével ugyanezt a sorrendet követi. Bár a C#-ban nincs kitevő operátor, használhatja a System.Math.Pow metódust. A „.NET-osztálytárbeli metódusok meghívása a C# használatával” modul más metódusok mellett ezt is bemutatja.

Kód írása a C#műveleti sorrendjének gyakorlásához

  1. Törölje a kódot az előző lépésekből, és írja be a következő kódot a .NET-szerkesztőbe:

    int value1 = 3 + 4 * 5;
    int value2 = (3 + 4) * 5;
    Console.WriteLine(value1);
    Console.WriteLine(value2);
    

    Itt láthatja a különbséget, ha ugyanazokat a műveleteket más sorrendben hajtja végre.

  2. Futtassa a kódot. A következő kimenetnek kell megjelennie:

    23
    35
    

Összefoglalás

A C#-ban végzett matematikai műveletekről eddig az alábbiakat tanulta:

  • A +, -, * és / operátorral matematikai alapműveleteket hajthat végre.
  • Két int érték osztása a tizedesvessző utáni jegyek elvesztésével jár. A tizedesvessző utáni értékek megőrzéséhez az osztó vagy az osztalékot (vagy mindkettőt) int egy lebegőpontos számba kell leadnia, mint decimal az első, akkor az hányadosnak azonos lebegőpontos típusúnak kell lennie a csonkolás elkerülése érdekében.
  • Explicit konverzióval egy érték átmenetileg úgy kezelhető, mintha más adattípushoz tartozna.
  • A % operátorral az osztási maradék határozható meg.
  • A műveleti sorrend a matematikai szabályoknak felel meg.