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ázevTypVelikost v bajtechRozsah
sbyteSystem.SByte1-128 až 127
shortSystem.Int162-32 768 až 32 767
intSystem.Int324– 2 147 483 648 až 2 147 483 647
longSystem.Int6489,223,372,036,854,775,808 až 9,223,372,036,854,775,807
byteSystem.Byte10 až 255
ushortSystem.UInt1620 až 65,535
uintSystem.UInt3240 až 4,294,967,295.
ulongSystem.UInt6480 až 18 446 744 073 709 551 615
floatSystem.Single4+/-1.5 * 10-45 až +/-3.4 * 1038
doubleSystem.Double8+/-5.0 * 10-324 až +/-1.8 * 10308
decimalSystem.Decimal16 
boolSystem.Boolean1Jsou zde hodnoty true nebo false
charSystem.Char2 

  • Odkazové typy
NázevTypVelikost v bajtechRozsah
objectSystem.Object Kořenový typ, od něhož jsou odvozeny všechny ostatní typy
stringSystem.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();