26. C#

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?

  1. 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();