C# - číselné datové typy Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí
Celočíselné typy Pojmenování CTS – kompatibilita s datovými typy Framework class library Název Typ CTS Popis Rozsah Velikost sbyte System.SByte 8-bitové číslo se znaménkem -128 až 127 (-27 až 27-1) 1 B short System.Int16 16-bitové číslo se znaménkem -32 768 až 32 767 (-215 až 215-1) 2 B int System.Int32 32-bitové číslo se znaménkem -2 147 483 648 až 2 147 483 647 (-231 až 231-1) 4 B long System.Int64 64-bitové číslo se znaménkem –9 223 372 036 854 775 808 až 9 223 372 036 854 775 807 (-263 až 263-1) 8 B byte System.Byte 8-bitové číslo bez znaménka 0 až 255 (0 až 28-1) ushort System.UInt16 16-bitové číslo bez znaménka 0 až 65 535 (0 až 216-1) uint System.UInt32 32-bitové číslo bez znaménka 0 až 4 294 967 295 (0 až 232-1) ulong System.UInt64 64-bitové číslo bez znaménka 0 až 18 446 744 073 709 551 615 (0 až 264-1)
V případě že pracujete pouze s kladnými hodnotami je vhodné pracovat s číselnými typy bez záporných znamének – větší rozsah v oboru kladných čísel Pozor na přetečení oboru hodnot vybraného číselného typu – chová se jako tachometr – při přičtení jedničky k maximu daného oboru se automaticky hodnota proměnné nastaví na minimum daného typu (např.: u bankovních transakcí nemilá představa) Pro celočíselné operace je vhodný typ int – 32bitový – efektivní způsob manipulace s tímto typem je dán jeho velikostí
Úkol Deklarujte a navrhněte celočíselné proměnné – pro každý datový typ jednu a naplňte tyto proměnné vstupem od uživatele. Jejich hodnoty pak vypište.
Typy s plovoucí řádovou čárkou Jsou v paměti realizovány odlišně než celočíselné typy – ukládá se zvlášť mantisa a zvlášť exponent Plovoucí řádová čárka – odděluje v hodnotě řád ne nutně pouze desetiny : 369,369 je 3,69369 e2 36936,9 je 3,69369 e4 Obě čísla mají stejnou přesnost 6 cifer ale rozdílné řády Pro práci s desetinnými čísly (extrémní rozsahy)
Double je přesnější než float Název Typ CTS Popis Počet platných číslic Rozsah (zaokrouhleno) Velikost float System.Single 32-bitové číslo s jednoduchou (single) přesností s plovoucí řádovou čárkou 7 +(-) 1.5 .10-45 až +(-) 3.4 .1038 4 B double System.Double 64-bitové číslo s dvojitou (double) přesností s plovoucí řádovou čárkou 15 - 16 +(-) 5.0 .10-324 až +(-) 1.7 .10308 8 B Double je přesnější než float
Desítkový typ Veliký rozsah a přesnost Vhodný pro finanční výpočty Název Typ CTS Popis Počet platných číslic Rozsah (zaokrouhleno) Velikost decimal System.Decimal 128-bitové číslo s jednoduchou přesností s plovoucí řádovou čárkou 28 +(-) 1.0 .10-28 až +(-) 7.9 .1028 16 B
Aritmetické operátory (binární) + , - , * , / , % (modulo) pracují se dvěma operandy Úkol: Napište program, který na základě dvou hodnot zadaných od uživatele vrátí výsledky výše uvedených operací provedených nad těmito hodnotami. Řešení naleznete v projektu AritmetickeOperatory1
Aritmetické operátory (unární) Aplikované na jeden operand Inkrementace ++, dekrementace – Prefixový zápis ++i (nejdříve změní hodnotu proměnné a pak vyhodnotí) Postfixový zápis i++ (nejdříve vyhodnotí a pak změní hodnotu proměnné)
Odhadněte výsledky operací a své závěry ověřte: using System; namespace AritmetickeOperatory.Priklad2 { class VstupniBodProgramu { static void Main() { // Deklarujeme dvě proměnné: int i = 2; int j = 17; // Vypíšeme jejich hodnoty: Console.WriteLine("i = {0}, j = {1}", i, j); // Vypíšeme výsledek této operace: Console.WriteLine("i++ + --j = {0}", i++ + --j); // A opět vypíšeme jejich hodnoty: Console.WriteLine("i = {0}, j = {1}", i, j); Console.ReadLine(); } } } Řešení naleznete v projektu AritmetickeOperatory2
Další aritmetické operátory += k proměnné vlevo přičte hodnotu operandu vpravo -= od proměnné vlevo odečte hodnotu operandu vpravo *= proměnnou vlevo vynásobí hodnotou operandu vpravo /= proměnnou vlevo vydělí hodnotou operandu vpravo %= do proměnné vlevo uloží zbytek po dělení původní hodnoty této proměnné hodnotou operandu vpravo
Úkoly 1. napište program, který 4mi různými způsoby zvýší hodnotu proměnné o 1 2. napište program, který ze zadaného počtu vteřin vypíše čas ve tvaru …h …m …s *(řešení naleznete v souborech AritmetickeOperatory3 a 4)
Řešení úkolu 1
Práce s hexadecimálními čísly Programátoři často pracují s čísly v hexadecimálním tvaru Pro definování hodnoty hexadecimálně se používa prefix Ox Následující dva řádky jsou ekvivalentní: int Int16 = 16; Int Int16 = 0x10;
Seriály o programování v jazyce C# : www.živě.cz www.java2s.com Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí Použité materiály: Kniha: Programujeme profesionálně, nakladatelství WROX, autor: Jay Glynn,… www.wikipedia.com Seriály o programování v jazyce C# : www.živě.cz www.java2s.com www.functionx.com www.csharp-station.com www.msdn.com www.bytes.com www.c-sharpcorner.com