Celočíselné hodnoty | |||
---|---|---|---|
Název | Rozsah | Velikost | .NET |
sbyte | -128 až 127 | 8 bitů | System.SByte |
byte | 0 až 255 | 8 bitů | System.Byte |
short | -32 768 až 32 767 | 16 bitů | System.Int16 |
ushort | 0 až 65 535 | 16 bitů | System.UInt16 |
int | -2 147 483 648 až 2 147 483 647 | 32 bitů | System.Int32 |
uint | 0 až 4 294 967 295 | 32 bitů | System.UInt32 |
long | -9 223 372 036 854 775 808 až 9 223 372 036 854 775 807 | 64 bitů | System.Int64 |
ulong | 0 až 18 446 744 073 709 551 615 | 64 bitů | System.UInt64 |
Číselné typy s plovoucí desetinnou čárkou | ||||
---|---|---|---|---|
Název | Rozsah ± | Přesnost | Velikost | .NET |
float | 1,5 × 10^-45 až 3,4 × 10^38 | 7 číslic | 32 bitů | System.Single |
double | 5,0 × 10^-324 až 1,7 × 10^308 | 15 číslic | 64 bitů | System.Double |
decimal | 1,0 × 10^-28 až 7,9 × 10^28 | 28 číslic | 128 bitů | System.Decimal |
byte.MaxValue;
byte.MinValue;
short.MaxValue;
short.MinValue;
int.MaxValue;
int.MinValue;
long.MinValue;
long.MaxValue;
float.MaxValue;
float.MinValue;
double.MaxValue;
double.MinValue;
decimal.MaxValue;
decimal.MinValue;
Ostatní důležité typy | |||
---|---|---|---|
Název | Rozsah | Velikost | .NET |
boolean | true nebo false | 1 bajt | System.Boolean |
char | 0 až 65 535 | 16 bitů | System.Char |
Přímý kód je nejjednodušší způsob uložení záporných čísel.
Nejvyšší bit je použit jako znaménko. Pokud je tento bit 0, je číslo kladné, pokud je 1, je číslo záporné.
Tento způsob má však několik nevýhod. Například nula má dva reprezentace: 0 a -0.
Další nevýhodou je, že sčítání a odčítání je složité.
Doplňkový kod není složitý a jeho zapis je velmi podobný přímému.
Nejvyšší bit je použit jako znaménko. Pokud je tento bit 0, je číslo kladné, pokud je 1, je číslo záporné.
Opačnou hodnotou je na mysli, že vidíme
(max hodnota) - (uložená hodnota) = (to čislo co chceme)
Ukládáme to kolik musime odečíst od největšího čísla, abychom dostali naše číslo.
Při ukládání desetinných čísel je důležité si uvědomit, že počítače nemohou ukládat desetinná čísla přesně.
Desetinná se skládají z
S | znaménko | 1 bit |
E | Exponent | 8 bit |
M | mantisa | 23 bit |
1 pro záporné číslo
(-1) na s
(-1) na 0 = 1
(-1) na 1 = -1
2 na E - 127
2⁻¹ = ½
2⁻² = ¼
2⁻³ = ⅛
2⁻⁴ = 1/16....
je duležité si uvědomit, že tím jak se ukládá jako násobení není možné ukládat všechna čísla přesně.
Obvyklý problem nastava třeba při uložení 0.1, protože 0.1 je 1/10 a 1/10 je 0.000
- Hodnotové proměnné ukládají konkrétní hodnotu přímo do své paměťové buňky.
- Každá hodnotová proměnná obsahuje svou vlastní kopii dat. Změny v jedné proměnné nemají vliv na jiné proměnné
- Hodnotové proměnné mají často přiřazený datový typ (int, float …), což omezuje typy hodnot, které mohou obsahovat.
- Integer, float, char, boolean a struktury jsou často hodnotové typy.
- Referenční proměnné ukládají odkaz nebo adresu paměti, kde jsou data skutečně uložena.
- Více referenčních proměnných může ukazovat na stejná data. Změny provedené jedním ovlivní všechny ostatní odkazující proměnné.
- Často jsou považovány v kontextu dynamické alokace paměti, kde je paměť alokována a uvolňována za běhu programu.
- Ukazatele (pointers) v jazyce C, reference v jazyce C++, objekty a pole v některých jazycích (např. Python). Prakticky jakákoliv třída v c#.
Přístupové modifikátory
Tyto složené závorky neboli begin a end mají prostý význam. Označují vždy nějaký blok kódu a obecně platí, že deklarované proměnné platí pouze uvnitř tohoto a podřízených blocích tj. dalších blocích begin a end v něm vložených.
V jazyce C# existují čtyři přístupové operátory, které určují, jakým způsobem mohou být členy třídy přístupné z jiných částí programu
- public - Členy třídy s tímto modifikátorem jsou přístupné z jakéhokoli místa v programu.
- private - Členy třídy s tímto modifikátorem jsou přístupné pouze z této třídy.
- protected - Členy třídy s tímto modifikátorem jsou přístupné z této třídy a z odvozených tříd.
- internal - Členy třídy s tímto modifikátorem jsou přístupné pouze z těch částí programu, které jsou v rámci stejného sestavení
Přístupové operátory se používají k řízení přístupu k členům třídy, jako jsou proměnné, metody a vlastnosti. Přístupové operátory jsou důležité pro zachování bezpečnosti a správného fungování programu
Například:
// public class:
public class Tricycle
{
// protected method:
protected void Pedal() { }
// private field:
private int _wheels = 3;
// protected internal property:
protected internal int Wheels
{
get { return _wheels; }
}
}
== | rovná se |
!= | nerovná se |
> | větší než |
< | menší než |
>= | větší nebo rovno |
<= | menší nebo rovno |
&& | and |
|| | or |
! | not |
Enumy jsou užitečné, když potřebujeme definovat soubor konstant, které jsou přiřazeny číselným hodnotám.
Například:
Ano | 0 |
Ne | 1 |
Možná | 50 |
nevim | 51 |
enum Odpovedi
{
Ano, // 0
Ne, // 1
Možná = 50, // 50 Počítá dál..
nevim // 51
}
Přetížení operátorů vám to umožní.
Musí být public a static.
public class Cube
{
public int Length { get; set; }
public Cube(int length)
{
Length = length;
}
public static Cube operator -(Cube left, Cube right)
{
return new Cube() { Length = left.Length - right.Length };
}
public static int operator +(Cube left, Cube right)
{
return left.Length + right.Length;
}
}
public static void Main()
{
var a = new Cube(5);
var b = new Cube(1);
Console.WriteLine(a + b); // vysledek: 5 + 1 = 6
Console.WriteLine(a - b); // vysledek: new Cube(4)
}
-
Datove typy a velikosti: - https://learn.microsoft.com/cs-cz/dotnet/csharp/language-reference/builtin-types/integral-numeric-types
- https://learn.microsoft.com/cs-cz/dotnet/csharp/language-reference/builtin-types/floating-point-numeric-types
- https://learn.microsoft.com/cs-cz/dotnet/csharp/language-reference/builtin-types/char
-
Ukladani zapornych cisel: - https://programovaci-ucebnice.g6.cz/ucebnice/UcebniceJazykaJava/7_Cela_cisla.xhtml
-
Ukladani desetinnych cisel: - https://cs.wikipedia.org/wiki/IEEE_754
-
Hodnotové a referenční typy: - https://docs.google.com/document/d/1R8VgVP-ZeNHqAkt36xbOBoDwkBwfa55o
- https://www.tutorialsteacher.com/csharp/csharp-value-type-and-reference-type
-
Platnost proměných - https://docs.google.com/document/d/1R8VgVP-ZeNHqAkt36xbOBoDwkBwfa55o
- https://learn.microsoft.com/cs-cz/dotnet/csharp/programming-guide/classes-and-structs/access-modifiers
-
Operátory -
-
Enumy - https://www.w3schools.com/cs/cs_enums.php
-
Přetížení operátorů - https://learn.microsoft.com/cs-cz/dotnet/csharp/language-reference/operators/operator-overloading
- https://www.tutorialspoint.com/csharp/csharp_operator_overloading.htm