Lekce 4 - Proměnné, typový systém v C# .NET
Z minulé lekce C# kurzu, Visual Studio a Copilot, již umíme pracovat s Visual Studiem a máme nainstalovaného GitHub Copilota.
V dnešním C#.NET tutoriálu si naprogramujeme naši první konzolovou aplikaci. Podíváme se na tzv. typový systém, ukážeme si základní datové typy a práci s proměnnými. Výsledkem bude jednoduchý program vypisující proměnnou.
Náš první program Hello world
Je zažitým zvykem, že prvním programem v nějakém novém jazyce bývá tzv. Hello world. Jedná se o program, který jakýmkoliv způsobem uživateli zobrazí hlášku "Hello world", případně nějaký podobný text. Takový program nám VS vlastně již vygenerovalo. Vysvětlíme si jej a trochu upravíme. Budeme pracovat se dvěma příkazy (pozn. výraz příkazy používáme kvůli zjednodušení): s jedním k zobrazení textu a dalším k vyčkání na stisk libovolné klávesy, aby program hned neskončil.
K výpisu textu slouží:
Console.WriteLine("Text");
A k vyčkání na klávesu:
Console.ReadKey();
Console je tzv. třída. Pojmem třída budeme
zatím chápat soubor nějakých příkazů. Příkazům se v C# říká metody.
Console tedy obsahuje metody k obsluze konzole. Voláme na ni
metodu WriteLine(), která vypíše text. Vidíme, že metodu na
třídě voláme pomocí operátoru tečka (.). Každá metoda
může obsahovat nějaké vstupní parametry, které se zadávají do závorky a
jsou oddělené čárkou. V případě metody WriteLine() je
parametrem text k vypsání. Textu budeme říkat textový řetězec nebo jen
řetězec (anglicky string) a budeme ho psát do uvozovek, aby tomu C# rozuměl
a nezaměňoval ho s jinými příkazy.
Opět připomeneme, že u projektů starších než .NET 6.0
píšeme příkazy do těla metody Main().
Uvozovky jsou na české klávesnici na stejné klávese jako ů, ale píšeme je se Shift:

Metoda ReadKey() nemá žádné parametry, přesto však za
její název musíme napsat závorku, která je v C# povinná. Příkazy
píšeme na samostatné řádky a za každý píšeme středník
(;).
Pokud nevíte, kde je na klávesnici ;, tak ho
naleznete pod klávesou Esc:

Náš kód tedy bude nyní vypadat nějak takto:
using System;
namespace OnlineApp
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello ITnetwork!");
Console.ReadKey();
}
}
}
Program spustíme pomocí klávesy F5.
Konzolová aplikace
Hello ITnetwork!
Gratulujeme, právě jste se stali programátorem 
Závěrem ještě drobná vychytávka. Zkuste si ve svém Visual
Studiu napsat na novou řádku cw a pak dvakrát stisknout
Tabulátor. Vypíše se vám celý příkaz:
Console.WriteLine();. Tomuto kouzlu se říká snippet a
během kurzu si zmíníme další podobné užitečné zkratky.
Dnešní projekt je přiložen jako soubor na konci článku. Výsledky budou
vždy přiloženy ke stažení také u dalších C# tutoriálů. Doporučujeme
vám však vytvořit si projekt nejprve pomocí tutoriálu a ke stažení se
uchýlit jen v případě, když vám něco nepůjde. Pokud program pouze hned
stáhnete, nic se nenaučíte 
GitHub Copilot
GitHub Copilot použijeme k vysvětlení kódu. Označíme
metodu Main včetně složených závorek, přes menu
Zobrazit - Chat s GitHub Copilotem otevřeme Copilot chat a
zadáme prompt: "Detailně mi vysvětli kód v metodě jako pro úplného
začátečníka.". Copilot nám následně vysvětlí, co program v metodě
Main dělá:

Takové vysvětlení se může hodit například tehdy, když narazíme na kód, kterému úplně nerozumíme. Je ale dobré mít na paměti, že AI může udělat chybu, proto je vždy důležité přemýšlet nad tím, jestli vysvětlení dává smysl.
Gratulujeme, právě jste se stali programátorem 😊
Proměnné
Než začneme řešit datové typy, pojďme se shodnout na tom, co je to
proměnná (programátoři mi teď jistě odpustí zbytečné vysvětlování).
Z matematiky určitě znáte proměnnou (např. x), do které jsme
si mohli uložit nějakou hodnotu, nejčastěji číslo. Proměnná v
informatice je naprosto totéž, je to místo v paměti počítače, kam si
můžeme uložit nějaká data (jméno uživatele, aktuální čas nebo
databázi článků). 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).
Proměnná má vždy nějaký datový typ, může to být číslo, znak, text a podobně, záleží na tom, k čemu ji chceme používat. Před prací s proměnnou ji většinou musíme nejdříve tzv. deklarovat, tedy musíme říci jazyku, jak se proměnná bude jmenovat a jakého datového typu bude (jaký v ní bude obsah). Jazyk ji v paměti založí a teprve potom s ní můžeme pracovat. Podle datového typu proměnné si ji jazyk dokáže z paměti načíst, modifikovat, případně ji v paměti založit. O každém datovém typu jazyk ví, kolik v paměti zabírá místa a jak s tímto kusem paměti pracovat.
Typový systém
Existují dva základní typové systémy, a to statický a dynamický.
Statický typový systém
Statický typový systém striktně vyžaduje definovat typ
proměnné a tento typ je dále neměnný. Jakmile proměnnou jednou
deklarujeme, není možné její datový typ změnit. Jakmile se do textového
řetězce pokusíme uložit objekt uzivatel, dostaneme
vynadáno.
C# je staticky typovaný jazyk, všechny proměnné tedy musíme nejprve deklarovat s jejich datovým typem. Nevýhodou je, že kvůli deklaracím je zdrojový kód poněkud objemnější a vývoj pomalejší. Obrovskou výhodou však je, že nám kompiler před spuštěním zkontroluje, zda všechny datové typy sedí.
Dynamický typový systém
Dynamický typový systém nás plně odstiňuje od toho, že proměnná má vůbec nějaký datový typ. Ona ho samozřejmě vnitřně má, ale jazyk to nedává najevo. Dynamické typování jde mnohdy tak daleko, že proměnné nemusíme ani deklarovat. Jakmile do nějaké proměnné něco uložíme a jazyk zjistí, že nebyla nikdy deklarována, sám ji založí. Do téže proměnné můžeme ukládat text, potom objekt uživatele a potom desetinné číslo. Jazyk se s tím sám popere a vnitřně automaticky mění datový typ. V těchto jazycích jde vývoj rychleji díky menšímu množství kódu, jejich zástupci jsou např. PHP nebo Ruby.
Dynamické typování sice působí jako výhodnější, ale zdrojový kód
není možné automaticky kontrolovat. Když někde očekáváme objekt
uzivatel, ale přijde nám místo toho desetinné číslo, odhalí
se chyba až za běhu programu, který interpret shodí. Naopak C# nám
nedovolí program ani zkompilovat a na chybu nás upozorní.
Základní datové typy
Pojďme si nyní něco naprogramovat, ať si nabyté znalosti trochu osvojíme. S teorií budeme pokračovat až příště. Řekněme si nyní tři základní datové typy:
- celá čísla:
int, - desetinná čísla:
float, - textový řetězec:
string.
Program vypisující proměnnou
Zkusíme si nadeklarovat celočíselnou proměnnou a, dosadit do
ní číslo 56 a její obsah vypsat do konzole. Založíme si nový
projekt a pojmenujeme ho Vypis (nový projekt budeme zakládat i ke
všem dalším příkladům):
{CSHARP_CONSOLE}
int a;
a = 56;
Console.WriteLine(a);
Console.ReadKey();
{/CSHARP_CONSOLE}
Připomeňme, že kód píšeme do těla metody
Main() v případě projektů starších než .NET 6.0.
Deklarace proměnné
První příkaz nám nadeklaruje novou proměnnou a datového
typu int. Proměnná tedy bude sloužit pro ukládání celých
čísel.
Inicializace proměnné
Druhý příkaz provádí přiřazení do proměnné, slouží k tomu
operátor "rovná se" (=). Poslední příkaz je nám známý,
vypíše do konzole obsah proměnné a. Konzole je chytrá a umí
vypsat i číselné proměnné. ReadKey() je nám známý:
Konzolová aplikace
56
Desetinná proměnná
Pro desetinnou proměnnou by kód vypadal takto:
{CSHARP_CONSOLE}
float a;
a = 56.6F;
Console.WriteLine(a);
Console.ReadKey();
{/CSHARP_CONSOLE}
Je to téměř stejné jako s celočíselnou proměnnou. Jako desetinný
oddělovač používáme tečku (.) a na konci desetinného čísla
je nutné zadat tzv. sufix F, tím říkáme, že se jedná o
float.
Shrnutí lekce
Kód programu v C# zapisujeme do metody Main() a text do konzole
vypisujeme pomocí Console.WriteLine(). Naučili jsme se, co je
proměnná, že v ní program ukládá data a že v C# má každá proměnná
svůj datový typ, který se po vytvoření nemění. Ukázali jsme si
základní typy int, float a string,
naučili jsme se do proměnné uložit hodnotu a zase ji vypsat do konzole.
Také už umíme načíst text od uživatele pomocí
Console.ReadLine(), spojovat texty dohromady a převádět text na
číslo pomocí metody Parse(). Vše jsme si to vyzkoušeli na
jednoduchých programech – papouškovi, zdvojnásobovači a kalkulačce.
V příští lekci, Načítání hodnot z konzole a parsování v C# .NET, se podíváme na načítání hodnot z konzole a parsování dat a poté si vytvoříme jednoduchou kalkulačku.
Měl jsi s čímkoli problém? Stáhni si vzorovou aplikaci níže a porovnej ji se svým projektem, chybu tak snadno najdeš.
Stáhnout
Stažením následujícího souboru souhlasíš s licenčními podmínkami
Staženo 2753x (21.32 kB)
Aplikace je včetně zdrojových kódů v jazyce C#

David se informační technologie naučil na