× Aktuálně z oboru

SHIELD Experience Upgrade 7 – méně hledání a více zábavy [ clanek/2018052902-shield-experience-upgrade-7-mene-hledani-a-vice-zabavy/ ]
Celá zprávička [ clanek/2018052902-shield-experience-upgrade-7-mene-hledani-a-vice-zabavy/ ]

C# - 5.lekce

[ http://programujte.com/profil/20356-mira/ ]Google [ ?rel=author ]       [ http://programujte.com/profil/118-zdenek-lehocky/ ]Google [ ?rel=author ]       31. 8. 2005       71 894×

Podíváte se na jednotlivé druhy polí a na to, jak je obsloužit. Rozdělíme je na tři základní typy a to na pole jednorozměrné, pole pravoúhlé a pole zubaté...

Jednoduché jednorozměrné pole

Při deklaraci nejprve určíme datový typ, kterého pole může nabývat, a zadruhé velikost prvního rozměru. Jednorozměrné pole má jen jeden rozměr, tedy jednu řadu prvků. Pole se deklarují za pomoci hranatých závorek, příklad:


int[] i = new int[100];

Tímto řádkem deklarujeme jednorozměrné pole se jménem i a velikostí 100 prvků. Je to prostor na 100 celočíselných hodnot (typ int), indexovaných od i[0] do i[99].

Ukázka prostého naplnění jednotlivých položek pole:


int[] i = new int[2];
i[0] = 1;
i[1] = 2;

Takto naplníme pole hned při deklaraci:


  

int[] i = new int[] {1,2};

kratší verze předchozí ukázky:


int[] i = {1,2};

Měli bychom pamatovat na fakt, že pole je v C# vždy indexováno od nuly, lze to sice změnit, ale nedoporučuje se to.

Délku pole (počet prvků, které obsahuje) je možné získat pomocí vlastnosti Lenght, kterou lze pouze číst. Délku pole uvedeného výše zjistíte takto: i.Length a dostanete hodnotu 2.

Pravoúhlá pole

C# podporuje 2 typy vícerozměrných polí: pravoúhlé a zubaté. Pravoúhlé pole je pole o více dimenzích, jejichž rozměry se po deklaraci nemění. Vytvoření pole o 2 řadách a 3 sloupcích:


int[,] squareArray = new int[2,3];

totéž, jen to naplníme hned v deklaraci:


  

int[,] squareArray = {{1, 2, 3}, {4, 5, 6}};

Třída System.Array zahrnuje metody pro odvození hranic pole. Pro horní hranici GetUpperBound(int i) a pro dolní GetLowerBound(int i), které vrací rozměry zadané dimenze.

Pro druhý rozměr pole o třech sloupcích, užijeme výrazy:


squareArray.GetLowerBound(1)

vrátí 0, a


squareArray.GetUpperBound(1)

vrátí 2.

Opět je možné použít metodu GetLength(int i), (pořád indexujete od 0)

Ukázka výpisu hodnot jednotlivých prvků pole:


for(int i = 0; i < squareArray.GetLength(0); i++)
  for (int j = 0; j < squareArray.GetLength(1); j++)
    Console.WriteLine(squareArray[i,j]);

Smyčka foreach lze také použít, ale nemáte takový přehled o tom, co bylo vybráno.

Zubaté pole

Je to vícerozměrné pole s nepravidelnými rozměry dimenzí. To je možné díky tomu, že tyto pole se deklarují jako pole polí. Nyní ukázka, jak jedna dimenze může mít 4 prvky a druhá 6:


int[][] jag = new int[2][];
jag[0] = new int [4];
jag[1] = new int [6];

Tento zápis vám odhalil, že jednotlivé dimenze odkazují na jednorozměrné celočíselné pole pole jag.

A zase naplnění již při deklaraci:


int[][] jag = new int[][] {new int[] {1, 2, 3, 4}, new int[] {5, 6, 7, 8, 9, 10}};

Při použití metod jako GetLowerBound, GetUpperBound, GetLength atd. buďme opatrní. Protože jsou postaveny na základě jednorozměrných polí a nemohou se chovat podobně jako pravoúhlá. Pozorně si projděte ukázku kódu!

Výpis obsahu jednotlivých prvků zubatého pole:


for (int i = 0; i < jag.GetLength(0); i++)
  for (int j = 0; j < jag[i].GetLength(0); j++)
    Console.WriteLine(jag[i][j]);

nebo


for (int i = 0; i < jag.Length; i++)
  for (int j = 0; j < jag[i].Length; j++)
    Console.WriteLine(jag[i][j]);

Jo abych nezapoměl, protože se mi pořád motá 1. osoba množného čísla s druhou, tak jsem se rozhodl dále články psát první osobou množného čísla, prý je to i přívětivější přístup :). A když mi občas něco ulítne, tak se omlouvám.

Zdroj: http://www.softsteel.co.uk/tutorials/cSharp/lesson6.html

Článek stažen z webu Programujte.com [ http://programujte.com/clanek/1970010129-c-5-lekce/ ].