C# je moderní, objektově orientovaný a typově bezpečný programovací jazyk. C# je dle návrhu jednoduchý programovací jazyk patřící do rodiny jazyků C. Snadno si jej proto oblíbí uživatelé jazyků C, C++, Java, Javascript (ECMAScript). Pro studenty může být naopak jazykem prvním a usnadnit jim naopak seznamování s ostatními jazyky z této rodiny.
C# je standardizován standardy ECMA-334 a ISO/IEC 23270:2003. Podobně je tomu s mnoha dalšími složkami platformy .Net. Je to přitom jazyk, který se intenzívně rozvíjí, je to patrné např. zde:
https://en.wikipedia.org/wiki/C_Sharp_(programming_language)
Úvod do C# a .NET frameworku
1.1 Komentáře
/*
Toto je komentář. Pokud komentujeme tímto způsobem,
můžeme komentář rozdělit do více
řádků
*/
// další komentář, ale platí jen v oblasti jednoho řádku, pro další řádek
// musím opět použít dvojici lomítek
Komentář je část programu, který překladač naprosto ignoruje a nijak neovlivní chod samotného programu.
1.2 Proměnná
je pojmenované místo v operační paměti počítače, kam si můžeme uložit informace (jméno uživatele, aktuální čas nebo databázi článků), které se mohou změnit. Toto místo má podle typu proměnné také vyhrazenou určitou velikost, kterou proměnná nesmí přesáhnout (např. číslo nesmí být větší než 2 147 483 647).Má vždy nějaký datový typ, může to být číslo, znak, text… Proměnnou je nutno nejdříve tzv. deklarovat, čili říci jazyku jak se bude jmenovat a jakého datového typu bude.
C# je staticky typovaný jazyk, všechny proměnné musíme nejprve deklarovat s jejich datovým typem.
1.2.1 Typy proměnných
- Celá čísla: int
- Desetinná čísla: double
- Textový řetězec: string
- 1 znak: char
- Logická hodnoty: bool
1.2.1.1 Celkový přehled všech datových typů
- Hodnotové typy
Název | Typ | Velikost v bajtech | Rozsah |
sbyte | System.SByte | 1 | -128 až 127 |
short | System.Int16 | 2 | -32 768 až 32 767 |
int | System.Int32 | 4 | – 2 147 483 648 až 2 147 483 647 |
long | System.Int64 | 8 | 9,223,372,036,854,775,808 až 9,223,372,036,854,775,807 |
byte | System.Byte | 1 | 0 až 255 |
ushort | System.UInt16 | 2 | 0 až 65,535 |
uint | System.UInt32 | 4 | 0 až 4,294,967,295. |
ulong | System.UInt64 | 8 | 0 až 18 446 744 073 709 551 615 |
float | System.Single | 4 | +/-1.5 * 10-45 až +/-3.4 * 1038 |
double | System.Double | 8 | +/-5.0 * 10-324 až +/-1.8 * 10308 |
decimal | System.Decimal | 16 | |
bool | System.Boolean | 1 | Jsou zde hodnoty true nebo false |
char | System.Char | 2 |
Odkazové typy
Název | Typ | Velikost v bajtech | Rozsah |
object | System.Object | Kořenový typ, od něhož jsou odvozeny všechny ostatní typy | |
string | System.String | Řetězec znaků Unicode |
bool je jeden z nejjednodušších datových typů. Může nabývat pouze dvou hodnot – false (nepravda) nebo true (pravda). Bool je důležité pochopit při používání logických operátorů, jako je podmínka if.
1.2.2 Deklarace proměnných
Kdy? Vždy před prvním použitím.
Kde? Kdekoli ve zdrojovém kódu.
Jak? Datový typ proměnná;
1.3 Jak může proměnná získat hodnotu?
- Přiřazovacím příkazem
proměnná = výraz; (čti do proměnné přiřaď výraz)
double PI = 3.14;
double ve zdrojovém kódu vždy píšu s desetinnou tečkou např. 3.14
2.Příkazem vstupu = zadáním z klávesnice
1.3.1 Zadávání z klávesnice = příkaz vstupu
string radek= Console.ReadLine();
char volba = Console.ReadKey().KeyChar;
Console.WriteLine(„Zadej délku obdélníka: „);
double delka = Convert.ToDouble(Console.ReadLine());
do double zadávám z klávesnice s desetinnou čárkou např. 3,14
1.3.2 Výstup na monitor
Console.WriteLine(„Na řádku bylo:“);
Console.WriteLine(radek);
Console.WriteLine(„Na řádku bylo:“ + radek );
1.4 Parsování = přetypování (změna datového typu)
1.4.1 String na int
string cislo;
cislo=“458“
int a = int.Parse(cislo);
nebo
int a = Convert.ToInt32(cislo);
1.4.2 Int na string
textcislo = Convert.ToString(a);
1.4.3 String na double
string value;
double number;
number = Double.Parse(value);
nebo
number = Convert.ToDouble(value);
float b = float.Parse(Console.ReadLine());
1.4.4 Double na string
textcislo = Convert.ToString(a);
1.1 Podmíněný příkaz
1.1.1 úplný
if (podmínka)
{
}
else
{
}
1.1.2 neúplný
if (podmínka)
{
}
1.1.3 Vícenásobné větvení
Výraz musí být celočíselný, char nebo string.
switch (výraz) { case hodnota výrazu: příkazy; break; case hodnota výrazu: příkazy; break; default: příkazy; //vykonají se, když výraz nabude jiné hodnoty než v case break; }
Např.
int caseSwitch = 1;
switch (caseSwitch)
{
case 1:
Console.WriteLine(„Case 1“);
break;
case 2:
Console.WriteLine(„Case 2“);
break;
default:
Console.WriteLine(„Default case“);
break;
}
Relační |
|
Operátor |
Význam |
a < b |
menší než |
a > b |
větší než |
a <= b |
menší nebo rovno |
a >= b |
větší nebo rovno |
a == b |
rovná se |
a != b |
nerovná se |
int c = (d<10) ? 5:15 |
zkrácená podmínka |
Logické |
|
Operátor |
Význam |
&& |
logické AND |
|| |
logické OR |
! |
logická negace |
1.1 Cykly
1.1.1 For cyklus – s řídící proměnnou
Známý počet opakování cyklu
For+tab+tab
for (int i = 0; i <10; i++)
{
}
1.1.2 Do-while – s podmínkou na konci (do+tab+tab)
do
{
P1;
.
PN;
} while (podmínka);
Čti dělej příkazy zatímco platí podmínka
1.1.3 While – s podmínkou na začátku (while+tab+tab)
while (podmínka)
{
P1;
.
PN;
}
Čti zatímco platí podmínka, dělej příkazy
1.1 Pole
Pole je množina prvků stejného typu, jdoucích v paměti za sebou.
Každý prvek pole nemá své vlastní jméno, nýbrž pole je pojmenováno jako celek.
Prvky pole jsou indexovány (označeny čísly od 0) kvůli rychlému a snadnému přístupu.
K prvkům pole přistupujeme prostřednictvím jména pole a indexu.
Index je pořadové číslo prvku v rámci pole, uváděné v hranatých závorkách: Jmeno[index]
Pole je vhodné pro zpracování cyklem – indexem bývá řídící proměnná cyklu.
Délka pole je Length
1.1.1 Deklarace
int[] array = new int[5];
string[] stringArray = new string[6];
1.1.2 Inicializace pole
int[] array1 = new int[] { 1, 3, 5, 7, 9 };
string[] weekDays = new string[] { „Sun“, „Mon“, „Tue“, „Wed“, „Thu“, „Fri“, „Sat“ };
int[] pole = new int[10];
pole[0] = 1;
for (int i = 0; i < 10; i++)
pole[i] = i + 1;
for (int i = 0; i < pole.Length; i++)
Console.WriteLine(pole[i]);
}
}
int[] array2 = { 1, 3, 5, 7, 9 };
string[] weekDays2 = { „Sun“, „Mon“, „Tue“, „Wed“, „Thu“, „Fri“, „Sat“ };
int[] array3;
array3 = new int[] { 1, 3, 5, 7, 9 }; // OK
//array3 = {1, 3, 5, 7, 9}; // Error
2 ekvivalentní zápisy:
int[] a = new int[] {1, 2, 3};
int[] t = new int[3];
t[0] = 1;
t[1] = 2;
t[2] = 3;
int[] a = t;
Následující příklad vytvoří pole int 10 prvků, inicializuje pole a vytiskne obsah pole.
using System;
class ArrayExample
{
static void Main()
{
int[] a = new int[10];
for (int i = 0; i < a.Length; i++)
{
a[i] = i * i;
}
for (int i = 0; i < a.Length; i++)
{
Console.WriteLine(a[i]);
}
}
}
Proměnná délka pole:
Console.WriteLine(„Ahoj, spočítám ti průměr známek. Kolik známek zadáš?“);
int pocet = int.Parse(Console.ReadLine());
int[] cisla = new int[pocet];
for (int i = 0; i < pocet; i++)
{
Console.Write(„Zadejte {0}. číslo: „, i + 1);
cisla[i] = int.Parse(Console.ReadLine());
}
Console.WriteLine(„Průměr tvých známek je: {0}“, cisla.Average());
Console.ReadKey();