KeriCoreAcademy
Programovací jazyk C#

OBSAH

Programovací jazyk c#, Co je c#?

C# (čteno „C Sharp“) je moderní, objektově orientovaný programovací jazyk vyvinutý společností Microsoft. 

Je součástí rodiny jazyků .NET a byl navržen tak, aby byl jednoduchý, moderní a typově bezpečný.

Programovací jazyk C# kombinuje principy a funkce z několika jiných programovacích jazyků, jako jsou C++ a Java, a přináší výkonné nástroje pro vývoj aplikací pro různé platformy, včetně desktopových, webových a mobilních aplikací.

Jak se liší C# od dalších programovacím jazyků a jaké má o proti nim výhody nevýhody probíráme v našem nejnovějším článku

Uvedení do historie a vzniku jazyka

Programovací jazyk C# byl představen v roce 2000 jako součást .NET platformy. 

Vytvořil jej tým pod vedením Anderse Hejlsberga, který dříve pracoval na vývoji Turbo Pascalu a Delphi.

C# byl navržen jako odpověď na potřebu robustního a jednoduchého jazyka pro vývoj aplikací na Windows platformě.

Od svého vzniku prošel jazyk C# několika verzemi, které přidávaly nové funkce a vylepšení, jako je LINQ, asynchronní programování a další.

Popularita a využití v současnosti

Programovací jazyk C# je dnes jedním z nejpopulárnějších programovacích jazyků na světě.

Je široce využíván ve vývoji podnikových aplikací, her (zejména díky Unity enginu), webových aplikací pomocí ASP.NET a mobilních aplikací pomocí Xamarin.

Popularitu si získal díky své jednoduchosti, výkonu a široké podpoře v rámci .NET ekosystému.

Podle různých průzkumů a statistik patří C# mezi top 5 nejpoužívanějších programovacích jazyků na světě.

Historie C#

Programovací jazyk C# byl představen v roce 2000 jako součást iniciativy Microsoft .NET.

Vytvořil jej tým pod vedením Anderse Hejlsberga, který je známý svým předchozím působením na vývoji Turbo Pascalu a Delphi.

C# byl navržen jako odpověď na potřebu robustního, typově bezpečného a objektově orientovaného jazyka pro vývoj aplikací na platformě Windows.

Hlavním cílem bylo poskytnout vývojářům nástroj, který by kombinoval výhody jazyků C++ a Java, ale zároveň odstranil jejich nevýhody a zjednodušil vývojový proces.

Role Microsoftu v jeho vývoji

Microsoft sehrál klíčovou roli ve vývoji a popularizaci C#. Společnost nejen že vytvořila a propagovala jazyk, ale také vyvinula .NET Framework, který poskytuje širokou škálu knihoven a nástrojů pro vývoj aplikací v C#.

Microsoft pravidelně vydává aktualizace a nové verze C# a .NET, čímž zajišťuje, že jazyk zůstává aktuální a odpovídá potřebám moderních vývojářů.

Díky této podpoře se C# stal jedním z hlavních jazyků pro vývoj na platformě Windows a postupně si získal popularitu i na dalších platformách.

Vývojové milníky a verze jazyka

  • C# 1.0 (2002): První verze jazyka, uvedená společně s .NET Framework 1.0. Nabízela základní podporu pro objektově orientované programování, garbage collection a další základní funkce.
  • C# 2.0 (2005): Přidány generiky, anonymní metody, iterátory a částečné třídy. Tato verze výrazně zlepšila možnosti programování a opětovného použití kódu.
  • C# 3.0 (2007): Zavedeno Language Integrated Query (LINQ), lambda výrazy, anonymní typy a rozšířené metody. Tyto funkce usnadnily práci s daty a zvýšily expresivitu jazyka.
  • C# 4.0 (2010): Přidána podpora pro dynamické programování (dynamic keyword), volitelné a pojmenované argumenty a covariance a contravariance pro generické typy.
  • C# 5.0 (2012): Zavedeno asynchronní programování pomocí klíčových slov async a await, což výrazně zjednodušilo psaní asynchronního kódu.
  • C# 6.0 (2015): Přidány auto-properties, expression-bodied členové, interpolace řetězců a další syntaktické zkratky, které usnadňují a zkracují kód.
  • C# 7.0 (2017): Přidána podpora pro lokální funkce, ref returns, deconstruction a pattern matching, což zlepšilo flexibilitu a výkon jazyka.
  • C# 8.0 (2019): Zavedeno asynchronní streamování, nullable reference types, default interface methods a další vylepšení.
  • C# 9.0 (2020): Přidány records, init-only properties, top-level statements a další nové funkce, které zvyšují produktivitu a bezpečnost kódu.

Microsoft pokračuje ve vývoji a vylepšování C# a pravidelně přidává nové funkce, které reflektují potřeby moderního vývoje aplikací.

Základní vlastnosti jazyka

Typová bezpečnost

Programovací jazyk C# je navržen s důrazem na typovou bezpečnost, což znamená, že všechny proměnné a výrazy musí mít definovaný datový typ, který je kontrolován během kompilace.

To minimalizuje riziko chyb, které mohou vzniknout při manipulaci s daty nesprávného typu.

Typová bezpečnost zajišťuje, že operace jsou prováděny pouze na kompatibilních typech, což přispívá k větší stabilitě a bezpečnosti aplikací.

Kompilátor C# poskytuje silnou kontrolu typů, což umožňuje odhalit mnoho chyb ještě před spuštěním programu.

Objektově orientované programování (OOP)

Programovací jazyk C# je plně objektově orientovaný programovací jazyk, který podporuje všechny základní principy OOP, jako jsou:

  • Zapouzdření: Schopnost skrýt interní implementaci objektů a zpřístupnit pouze vybrané metody a vlastnosti.
  • Dědičnost: Umožňuje vytvářet nové třídy na základě existujících tříd, což umožňuje opětovné použití kódu a rozšiřování funkcionality.
  • Polymorfismus: Umožňuje objekty různých tříd reagovat na stejnou metodu různými způsoby, což zvyšuje flexibilitu a modulárnost kódu.
  • Abstrakce: Umožňuje definovat abstraktní třídy a rozhraní, které slouží jako šablony pro konkrétní implementace.

Automatická správa paměti

Programovací jazyk C# využívá automatickou správu paměti prostřednictvím garbage collectoru (GC), který automaticky uvolňuje nepoužívanou paměť.

Vývojáři se tak nemusí starat o manuální alokaci a uvolňování paměti, což výrazně snižuje riziko paměťových úniků a chyb souvisejících s pamětí.

GC sleduje objekty v paměti a uvolňuje ty, které již nejsou přístupné nebo používané, což zajišťuje efektivní využití paměti a stabilitu aplikací.

Interoperabilita s jinými jazyky

Programovací jazyk C# je navržen tak, aby byl interoperabilní s jinými jazyky, zejména s těmi, které jsou součástí .NET ekosystému, jako jsou VB.NET, F#, a další.

Díky této interoperabilitě mohou vývojáři využívat knihovny a komponenty napsané v různých jazycích v rámci jedné aplikace.

Programovací jazyk C# také poskytuje nástroje pro komunikaci s nativním kódem (například C nebo C++) prostřednictvím platform invoke (P/Invoke) a COM interop, což umožňuje integraci s existujícími systémy a využití specializovaných knihoven.

Těmito vlastnostmi se programovací jazyk C# stává silným nástrojem pro vývoj moderních aplikací, který kombinuje výhody typové bezpečnosti, objektově orientovaného programování, automatické správy paměti a široké interoperability.

Syntaxe a základní konstrukce

Proměnné a datové typy

Proměnné v programovací jazyk C# slouží k ukládání datových hodnot, které mohou být během běhu programu měněny.

Při deklaraci proměnné je třeba specifikovat její datový typ. Mezi základní datové typy v programovací jazyk C# patří:

  • Celá čísla: int, long, short, byte
  • Desetinná čísla: float, double, decimal
  • Znaky a řetězce: char, string
  • Logické hodnoty: bool
Příklad deklarace proměnných

int vek = 25;

float teplota = 36.6f;

char pismeno = ‚A‘;

string jmeno = „Jan“;

bool jePravda = true;

Operátory a výrazy

Operátory v C# se používají k provádění operací nad proměnnými a hodnotami. Mezi základní operátory patří:

  • Aritmetické operátory: +, -, *, /, %
  • Porovnávací operátory: ==, !=, >, <, >=, <=
  • Logické operátory: &&, ||, !
  • Přiřazovací operátory: =, +=, -=, *=, /=
Příklad použití operátorů

int a = 10;

int b = 5;

int soucet = a + b;

bool jeVetsi = a > b;

bool obojiPravda = (a > b) && (b > 0);

Podmínky a cykly

Podmínky a cykly se používají k řízení toku programu.

Podmíněné příkazy (if, switch)

int cislo = 10

if (cislo > 0

Console.WriteLine(„Číslo je kladné“); 

} elseif (cislo < 0) { Console.WriteLine(„Číslo je záporné“); 

} else

Console.WriteLine(„Číslo je nula“); 

switch (cislo) { 

case 1

Console.WriteLine(„Číslo je jedna“); 

break

case 10

Console.WriteLine(„Číslo je deset“); 

break

default

Console.WriteLine(„Číslo není ani jedna ani deset“); 

break

}

Cyklus for

for (int i = 0; i < 5; i++) {

Console.WriteLine(„Hodnota i: „ + i); }

Cyklus while

int j = 0;

while (j < 5) {

Console.WriteLine(„Hodnota j: „ + j);

j++; }

Cyklus do-while

int k = 0;

do {

Console.WriteLine(„Hodnota k: „ + k);

k++; }

while (k < 5);

Metody a funkce

Metody a funkce umožňují strukturovat kód do přehledných a opakovaně použitelných bloků.

V Programovací jazyk C# mohou metody vracet hodnotu (pomocí klíčového slova return) nebo být bez návratové hodnoty (void).

Příklad metody

public int Soucet(int a, int b) {

    return a + b;

}

public void Pozdrav(string jmeno) {

    Console.WriteLine(„Ahoj, “ + jmeno);

}

Použití metod

int vysledek = Soucet(3, 4); // Výsledek bude 7

Pozdrav(„Karel“); // Výstup bude „Ahoj, Karel“

Tyto základní konstrukce a syntaxe tvoří základ pro psaní programů v C# a umožňují vývojářům efektivně vytvářet různé aplikace.

Pokročilé koncepty

Třídy a objekty

Třídy a objekty jsou základní stavební kameny objektově orientovaného programování v programovací jazyk C#.

Třída je šablona nebo návrh pro vytváření objektů. 

Obsahuje data (vlastnosti) a metody (funkce), které definují chování objektů.

Příklad třídy

public class Auto {

    // Vlastnosti

    public string Znacka { get; set; }

    public string Model { get; set; }

    public int RokVyroby { get; set; }

 

    // Metoda

    public void Start() {

        Console.WriteLine(„Auto startuje…“);

    }

}

 

// Vytvoření objektu třídy Auto

Auto mojeAuto = new Auto();

mojeAuto.Znacka = „Škoda“;

mojeAuto.Model = „Octavia“;

mojeAuto.RokVyroby = 2020;

mojeAuto.Start(); // Výstup: Auto startuje…

Dědičnost a polymorfismus

Dědičnost umožňuje jedné třídě (potomkovi) zdědit vlastnosti a metody jiné třídy (rodiče).

Polymorfismus umožňuje, aby objekty různých tříd mohly být používány prostřednictvím společného rozhraní.

Příklad dědičnosti

// Rodičovská třída

public class Zviratko {

    public void Dychat() {

        Console.WriteLine(„Zvířátko dýchá…“);

    }

}

 

// Potomkovská třída

public class Pes : Zviratko {

    public void Stikat() {

        Console.WriteLine(„Pes štěká…“);

    }

}

 

Pes mujPes = new Pes();

mujPes.Dychat(); // Výstup: Zvířátko dýchá…

mujPes.Stikat(); // Výstup: Pes štěká…

Příklad polymorfismu

public class Tvar {

    public virtual void Kreslit() {

        Console.WriteLine(„Kreslím tvar…“);

    }

}

 

public class Kruh : Tvar {

    public override void Kreslit() {

        Console.WriteLine(„Kreslím kruh…“);

    }

}

 

public class Ctverec : Tvar {

    public override void Kreslit() {

        Console.WriteLine(„Kreslím čtverec…“);

    }

}

 

Tvar tvar1 = new Kruh();

Tvar tvar2 = new Ctverec();

tvar1.Kreslit(); // Výstup: Kreslím kruh…

tvar2.Kreslit(); // Výstup: Kreslím čtverec…

Abstraktní třídy a rozhraní

Abstraktní třídy a rozhraní slouží k definici společných vlastností a metod, které musí být implementovány v konkrétních třídách.

Příklad abstraktní třídy

public abstract class Zivocich {

    public abstract void Zvuk();

 

    public void Dychat() {

        Console.WriteLine(„Živočich dýchá…“);

    }

}

 

public class Kocka : Zivocich {

    public override void Zvuk() {

        Console.WriteLine(„Kočka mňouká…“);

    }

}

 

Kocka mojeKocka = new Kocka();

mojeKocka.Dychat(); // Výstup: Živočich dýchá…

mojeKocka.Zvuk(); // Výstup: Kočka mňouká…

Příklad rozhraní

public interface IVozidlo {

    void Jizda();

}

 

public class Motorka : IVozidlo {

    public void Jizda() {

        Console.WriteLine(„Motorka jede…“);

    }

}

 

Motorka mojeMotorka = new Motorka();

mojeMotorka.Jizda(); // Výstup: Motorka jede…

Delegáty a události

Delegáty jsou typy, které reprezentují odkazy na metody s konkrétní signaturou.

Události umožňují objektům komunikovat mezi sebou v rámci určitého vzoru publikování/odběru (publish/subscribe).

Příklad delegátu

public delegate void UkazZpravu(string zprava);

 

public class Zpravy {

    public static void UkazKonzole(string zprava) {

        Console.WriteLine(zprava);

    }

}

 

UkazZpravu zpravaDelegat = new UkazZpravu(Zpravy.UkazKonzole);

zpravaDelegat(„Ahoj, světe!“); // Výstup: Ahoj, světe!

Příklad události

public class Vydavatel {

    public delegate void Aktualizace();

    public event Aktualizace NaAktualizaci;

 

    public void VydatZmenu() {

        if (NaAktualizaci != null) {

            NaAktualizaci();

        }

    }

}

 

public class Odběratel {

    public void ReagovatNaZmenu() {

        Console.WriteLine(„Byla provedena změna!“);

    }

}

 

Vydavatel vydavatel = new Vydavatel();

Odběratel odberatel = new Odběratel();

vydavatel.NaAktualizaci += odberatel.ReagovatNaZmenu;

vydavatel.VydatZmenu(); // Výstup: Byla provedena změna!

Práce s knihovnami a frameworky

.NET Framework a .NET Core

.NET Framework a .NET Core jsou základní platformy pro vývoj aplikací v programovací jazyk C#.

  • .NET Framework je robustní vývojová platforma určená primárně pro vývoj aplikací na Windows. Nabízí rozsáhlou knihovnu tříd a runtime prostředí pro běh aplikací. Obsahuje nástroje a funkce pro vývoj desktopových, webových a serverových aplikací.
  • .NET Core je moderní, multiplatformní nástupce .NET Frameworku. Umožňuje vývoj aplikací, které běží na Windows, macOS a Linuxu. .NET Core se vyvinul do .NET 5 a vyšších verzí, které sjednocují vývoj napříč platformami a poskytují lepší výkon a flexibilitu. .NET Core a jeho následovníci (jako .NET 6 a 7) podporují stejné základní knihovny a běhové prostředí jako .NET Framework, ale jsou navrženy tak, aby byly modulárnější a efektivnější.

ASP.NET pro webové aplikace: ASP.NET je framework pro vývoj webových aplikací a služeb. Umožňuje vývojářům vytvářet dynamické webové stránky, API a real-time aplikace.

  • ASP.NET MVC: Model-View-Controller architektura, která odděluje logiku aplikace, uživatelské rozhraní a vstupní data, což usnadňuje údržbu a testování kódu.
  • ASP.NET Web API: Umožňuje vytvářet RESTful služby, které mohou komunikovat s různými klienty, jako jsou mobilní zařízení, prohlížeče a desktopové aplikace.
  • ASP.NET Core: Moderní verze ASP.NET, která je multiplatformní a poskytuje vyšší výkon a flexibilitu. Umožňuje vývojářům vytvářet aplikace, které běží na různých operačních systémech.

Entity Framework pro práci s databázemi

Entity Framework (EF) je objektově-relační mapper (ORM), který umožňuje vývojářům pracovat s databázemi pomocí .NET objektů.

EF eliminuje potřebu psaní většiny SQL dotazů ručně a umožňuje manipulaci s daty pomocí LINQ (Language Integrated Query).

  • EF Core: Moderní verze Entity Framework, která je multiplatformní a poskytuje lepší výkon a nové funkce oproti původnímu EF.

Xamarin pro mobilní aplikace

Xamarin je framework pro vývoj mobilních aplikací, který umožňuje vytvářet aplikace pro Android, iOS a Windows s použitím jednotného kódu v programovací jazyk C#.

Xamarin poskytuje přístup k nativním API a uživatelským rozhraním jednotlivých platforem, což zajišťuje výkon a vzhled nativních aplikací.

Vývoj her a programovací jazyk C#

Použití Unity enginu

Unity je jeden z nejpopulárnějších herních enginů, který podporuje vývoj her v programovací jazyk C#.

Unity nabízí výkonné nástroje a knihovny pro tvorbu 2D a 3D her, a to jak pro začátečníky, tak pro zkušené vývojáře.

Unity poskytuje rozsáhlou dokumentaci, tutoriály a komunitní podporu, což usnadňuje začátky s herním vývojem.

  • Editor Unity: Grafické uživatelské rozhraní pro návrh a úpravu herních scén, objektů a vlastností.
  • C# skriptování: Unity používá programovací jazyk C# jako hlavní programovací jazyk pro psaní skriptů, které definují chování herních objektů, fyziku, logiku hry a interakce.

Základy herního vývoje v Unity

Vývoj her v Unity zahrnuje několik základních kroků a konceptů:

  1. Vytvoření projektu: Po instalaci Unity a vytvoření nového projektu se otevře Unity Editor, kde můžete začít vytvářet hru.
  2. Scény: Scény jsou základní jednotky herního obsahu. Každá hra se skládá z jedné nebo více scén, které obsahují herní objekty.
  3. Herní objekty (GameObjects): Všechny objekty ve hře, jako jsou postavy, předměty, a prostředí, jsou reprezentovány herními objekty. Každý herní objekt může mít různé komponenty, které určují jeho vlastnosti a chování.
  4. Skripty: Skripty v programovací jazyk C# definují logiku a chování herních objektů. Skripty jsou přidávány jako komponenty k herním objektům.
Příklad jednoduchého skriptu pro pohyb hráče

using UnityEngine;

 

public class PlayerController : MonoBehaviour {

    public float speed = 5f;

 

    void Update() {

        float moveHorizontal = Input.GetAxis(„Horizontal“);

        float moveVertical = Input.GetAxis(„Vertical“);

 

        Vector3 movement = new Vector3(moveHorizontal, 0.0f, moveVertical);

        transform.Translate(movement * speed * Time.deltaTime);

    }

}

  1. Fyzika: Unity poskytuje integrovaný fyzikální engine, který umožňuje simulaci reálných fyzikálních jevů, jako je gravitace, kolize a pohyb.

  2. Animace: Unity nabízí nástroje pro tvorbu a řízení animací, které umožňují oživovat herní objekty a vytvářet realistické pohyby a efekty.

Příklady úspěšných her vyvinutých v programovací jazyk C#

Mnoho úspěšných a populárních her bylo vyvinuto pomocí Unity a programovací jazyk C#.

Některé z nich zahrnují:

  • Hollow Knight: Akční adventura od týmu Cherry, která získala uznání za svůj design, hratelnost a atmosféru.
  • Monument Valley: Puzzler, který využívá optické iluze a nádherný vizuální styl k vytváření unikátních herních zážitků.
  • Cuphead: Retro stylizovaná plošinovka známá svou náročnou hratelností a ručně kreslenou animací.
  • Subnautica: Přežití v podvodním světě, kde hráči prozkoumávají hlubiny oceánu a staví základny.
  • Among Us: Společenská hra, která se stala globálním fenoménem díky své jednoduché, ale návykové hratelnosti.

Unity a programovací jazyk C# tvoří mocnou kombinaci, která umožňuje vývojářům realizovat jejich kreativní vize a vytvářet hry všech žánrů a rozsahů.

Vytvoř vlastní hru s programovací jazyk C#!

Zakladatel Keri Core Academy, Martin Čapek, je herní nadšenec už od dětství.

Jeho cesta stát se herním vývojářem byla dlouhá a plná překážek.

V době, kdy neexistovaly online kurzy ani dostupný video obsah zdarma, začínal jako student vysoké školy.

Místo toho, aby šel pracovat do dobře placeného zaměstnání, rozhodl se pro méně placenou práci ve firmě, která mu umožnila nahlédnout do světa herního vývoje.

Martin se rozhodl jít za svým snem na vlastní pěst, což ho po desetiletí zkušeností vedlo k založení Keri Core Academy, aby mohl své znalosti a zkušenosti předat dál a pomoci ostatním splnit si jejich sen vytvořením vlastní hry!

Recenze z prezenčního kurzu

Místo, kde se sny stávají skutečností

Keri Core Academy nabízí mnoho bezplatných vzdělávacích videí, včetně těch na YouTube, která mají obrovskou hodnotu pro každého začínajícího i pokročilého vývojáře. 

V rámci naší akademie se můžete v Unity kurzu naučit nejen programovací jazyk C#, ale také herní vývoj v Unity.

Obsah ONLINE kurzu zahrnuje:

  • Základy Unity
  • Vývoj her bez programování
  • Programovací jazyk C#
  • Hyper casual mobilní hry
  • First person shooter (FPS)

Speciální nabídka

Víme, že Unity kurz má hodnotu 25 000 Kč, ale chceme, aby byl dostupný pro co nejvíce lidí.

Proto jsme ho pro naše stálé členy nabízeli za 4 999 Kč a nyní ho prodáváme za 5 999 Kč.

Kurz však postupně zdražujeme, protože každý den píšeme hodnotné články zdarma, neustále vylepšujeme náš web, rozšiřujeme kurz Unity zdarma a připravujeme pro vás e-booky a mnohem více.

Tudíž se kurz bude nadále zdražovat.

Neváhejte a staňte se členem Unity kurzu!

14 denní garance vrácení peněz

Ale to ještě není všechno!

Nabízíme 14 denní garanci vrácení peněz.

Pokud nebudete s kurzem spokojeni, stačí napsat email na: [email protected] a bez zbytečných otázek vám vrátíme všechny peníze.

Připojte se k naší akademii a začněte tvořit své vlastní hry s podporou zkušených vývojářů a komunity nadšenců do herního vývoje.

14 denní garance